	SECTION _TEXT align=1 CLASS=CODE USE32
	SECTION _DATA align=16 CLASS=DATA USE32
	SECTION _BSS align=16 CLASS=BSS USE32
	SECTION _CONST align=16 CLASS=CONST USE32
	SECTION _STRING align=4 CLASS=STRING USE32
	SECTION cstartup align=4 CLASS=INITDATA USE32
	SECTION crundown align=4 CLASS=EXITDATA USE32
	SECTION cppinit  align=4 CLASS=CPPINIT USE32
	SECTION cppexit  align=4 CLASS=CPPEXIT USE32
	GROUP DGROUP _DATA _BSS _CONST _STRING

SECTION _TEXT
;
; Line 21:	static int SetFocusMsg(WINDOW wnd, PARAM p1)
;
_SetFocusMsg:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
L_2:
;
; Line 22:	{
;
;
; Line 24:	rtn = BaseWndProc(TABBAR, wnd, SETFOCUS, p1, 0);
;
	PUSH	BYTE 00H
	PUSH	DWORD [EBP+0CH]
	PUSH	BYTE 08H
	PUSH	DWORD [EBP+08H]
	MOV	EAX,DWORD [_classdefs+048H]
	IMUL	EAX,BYTE 0CH
	CALL	DWORD [EAX+04H+_classdefs+00H]
	ADD	ESP,BYTE 010H
	MOV	EBX,EAX
;
; Line 25:	return rtn;
;
	MOV	EAX,EBX
L_1:
	POP	EBX
	POP	EBP
	RET
;
; Line 29:	static int AddTabMsg(WINDOW wnd, char *name, WINDOW link)
;
_AddTabMsg:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 08H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	EBX,DWORD [EBP+0CH]
L_4:
;
; Line 30:	{
;
;
; Line 31:	TABDATA *td = (TABDATA *)wnd->extension;
;
	MOV	EAX,DWORD [EBP+08H]
	MOV	EAX,DWORD [EAX+06CH]
	MOV	DWORD [EBP-04H],EAX
;
; Line 32:	struct _tls **d = &td->tabData;
;
	MOV	ESI,DWORD [EBP-04H]
;
; Line 33:	int current = 0;
;
	MOV	EDI,00H
	JMP	SHORT	L_5
L_7:
;
; Line 36:	if (!stricmp(name , (*d)->name))
;
	MOV	EAX,DWORD [ESI+00H]
	PUSH	DWORD [EAX+04H]
	PUSH	EBX
	CALL	_stricmp
	ADD	ESP,BYTE 08H
	TEST	EAX,EAX
	JNE	SHORT	L_8
;
; Line 37:	return FALSE;
;
	MOV	EAX,00H
	JMP	SHORT	L_3
L_8:
;
; Line 38:	d = &(*d)->next;
;
	MOV	ESI,DWORD [ESI+00H]
;
; Line 39:	current++;
;
	INC	EDI
L_5:
;
; Line 34:	while (*d)
;
	CMP	DWORD [ESI+00H],BYTE 00H
	JNE	SHORT	L_7
L_6:
;
; Line 41:	*d = DFmalloc(sizeof(struct _tls));
;
	PUSH	BYTE 0CH
	CALL	_DFmalloc
	POP	ECX
	MOV	DWORD [ESI+00H],EAX
;
; Line 42:	(*d)->next = NULL;
;
	MOV	EAX,DWORD [ESI+00H]
	MOV	DWORD [EAX+00H],00H
;
; Line 43:	(*d)->name = DFmalloc(strlen(name));
;
	PUSH	EBX
	CALL	_strlen
	POP	ECX
	PUSH	EAX
	CALL	_DFmalloc
	POP	ECX
	MOV	ECX,DWORD [ESI+00H]
	MOV	DWORD [ECX+04H],EAX
;
; Line 44:	strcpy((*d)->name, name);
;
	PUSH	EBX
	MOV	EAX,DWORD [ESI+00H]
	PUSH	DWORD [EAX+04H]
	CALL	_strcpy
	ADD	ESP,BYTE 08H
;
; Line 45:	(*d)->wnd = link;
;
	MOV	EAX,DWORD [ESI+00H]
	MOV	ECX,DWORD [EBP+010H]
	MOV	DWORD [EAX+08H],ECX
;
; Line 46:	td->selected = current;
;
	MOV	EAX,DWORD [EBP-04H]
	MOV	DWORD [EAX+04H],EDI
;
; Line 47:	SendMessage(wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	DWORD [EBP+08H]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 48:	return TRUE;
;
	MOV	EAX,01H
L_3:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
;
; Line 51:	static int RemoveTabMsg(WINDOW wnd, char *name, WINDOW link)
;
_RemoveTabMsg:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	EBX,DWORD [EBP+08H]
L_11:
;
; Line 52:	{
;
;
; Line 53:	struct _tls **d = &((TABDATA *)wnd->extension)->tabData;
;
	MOV	ESI,DWORD [EBX+06CH]
	JMP	SHORT	L_12
L_14:
;
; Line 56:	if (!stricmp(name , (*d)->name))
;
	MOV	EAX,DWORD [ESI+00H]
	PUSH	DWORD [EAX+04H]
	PUSH	DWORD [EBP+0CH]
	CALL	_stricmp
	ADD	ESP,BYTE 08H
	TEST	EAX,EAX
	JNE	SHORT	L_15
;
; Line 58:	struct _tls *m = d;
;
	MOV	EDI,ESI
;
; Line 59:	*d = (*d)->next;
;
	MOV	EAX,DWORD [ESI+00H]
	MOV	EAX,DWORD [EAX+00H]
	MOV	DWORD [ESI+00H],EAX
;
; Line 60:	free(m->name);
;
	PUSH	DWORD [EDI+04H]
	CALL	_free
	POP	ECX
;
; Line 61:	free(m);
;
	PUSH	EDI
	CALL	_free
	POP	ECX
;
; Line 62:	return TRUE;
;
	MOV	EAX,01H
	JMP	SHORT	L_10
L_15:
;
; Line 64:	d = &(*d)->next;
;
	MOV	ESI,DWORD [ESI+00H]
L_12:
;
; Line 54:	while (*d)
;
	CMP	DWORD [ESI+00H],BYTE 00H
	JNE	SHORT	L_14
L_13:
;
; Line 66:	SendMessage(wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	EBX
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 67:	return FALSE;
;
	MOV	EAX,00H
L_10:
	POP	EDI
	POP	ESI
	POP	EBX
	POP	EBP
	RET
;
; Line 70:	static int SelectTabMsg(WINDOW wnd, WINDOW link)
;
_SelectTabMsg:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
L_18:
;
; Line 71:	{
;
;
; Line 72:	TABDATA *td = (TABDATA *)wnd->extension;
;
	MOV	EAX,DWORD [EBP+08H]
	MOV	EDI,DWORD [EAX+06CH]
;
; Line 73:	struct _tls *d = td->tabData;
;
	MOV	ESI,DWORD [EDI+00H]
;
; Line 74:	int current = 0;
;
	MOV	EBX,00H
	JMP	SHORT	L_19
L_21:
;
; Line 77:	if (d->wnd == link)
;
	MOV	EAX,DWORD [ESI+08H]
	CMP	EAX,DWORD [EBP+0CH]
	JNE	SHORT	L_22
;
; Line 79:	td->selected = current;
;
	MOV	DWORD [EDI+04H],EBX
;
; Line 80:	SendMessage(wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	DWORD [EBP+08H]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 81:	return TRUE;
;
	MOV	EAX,01H
	JMP	SHORT	L_17
L_22:
;
; Line 83:	current++;
;
	INC	EBX
;
; Line 84:	d = d->next;
;
	MOV	ESI,DWORD [ESI+00H]
L_19:
;
; Line 75:	while (d)
;
	TEST	ESI,ESI
	JNE	SHORT	L_21
L_20:
;
; Line 86:	return FALSE;
;
	MOV	EAX,00H
L_17:
	POP	EDI
	POP	ESI
	POP	EBX
	POP	EBP
	RET
;
; Line 89:	static void PaintMsg(WINDOW wnd)
;
_PaintMsg:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,01ACH
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
L_25:
;
; Line 90:	{
;
;
; Line 91:	TABDATA *td = (TABDATA *)wnd->extension;
;
	MOV	EAX,DWORD [ESI+06CH]
	MOV	DWORD [EBP-019CH],EAX
;
; Line 93:	int attr = clr(WndForeground(wnd), WndBackground(wnd));
;
	MOVSX	EAX,BYTE [ESI+035H]
	SAL	EAX,04H
	MOVSX	ECX,BYTE [ESI+034H]
	OR	ECX,EAX
	MOV	DWORD [EBP-08H],ECX
;
; Line 94:	BOOL done = FALSE;
;
	MOV	DWORD [EBP-04H],00H
	JMP	NEAR	L_26
L_28:
;
; Line 97:	struct _tls *d = td->tabData;
;
	MOV	EAX,DWORD [EBP-019CH]
	MOV	EDI,DWORD [EAX+00H]
;
; Line 98:	int n = td->shown, i;
;
	MOV	EAX,DWORD [EBP-019CH]
	MOV	EAX,DWORD [EAX+08H]
	MOV	DWORD [EBP-01ACH],EAX
;
; Line 99:	int current = 0;
;
	MOV	DWORD [EBP-01A4H],00H
;
; Line 100:	if (td->selected < td->shown)
;
	MOV	EAX,DWORD [EBP-019CH]
	MOV	ECX,DWORD [EBP-019CH]
	MOV	ECX,DWORD [ECX+04H]
	CMP	ECX,DWORD [EAX+08H]
	JGE	SHORT	L_29
;
; Line 102:	td->shown = 0;
;
	MOV	EAX,DWORD [EBP-019CH]
	MOV	DWORD [EAX+08H],00H
;
; Line 103:	continue;
;
	JMP	NEAR	L_26
L_29:
	MOV	DWORD [EBP-01A8H],00H
	JMP	SHORT	L_33
L_31:
;
; Line 106:	buf[i].ch = ' ', buf[i].attrib = attr;
;
	MOV	EAX,DWORD [EBP-01A8H]
	MOV	BYTE [EBP+EAX*2-0198H],020H
	MOV	EAX,DWORD [EBP-01A8H]
	LEA	EAX,[EBP+EAX*2-0198H]
	MOV	ECX,DWORD [EBP-08H]
	MOV	BYTE [EAX+01H],CL
;
; Line 105:	for (i=0; i < ClientWidth(wnd); i++)
;
L_32:
	INC	DWORD [EBP-01A8H]
L_33:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,04000H
	JE	SHORT	L_35
	MOV	EAX,01H
	JMP	SHORT	L_36
L_35:
	MOV	EAX,00H
L_36:
	SHL	EAX,01H
	MOV	ECX,DWORD [ESI+020H]
	SUB	ECX,EAX
	CMP	DWORD [EBP-01A8H],ECX
	JL	SHORT	L_31
L_34:
;
; Line 107:	buf[ClientWidth(wnd)].ch = '\0';
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,04000H
	JE	SHORT	L_37
	MOV	EAX,01H
	JMP	SHORT	L_38
L_37:
	MOV	EAX,00H
L_38:
	SHL	EAX,01H
	MOV	ECX,DWORD [ESI+020H]
	SUB	ECX,EAX
	MOV	BYTE [EBP+ECX*2-0198H],00H
	JMP	SHORT	L_39
L_41:
;
; Line 109:	d = d->next, n--, current++;
;
	MOV	EDI,DWORD [EDI+00H]
	DEC	DWORD [EBP-01ACH]
	INC	DWORD [EBP-01A4H]
L_39:
;
; Line 108:	while (n && d)
;
	CMP	DWORD [EBP-01ACH],BYTE 00H
	JE	SHORT	L_42
	TEST	EDI,EDI
	JNE	SHORT	L_41
L_42:
L_40:
;
; Line 110:	n = 0;
;
	MOV	DWORD [EBP-01ACH],00H
	JMP	NEAR	L_43
L_45:
;
; Line 113:	char *p = d->name;
;
	MOV	EBX,DWORD [EDI+04H]
;
; Line 114:	p = strrchr(p, '\\');
;
	PUSH	BYTE 05CH
	PUSH	EBX
	CALL	_strrchr
	ADD	ESP,BYTE 08H
	MOV	EBX,EAX
;
; Line 115:	if (!p)
;
	TEST	EBX,EBX
	JNE	SHORT	L_46
;
; Line 116:	p = d->name;
;
	MOV	EBX,DWORD [EDI+04H]
	JMP	SHORT	L_47
L_46:
;
; Line 118:	p++;
;
	INC	EBX
L_47:
;
; Line 119:	if (((strlen(p) + 1 + n) >= (ClientWidth(wnd)-2)))
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,04000H
	JE	SHORT	L_50
	MOV	EAX,01H
	JMP	SHORT	L_51
L_50:
	MOV	EAX,00H
L_51:
	SHL	EAX,01H
	MOV	ECX,DWORD [ESI+020H]
	SUB	ECX,EAX
	SUB	ECX,BYTE 02H
	PUSH	ECX
	PUSH	EBX
	CALL	_strlen
	POP	ECX
	POP	ECX
	INC	EAX
	ADD	EAX,DWORD [EBP-01ACH]
	CMP	EAX,ECX
	JNB	SHORT	L_44
;
; Line 120:	break;
;
L_48:
;
; Line 122:	if (n != 0)
;
	CMP	DWORD [EBP-01ACH],BYTE 00H
	JE	SHORT	L_52
;
; Line 123:	buf[n++].ch = '|';
;
	MOV	EAX,DWORD [EBP-01ACH]
	INC	DWORD [EBP-01ACH]
	MOV	BYTE [EBP+EAX*2-0198H],07CH
L_52:
	JMP	SHORT	L_54
L_56:
;
; Line 126:	if (current == td->selected)
;
	MOV	EAX,DWORD [EBP-019CH]
	MOV	ECX,DWORD [EBP-01A4H]
	CMP	ECX,DWORD [EAX+04H]
	JNE	SHORT	L_57
;
; Line 128:	buf[n].attrib = clr(SelectForeground(wnd), SelectBackground(wnd));
;
	MOVSX	EAX,BYTE [ESI+037H]
	SAL	EAX,04H
	MOVSX	ECX,BYTE [ESI+036H]
	OR	ECX,EAX
	MOV	EAX,DWORD [EBP-01ACH]
	LEA	EAX,[EBP+EAX*2-0198H]
	MOV	BYTE [EAX+01H],CL
L_57:
;
; Line 130:	buf[n++].ch = *p++;
;
	MOV	EAX,EBX
	INC	EBX
	MOV	ECX,DWORD [EBP-01ACH]
	INC	DWORD [EBP-01ACH]
	MOV	AL,BYTE [EAX+00H]
	MOV	BYTE [EBP+ECX*2-0198H],AL
L_54:
;
; Line 124:	while (*p)
;
	CMP	BYTE [EBX+00H],BYTE 00H
	JNE	SHORT	L_56
L_55:
;
; Line 132:	current++;
;
	INC	DWORD [EBP-01A4H]
;
; Line 133:	d = d->next;
;
	MOV	EDI,DWORD [EDI+00H]
L_43:
;
; Line 111:	while (d)
;
	TEST	EDI,EDI
	JNE	NEAR	L_45
L_44:
;
; Line 135:	if (current <= td->selected && d)
;
	MOV	EAX,DWORD [EBP-019CH]
	MOV	ECX,DWORD [EBP-01A4H]
	CMP	ECX,DWORD [EAX+04H]
	JG	SHORT	L_59
	TEST	EDI,EDI
	JE	SHORT	L_59
;
; Line 137:	td->shown++;
;
	MOV	EAX,DWORD [EBP-019CH]
	INC	DWORD [EAX+08H]
;
; Line 138:	done = FALSE;
;
	MOV	DWORD [EBP-04H],00H
;
; Line 139:	continue;
;
	JMP	SHORT	L_26
L_59:
;
; Line 141:	if (td->shown)
;
	MOV	EAX,DWORD [EBP-019CH]
	CMP	DWORD [EAX+08H],BYTE 00H
	JE	SHORT	L_61
;
; Line 142:	buf[ClientWidth(wnd)-2].ch = TAB_PREV_CHAR;
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,04000H
	JE	SHORT	L_63
	MOV	EAX,01H
	JMP	SHORT	L_64
L_63:
	MOV	EAX,00H
L_64:
	SHL	EAX,01H
	MOV	ECX,DWORD [ESI+020H]
	SUB	ECX,EAX
	SUB	ECX,BYTE 02H
	MOV	BYTE [EBP+ECX*2-0198H],0AEH
L_61:
;
; Line 143:	if (d)
;
	TEST	EDI,EDI
	JE	SHORT	L_65
;
; Line 144:	buf[ClientWidth(wnd)-1].ch = TAB_NEXT_CHAR;
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,04000H
	JE	SHORT	L_67
	MOV	EAX,01H
	JMP	SHORT	L_68
L_67:
	MOV	EAX,00H
L_68:
	SHL	EAX,01H
	MOV	ECX,DWORD [ESI+020H]
	SUB	ECX,EAX
	DEC	ECX
	MOV	BYTE [EBP+ECX*2-0198H],0AFH
L_65:
;
; Line 145:	done = TRUE;
;
	MOV	DWORD [EBP-04H],01H
L_26:
;
; Line 95:	while (!done)
;
	CMP	DWORD [EBP-04H],BYTE 00H
	JE	NEAR	L_28
L_27:
;
; Line 147:	twputs(wnd, buf, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	LEA	EAX,[EBP-0198H]
	PUSH	EAX
	PUSH	ESI
	CALL	_twputs
	ADD	ESP,BYTE 010H
;
; Line 148:	}
;
L_24:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
;
; Line 151:	static void KeyboardMsg(WINDOW wnd, PARAM p1)
;
_KeyboardMsg:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
L_70:
;
; Line 152:	{
;
;
; Line 153:	TABDATA *td = (TABDATA *)wnd->extension;
;
	MOV	EAX,DWORD [EBP+08H]
	MOV	EDI,DWORD [EAX+06CH]
;
; Line 155:	int n = td->selected;
;
	MOV	EBX,DWORD [EDI+04H]
;
; Line 156:	switch ((int)p1)    {
;
	MOV	EAX,DWORD [EBP+0CH]
	CMP	EAX,BYTE 0DH
	JE	SHORT	L_74
	CMP	EAX,DWORD 010BBH
	JE	SHORT	L_73
	CMP	EAX,DWORD 010CBH
	JE	SHORT	L_76
	CMP	EAX,DWORD 010CDH
	JE	SHORT	L_75
	JMP	SHORT	L_72
L_73:
;
; Line 158:	break;
;
	JMP	SHORT	L_71
L_74:
;
; Line 160:	break;
;
	JMP	SHORT	L_71
L_75:
;
; Line 162:	d = td->tabData;
;
	MOV	ESI,DWORD [EDI+00H]
	JMP	SHORT	L_77
L_79:
;
; Line 164:	d = d->next, n--;
;
	MOV	ESI,DWORD [ESI+00H]
	DEC	EBX
L_77:
;
; Line 163:	while (n)
;
	TEST	EBX,EBX
	JNE	SHORT	L_79
L_78:
;
; Line 165:	if (d->next)
;
	CMP	DWORD [ESI+00H],BYTE 00H
	JE	SHORT	L_80
;
; Line 167:	d = d->next;
;
	MOV	ESI,DWORD [ESI+00H]
;
; Line 168:	td->selected++;
;
	INC	DWORD [EDI+04H]
;
; Line 169:	SendMessage(wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	DWORD [EBP+08H]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 170:	SendMessage(d->wnd, SETFOCUS, TRUE, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 01H
	PUSH	BYTE 08H
	PUSH	DWORD [ESI+08H]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_80:
;
; Line 172:	break;
;
	JMP	SHORT	L_71
L_76:
;
; Line 174:	if (td->selected)
;
	CMP	DWORD [EDI+04H],BYTE 00H
	JE	SHORT	L_82
;
; Line 176:	td->selected--;
;
	DEC	DWORD [EDI+04H]
;
; Line 177:	n = td->selected;
;
	MOV	EBX,DWORD [EDI+04H]
;
; Line 178:	d = td->tabData;
;
	MOV	ESI,DWORD [EDI+00H]
	JMP	SHORT	L_84
L_86:
;
; Line 180:	d = d->next, n--;
;
	MOV	ESI,DWORD [ESI+00H]
	DEC	EBX
L_84:
;
; Line 179:	while (n && d)
;
	TEST	EBX,EBX
	JE	SHORT	L_87
	TEST	ESI,ESI
	JNE	SHORT	L_86
L_87:
L_85:
;
; Line 181:	SendMessage(wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	DWORD [EBP+08H]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 182:	SendMessage(d->wnd, SETFOCUS, TRUE, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 01H
	PUSH	BYTE 08H
	PUSH	DWORD [ESI+08H]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_82:
;
; Line 184:	break;
;
	JMP	SHORT	L_71
L_72:
;
; Line 186:	break;
;
	JMP	SHORT	L_71
L_71:
;
; Line 188:	}
;
L_69:
	POP	EDI
	POP	ESI
	POP	EBX
	POP	EBP
	RET
;
; Line 191:	static void LeftButtonMsg(WINDOW wnd, PARAM p1)
;
_LeftButtonMsg:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 014H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	EDI,DWORD [EBP+08H]
L_89:
;
; Line 192:	{
;
;
; Line 193:	int mx = p1 - GetLeft(wnd);
;
	MOV	EAX,DWORD [EBP+0CH]
	SUB	EAX,DWORD [EDI+0CH]
	MOV	DWORD [EBP-04H],EAX
;
; Line 194:	if (mx == ClientWidth(wnd)-2)
;
	MOV	EAX,DWORD [EDI+054H]
	AND	EAX,04000H
	JE	SHORT	L_92
	MOV	EAX,01H
	JMP	SHORT	L_93
L_92:
	MOV	EAX,00H
L_93:
	SHL	EAX,01H
	MOV	ECX,DWORD [EDI+020H]
	SUB	ECX,EAX
	SUB	ECX,BYTE 02H
	CMP	DWORD [EBP-04H],ECX
	JNE	SHORT	L_90
;
; Line 195:	KeyboardMsg(wnd, BS);
;
	PUSH	DWORD 010CBH
	PUSH	EDI
	CALL	_KeyboardMsg
	ADD	ESP,BYTE 08H
	JMP	NEAR	L_91
L_90:
;
; Line 196:	else if (mx == ClientWidth(wnd)-1)
;
	MOV	EAX,DWORD [EDI+054H]
	AND	EAX,04000H
	JE	SHORT	L_96
	MOV	EAX,01H
	JMP	SHORT	L_97
L_96:
	MOV	EAX,00H
L_97:
	SHL	EAX,01H
	MOV	ECX,DWORD [EDI+020H]
	SUB	ECX,EAX
	DEC	ECX
	CMP	DWORD [EBP-04H],ECX
	JNE	SHORT	L_94
;
; Line 197:	KeyboardMsg(wnd, FWD);
;
	PUSH	DWORD 010CDH
	PUSH	EDI
	CALL	_KeyboardMsg
	ADD	ESP,BYTE 08H
	JMP	NEAR	L_95
L_94:
;
; Line 200:	TABDATA *td = (TABDATA *)wnd->extension;
;
	MOV	EAX,DWORD [EDI+06CH]
	MOV	DWORD [EBP-014H],EAX
;
; Line 201:	struct _tls *d = td->tabData;
;
	MOV	EAX,DWORD [EBP-014H]
	MOV	ESI,DWORD [EAX+00H]
;
; Line 202:	int n = td->shown;
;
	MOV	EAX,DWORD [EBP-014H]
	MOV	EAX,DWORD [EAX+08H]
	MOV	DWORD [EBP-010H],EAX
;
; Line 203:	int current = 0;
;
	MOV	DWORD [EBP-0CH],00H
	JMP	SHORT	L_98
L_100:
;
; Line 205:	d = d->next, n--, current++;
;
	MOV	ESI,DWORD [ESI+00H]
	DEC	DWORD [EBP-010H]
	INC	DWORD [EBP-0CH]
L_98:
;
; Line 204:	while (n && d)
;
	CMP	DWORD [EBP-010H],BYTE 00H
	JE	SHORT	L_101
	TEST	ESI,ESI
	JNE	SHORT	L_100
L_101:
L_99:
;
; Line 206:	if (d)
;
	TEST	ESI,ESI
	JE	SHORT	L_102
;
; Line 208:	n = 0;
;
	MOV	DWORD [EBP-010H],00H
	JMP	SHORT	L_104
L_106:
;
; Line 211:	char *p = d->name;
;
	MOV	EBX,DWORD [ESI+04H]
;
; Line 212:	p = strrchr(p, '\\');
;
	PUSH	BYTE 05CH
	PUSH	EBX
	CALL	_strrchr
	ADD	ESP,BYTE 08H
	MOV	EBX,EAX
;
; Line 213:	if (p)
;
	TEST	EBX,EBX
	JE	SHORT	L_107
;
; Line 214:	p++;
;
	INC	EBX
	JMP	SHORT	L_108
L_107:
;
; Line 216:	p = d->name;
;
	MOV	EBX,DWORD [ESI+04H]
L_108:
;
; Line 217:	if (mx <= n + strlen(p))
;
	PUSH	EBX
	CALL	_strlen
	POP	ECX
	ADD	EAX,DWORD [EBP-010H]
	CMP	DWORD [EBP-04H],EAX
	JNG	SHORT	L_105
;
; Line 218:	break;
;
L_109:
;
; Line 219:	n += strlen(p) + 1;
;
	PUSH	EBX
	CALL	_strlen
	POP	ECX
	INC	EAX
	ADD	DWORD [EBP-010H],EAX
;
; Line 220:	if (!d->next)
;
	CMP	DWORD [ESI+00H],BYTE 00H
	JE	SHORT	L_105
;
; Line 221:	break;
;
L_111:
;
; Line 222:	d = d->next;
;
	MOV	ESI,DWORD [ESI+00H]
;
; Line 223:	current++;
;
	INC	DWORD [EBP-0CH]
L_104:
;
; Line 209:	while (TRUE)
;
	JMP	SHORT	L_106
L_105:
;
; Line 225:	SendMessage(d->wnd, SETFOCUS, TRUE, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 01H
	PUSH	BYTE 08H
	PUSH	DWORD [ESI+08H]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 226:	td->selected = current;
;
	MOV	EAX,DWORD [EBP-014H]
	MOV	ECX,DWORD [EBP-0CH]
	MOV	DWORD [EAX+04H],ECX
;
; Line 227:	SendMessage(wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	EDI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_102:
L_95:
L_91:
;
; Line 230:	}
;
L_88:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
;
; Line 235:	static void CloseWindowMsg(WINDOW wnd)
;
_CloseWindowMsg:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	EDI,DWORD [EBP+08H]
L_114:
;
; Line 236:	{
;
;
; Line 238:	struct _tls *d = ((TABDATA *)wnd->extension)->tabData;
;
	MOV	EAX,DWORD [EDI+06CH]
	MOV	ESI,DWORD [EAX+00H]
	JMP	SHORT	L_115
L_117:
;
; Line 241:	struct _tls *q = d->next;
;
	MOV	EBX,DWORD [ESI+00H]
;
; Line 242:	free(d->name);
;
	PUSH	DWORD [ESI+04H]
	CALL	_free
	POP	ECX
;
; Line 243:	free(d);
;
	PUSH	ESI
	CALL	_free
	POP	ECX
;
; Line 244:	d = q;
;
	MOV	ESI,EBX
L_115:
;
; Line 239:	while (d)
;
	TEST	ESI,ESI
	JNE	SHORT	L_117
L_116:
;
; Line 246:	free(wnd->extension);
;
	PUSH	DWORD [EDI+06CH]
	CALL	_free
	POP	ECX
;
; Line 247:	wnd->extension = NULL;
;
	MOV	DWORD [EDI+06CH],00H
;
; Line 248:	}
;
L_113:
	POP	EDI
	POP	ESI
	POP	EBX
	POP	EBP
	RET
[GLOBAL	_TabBarProc]
;
; Line 251:	int TabBarProc(WINDOW wnd, MESSAGE msg, PARAM p1, PARAM p2)
;
_TabBarProc:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 08H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
	MOV	EBX,DWORD [EBP+010H]
	MOV	EDI,DWORD _classdefs
L_119:
;
; Line 252:	{
;
;
; Line 255:	switch (msg)    {
;
	MOV	EAX,DWORD [EBP+0CH]
	CMP	EAX,BYTE 015H
	JE	NEAR	L_128
	JA	SHORT	L_132
	CMP	EAX,BYTE 08H
	JE	SHORT	L_123
	JA	SHORT	L_133
	CMP	EAX,BYTE 07H
	JE	NEAR	L_131
	JA	NEAR	L_121
	CMP	EAX,BYTE 03H
	JE	SHORT	L_122
	JMP	NEAR	L_121
L_133:
	CMP	EAX,BYTE 011H
	JE	NEAR	L_130
	JA	NEAR	L_121
	CMP	EAX,BYTE 09H
	JE	NEAR	L_127
	JMP	NEAR	L_121
L_132:
	CMP	EAX,BYTE 046H
	JE	SHORT	L_125
	JA	SHORT	L_134
	CMP	EAX,BYTE 045H
	JE	SHORT	L_124
	JA	NEAR	L_121
	CMP	EAX,BYTE 024H
	JE	NEAR	L_129
	JMP	NEAR	L_121
L_134:
	CMP	EAX,BYTE 047H
	JE	SHORT	L_126
	JMP	NEAR	L_121
L_122:
;
; Line 257:	wnd->extension = DFcalloc(sizeof(TABDATA), 1);
;
	PUSH	BYTE 01H
	PUSH	BYTE 0CH
	CALL	_DFcalloc
	ADD	ESP,BYTE 08H
	MOV	DWORD [ESI+06CH],EAX
;
; Line 258:	break;
;
	JMP	NEAR	L_120
L_123:
;
; Line 260:	return SetFocusMsg(wnd, p1);
;
	PUSH	EBX
	PUSH	ESI
	CALL	_SetFocusMsg
	ADD	ESP,BYTE 08H
	JMP	NEAR	L_118
L_124:
;
; Line 262:	return AddTabMsg(wnd, (char *)p1, (WINDOW)p2);
;
	PUSH	DWORD [EBP+014H]
	PUSH	EBX
	PUSH	ESI
	CALL	_AddTabMsg
	ADD	ESP,BYTE 0CH
	JMP	NEAR	L_118
L_125:
;
; Line 264:	return RemoveTabMsg(wnd, (char *)p1, (WINDOW)p2);
;
	PUSH	DWORD [EBP+014H]
	PUSH	EBX
	PUSH	ESI
	CALL	_RemoveTabMsg
	ADD	ESP,BYTE 0CH
	JMP	NEAR	L_118
L_126:
;
; Line 266:	return SelectTabMsg(wnd, (WINDOW)p2);
;
	PUSH	DWORD [EBP+014H]
	PUSH	ESI
	CALL	_SelectTabMsg
	ADD	ESP,BYTE 08H
	JMP	NEAR	L_118
L_127:
;
; Line 268:	if (!isVisible(wnd))
;
	PUSH	ESI
	CALL	_isVisible
	POP	ECX
	TEST	EAX,EAX
	JE	NEAR	L_120
;
; Line 269:	break;
;
L_135:
;
; Line 270:	PaintMsg(wnd);
;
	PUSH	ESI
	CALL	_PaintMsg
	POP	ECX
;
; Line 271:	return FALSE;
;
	MOV	EAX,00H
	JMP	NEAR	L_118
L_128:
;
; Line 273:	KeyboardMsg(wnd, p1);
;
	PUSH	EBX
	PUSH	ESI
	CALL	_KeyboardMsg
	ADD	ESP,BYTE 08H
;
; Line 274:	return TRUE;
;
	MOV	EAX,01H
	JMP	SHORT	L_118
L_129:
;
; Line 276:	LeftButtonMsg(wnd, p1);
;
	PUSH	EBX
	PUSH	ESI
	CALL	_LeftButtonMsg
	ADD	ESP,BYTE 08H
;
; Line 277:	return TRUE;
;
	MOV	EAX,01H
	JMP	SHORT	L_118
L_130:
;
; Line 279:	return InsideRect(p1, p2, WindowRect(wnd));
;
	CMP	EBX,DWORD [ESI+0CH]
	JL	SHORT	L_138
	CMP	EBX,DWORD [ESI+014H]
	JG	SHORT	L_138
	MOV	EAX,DWORD [EBP+014H]
	CMP	EAX,DWORD [ESI+010H]
	JL	SHORT	L_139
	MOV	EAX,DWORD [EBP+014H]
	CMP	EAX,DWORD [ESI+018H]
	JLE	SHORT	L_137
L_139:
L_138:
	SUB	EAX,EAX
; TEST EAX,IMMED (branches around next four bytes of code)
	DB	0A9H
L_137:
	SUB	EAX,EAX
	INC	EAX
	NOP
	JMP	SHORT	L_118
L_131:
;
; Line 281:	rtn = BaseWndProc(MENUBAR, wnd, msg, p1, p2);
;
	PUSH	DWORD [EBP+014H]
	PUSH	EBX
	MOVSX	EAX,WORD [EBP+0CH]
	PUSH	EAX
	PUSH	ESI
	MOV	EAX,DWORD [EDI+03CH]
	IMUL	EAX,BYTE 0CH
	LEA	EAX,[EDI+EAX+00H]
	CALL	DWORD [EAX+04H]
	ADD	ESP,BYTE 010H
	MOV	DWORD [EBP-04H],EAX
;
; Line 282:	CloseWindowMsg(wnd);
;
	PUSH	ESI
	CALL	_CloseWindowMsg
	POP	ECX
;
; Line 283:	return rtn;
;
	MOV	EAX,DWORD [EBP-04H]
	JMP	SHORT	L_118
L_121:
;
; Line 285:	break;
;
	JMP	SHORT	L_120
L_120:
;
; Line 287:	return BaseWndProc(MENUBAR, wnd, msg, p1, p2);
;
	PUSH	DWORD [EBP+014H]
	PUSH	EBX
	MOVSX	EAX,WORD [EBP+0CH]
	PUSH	EAX
	PUSH	ESI
	MOV	EAX,DWORD [EDI+03CH]
	IMUL	EAX,BYTE 0CH
	LEA	EAX,[EDI+EAX+00H]
	CALL	DWORD [EAX+04H]
	ADD	ESP,BYTE 010H
L_118:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
SECTION _BSS

_twnd	RESB	04H
SECTION _CONST

SECTION _TEXT
[EXTERN	_stricmp]
[EXTERN	_DFcalloc]
[EXTERN	_isVisible]
[EXTERN	_strlen]
[EXTERN	_twputs]
[EXTERN	_DFmalloc]
[EXTERN	_free]
[EXTERN	_classdefs]
[EXTERN	_SendMessage]
[EXTERN	_strrchr]
[EXTERN	_strcpy]
