	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
[GLOBAL	_ClearDialogBoxes]
;
; Line 19:	void ClearDialogBoxes(void)
;
_ClearDialogBoxes:
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	EDI,DWORD _dbs
L_2:
;
; Line 20:	{
;
	MOV	EBX,00H
	JMP	SHORT	L_5
L_3:
;
; Line 23:	CTLWINDOW *ct = (*(dbs+i))->ctl;
;
	MOV	EAX,DWORD [EDI+00H]
	MOV	ESI,DWORD [EAX+EBX*4+00H]
	ADD	ESI,BYTE 018H
	JMP	SHORT	L_7
L_9:
;
; Line 25:	if ((ct->Class == TEXT ||
;
	CMP	DWORD [ESI+014H],BYTE 0DH
	JE	SHORT	L_12
	CMP	DWORD [ESI+014H],BYTE 04H
	JE	SHORT	L_12
	CMP	DWORD [ESI+014H],BYTE 02H
	JE	SHORT	L_12
	CMP	DWORD [ESI+014H],BYTE 0CH
	JNE	SHORT	L_10
L_12:
	CMP	DWORD [ESI+018H],BYTE 00H
	JE	SHORT	L_10
;
; Line 30:	free(ct->itext);
;
	PUSH	DWORD [ESI+018H]
	CALL	_free
	POP	ECX
;
; Line 31:	ct->itext = NULL;
;
	MOV	DWORD [ESI+018H],00H
L_10:
;
; Line 33:	ct++;
;
	ADD	ESI,BYTE 030H
L_7:
;
; Line 24:	while (ct->Class)    {
;
	CMP	DWORD [ESI+014H],BYTE 00H
	JNE	SHORT	L_9
L_8:
;
; Line 22:	for (i = 0; i < dbct; i++)    {
;
L_4:
	INC	EBX
L_5:
	CMP	EBX,DWORD [_dbct]
	JL	SHORT	L_3
L_6:
;
; Line 36:	if (dbs != NULL)    {
;
	CMP	DWORD [EDI+00H],BYTE 00H
	JE	SHORT	L_13
;
; Line 37:	free(dbs);
;
	PUSH	DWORD [EDI+00H]
	CALL	_free
	POP	ECX
;
; Line 38:	dbs = NULL;
;
	MOV	DWORD [EDI+00H],00H
L_13:
;
; Line 40:	dbct = 0;
;
	MOV	DWORD [_dbct],00H
;
; Line 41:	}
;
L_1:
	POP	EDI
	POP	ESI
	POP	EBX
	RET
;
; Line 44:	static int CreateWindowMsg(WINDOW wnd, PARAM p1, PARAM p2)
;
_CreateWindowMsg:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 014H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	EDI,DWORD [EBP+08H]
L_16:
;
; Line 45:	{
;
;
; Line 46:	DBOX *db = wnd->extension;
;
	MOV	EAX,DWORD [EDI+06CH]
	MOV	DWORD [EBP-0CH],EAX
;
; Line 47:	CTLWINDOW *ct = db->ctl;
;
	MOV	ESI,DWORD [EBP-0CH]
	ADD	ESI,BYTE 018H
	MOV	DWORD [EBP-04H],00H
	JMP	SHORT	L_19
L_17:
;
; Line 52:	if (db == dbs[i])
;
	MOV	EAX,DWORD [_dbs]
	MOV	ECX,DWORD [EBP-04H]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	CMP	DWORD [EBP-0CH],ECX
	JE	SHORT	L_20
;
; Line 53:	break;
;
L_21:
;
; Line 51:	for (i = 0; i < dbct; i++)
;
L_18:
	INC	DWORD [EBP-04H]
L_19:
	MOV	EAX,DWORD [EBP-04H]
	CMP	EAX,DWORD [_dbct]
	JL	SHORT	L_17
L_20:
;
; Line 54:	if (i == dbct)    {
;
	MOV	EAX,DWORD [EBP-04H]
	CMP	EAX,DWORD [_dbct]
	JNE	SHORT	L_23
;
; Line 55:	dbs = DFrealloc(dbs, sizeof(DBOX *) * (dbct+1));
;
	MOV	EAX,DWORD [_dbct]
	INC	EAX
	SHL	EAX,02H
	PUSH	EAX
	PUSH	DWORD [_dbs]
	CALL	_DFrealloc
	ADD	ESP,BYTE 08H
	MOV	DWORD [_dbs],EAX
;
; Line 56:	*(dbs + dbct++) = db;
;
	MOV	EAX,DWORD [_dbs]
	MOV	ECX,DWORD [_dbct]
	INC	DWORD [_dbct]
	MOV	EDX,DWORD [EBP-0CH]
	MOV	DWORD [EAX+ECX*4+00H],EDX
L_23:
;
; Line 58:	rtn = BaseWndProc(DIALOG, wnd, CREATE_WINDOW, p1, p2);
;
	PUSH	DWORD [EBP+010H]
	PUSH	DWORD [EBP+0CH]
	PUSH	BYTE 03H
	PUSH	EDI
	MOV	EAX,DWORD [_classdefs+06CH]
	IMUL	EAX,BYTE 0CH
	CALL	DWORD [EAX+04H+_classdefs+00H]
	ADD	ESP,BYTE 010H
	MOV	DWORD [EBP-08H],EAX
;
; Line 59:	ct = db->ctl;
;
	MOV	ESI,DWORD [EBP-0CH]
	ADD	ESI,BYTE 018H
	JMP	NEAR	L_25
L_27:
;
; Line 61:	int attrib = 0;
;
	MOV	DWORD [EBP-014H],00H
;
; Line 62:	if (TestAttribute(wnd, NOCLIP))
;
	MOV	EAX,DWORD [EDI+054H]
	AND	EAX,0800H
	JE	SHORT	L_28
;
; Line 63:	attrib |= NOCLIP;
;
	BTS	DWORD [EBP-014H],0BH
L_28:
;
; Line 64:	if (wnd->Modal)
;
	CMP	DWORD [EDI+0104H],BYTE 00H
	JE	SHORT	L_30
;
; Line 65:	attrib |= SAVESELF;
;
	BTS	DWORD [EBP-014H],07H
L_30:
;
; Line 66:	ct->setting = ct->isetting;
;
	MOV	EAX,DWORD [ESI+024H]
	MOV	DWORD [ESI+028H],EAX
;
; Line 67:	if (ct->Class == EDITBOX && ct->dwnd.h > 1)
;
	CMP	DWORD [ESI+014H],BYTE 04H
	JNE	SHORT	L_32
	CMP	DWORD [ESI+0CH],BYTE 01H
	JLE	SHORT	L_32
;
; Line 68:	attrib |= (MULTILINE | HASBORDER);
;
	OR	DWORD [EBP-014H],06000H
	JMP	SHORT	L_33
L_32:
;
; Line 69:	else if ((ct->Class == LISTBOX || ct->Class == TEXTBOX) &&
;
	CMP	DWORD [ESI+014H],BYTE 03H
	JE	SHORT	L_36
	CMP	DWORD [ESI+014H],BYTE 02H
	JNE	SHORT	L_34
L_36:
	CMP	DWORD [ESI+0CH],BYTE 02H
	JLE	SHORT	L_34
;
; Line 71:	attrib |= HASBORDER;
;
	BTS	DWORD [EBP-014H],0EH
L_34:
L_33:
;
; Line 72:	cwnd = CreateWindow(ct->Class,
;
	PUSH	DWORD [EBP-014H]
	PUSH	DWORD _ControlProc
	PUSH	EDI
	PUSH	ESI
	PUSH	DWORD [ESI+010H]
	PUSH	DWORD [ESI+0CH]
	MOV	EAX,DWORD [EDI+054H]
	AND	EAX,0100H
	JE	SHORT	L_37
	MOV	EAX,DWORD [EDI+054H]
	AND	EAX,BYTE 08H
	JE	SHORT	L_37
	MOV	EAX,DWORD [EDI+054H]
	AND	EAX,010000H
	JE	SHORT	L_37
	MOV	EAX,03H
	JMP	SHORT	L_38
L_37:
	MOV	EAX,DWORD [EDI+054H]
	AND	EAX,0100H
	JE	SHORT	L_42
	MOV	EAX,DWORD [EDI+054H]
	AND	EAX,BYTE 08H
	JNE	SHORT	L_41
L_42:
	MOV	EAX,DWORD [EDI+054H]
	AND	EAX,0100H
	JE	SHORT	L_39
	MOV	EAX,DWORD [EDI+054H]
	AND	EAX,010000H
	JE	SHORT	L_39
L_41:
	MOV	EAX,02H
	JMP	SHORT	L_40
L_39:
	MOV	EAX,DWORD [EDI+054H]
	AND	EAX,014108H
	JE	SHORT	L_43
	MOV	EAX,01H
	JMP	SHORT	L_44
L_43:
	MOV	EAX,00H
L_44:
L_40:
L_38:
	ADD	EAX,DWORD [EDI+010H]
	ADD	EAX,DWORD [ESI+08H]
	PUSH	EAX
	MOV	EAX,DWORD [EDI+054H]
	AND	EAX,04000H
	JE	SHORT	L_45
	MOV	EAX,01H
	JMP	SHORT	L_46
L_45:
	MOV	EAX,00H
L_46:
	ADD	EAX,DWORD [EDI+0CH]
	ADD	EAX,DWORD [ESI+04H]
	PUSH	EAX
	PUSH	DWORD [ESI+00H]
	MOVSX	EAX,WORD [ESI+014H]
	PUSH	EAX
	CALL	_CreateWindow
	ADD	ESP,BYTE 028H
	MOV	EBX,EAX
;
; Line 82:	if ((ct->Class == EDITBOX || ct->Class == TEXTBOX ||
;
	CMP	DWORD [ESI+014H],BYTE 04H
	JE	SHORT	L_49
	CMP	DWORD [ESI+014H],BYTE 02H
	JE	SHORT	L_49
	CMP	DWORD [ESI+014H],BYTE 0CH
	JNE	SHORT	L_47
L_49:
	CMP	DWORD [ESI+018H],BYTE 00H
	JE	SHORT	L_47
;
; Line 86:	SendMessage(cwnd, ADDTEXT, (PARAM) ct->itext, 0);
;
	PUSH	BYTE 00H
	PUSH	DWORD [ESI+018H]
	PUSH	BYTE 030H
	PUSH	EBX
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_47:
;
; Line 88:	ct++;
;
	ADD	ESI,BYTE 030H
L_25:
;
; Line 60:	while (ct->Class)    {
;
	CMP	DWORD [ESI+014H],BYTE 00H
	JNE	NEAR	L_27
L_26:
;
; Line 90:	return rtn;
;
	MOV	EAX,DWORD [EBP-08H]
L_15:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
;
; Line 94:	static BOOL LeftButtonMsg(WINDOW wnd, PARAM p1, PARAM p2)
;
_LeftButtonMsg:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 08H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	EBX,DWORD [EBP+0CH]
L_51:
;
; Line 95:	{
;
;
; Line 96:	DBOX *db = wnd->extension;
;
	MOV	EAX,DWORD [EBP+08H]
	MOV	EAX,DWORD [EAX+06CH]
	MOV	DWORD [EBP-04H],EAX
;
; Line 97:	CTLWINDOW *ct = db->ctl;
;
	MOV	EDI,DWORD [EBP-04H]
	ADD	EDI,BYTE 018H
;
; Line 98:	if (WindowSizing || WindowMoving)
;
	CMP	DWORD [_WindowSizing],BYTE 00H
	JNE	SHORT	L_54
	CMP	DWORD [_WindowMoving],BYTE 00H
	JE	SHORT	L_52
L_54:
;
; Line 99:	return TRUE;
;
	MOV	EAX,01H
	JMP	NEAR	L_50
L_52:
;
; Line 100:	if (HitControlBox(wnd, p1-GetLeft(wnd), p2-GetTop(wnd))) {
;
	MOV	EAX,DWORD [EBP+08H]
	MOV	EAX,DWORD [EAX+054H]
	AND	EAX,0200H
	JE	SHORT	L_55
	MOV	EAX,DWORD [EBP+08H]
	MOV	ECX,EBX
	SUB	ECX,DWORD [EAX+0CH]
	CMP	ECX,BYTE 02H
	JNE	SHORT	L_55
	MOV	EAX,DWORD [EBP+08H]
	MOV	ECX,DWORD [EBP+010H]
	SUB	ECX,DWORD [EAX+010H]
	JNE	SHORT	L_55
;
; Line 101:	PostMessage(wnd, KEYBOARD, ' ', ALTKEY);
;
	PUSH	BYTE 08H
	PUSH	BYTE 020H
	PUSH	BYTE 015H
	PUSH	DWORD [EBP+08H]
	CALL	_PostMessage
	ADD	ESP,BYTE 010H
;
; Line 102:	return TRUE;
;
	MOV	EAX,01H
	JMP	NEAR	L_50
L_55:
	JMP	NEAR	L_57
L_59:
;
; Line 105:	WINDOW cwnd = ct->wnd;
;
	MOV	ESI,DWORD [EDI+02CH]
;
; Line 106:	if (ct->Class == COMBOBOX)    {
;
	CMP	DWORD [EDI+014H],BYTE 0CH
	JNE	SHORT	L_60
;
; Line 107:	if (p2 == GetTop(cwnd))    {
;
	MOV	EAX,DWORD [EBP+010H]
	CMP	EAX,DWORD [ESI+010H]
	JNE	SHORT	L_62
;
; Line 108:	if (p1 == GetRight(cwnd)+1)    {
;
	MOV	EAX,DWORD [ESI+014H]
	INC	EAX
	CMP	EBX,EAX
	JNE	SHORT	L_64
;
; Line 109:	SendMessage(cwnd, LEFT_BUTTON, p1, p2);
;
	PUSH	DWORD [EBP+010H]
	PUSH	EBX
	PUSH	BYTE 024H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 110:	return TRUE;
;
	MOV	EAX,01H
	JMP	SHORT	L_50
L_64:
L_62:
;
; Line 113:	if (GetClass(inFocus) == LISTBOX)
;
	MOV	EAX,DWORD [_inFocus]
	CMP	DWORD [EAX+00H],BYTE 03H
	JNE	SHORT	L_66
;
; Line 114:	SendMessage(wnd, SETFOCUS, TRUE, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 01H
	PUSH	BYTE 08H
	PUSH	DWORD [EBP+08H]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_66:
	JMP	SHORT	L_61
L_60:
;
; Line 116:	else if (ct->Class == SPINBUTTON)    {
;
	CMP	DWORD [EDI+014H],BYTE 010H
	JNE	SHORT	L_68
;
; Line 117:	if (p2 == GetTop(cwnd))    {
;
	MOV	EAX,DWORD [EBP+010H]
	CMP	EAX,DWORD [ESI+010H]
	JNE	SHORT	L_70
;
; Line 118:	if (p1 == GetRight(cwnd)+1 ||
;
	MOV	EAX,DWORD [ESI+014H]
	INC	EAX
	CMP	EBX,EAX
	JE	SHORT	L_74
	MOV	EAX,DWORD [ESI+014H]
	ADD	EAX,BYTE 02H
	CMP	EBX,EAX
	JNE	SHORT	L_72
L_74:
;
; Line 120:	SendMessage(cwnd, LEFT_BUTTON, p1, p2);
;
	PUSH	DWORD [EBP+010H]
	PUSH	EBX
	PUSH	BYTE 024H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 121:	return TRUE;
;
	MOV	EAX,01H
	JMP	SHORT	L_50
L_72:
L_70:
L_68:
L_61:
;
; Line 125:	ct++;
;
	ADD	EDI,BYTE 030H
L_57:
;
; Line 104:	while (ct->Class)    {
;
	CMP	DWORD [EDI+014H],BYTE 00H
	JNE	NEAR	L_59
L_58:
;
; Line 127:	return FALSE;
;
	MOV	EAX,00H
L_50:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
;
; Line 131:	static BOOL KeyboardMsg(WINDOW wnd, PARAM p1, PARAM p2)
;
_KeyboardMsg:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
L_76:
;
; Line 132:	{
;
;
; Line 133:	DBOX *db = wnd->extension;
;
	MOV	EBX,DWORD [ESI+06CH]
;
; Line 136:	if (WindowMoving || WindowSizing)
;
	CMP	DWORD [_WindowMoving],BYTE 00H
	JNE	SHORT	L_79
	CMP	DWORD [_WindowSizing],BYTE 00H
	JE	SHORT	L_77
L_79:
;
; Line 137:	return FALSE;
;
	MOV	EAX,00H
	JMP	NEAR	L_75
L_77:
;
; Line 138:	switch ((int)p1)    {
;
	MOV	EAX,DWORD [EBP+0CH]
	CMP	EAX,DWORD 010C8H
	JE	NEAR	L_85
	JG	SHORT	L_93
	CMP	EAX,BYTE 020H
	JE	NEAR	L_90
	JG	SHORT	L_94
	CMP	EAX,BYTE 01BH
	JE	NEAR	L_92
	JG	NEAR	L_81
	CMP	EAX,BYTE 09H
	JE	NEAR	L_87
	JMP	NEAR	L_81
L_94:
	CMP	EAX,DWORD 010BBH
	JE	SHORT	L_82
	JG	NEAR	L_81
	CMP	EAX,DWORD 0108FH
	JE	SHORT	L_83
	JMP	NEAR	L_81
L_93:
	CMP	EAX,DWORD 010D0H
	JE	SHORT	L_89
	JG	SHORT	L_95
	CMP	EAX,DWORD 010CDH
	JE	SHORT	L_88
	JG	NEAR	L_81
	CMP	EAX,DWORD 010CBH
	JE	SHORT	L_84
	JMP	NEAR	L_81
L_95:
	CMP	EAX,DWORD 010EDH
	JE	SHORT	L_86
	JG	NEAR	L_81
	CMP	EAX,DWORD 010E1H
	JE	SHORT	L_91
	JMP	SHORT	L_81
L_82:
;
; Line 140:	ct = GetControl(inFocus);
;
	MOV	EAX,DWORD [_inFocus]
	MOV	EDI,DWORD [EAX+0108H]
;
; Line 141:	if (ct != NULL)
;
	TEST	EDI,EDI
	JE	SHORT	L_96
;
; Line 142:	if (DisplayHelp(wnd, ct->help))
;
	PUSH	DWORD [EDI+020H]
	PUSH	ESI
	CALL	_DisplayHelp
	ADD	ESP,BYTE 08H
	TEST	EAX,EAX
	JE	SHORT	L_98
;
; Line 143:	return TRUE;
;
	MOV	EAX,01H
	JMP	SHORT	L_75
L_98:
L_96:
;
; Line 144:	break;
;
	JMP	SHORT	L_80
L_83:
;
; Line 146:	case BS:
;
L_84:
;
; Line 147:	case UP:
;
L_85:
;
; Line 148:	PrevFocus(db);
;
	PUSH	EBX
	CALL	_PrevFocus
	POP	ECX
;
; Line 149:	break;
;
	JMP	SHORT	L_80
L_86:
;
; Line 151:	case '\t':
;
L_87:
;
; Line 152:	case FWD:
;
L_88:
;
; Line 153:	case DN:
;
L_89:
;
; Line 154:	NextFocus(db);
;
	PUSH	EBX
	CALL	_NextFocus
	POP	ECX
;
; Line 155:	break;
;
	JMP	SHORT	L_80
L_90:
;
; Line 157:	if (((int)p2 & ALTKEY) &&
;
	MOV	EAX,DWORD [EBP+010H]
	AND	EAX,BYTE 08H
	JE	SHORT	L_100
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0200H
	JE	SHORT	L_100
;
; Line 159:	SysMenuOpen = TRUE;
;
	MOV	DWORD [_SysMenuOpen],01H
;
; Line 160:	BuildSystemMenu(wnd);
;
	PUSH	ESI
	CALL	_BuildSystemMenu
	POP	ECX
;
; Line 161:	return TRUE;
;
	MOV	EAX,01H
	JMP	SHORT	L_75
L_100:
;
; Line 163:	break;
;
	JMP	SHORT	L_80
L_91:
;
; Line 165:	case ESC:
;
L_92:
;
; Line 166:	SendMessage(wnd, COMMAND, ID_CANCEL, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 035H
	PUSH	BYTE 02H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 167:	break;
;
	JMP	SHORT	L_80
L_81:
;
; Line 170:	if (dbShortcutKeys(db, (int) p1))
;
	PUSH	DWORD [EBP+0CH]
	PUSH	EBX
	CALL	_dbShortcutKeys
	ADD	ESP,BYTE 08H
	TEST	EAX,EAX
	JE	SHORT	L_102
;
; Line 171:	return TRUE;
;
	MOV	EAX,01H
	JMP	SHORT	L_75
L_102:
;
; Line 172:	break;
;
	JMP	SHORT	L_80
L_80:
;
; Line 174:	return wnd->Modal;
;
	MOV	EAX,DWORD [ESI+0104H]
L_75:
	POP	EDI
	POP	ESI
	POP	EBX
	POP	EBP
	RET
;
; Line 178:	static BOOL CommandMsg(WINDOW wnd, PARAM p1, PARAM p2)
;
_CommandMsg:
	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 [EBP+0CH]
L_105:
;
; Line 179:	{
;
;
; Line 180:	DBOX *db = wnd->extension;
;
	MOV	EAX,DWORD [ESI+06CH]
	MOV	DWORD [EBP-04H],EAX
;
; Line 181:	switch ((int) p1)    {
;
	CMP	EDI,BYTE 034H
	JE	SHORT	L_108
	CMP	EDI,BYTE 035H
	JE	SHORT	L_109
	CMP	EDI,BYTE 036H
	JE	SHORT	L_110
	JMP	SHORT	L_107
L_108:
;
; Line 183:	case ID_CANCEL:
;
L_109:
;
; Line 184:	if ((int)p2 != 0)
;
	TEST	EBX,EBX
	JE	SHORT	L_111
;
; Line 185:	return TRUE;
;
	MOV	EAX,01H
	JMP	SHORT	L_104
L_111:
;
; Line 186:	wnd->ReturnCode = (int) p1;
;
	MOV	DWORD [ESI+0100H],EDI
;
; Line 187:	if (wnd->Modal)
;
	CMP	DWORD [ESI+0104H],BYTE 00H
	JE	SHORT	L_113
;
; Line 188:	PostMessage(wnd, ENDDIALOG, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 04BH
	PUSH	ESI
	CALL	_PostMessage
	ADD	ESP,BYTE 010H
	JMP	SHORT	L_114
L_113:
;
; Line 190:	SendMessage(wnd, CLOSE_WINDOW, TRUE, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 01H
	PUSH	BYTE 07H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_114:
;
; Line 191:	return TRUE;
;
	MOV	EAX,01H
	JMP	SHORT	L_104
L_110:
;
; Line 193:	if ((int)p2 != 0)
;
	TEST	EBX,EBX
	JE	SHORT	L_115
;
; Line 194:	return TRUE;
;
	MOV	EAX,01H
	JMP	SHORT	L_104
L_115:
;
; Line 195:	return DisplayHelp(wnd, db->HelpName);
;
	MOV	EAX,DWORD [EBP-04H]
	PUSH	DWORD [EAX+00H]
	PUSH	ESI
	CALL	_DisplayHelp
	ADD	ESP,BYTE 08H
	JMP	SHORT	L_104
L_107:
;
; Line 197:	break;
;
	JMP	SHORT	L_106
L_106:
;
; Line 199:	return FALSE;
;
	MOV	EAX,00H
L_104:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
[GLOBAL	_DialogProc]
;
; Line 203:	int DialogProc(WINDOW wnd, MESSAGE msg, PARAM p1, PARAM p2)
;
_DialogProc:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 0CH
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
	MOV	EBX,DWORD [EBP+010H]
	MOV	EDI,DWORD _classdefs
L_118:
;
; Line 204:	{
;
;
; Line 206:	DBOX *db = wnd->extension;
;
	MOV	EAX,DWORD [ESI+06CH]
	MOV	DWORD [EBP-04H],EAX
;
; Line 208:	switch (msg)    {
;
	MOV	EAX,DWORD [EBP+0CH]
	CMP	EAX,BYTE 0DH
	JE	NEAR	L_132
	JA	SHORT	L_134
	CMP	EAX,BYTE 08H
	JE	NEAR	L_128
	JA	SHORT	L_135
	CMP	EAX,BYTE 03H
	JE	NEAR	L_121
	JA	SHORT	L_136
	CMP	EAX,BYTE 02H
	JE	NEAR	L_129
	JMP	NEAR	L_120
L_136:
	CMP	EAX,BYTE 07H
	JE	NEAR	L_133
	JMP	NEAR	L_120
L_135:
	CMP	EAX,BYTE 0CH
	JE	NEAR	L_131
	JA	NEAR	L_120
	CMP	EAX,BYTE 09H
	JE	NEAR	L_130
	JMP	NEAR	L_120
L_134:
	CMP	EAX,BYTE 03FH
	JE	NEAR	L_125
	JA	SHORT	L_137
	CMP	EAX,BYTE 01EH
	JE	SHORT	L_122
	JA	SHORT	L_138
	CMP	EAX,BYTE 015H
	JE	SHORT	L_124
	JMP	NEAR	L_120
L_138:
	CMP	EAX,BYTE 024H
	JE	SHORT	L_123
	JMP	NEAR	L_120
L_137:
	CMP	EAX,BYTE 041H
	JE	NEAR	L_127
	JA	NEAR	L_120
	CMP	EAX,BYTE 040H
	JE	NEAR	L_126
	JMP	NEAR	L_120
L_121:
;
; Line 210:	return CreateWindowMsg(wnd, p1, p2);
;
	PUSH	DWORD [EBP+014H]
	PUSH	EBX
	PUSH	ESI
	CALL	_CreateWindowMsg
	ADD	ESP,BYTE 0CH
	JMP	NEAR	L_117
L_122:
;
; Line 212:	if (wnd->Modal)
;
	CMP	DWORD [ESI+0104H],BYTE 00H
	JE	SHORT	L_139
;
; Line 213:	return TRUE;
;
	MOV	EAX,01H
	JMP	NEAR	L_117
L_139:
;
; Line 214:	break;
;
	JMP	NEAR	L_119
L_123:
;
; Line 216:	if (LeftButtonMsg(wnd, p1, p2))
;
	PUSH	DWORD [EBP+014H]
	PUSH	EBX
	PUSH	ESI
	CALL	_LeftButtonMsg
	ADD	ESP,BYTE 0CH
	TEST	EAX,EAX
	JE	SHORT	L_141
;
; Line 217:	return TRUE;
;
	MOV	EAX,01H
	JMP	NEAR	L_117
L_141:
;
; Line 218:	break;
;
	JMP	NEAR	L_119
L_124:
;
; Line 220:	if (KeyboardMsg(wnd, p1, p2))
;
	PUSH	DWORD [EBP+014H]
	PUSH	EBX
	PUSH	ESI
	CALL	_KeyboardMsg
	ADD	ESP,BYTE 0CH
	TEST	EAX,EAX
	JE	SHORT	L_143
;
; Line 221:	return TRUE;
;
	MOV	EAX,01H
	JMP	NEAR	L_117
L_143:
;
; Line 222:	break;
;
	JMP	NEAR	L_119
L_125:
;
; Line 224:	SysMenuOpen = FALSE;
;
	MOV	DWORD [_SysMenuOpen],00H
;
; Line 225:	break;
;
	JMP	NEAR	L_119
L_126:
;
; Line 227:	case LB_CHOOSE:
;
L_127:
;
; Line 228:	if (SysMenuOpen)
;
	CMP	DWORD [_SysMenuOpen],BYTE 00H
	JE	SHORT	L_145
;
; Line 229:	return TRUE;
;
	MOV	EAX,01H
	JMP	NEAR	L_117
L_145:
;
; Line 230:	SendMessage(wnd, COMMAND, inFocusCommand(db), msg);
;
	PUSH	DWORD [EBP+0CH]
	PUSH	DWORD [EBP-04H]
	CALL	_inFocusCommand
	POP	ECX
	PUSH	EAX
	PUSH	BYTE 02H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 231:	break;
;
	JMP	NEAR	L_119
L_128:
;
; Line 233:	if ((int)p1 && wnd->dfocus != NULL && isVisible(wnd))
;
	TEST	EBX,EBX
	JE	SHORT	L_147
	CMP	DWORD [ESI+010CH],BYTE 00H
	JE	SHORT	L_147
	PUSH	ESI
	CALL	_isVisible
	POP	ECX
	TEST	EAX,EAX
	JE	SHORT	L_147
;
; Line 234:	return SendMessage(wnd->dfocus, SETFOCUS, TRUE, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 01H
	PUSH	BYTE 08H
	PUSH	DWORD [ESI+010CH]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
	JMP	NEAR	L_117
L_147:
;
; Line 235:	break;
;
	JMP	NEAR	L_119
L_129:
;
; Line 237:	if (CommandMsg(wnd, p1, p2))
;
	PUSH	DWORD [EBP+014H]
	PUSH	EBX
	PUSH	ESI
	CALL	_CommandMsg
	ADD	ESP,BYTE 0CH
	TEST	EAX,EAX
	JE	SHORT	L_149
;
; Line 238:	return TRUE;
;
	MOV	EAX,01H
	JMP	NEAR	L_117
L_149:
;
; Line 239:	break;
;
	JMP	SHORT	L_119
L_130:
;
; Line 241:	p2 = TRUE;
;
	MOV	DWORD [EBP+014H],01H
;
; Line 242:	break;
;
	JMP	SHORT	L_119
L_131:
;
; Line 244:	case SIZE:
;
L_132:
;
; Line 245:	rtn = BaseWndProc(DIALOG, wnd, msg, p1, p2);
;
	PUSH	DWORD [EBP+014H]
	PUSH	EBX
	MOVSX	EAX,WORD [EBP+0CH]
	PUSH	EAX
	PUSH	ESI
	MOV	EAX,DWORD [EDI+06CH]
	IMUL	EAX,BYTE 0CH
	LEA	EAX,[EDI+EAX+00H]
	CALL	DWORD [EAX+04H]
	ADD	ESP,BYTE 010H
	MOV	DWORD [EBP-08H],EAX
;
; Line 246:	if (wnd->dfocus != NULL && isVisible(wnd))
;
	CMP	DWORD [ESI+010CH],BYTE 00H
	JE	SHORT	L_151
	PUSH	ESI
	CALL	_isVisible
	POP	ECX
	TEST	EAX,EAX
	JE	SHORT	L_151
;
; Line 247:	SendMessage(wnd->dfocus, SETFOCUS, TRUE, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 01H
	PUSH	BYTE 08H
	PUSH	DWORD [ESI+010CH]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_151:
;
; Line 248:	return rtn;
;
	MOV	EAX,DWORD [EBP-08H]
	JMP	SHORT	L_117
L_133:
;
; Line 250:	if (!p1)    {
;
	TEST	EBX,EBX
	JNE	SHORT	L_153
;
; Line 251:	SendMessage(wnd, COMMAND, ID_CANCEL, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 035H
	PUSH	BYTE 02H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 252:	return TRUE;
;
	MOV	EAX,01H
	JMP	SHORT	L_117
L_153:
;
; Line 254:	break;
;
	JMP	SHORT	L_119
L_120:
;
; Line 256:	break;
;
	JMP	SHORT	L_119
L_119:
;
; Line 258:	return BaseWndProc(DIALOG, wnd, msg, p1, p2);
;
	PUSH	DWORD [EBP+014H]
	PUSH	EBX
	MOVSX	EAX,WORD [EBP+0CH]
	PUSH	EAX
	PUSH	ESI
	MOV	EAX,DWORD [EDI+06CH]
	IMUL	EAX,BYTE 0CH
	LEA	EAX,[EDI+EAX+00H]
	CALL	DWORD [EAX+04H]
	ADD	ESP,BYTE 010H
L_117:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
[GLOBAL	_DialogBox]
;
; Line 262:	BOOL DialogBox(WINDOW wnd, DBOX *db, BOOL Modal,
;
_DialogBox:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 010H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+0CH]
	MOV	EDI,DWORD [EBP+010H]
L_156:
;
; Line 264:	{
;
;
; Line 265:	BOOL rtn = FALSE;
;
	MOV	DWORD [EBP-0CH],00H
;
; Line 266:	int x = db->dwnd.x, y = db->dwnd.y;
;
	MOV	EAX,DWORD [ESI+08H]
	MOV	DWORD [EBP-08H],EAX
	MOV	EAX,DWORD [ESI+0CH]
	MOV	DWORD [EBP-04H],EAX
;
; Line 269:	DialogWnd = CreateWindow(DIALOG,
;
	TEST	EDI,EDI
	JE	SHORT	L_157
	MOV	EAX,080H
	JMP	SHORT	L_158
L_157:
	MOV	EAX,00H
L_158:
	PUSH	EAX
	PUSH	DWORD [EBP+014H]
	PUSH	DWORD [EBP+08H]
	PUSH	ESI
	PUSH	DWORD [ESI+014H]
	PUSH	DWORD [ESI+010H]
	PUSH	DWORD [EBP-04H]
	PUSH	DWORD [EBP-08H]
	PUSH	DWORD [ESI+04H]
	PUSH	BYTE 09H
	CALL	_CreateWindow
	ADD	ESP,BYTE 028H
	MOV	EBX,EAX
;
; Line 278:	SendMessage(DialogWnd, SETFOCUS, TRUE, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 01H
	PUSH	BYTE 08H
	PUSH	EBX
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 279:	DialogWnd->Modal = Modal;
;
	MOV	DWORD [EBX+0104H],EDI
;
; Line 280:	FirstFocus(db);
;
	PUSH	ESI
	CALL	_FirstFocus
	POP	ECX
;
; Line 281:	PostMessage(DialogWnd, INITIATE_DIALOG, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 048H
	PUSH	EBX
	CALL	_PostMessage
	ADD	ESP,BYTE 010H
;
; Line 282:	if (Modal)    {
;
	TEST	EDI,EDI
	JE	SHORT	L_159
;
; Line 283:	SendMessage(DialogWnd, CAPTURE_MOUSE, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 02EH
	PUSH	EBX
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 284:	SendMessage(DialogWnd, CAPTURE_KEYBOARD, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 016H
	PUSH	EBX
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 285:	while (dispatch_message())
;
L_161:
	CALL	_dispatch_message
	TEST	EAX,EAX
	JNE	SHORT	L_161
;
; Line 287:	rtn = DialogWnd->ReturnCode == ID_OK;
;
	CMP	DWORD [EBX+0100H],BYTE 034H
	SETE	AL
	MOVZX	EAX,AL
	MOV	DWORD [EBP-0CH],EAX
;
; Line 288:	SendMessage(DialogWnd, RELEASE_MOUSE, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 02FH
	PUSH	EBX
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 289:	SendMessage(DialogWnd, RELEASE_KEYBOARD, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 017H
	PUSH	EBX
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 290:	SendMessage(DialogWnd, CLOSE_WINDOW, TRUE, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 01H
	PUSH	BYTE 07H
	PUSH	EBX
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_159:
;
; Line 292:	return rtn;
;
	MOV	EAX,DWORD [EBP-0CH]
L_155:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
;
; Line 296:	static int inFocusCommand(DBOX *db)
;
_inFocusCommand:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	ESI
L_163:
;
; Line 297:	{
;
;
; Line 298:	CTLWINDOW *ct = db->ctl;
;
	MOV	ESI,DWORD [EBP+08H]
	ADD	ESI,BYTE 018H
	JMP	SHORT	L_164
L_166:
;
; Line 300:	if (ct->wnd == inFocus)
;
	MOV	EAX,DWORD [ESI+02CH]
	CMP	EAX,DWORD [_inFocus]
	JNE	SHORT	L_167
;
; Line 301:	return ct->command;
;
	MOV	EAX,DWORD [ESI+01CH]
	JMP	SHORT	L_162
L_167:
;
; Line 302:	ct++;
;
	ADD	ESI,BYTE 030H
L_164:
;
; Line 299:	while (ct->Class)    {
;
	CMP	DWORD [ESI+014H],BYTE 00H
	JNE	SHORT	L_166
L_165:
;
; Line 304:	return -1;
;
	MOV	EAX,0FFFFFFFFH
L_162:
	POP	ESI
	POP	EBP
	RET
[GLOBAL	_FindCommand]
;
; Line 308:	CTLWINDOW *FindCommand(DBOX *db, enum commands cmd, int Class)
;
_FindCommand:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	MOV	EBX,DWORD [EBP+010H]
L_170:
;
; Line 309:	{
;
;
; Line 310:	CTLWINDOW *ct = db->ctl;
;
	MOV	ESI,DWORD [EBP+08H]
	ADD	ESI,BYTE 018H
	JMP	SHORT	L_171
L_173:
;
; Line 312:	if (Class == -1 || ct->Class == Class)
;
	CMP	EBX,BYTE 0FFFFFFFFH
	JE	SHORT	L_176
	CMP	DWORD [ESI+014H],EBX
	JNE	SHORT	L_174
L_176:
;
; Line 313:	if (cmd == ct->command)
;
	MOV	EAX,DWORD [EBP+0CH]
	CMP	EAX,DWORD [ESI+01CH]
	JNE	SHORT	L_177
;
; Line 314:	return ct;
;
	MOV	EAX,ESI
	JMP	SHORT	L_169
L_177:
L_174:
;
; Line 315:	ct++;
;
	ADD	ESI,BYTE 030H
L_171:
;
; Line 311:	while (ct->Class)    {
;
	CMP	DWORD [ESI+014H],BYTE 00H
	JNE	SHORT	L_173
L_172:
;
; Line 317:	return NULL;
;
	MOV	EAX,00H
L_169:
	POP	ESI
	POP	EBX
	POP	EBP
	RET
[GLOBAL	_ControlWindow]
;
; Line 321:	WINDOW ControlWindow(const DBOX *db, enum commands cmd)
;
_ControlWindow:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	ESI
L_180:
;
; Line 322:	{
;
;
; Line 323:	const CTLWINDOW *ct = db->ctl;
;
	MOV	ESI,DWORD [EBP+08H]
	ADD	ESI,BYTE 018H
	JMP	SHORT	L_181
L_183:
;
; Line 325:	if (ct->Class != TEXT && cmd == ct->command)
;
	CMP	DWORD [ESI+014H],BYTE 0DH
	JE	SHORT	L_184
	MOV	EAX,DWORD [EBP+0CH]
	CMP	EAX,DWORD [ESI+01CH]
	JNE	SHORT	L_184
;
; Line 326:	return ct->wnd;
;
	MOV	EAX,DWORD [ESI+02CH]
	JMP	SHORT	L_179
L_184:
;
; Line 327:	ct++;
;
	ADD	ESI,BYTE 030H
L_181:
;
; Line 324:	while (ct->Class)    {
;
	CMP	DWORD [ESI+014H],BYTE 00H
	JNE	SHORT	L_183
L_182:
;
; Line 329:	return NULL;
;
	MOV	EAX,00H
L_179:
	POP	ESI
	POP	EBP
	RET
[GLOBAL	_WindowControl]
;
; Line 333:	CTLWINDOW *WindowControl(DBOX *db, WINDOW wnd)
;
_WindowControl:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	ESI
L_187:
;
; Line 334:	{
;
;
; Line 335:	CTLWINDOW *ct = db->ctl;
;
	MOV	ESI,DWORD [EBP+08H]
	ADD	ESI,BYTE 018H
	JMP	SHORT	L_188
L_190:
;
; Line 337:	if (ct->wnd == wnd)
;
	MOV	EAX,DWORD [ESI+02CH]
	CMP	EAX,DWORD [EBP+0CH]
	JNE	SHORT	L_191
;
; Line 338:	return ct;
;
	MOV	EAX,ESI
	JMP	SHORT	L_186
L_191:
;
; Line 339:	ct++;
;
	ADD	ESI,BYTE 030H
L_188:
;
; Line 336:	while (ct->Class)    {
;
	CMP	DWORD [ESI+014H],BYTE 00H
	JNE	SHORT	L_190
L_189:
;
; Line 341:	return NULL;
;
	MOV	EAX,00H
L_186:
	POP	ESI
	POP	EBP
	RET
[GLOBAL	_ControlSetting]
;
; Line 345:	void ControlSetting(DBOX *db, enum commands cmd,
;
_ControlSetting:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	MOV	EBX,DWORD [EBP+014H]
L_194:
;
; Line 347:	{
;
;
; Line 348:	CTLWINDOW *ct = FindCommand(db, cmd, Class);
;
	PUSH	DWORD [EBP+010H]
	MOVSX	EAX,WORD [EBP+0CH]
	PUSH	EAX
	PUSH	DWORD [EBP+08H]
	CALL	_FindCommand
	ADD	ESP,BYTE 0CH
	MOV	ESI,EAX
;
; Line 349:	if (ct != NULL)	{
;
	TEST	ESI,ESI
	JE	SHORT	L_195
;
; Line 350:	ct->isetting = setting;
;
	MOV	DWORD [ESI+024H],EBX
;
; Line 351:	if (ct->wnd != NULL)
;
	CMP	DWORD [ESI+02CH],BYTE 00H
	JE	SHORT	L_197
;
; Line 352:	ct->setting = setting;
;
	MOV	DWORD [ESI+028H],EBX
L_197:
L_195:
;
; Line 354:	}
;
L_193:
	POP	ESI
	POP	EBX
	POP	EBP
	RET
[GLOBAL	_isControlOn]
;
; Line 357:	BOOL isControlOn(DBOX *db, enum commands cmd, int Class)
;
_isControlOn:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	ESI
L_200:
;
; Line 358:	{
;
;
; Line 359:	const CTLWINDOW *ct = FindCommand(db, cmd, Class);
;
	PUSH	DWORD [EBP+010H]
	MOVSX	EAX,WORD [EBP+0CH]
	PUSH	EAX
	PUSH	DWORD [EBP+08H]
	CALL	_FindCommand
	ADD	ESP,BYTE 0CH
	MOV	ESI,EAX
;
; Line 360:	return ct ? (ct->wnd ? ct->setting : ct->isetting) : FALSE;
;
	TEST	ESI,ESI
	JE	SHORT	L_201
	CMP	DWORD [ESI+02CH],BYTE 00H
	JE	SHORT	L_203
	MOV	EAX,DWORD [ESI+028H]
	JMP	SHORT	L_204
L_203:
	MOV	EAX,DWORD [ESI+024H]
L_204:
	JMP	SHORT	L_202
L_201:
	MOV	EAX,00H
L_202:
L_199:
	POP	ESI
	POP	EBP
	RET
[GLOBAL	_GetDlgTextString]
;
; Line 364:	char *GetDlgTextString(DBOX *db,enum commands cmd,CLASS Class)
;
_GetDlgTextString:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	ESI
L_206:
;
; Line 365:	{
;
;
; Line 366:	CTLWINDOW *ct = FindCommand(db, cmd, Class);
;
	PUSH	DWORD [EBP+010H]
	MOVSX	EAX,WORD [EBP+0CH]
	PUSH	EAX
	PUSH	DWORD [EBP+08H]
	CALL	_FindCommand
	ADD	ESP,BYTE 0CH
	MOV	ESI,EAX
;
; Line 367:	if (ct != NULL)
;
	TEST	ESI,ESI
	JE	SHORT	L_207
;
; Line 368:	return ct->itext;
;
	MOV	EAX,DWORD [ESI+018H]
	JMP	SHORT	L_205
L_207:
;
; Line 370:	return NULL;
;
	MOV	EAX,00H
L_208:
;
; Line 371:	}
;
L_205:
	POP	ESI
	POP	EBP
	RET
[GLOBAL	_SetDlgTextString]
;
; Line 374:	void SetDlgTextString(DBOX *db, enum commands cmd,
;
_SetDlgTextString:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 04H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	EBX,DWORD [EBP+010H]
L_211:
;
; Line 376:	{
;
;
; Line 377:	CTLWINDOW *ct = FindCommand(db, cmd, Class);
;
	PUSH	DWORD [EBP+014H]
	MOVSX	EAX,WORD [EBP+0CH]
	PUSH	EAX
	PUSH	DWORD [EBP+08H]
	CALL	_FindCommand
	ADD	ESP,BYTE 0CH
	MOV	ESI,EAX
;
; Line 378:	if (ct != NULL)    {
;
	TEST	ESI,ESI
	JE	NEAR	L_212
;
; Line 379:	if (text != NULL)	{
;
	TEST	EBX,EBX
	JE	SHORT	L_214
;
; Line 380:	ATTRCHR *cs = text;
;
	MOV	DWORD [EBP-04H],EBX
;
; Line 382:	cd = ct->itext = DFrealloc(ct->itext, tstrlen(text)+1);
;
	PUSH	EBX
	CALL	_tstrlen
	POP	ECX
	INC	EAX
	PUSH	EAX
	PUSH	DWORD [ESI+018H]
	CALL	_DFrealloc
	ADD	ESP,BYTE 08H
	MOV	DWORD [ESI+018H],EAX
	MOV	EDI,EAX
	JMP	SHORT	L_216
L_218:
;
; Line 385:	*cd++ = cs++->ch;
;
	MOV	EAX,DWORD [EBP-04H]
	ADD	DWORD [EBP-04H],BYTE 02H
	MOV	ECX,EDI
	INC	EDI
	MOV	AL,BYTE [EAX+00H]
	MOV	BYTE [ECX+00H],AL
L_216:
;
; Line 383:	while (cs->ch)
;
	MOV	EAX,DWORD [EBP-04H]
	CMP	BYTE [EAX+00H],BYTE 00H
	JNE	SHORT	L_218
L_217:
;
; Line 387:	*cd = 0;
;
	MOV	BYTE [EDI+00H],00H
;
; Line 388:	ct->itext = cd;
;
	MOV	DWORD [ESI+018H],EDI
	JMP	SHORT	L_215
L_214:
;
; Line 391:	if (ct->Class == TEXT)
;
	CMP	DWORD [ESI+014H],BYTE 0DH
	JNE	SHORT	L_219
;
; Line 392:	ct->itext = "";
;
	MOV	DWORD [ESI+018H],DWORD L_209
	JMP	SHORT	L_220
L_219:
;
; Line 394:	free(ct->itext);
;
	PUSH	DWORD [ESI+018H]
	CALL	_free
	POP	ECX
;
; Line 395:	ct->itext = NULL;
;
	MOV	DWORD [ESI+018H],00H
L_220:
L_215:
;
; Line 398:	if (ct->wnd != NULL)	{
;
	CMP	DWORD [ESI+02CH],BYTE 00H
	JE	SHORT	L_221
;
; Line 399:	if (text != NULL)
;
	TEST	EBX,EBX
	JE	SHORT	L_223
;
; Line 400:	SendMessage(ct->wnd, SETTEXT, (PARAM) text, 1);
;
	PUSH	BYTE 01H
	PUSH	EBX
	PUSH	BYTE 034H
	PUSH	DWORD [ESI+02CH]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
	JMP	SHORT	L_224
L_223:
;
; Line 402:	SendMessage(ct->wnd, CLEARTEXT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 033H
	PUSH	DWORD [ESI+02CH]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_224:
;
; Line 403:	SendMessage(ct->wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	DWORD [ESI+02CH]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_221:
L_212:
;
; Line 406:	}
;
L_210:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
[GLOBAL	_PutItemText]
;
; Line 409:	void PutItemText(WINDOW wnd, enum commands cmd, char *text)
;
_PutItemText:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	EDI,DWORD [EBP+010H]
L_226:
;
; Line 410:	{
;
;
; Line 411:	CTLWINDOW *ct = FindCommand(wnd->extension, cmd, EDITBOX);
;
	PUSH	BYTE 04H
	MOVSX	EAX,WORD [EBP+0CH]
	PUSH	EAX
	MOV	EAX,DWORD [EBP+08H]
	PUSH	DWORD [EAX+06CH]
	CALL	_FindCommand
	ADD	ESP,BYTE 0CH
	MOV	EBX,EAX
;
; Line 413:	if (ct == NULL)
;
	TEST	EBX,EBX
	JNE	SHORT	L_227
;
; Line 414:	ct = FindCommand(wnd->extension, cmd, TEXTBOX);
;
	PUSH	BYTE 02H
	MOVSX	EAX,WORD [EBP+0CH]
	PUSH	EAX
	MOV	EAX,DWORD [EBP+08H]
	PUSH	DWORD [EAX+06CH]
	CALL	_FindCommand
	ADD	ESP,BYTE 0CH
	MOV	EBX,EAX
L_227:
;
; Line 415:	if (ct == NULL)
;
	TEST	EBX,EBX
	JNE	SHORT	L_229
;
; Line 416:	ct = FindCommand(wnd->extension, cmd, COMBOBOX);
;
	PUSH	BYTE 0CH
	MOVSX	EAX,WORD [EBP+0CH]
	PUSH	EAX
	MOV	EAX,DWORD [EBP+08H]
	PUSH	DWORD [EAX+06CH]
	CALL	_FindCommand
	ADD	ESP,BYTE 0CH
	MOV	EBX,EAX
L_229:
;
; Line 417:	if (ct == NULL)
;
	TEST	EBX,EBX
	JNE	SHORT	L_231
;
; Line 418:	ct = FindCommand(wnd->extension, cmd, LISTBOX);
;
	PUSH	BYTE 03H
	MOVSX	EAX,WORD [EBP+0CH]
	PUSH	EAX
	MOV	EAX,DWORD [EBP+08H]
	PUSH	DWORD [EAX+06CH]
	CALL	_FindCommand
	ADD	ESP,BYTE 0CH
	MOV	EBX,EAX
L_231:
;
; Line 419:	if (ct == NULL)
;
	TEST	EBX,EBX
	JNE	SHORT	L_233
;
; Line 420:	ct = FindCommand(wnd->extension, cmd, SPINBUTTON);
;
	PUSH	BYTE 010H
	MOVSX	EAX,WORD [EBP+0CH]
	PUSH	EAX
	MOV	EAX,DWORD [EBP+08H]
	PUSH	DWORD [EAX+06CH]
	CALL	_FindCommand
	ADD	ESP,BYTE 0CH
	MOV	EBX,EAX
L_233:
;
; Line 421:	if (ct == NULL)
;
	TEST	EBX,EBX
	JNE	SHORT	L_235
;
; Line 422:	ct = FindCommand(wnd->extension, cmd, TEXT);
;
	PUSH	BYTE 0DH
	MOVSX	EAX,WORD [EBP+0CH]
	PUSH	EAX
	MOV	EAX,DWORD [EBP+08H]
	PUSH	DWORD [EAX+06CH]
	CALL	_FindCommand
	ADD	ESP,BYTE 0CH
	MOV	EBX,EAX
L_235:
;
; Line 423:	if (ct != NULL)        {
;
	TEST	EBX,EBX
	JE	NEAR	L_237
;
; Line 424:	WINDOW cwnd = (WINDOW) (ct->wnd);
;
	MOV	ESI,DWORD [EBX+02CH]
;
; Line 425:	switch (ct->Class)    {
;
	MOV	EAX,DWORD [EBX+014H]
	CMP	EAX,BYTE 0CH
	JE	SHORT	L_241
	JA	SHORT	L_247
	CMP	EAX,BYTE 03H
	JE	SHORT	L_243
	JA	SHORT	L_248
	CMP	EAX,BYTE 02H
	JE	SHORT	L_244
	JMP	NEAR	L_240
L_248:
	CMP	EAX,BYTE 04H
	JE	SHORT	L_242
	JMP	NEAR	L_240
L_247:
	CMP	EAX,BYTE 010H
	JE	SHORT	L_245
	JA	NEAR	L_240
	CMP	EAX,BYTE 0DH
	JE	SHORT	L_246
	JMP	SHORT	L_240
L_241:
;
; Line 427:	case EDITBOX:
;
L_242:
;
; Line 428:	SendMessage(cwnd, CLEARTEXT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 033H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 429:	SendMessage(cwnd, ADDTEXT, (PARAM) text, 0);
;
	PUSH	BYTE 00H
	PUSH	EDI
	PUSH	BYTE 030H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 430:	if (!isMultiLine(cwnd))
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JNE	SHORT	L_249
;
; Line 431:	SendMessage(cwnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_249:
;
; Line 432:	break;
;
	JMP	SHORT	L_239
L_243:
;
; Line 434:	case TEXTBOX:
;
L_244:
;
; Line 435:	case SPINBUTTON:
;
L_245:
;
; Line 436:	SendMessage(cwnd, ADDTEXT, (PARAM) text, 0);
;
	PUSH	BYTE 00H
	PUSH	EDI
	PUSH	BYTE 030H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 437:	break;
;
	JMP	SHORT	L_239
L_246:
;
; Line 439:	SendMessage(cwnd, CLEARTEXT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 033H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 440:	SendMessage(cwnd, ADDTEXT, (PARAM) text, 0);
;
	PUSH	BYTE 00H
	PUSH	EDI
	PUSH	BYTE 030H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 441:	SendMessage(cwnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 442:	break;
;
	JMP	SHORT	L_239
L_240:
;
; Line 445:	break;
;
	JMP	SHORT	L_239
L_239:
L_237:
;
; Line 448:	}
;
L_225:
	POP	EDI
	POP	ESI
	POP	EBX
	POP	EBP
	RET
[GLOBAL	_GetItemText]
;
; Line 451:	void GetItemText(WINDOW wnd, enum commands cmd,
;
_GetItemText:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 08H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	EDI,DWORD [EBP+010H]
L_252:
;
; Line 453:	{
;
;
; Line 454:	CTLWINDOW *ct = FindCommand(wnd->extension, cmd, EDITBOX);
;
	PUSH	BYTE 04H
	MOVSX	EAX,WORD [EBP+0CH]
	PUSH	EAX
	MOV	EAX,DWORD [EBP+08H]
	PUSH	DWORD [EAX+06CH]
	CALL	_FindCommand
	ADD	ESP,BYTE 0CH
	MOV	EBX,EAX
;
; Line 457:	if (ct == NULL)
;
	TEST	EBX,EBX
	JNE	SHORT	L_253
;
; Line 458:	ct = FindCommand(wnd->extension, cmd, COMBOBOX);
;
	PUSH	BYTE 0CH
	MOVSX	EAX,WORD [EBP+0CH]
	PUSH	EAX
	MOV	EAX,DWORD [EBP+08H]
	PUSH	DWORD [EAX+06CH]
	CALL	_FindCommand
	ADD	ESP,BYTE 0CH
	MOV	EBX,EAX
L_253:
;
; Line 459:	if (ct == NULL)
;
	TEST	EBX,EBX
	JNE	SHORT	L_255
;
; Line 460:	ct = FindCommand(wnd->extension, cmd, TEXTBOX);
;
	PUSH	BYTE 02H
	MOVSX	EAX,WORD [EBP+0CH]
	PUSH	EAX
	MOV	EAX,DWORD [EBP+08H]
	PUSH	DWORD [EAX+06CH]
	CALL	_FindCommand
	ADD	ESP,BYTE 0CH
	MOV	EBX,EAX
L_255:
;
; Line 461:	if (ct == NULL)
;
	TEST	EBX,EBX
	JNE	SHORT	L_257
;
; Line 462:	ct = FindCommand(wnd->extension, cmd, TEXT);
;
	PUSH	BYTE 0DH
	MOVSX	EAX,WORD [EBP+0CH]
	PUSH	EAX
	MOV	EAX,DWORD [EBP+08H]
	PUSH	DWORD [EAX+06CH]
	CALL	_FindCommand
	ADD	ESP,BYTE 0CH
	MOV	EBX,EAX
L_257:
;
; Line 463:	if (ct != NULL)    {
;
	TEST	EBX,EBX
	JE	NEAR	L_259
;
; Line 464:	WINDOW cwnd = (WINDOW) (ct->wnd);
;
	MOV	ESI,DWORD [EBX+02CH]
;
; Line 465:	if (cwnd != NULL)    {
;
	TEST	ESI,ESI
	JE	NEAR	L_261
;
; Line 466:	switch (ct->Class)    {
;
	MOV	EAX,DWORD [EBX+014H]
	CMP	EAX,BYTE 02H
	JE	SHORT	L_266
	CMP	EAX,BYTE 04H
	JE	SHORT	L_268
	CMP	EAX,BYTE 0CH
	JE	SHORT	L_267
	CMP	EAX,BYTE 0DH
	JE	SHORT	L_265
	JMP	SHORT	L_264
L_265:
;
; Line 468:	if (GetText(cwnd) != NULL)    {
;
	CMP	DWORD [ESI+098H],BYTE 00H
	JE	SHORT	L_269
;
; Line 469:	cp = strchr(GetText(cwnd), '\n');
;
	PUSH	BYTE 0AH
	PUSH	DWORD [ESI+098H]
	CALL	_strchr
	ADD	ESP,BYTE 08H
	MOV	DWORD [EBP-04H],EAX
;
; Line 470:	if (cp != NULL)
;
	CMP	DWORD [EBP-04H],BYTE 00H
	JE	SHORT	L_271
;
; Line 471:	len = (int) (cp - GetText(cwnd));
;
	MOV	EAX,DWORD [EBP-04H]
	SUB	EAX,DWORD [ESI+098H]
	MOV	DWORD [EBP+014H],EAX
L_271:
;
; Line 472:	strncpy(text, GetText(cwnd), len);
;
	PUSH	DWORD [EBP+014H]
	PUSH	DWORD [ESI+098H]
	PUSH	EDI
	CALL	_strncpy
	ADD	ESP,BYTE 0CH
;
; Line 473:	*(text+len) = '\0';
;
	MOV	EAX,DWORD [EBP+014H]
	MOV	BYTE [EDI+EAX+00H],00H
L_269:
;
; Line 475:	break;
;
	JMP	SHORT	L_263
L_266:
;
; Line 477:	if (GetText(cwnd) != NULL)
;
	CMP	DWORD [ESI+098H],BYTE 00H
	JE	SHORT	L_273
;
; Line 478:	strncpy(text, GetText(cwnd), len);
;
	PUSH	DWORD [EBP+014H]
	PUSH	DWORD [ESI+098H]
	PUSH	EDI
	CALL	_strncpy
	ADD	ESP,BYTE 0CH
L_273:
;
; Line 479:	break;
;
	JMP	SHORT	L_263
L_267:
;
; Line 481:	case EDITBOX:
;
L_268:
;
; Line 482:	SendMessage(cwnd,GETTEXT,(PARAM)text,len);
;
	PUSH	DWORD [EBP+014H]
	PUSH	EDI
	PUSH	BYTE 03AH
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 483:	break;
;
	JMP	SHORT	L_263
L_264:
;
; Line 485:	break;
;
	JMP	SHORT	L_263
L_263:
L_261:
L_259:
;
; Line 489:	}
;
L_251:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
[GLOBAL	_GetDlgListText]
;
; Line 492:	void GetDlgListText(WINDOW wnd, char *text, enum commands cmd)
;
_GetDlgListText:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
L_276:
;
; Line 493:	{
;
;
; Line 494:	CTLWINDOW *ct = FindCommand(wnd->extension, cmd, LISTBOX);
;
	PUSH	BYTE 03H
	MOVSX	EAX,WORD [EBP+010H]
	PUSH	EAX
	MOV	EAX,DWORD [EBP+08H]
	PUSH	DWORD [EAX+06CH]
	CALL	_FindCommand
	ADD	ESP,BYTE 0CH
	MOV	ESI,EAX
;
; Line 495:	int sel = SendMessage(ct->wnd, LB_CURRENTSELECTION, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 042H
	PUSH	DWORD [ESI+02CH]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
	MOV	EBX,EAX
;
; Line 496:	SendMessage(ct->wnd, LB_GETTEXT, (PARAM) text, sel);
;
	PUSH	EBX
	PUSH	DWORD [EBP+0CH]
	PUSH	BYTE 043H
	PUSH	DWORD [ESI+02CH]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 497:	}
;
L_275:
	POP	ESI
	POP	EBX
	POP	EBP
	RET
;
; Line 500:	static CTLWINDOW *AssociatedControl(DBOX *db,enum commands Tcmd)
;
_AssociatedControl:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	ESI
L_278:
;
; Line 501:	{
;
;
; Line 502:	CTLWINDOW *ct = db->ctl;
;
	MOV	ESI,DWORD [EBP+08H]
	ADD	ESI,BYTE 018H
	JMP	SHORT	L_279
L_281:
;
; Line 504:	if (ct->Class != TEXT)
;
	CMP	DWORD [ESI+014H],BYTE 0DH
	JE	SHORT	L_282
;
; Line 505:	if (ct->command == Tcmd)
;
	MOV	EAX,DWORD [ESI+01CH]
	CMP	EAX,DWORD [EBP+0CH]
	JE	SHORT	L_280
;
; Line 506:	break;
;
L_284:
L_282:
;
; Line 507:	ct++;
;
	ADD	ESI,BYTE 030H
L_279:
;
; Line 503:	while (ct->Class)    {
;
	CMP	DWORD [ESI+014H],BYTE 00H
	JNE	SHORT	L_281
L_280:
;
; Line 509:	return ct;
;
	MOV	EAX,ESI
L_277:
	POP	ESI
	POP	EBP
	RET
;
; Line 513:	static BOOL dbShortcutKeys(DBOX *db, int ky)
;
_dbShortcutKeys:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 08H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	EBX,DWORD [EBP+08H]
L_287:
;
; Line 514:	{
;
;
; Line 516:	int ch = AltConvert(ky);
;
	PUSH	DWORD [EBP+0CH]
	CALL	_AltConvert
	POP	ECX
	MOV	DWORD [EBP-04H],EAX
;
; Line 518:	if (ch != 0)    {
;
	CMP	DWORD [EBP-04H],BYTE 00H
	JE	NEAR	L_288
;
; Line 519:	ct = db->ctl;
;
	MOV	ESI,EBX
	ADD	ESI,BYTE 018H
	JMP	NEAR	L_290
L_292:
;
; Line 521:	char *cp = ct->itext;
;
	MOV	EDI,DWORD [ESI+018H]
	JMP	NEAR	L_293
L_295:
;
; Line 523:	if (*cp == SHORTCUTCHAR &&
;
	MOVSX	EAX,BYTE [EDI+00H]
	CMP	EAX,BYTE 07EH
	JNE	NEAR	L_296
	MOVSX	EAX,BYTE [EDI+01H]
	PUSH	EAX
	CALL	_tolower
	POP	ECX
	CMP	EAX,DWORD [EBP-04H]
	JNE	SHORT	L_296
;
; Line 525:	if (ct->Class == TEXT)
;
	CMP	DWORD [ESI+014H],BYTE 0DH
	JNE	SHORT	L_298
;
; Line 526:	ct = AssociatedControl(db, ct->command);
;
	MOVSX	EAX,WORD [ESI+01CH]
	PUSH	EAX
	PUSH	EBX
	CALL	_AssociatedControl
	ADD	ESP,BYTE 08H
	MOV	ESI,EAX
L_298:
;
; Line 527:	if (ct->Class == RADIOBUTTON)
;
	CMP	DWORD [ESI+014H],BYTE 0EH
	JNE	SHORT	L_300
;
; Line 528:	SetRadioButton(db, ct);
;
	PUSH	ESI
	PUSH	EBX
	CALL	_SetRadioButton
	ADD	ESP,BYTE 08H
	JMP	SHORT	L_301
L_300:
;
; Line 529:	else if (ct->Class == CHECKBOX)    {
;
	CMP	DWORD [ESI+014H],BYTE 0FH
	JNE	SHORT	L_302
;
; Line 530:	ct->setting ^= ON;
;
	BTC	DWORD [ESI+028H],00H
;
; Line 531:	SendMessage(ct->wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	DWORD [ESI+02CH]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
	JMP	SHORT	L_303
L_302:
;
; Line 533:	else if (ct->Class)    {
;
	CMP	DWORD [ESI+014H],BYTE 00H
	JE	SHORT	L_304
;
; Line 534:	SendMessage(ct->wnd, SETFOCUS, TRUE, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 01H
	PUSH	BYTE 08H
	PUSH	DWORD [ESI+02CH]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 535:	if (ct->Class == BUTTON)
;
	CMP	DWORD [ESI+014H],BYTE 0BH
	JNE	SHORT	L_306
;
; Line 536:	SendMessage(ct->wnd,KEYBOARD,'\r',0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 0DH
	PUSH	BYTE 015H
	PUSH	DWORD [ESI+02CH]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_306:
L_304:
L_303:
L_301:
;
; Line 538:	return TRUE;
;
	MOV	EAX,01H
	JMP	SHORT	L_286
L_296:
;
; Line 540:	cp++;
;
	INC	EDI
L_293:
;
; Line 522:	while (cp && *cp)    {
;
	TEST	EDI,EDI
	JE	SHORT	L_308
	CMP	BYTE [EDI+00H],BYTE 00H
	JNE	NEAR	L_295
L_308:
L_294:
;
; Line 542:	ct++;
;
	ADD	ESI,BYTE 030H
L_290:
;
; Line 520:	while (ct->Class)    {
;
	CMP	DWORD [ESI+014H],BYTE 00H
	JNE	NEAR	L_292
L_291:
L_288:
;
; Line 545:	return FALSE;
;
	MOV	EAX,00H
L_286:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
[GLOBAL	_SetScrollBars]
;
; Line 550:	void SetScrollBars(WINDOW wnd)
;
_SetScrollBars:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	MOV	ESI,DWORD [EBP+08H]
L_310:
;
; Line 551:	{
;
;
; Line 552:	int oldattr = GetAttribute(wnd);
;
	MOV	EBX,DWORD [ESI+054H]
;
; Line 553:	if (wnd->wlines > ClientHeight(wnd))
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_313
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,BYTE 08H
	JE	SHORT	L_313
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,010000H
	JE	SHORT	L_313
	MOV	EAX,03H
	JMP	SHORT	L_314
L_313:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_318
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,BYTE 08H
	JNE	SHORT	L_317
L_318:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_315
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,010000H
	JE	SHORT	L_315
L_317:
	MOV	EAX,02H
	JMP	SHORT	L_316
L_315:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,014108H
	JE	SHORT	L_319
	MOV	EAX,01H
	JMP	SHORT	L_320
L_319:
	MOV	EAX,00H
L_320:
L_316:
L_314:
	MOV	ECX,DWORD [ESI+01CH]
	SUB	ECX,EAX
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,08000H
	JE	SHORT	L_321
	MOV	EAX,01H
	JMP	SHORT	L_322
L_321:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,04000H
	JE	SHORT	L_323
	MOV	EAX,01H
	JMP	SHORT	L_324
L_323:
	MOV	EAX,00H
L_324:
L_322:
	SUB	ECX,EAX
	CMP	DWORD [ESI+090H],ECX
	JLE	SHORT	L_311
;
; Line 554:	AddAttribute(wnd, VSCROLLBAR);
;
	BTS	DWORD [ESI+054H],04H
	JMP	SHORT	L_312
L_311:
;
; Line 556:	ClearAttribute(wnd, VSCROLLBAR);
;
	AND	DWORD [ESI+054H],BYTE 0FFFFFFEFH
L_312:
;
; Line 557:	if (wnd->textwidth > ClientWidth(wnd))
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,04000H
	JE	SHORT	L_327
	MOV	EAX,01H
	JMP	SHORT	L_328
L_327:
	MOV	EAX,00H
L_328:
	SHL	EAX,01H
	MOV	ECX,DWORD [ESI+020H]
	SUB	ECX,EAX
	CMP	DWORD [ESI+0A8H],ECX
	JLE	SHORT	L_325
;
; Line 558:	AddAttribute(wnd, HSCROLLBAR);
;
	BTS	DWORD [ESI+054H],05H
	JMP	SHORT	L_326
L_325:
;
; Line 560:	ClearAttribute(wnd, HSCROLLBAR);
;
	AND	DWORD [ESI+054H],BYTE 0FFFFFFDFH
L_326:
;
; Line 561:	if (GetAttribute(wnd) != oldattr)
;
	CMP	DWORD [ESI+054H],EBX
	JE	SHORT	L_329
;
; Line 562:	SendMessage(wnd, BORDER, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 0AH
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_329:
;
; Line 563:	}
;
L_309:
	POP	ESI
	POP	EBX
	POP	EBP
	RET
;
; Line 566:	static void CtlCreateWindowMsg(WINDOW wnd)
;
_CtlCreateWindowMsg:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
L_332:
;
; Line 567:	{
;
;
; Line 569:	ct = wnd->ct = wnd->extension;
;
	MOV	EAX,DWORD [ESI+06CH]
	MOV	DWORD [ESI+0108H],EAX
	MOV	EDI,EAX
;
; Line 570:	wnd->extension = NULL;
;
	MOV	DWORD [ESI+06CH],00H
;
; Line 571:	if (ct != NULL)
;
	TEST	EDI,EDI
	JE	SHORT	L_333
;
; Line 572:	ct->wnd = wnd;
;
	MOV	DWORD [EDI+02CH],ESI
L_333:
;
; Line 573:	}
;
L_331:
	POP	EDI
	POP	ESI
	POP	EBP
	RET
;
; Line 576:	static BOOL CtlKeyboardMsg(WINDOW wnd, PARAM p1, PARAM p2)
;
_CtlKeyboardMsg:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 08H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
	MOV	EBX,DWORD [EBP+0CH]
	MOV	EDI,DWORD [EBP+010H]
L_336:
;
; Line 577:	{
;
;
; Line 578:	CTLWINDOW *ct = GetControl(wnd);
;
	MOV	EAX,DWORD [ESI+0108H]
	MOV	DWORD [EBP-04H],EAX
;
; Line 579:	switch ((int) p1)    {
;
	CMP	EBX,DWORD 010E1H
	JE	SHORT	L_342
	JG	SHORT	L_344
	CMP	EBX,DWORD 010BBH
	JE	SHORT	L_339
	JG	NEAR	L_338
	CMP	EBX,BYTE 020H
	JE	SHORT	L_340
	JMP	SHORT	L_338
L_344:
	CMP	EBX,DWORD 010EDH
	JE	SHORT	L_341
	JG	SHORT	L_338
	CMP	EBX,DWORD 010EBH
	JE	SHORT	L_343
	JMP	SHORT	L_338
L_339:
;
; Line 581:	if (WindowMoving || WindowSizing)
;
	CMP	DWORD [_WindowMoving],BYTE 00H
	JNE	SHORT	L_347
	CMP	DWORD [_WindowSizing],BYTE 00H
	JE	SHORT	L_345
L_347:
;
; Line 582:	break;
;
	JMP	SHORT	L_337
L_345:
;
; Line 583:	if (!DisplayHelp(wnd, ct->help))
;
	MOV	EAX,DWORD [EBP-04H]
	PUSH	DWORD [EAX+020H]
	PUSH	ESI
	CALL	_DisplayHelp
	ADD	ESP,BYTE 08H
	TEST	EAX,EAX
	JNE	SHORT	L_348
;
; Line 584:	SendMessage(GetParent(wnd),COMMAND,ID_HELP,0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 036H
	PUSH	BYTE 02H
	PUSH	DWORD [ESI+03CH]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_348:
;
; Line 585:	return TRUE;
;
	MOV	EAX,01H
	JMP	NEAR	L_335
L_340:
;
; Line 587:	if (!((int)p2 & ALTKEY))
;
	MOV	EAX,EDI
	AND	EAX,BYTE 08H
	JE	SHORT	L_337
;
; Line 588:	break;
;
L_350:
;
; Line 589:	case ALT_F6:
;
L_341:
;
; Line 590:	case CTRL_F4:
;
L_342:
;
; Line 591:	case ALT_F4:
;
L_343:
;
; Line 592:	PostMessage(GetParent(wnd), KEYBOARD, p1, p2);
;
	PUSH	EDI
	PUSH	EBX
	PUSH	BYTE 015H
	PUSH	DWORD [ESI+03CH]
	CALL	_PostMessage
	ADD	ESP,BYTE 010H
;
; Line 593:	return TRUE;
;
	MOV	EAX,01H
	JMP	NEAR	L_335
L_338:
;
; Line 595:	break;
;
	JMP	SHORT	L_337
L_337:
;
; Line 597:	if (GetClass(wnd) == EDITBOX)
;
	CMP	DWORD [ESI+00H],BYTE 04H
	JNE	SHORT	L_352
;
; Line 598:	if (isMultiLine(wnd))
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JE	SHORT	L_354
;
; Line 599:	return FALSE;
;
	MOV	EAX,00H
	JMP	NEAR	L_335
L_354:
L_352:
;
; Line 600:	if (GetClass(wnd) == TEXTBOX)
;
	CMP	DWORD [ESI+00H],BYTE 02H
	JNE	SHORT	L_356
;
; Line 601:	if (WindowHeight(wnd) > 1)
;
	CMP	DWORD [ESI+01CH],BYTE 01H
	JLE	SHORT	L_358
;
; Line 602:	return FALSE;
;
	MOV	EAX,00H
	JMP	NEAR	L_335
L_358:
L_356:
;
; Line 603:	switch ((int) p1)    {
;
	CMP	EBX,DWORD 010CBH
	JE	SHORT	L_363
	JG	SHORT	L_367
	CMP	EBX,DWORD 010C8H
	JE	SHORT	L_362
	JG	NEAR	L_361
	CMP	EBX,BYTE 0DH
	JE	NEAR	L_366
	JMP	NEAR	L_361
L_367:
	CMP	EBX,DWORD 010D0H
	JE	SHORT	L_364
	JG	NEAR	L_361
	CMP	EBX,DWORD 010CDH
	JE	SHORT	L_365
	JMP	NEAR	L_361
L_362:
;
; Line 605:	if (!isDerivedFrom(wnd, LISTBOX))    {
;
	PUSH	BYTE 03H
	PUSH	ESI
	CALL	_isDerivedFrom
	ADD	ESP,BYTE 08H
	TEST	EAX,EAX
	JNE	SHORT	L_368
;
; Line 606:	p1 = CTRL_FIVE;
;
	MOV	EBX,0108FH
;
; Line 607:	p2 = LEFTSHIFT;
;
	MOV	EDI,02H
L_368:
;
; Line 609:	break;
;
	JMP	NEAR	L_360
L_363:
;
; Line 611:	if (!isDerivedFrom(wnd, EDITBOX))    {
;
	PUSH	BYTE 04H
	PUSH	ESI
	CALL	_isDerivedFrom
	ADD	ESP,BYTE 08H
	TEST	EAX,EAX
	JNE	SHORT	L_370
;
; Line 612:	p1 = CTRL_FIVE;
;
	MOV	EBX,0108FH
;
; Line 613:	p2 = LEFTSHIFT;
;
	MOV	EDI,02H
L_370:
;
; Line 615:	break;
;
	JMP	NEAR	L_360
L_364:
;
; Line 617:	if (!isDerivedFrom(wnd, LISTBOX) &&
;
	PUSH	BYTE 03H
	PUSH	ESI
	CALL	_isDerivedFrom
	ADD	ESP,BYTE 08H
	TEST	EAX,EAX
	JNE	SHORT	L_372
	PUSH	BYTE 0CH
	PUSH	ESI
	CALL	_isDerivedFrom
	ADD	ESP,BYTE 08H
	TEST	EAX,EAX
	JNE	SHORT	L_372
;
; Line 619:	p1 = '\t';
;
	MOV	EBX,09H
L_372:
;
; Line 620:	break;
;
	JMP	SHORT	L_360
L_365:
;
; Line 622:	if (!isDerivedFrom(wnd, EDITBOX))
;
	PUSH	BYTE 04H
	PUSH	ESI
	CALL	_isDerivedFrom
	ADD	ESP,BYTE 08H
	TEST	EAX,EAX
	JNE	SHORT	L_374
;
; Line 623:	p1 = '\t';
;
	MOV	EBX,09H
L_374:
;
; Line 624:	break;
;
	JMP	SHORT	L_360
L_366:
;
; Line 626:	if (isDerivedFrom(wnd, EDITBOX))
;
	PUSH	BYTE 04H
	PUSH	ESI
	CALL	_isDerivedFrom
	ADD	ESP,BYTE 08H
	TEST	EAX,EAX
	JE	SHORT	L_376
;
; Line 627:	if (isMultiLine(wnd))
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JNE	SHORT	L_360
;
; Line 628:	break;
;
L_378:
L_376:
;
; Line 629:	if (isDerivedFrom(wnd, BUTTON))
;
	PUSH	BYTE 0BH
	PUSH	ESI
	CALL	_isDerivedFrom
	ADD	ESP,BYTE 08H
	TEST	EAX,EAX
	JNE	SHORT	L_360
;
; Line 630:	break;
;
L_380:
;
; Line 631:	if (isDerivedFrom(wnd, LISTBOX))
;
	PUSH	BYTE 03H
	PUSH	ESI
	CALL	_isDerivedFrom
	ADD	ESP,BYTE 08H
	TEST	EAX,EAX
	JNE	SHORT	L_360
;
; Line 632:	break;
;
L_382:
;
; Line 633:	SendMessage(GetParent(wnd), COMMAND, ID_OK, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 034H
	PUSH	BYTE 02H
	PUSH	DWORD [ESI+03CH]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 634:	return TRUE;
;
	MOV	EAX,01H
	JMP	SHORT	L_335
L_361:
;
; Line 636:	break;
;
	JMP	SHORT	L_360
L_360:
;
; Line 638:	return FALSE;
;
	MOV	EAX,00H
L_335:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
;
; Line 642:	static void CtlCloseWindowMsg(WINDOW wnd)
;
_CtlCloseWindowMsg:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 08H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	EDI,DWORD [EBP+08H]
L_385:
;
; Line 643:	{
;
;
; Line 644:	CTLWINDOW *ct = GetControl(wnd);
;
	MOV	ESI,DWORD [EDI+0108H]
;
; Line 645:	if (ct != NULL)    {
;
	TEST	ESI,ESI
	JE	NEAR	L_386
;
; Line 646:	ct->wnd = NULL;
;
	MOV	DWORD [ESI+02CH],00H
;
; Line 647:	if (GetParent(wnd)->ReturnCode == ID_OK)	{
;
	MOV	EAX,DWORD [EDI+03CH]
	CMP	DWORD [EAX+0100H],BYTE 034H
	JNE	NEAR	L_388
;
; Line 648:	if (ct->Class == EDITBOX || ct->Class == COMBOBOX)	{
;
	CMP	DWORD [ESI+014H],BYTE 04H
	JE	SHORT	L_392
	CMP	DWORD [ESI+014H],BYTE 0CH
	JNE	SHORT	L_390
L_392:
;
; Line 649:	ATTRCHR *cs = wnd->text;
;
	MOV	EAX,DWORD [EDI+098H]
	MOV	DWORD [EBP-08H],EAX
;
; Line 651:	cd = ct->itext=DFrealloc(ct->itext,tstrlen(wnd->text)+1);
;
	PUSH	DWORD [EDI+098H]
	CALL	_tstrlen
	POP	ECX
	INC	EAX
	PUSH	EAX
	PUSH	DWORD [ESI+018H]
	CALL	_DFrealloc
	ADD	ESP,BYTE 08H
	MOV	DWORD [ESI+018H],EAX
	MOV	DWORD [EBP-04H],EAX
	JMP	SHORT	L_393
L_395:
;
; Line 653:	*cd++ = cs++->ch;
;
	MOV	EAX,DWORD [EBP-08H]
	ADD	DWORD [EBP-08H],BYTE 02H
	MOV	ECX,DWORD [EBP-04H]
	INC	DWORD [EBP-04H]
	MOV	AL,BYTE [EAX+00H]
	MOV	BYTE [ECX+00H],AL
L_393:
;
; Line 652:	while (cs->ch)
;
	MOV	EAX,DWORD [EBP-08H]
	CMP	BYTE [EAX+00H],BYTE 00H
	JNE	SHORT	L_395
L_394:
;
; Line 654:	*cd = 0;
;
	MOV	EAX,DWORD [EBP-04H]
	MOV	BYTE [EAX+00H],00H
;
; Line 655:	if (!isMultiLine(wnd))    {
;
	MOV	EAX,DWORD [EDI+054H]
	AND	EAX,02000H
	JNE	SHORT	L_396
;
; Line 656:	char *cp = ct->itext+strlen(ct->itext)-1;
;
	PUSH	DWORD [ESI+018H]
	CALL	_strlen
	POP	ECX
	ADD	EAX,DWORD [ESI+018H]
	DEC	EAX
	MOV	EBX,EAX
;
; Line 657:	if (*cp == '\n')
;
	MOVSX	EAX,BYTE [EBX+00H]
	CMP	EAX,BYTE 0AH
	JNE	SHORT	L_398
;
; Line 658:	*cp = '\0';
;
	MOV	BYTE [EBX+00H],00H
L_398:
L_396:
	JMP	SHORT	L_391
L_390:
;
; Line 661:	else if (ct->Class == RADIOBUTTON || ct->Class == CHECKBOX)
;
	CMP	DWORD [ESI+014H],BYTE 0EH
	JE	SHORT	L_402
	CMP	DWORD [ESI+014H],BYTE 0FH
	JNE	SHORT	L_400
L_402:
;
; Line 662:	ct->isetting = ct->setting;
;
	MOV	EAX,DWORD [ESI+028H]
	MOV	DWORD [ESI+024H],EAX
L_400:
L_391:
L_388:
L_386:
;
; Line 665:	}
;
L_384:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
;
; Line 667:	static void FixColors(WINDOW wnd)
;
_FixColors:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
L_404:
;
; Line 668:	{
;
;
; Line 669:	CTLWINDOW *ct = wnd->ct;
;
	MOV	EDI,DWORD [ESI+0108H]
;
; Line 670:	if (ct->Class != BUTTON)	{
;
	CMP	DWORD [EDI+014H],BYTE 0BH
	JE	SHORT	L_405
;
; Line 671:	if (ct->Class != SPINBUTTON && ct->Class != COMBOBOX)	{
;
	CMP	DWORD [EDI+014H],BYTE 010H
	JE	SHORT	L_407
	CMP	DWORD [EDI+014H],BYTE 0CH
	JE	SHORT	L_407
;
; Line 672:	if (ct->Class != EDITBOX && ct->Class != LISTBOX)	{
;
	CMP	DWORD [EDI+014H],BYTE 04H
	JE	SHORT	L_409
	CMP	DWORD [EDI+014H],BYTE 03H
	JE	SHORT	L_409
;
; Line 673:	wnd->WindowColors[FRAME_COLOR][FG] =
;
	MOV	EAX,DWORD [ESI+03CH]
	MOV	AL,BYTE [EAX+038H]
	MOV	BYTE [ESI+038H],AL
;
; Line 675:	wnd->WindowColors[FRAME_COLOR][BG] =
;
	MOV	EAX,DWORD [ESI+03CH]
	MOV	AL,BYTE [EAX+039H]
	MOV	BYTE [ESI+039H],AL
;
; Line 677:	wnd->WindowColors[STD_COLOR][FG] =
;
	MOV	EAX,DWORD [ESI+03CH]
	MOV	AL,BYTE [EAX+034H]
	MOV	BYTE [ESI+034H],AL
;
; Line 679:	wnd->WindowColors[STD_COLOR][BG] =
;
	MOV	EAX,DWORD [ESI+03CH]
	MOV	AL,BYTE [EAX+035H]
	MOV	BYTE [ESI+035H],AL
L_409:
L_407:
L_405:
;
; Line 684:	}
;
L_403:
	POP	EDI
	POP	ESI
	POP	EBP
	RET
;
; Line 687:	static int ControlProc(WINDOW wnd,MESSAGE msg,PARAM p1,PARAM p2)
;
_ControlProc:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 0CH
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
L_412:
;
; Line 688:	{
;
;
; Line 691:	if (wnd == NULL)
;
	TEST	ESI,ESI
	JNE	SHORT	L_413
;
; Line 692:	return FALSE;
;
	MOV	EAX,00H
	JMP	NEAR	L_411
L_413:
;
; Line 693:	db = GetParent(wnd) ? GetParent(wnd)->extension : NULL;
;
	CMP	DWORD [ESI+03CH],BYTE 00H
	JE	SHORT	L_415
	MOV	EAX,DWORD [ESI+03CH]
	MOV	EAX,DWORD [EAX+06CH]
	JMP	SHORT	L_416
L_415:
	MOV	EAX,00H
L_416:
	MOV	DWORD [EBP-04H],EAX
;
; Line 695:	switch (msg)    {
;
	MOV	EAX,DWORD [EBP+0CH]
	CMP	EAX,BYTE 09H
	JE	SHORT	L_421
	JA	SHORT	L_425
	CMP	EAX,BYTE 07H
	JE	NEAR	L_424
	JA	SHORT	L_426
	CMP	EAX,BYTE 03H
	JE	SHORT	L_419
	JMP	NEAR	L_418
L_426:
	CMP	EAX,BYTE 08H
	JE	NEAR	L_423
	JMP	NEAR	L_418
L_425:
	CMP	EAX,BYTE 015H
	JE	SHORT	L_420
	JA	NEAR	L_418
	CMP	EAX,BYTE 0AH
	JE	SHORT	L_422
	JMP	NEAR	L_418
L_419:
;
; Line 697:	CtlCreateWindowMsg(wnd);
;
	PUSH	ESI
	CALL	_CtlCreateWindowMsg
	POP	ECX
;
; Line 698:	break;
;
	JMP	NEAR	L_417
L_420:
;
; Line 700:	if (CtlKeyboardMsg(wnd, p1, p2))
;
	PUSH	DWORD [EBP+014H]
	PUSH	DWORD [EBP+010H]
	PUSH	ESI
	CALL	_CtlKeyboardMsg
	ADD	ESP,BYTE 0CH
	TEST	EAX,EAX
	JE	SHORT	L_427
;
; Line 701:	return TRUE;
;
	MOV	EAX,01H
	JMP	NEAR	L_411
L_427:
;
; Line 702:	break;
;
	JMP	NEAR	L_417
L_421:
;
; Line 704:	FixColors(wnd);
;
	PUSH	ESI
	CALL	_FixColors
	POP	ECX
;
; Line 705:	if (GetClass(wnd) == EDITBOX ||
;
	CMP	DWORD [ESI+00H],BYTE 04H
	JE	SHORT	L_431
	CMP	DWORD [ESI+00H],BYTE 03H
	JE	SHORT	L_431
	CMP	DWORD [ESI+00H],BYTE 02H
	JNE	SHORT	L_429
L_431:
;
; Line 708:	SetScrollBars(wnd);
;
	PUSH	ESI
	CALL	_SetScrollBars
	POP	ECX
L_429:
;
; Line 709:	break;
;
	JMP	NEAR	L_417
L_422:
;
; Line 711:	FixColors(wnd);
;
	PUSH	ESI
	CALL	_FixColors
	POP	ECX
;
; Line 712:	if (GetClass(wnd) == EDITBOX)    {
;
	CMP	DWORD [ESI+00H],BYTE 04H
	JNE	SHORT	L_432
;
; Line 713:	WINDOW oldFocus = inFocus;
;
	MOV	EAX,DWORD [_inFocus]
	MOV	DWORD [EBP-0CH],EAX
;
; Line 714:	inFocus = NULL;
;
	MOV	DWORD [_inFocus],00H
;
; Line 715:	DefaultWndProc(wnd, msg, p1, p2);
;
	MOV	EAX,DWORD [ESI+00H]
	IMUL	EAX,BYTE 0CH
	CMP	DWORD [EAX+04H+_classdefs+00H],BYTE 00H
	JNE	SHORT	L_434
	PUSH	DWORD [EBP+014H]
	PUSH	DWORD [EBP+010H]
	MOVSX	EAX,WORD [EBP+0CH]
	PUSH	EAX
	PUSH	ESI
	MOV	EAX,DWORD [ESI+00H]
	IMUL	EAX,BYTE 0CH
	MOV	EAX,DWORD [EAX+_classdefs+00H]
	IMUL	EAX,BYTE 0CH
	CALL	DWORD [EAX+04H+_classdefs+00H]
	ADD	ESP,BYTE 010H
	JMP	SHORT	L_435
L_434:
	PUSH	DWORD [EBP+014H]
	PUSH	DWORD [EBP+010H]
	MOVSX	EAX,WORD [EBP+0CH]
	PUSH	EAX
	PUSH	ESI
	MOV	EAX,DWORD [ESI+00H]
	IMUL	EAX,BYTE 0CH
	CALL	DWORD [EAX+04H+_classdefs+00H]
	ADD	ESP,BYTE 010H
L_435:
;
; Line 716:	inFocus = oldFocus;
;
	MOV	EAX,DWORD [EBP-0CH]
	MOV	DWORD [_inFocus],EAX
;
; Line 717:	return TRUE;
;
	MOV	EAX,01H
	JMP	NEAR	L_411
L_432:
;
; Line 719:	break;
;
	JMP	NEAR	L_417
L_423:
;
; Line 721:	WINDOW pwnd = GetParent(wnd);
;
	MOV	EDI,DWORD [ESI+03CH]
;
; Line 722:	if (p1)    {
;
	CMP	DWORD [EBP+010H],BYTE 00H
	JE	NEAR	L_436
;
; Line 723:	WINDOW oldFocus = inFocus;
;
	MOV	EBX,DWORD [_inFocus]
;
; Line 724:	if (pwnd && GetClass(oldFocus) != APPLICATION &&
;
	TEST	EDI,EDI
	JE	SHORT	L_438
	CMP	DWORD [EBX+00H],BYTE 01H
	JE	SHORT	L_438
	PUSH	EDI
	PUSH	DWORD [_inFocus]
	CALL	_isAncestor
	ADD	ESP,BYTE 08H
	TEST	EAX,EAX
	JNE	SHORT	L_438
;
; Line 726:	inFocus = NULL;
;
	MOV	DWORD [_inFocus],00H
;
; Line 727:	SendMessage(oldFocus, BORDER, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 0AH
	PUSH	EBX
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 728:	SendMessage(pwnd, SHOW_WINDOW, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 05H
	PUSH	EDI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 729:	inFocus = oldFocus;
;
	MOV	DWORD [_inFocus],EBX
;
; Line 730:	ClearVisible(oldFocus);
;
	AND	DWORD [EBX+054H],BYTE 0FFFFFFBFH
L_438:
;
; Line 732:	if (GetClass(oldFocus) == APPLICATION &&
;
	CMP	DWORD [EBX+00H],BYTE 01H
	JNE	SHORT	L_440
	CMP	DWORD [EDI+048H],BYTE 00H
	JE	SHORT	L_440
;
; Line 734:	pwnd->wasCleared = FALSE;
;
	MOV	DWORD [EDI+064H],00H
L_440:
;
; Line 735:	DefaultWndProc(wnd, msg, p1, p2);
;
	MOV	EAX,DWORD [ESI+00H]
	IMUL	EAX,BYTE 0CH
	CMP	DWORD [EAX+04H+_classdefs+00H],BYTE 00H
	JNE	SHORT	L_442
	PUSH	DWORD [EBP+014H]
	PUSH	DWORD [EBP+010H]
	MOVSX	EAX,WORD [EBP+0CH]
	PUSH	EAX
	PUSH	ESI
	MOV	EAX,DWORD [ESI+00H]
	IMUL	EAX,BYTE 0CH
	MOV	EAX,DWORD [EAX+_classdefs+00H]
	IMUL	EAX,BYTE 0CH
	CALL	DWORD [EAX+04H+_classdefs+00H]
	ADD	ESP,BYTE 010H
	JMP	SHORT	L_443
L_442:
	PUSH	DWORD [EBP+014H]
	PUSH	DWORD [EBP+010H]
	MOVSX	EAX,WORD [EBP+0CH]
	PUSH	EAX
	PUSH	ESI
	MOV	EAX,DWORD [ESI+00H]
	IMUL	EAX,BYTE 0CH
	CALL	DWORD [EAX+04H+_classdefs+00H]
	ADD	ESP,BYTE 010H
L_443:
;
; Line 736:	SetVisible(oldFocus);
;
	BTS	DWORD [EBX+054H],06H
;
; Line 737:	if (pwnd != NULL)	{
;
	TEST	EDI,EDI
	JE	SHORT	L_444
;
; Line 738:	pwnd->dfocus = wnd;
;
	MOV	DWORD [EDI+010CH],ESI
;
; Line 739:	SendMessage(pwnd, COMMAND,
;
	PUSH	BYTE 049H
	PUSH	DWORD [EBP-04H]
	CALL	_inFocusCommand
	POP	ECX
	PUSH	EAX
	PUSH	BYTE 02H
	PUSH	EDI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_444:
;
; Line 742:	return TRUE;
;
	MOV	EAX,01H
	JMP	SHORT	L_411
L_436:
;
; Line 745:	SendMessage(pwnd, COMMAND,
;
	PUSH	BYTE 04AH
	PUSH	DWORD [EBP-04H]
	CALL	_inFocusCommand
	POP	ECX
	PUSH	EAX
	PUSH	BYTE 02H
	PUSH	EDI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_437:
;
; Line 747:	break;
;
	JMP	SHORT	L_417
L_424:
;
; Line 750:	CtlCloseWindowMsg(wnd);
;
	PUSH	ESI
	CALL	_CtlCloseWindowMsg
	POP	ECX
;
; Line 751:	break;
;
	JMP	SHORT	L_417
L_418:
;
; Line 753:	break;
;
	JMP	SHORT	L_417
L_417:
;
; Line 755:	return DefaultWndProc(wnd, msg, p1, p2);
;
	MOV	EAX,DWORD [ESI+00H]
	IMUL	EAX,BYTE 0CH
	CMP	DWORD [EAX+04H+_classdefs+00H],BYTE 00H
	JNE	SHORT	L_446
	PUSH	DWORD [EBP+014H]
	PUSH	DWORD [EBP+010H]
	MOVSX	EAX,WORD [EBP+0CH]
	PUSH	EAX
	PUSH	ESI
	MOV	EAX,DWORD [ESI+00H]
	IMUL	EAX,BYTE 0CH
	MOV	EAX,DWORD [EAX+_classdefs+00H]
	IMUL	EAX,BYTE 0CH
	CALL	DWORD [EAX+04H+_classdefs+00H]
	ADD	ESP,BYTE 010H
	JMP	SHORT	L_447
L_446:
	PUSH	DWORD [EBP+014H]
	PUSH	DWORD [EBP+010H]
	MOVSX	EAX,WORD [EBP+0CH]
	PUSH	EAX
	PUSH	ESI
	MOV	EAX,DWORD [ESI+00H]
	IMUL	EAX,BYTE 0CH
	CALL	DWORD [EAX+04H+_classdefs+00H]
	ADD	ESP,BYTE 010H
L_447:
L_411:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
;
; Line 759:	static void FirstFocus(DBOX *db)
;
_FirstFocus:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	ESI
L_449:
;
; Line 760:	{
;
;
; Line 761:	CTLWINDOW *ct = db->ctl;
;
	MOV	ESI,DWORD [EBP+08H]
	ADD	ESI,BYTE 018H
;
; Line 762:	if (ct != NULL)	{
;
	JE	SHORT	L_450
	JMP	SHORT	L_452
L_454:
;
; Line 764:	ct++;
;
	ADD	ESI,BYTE 030H
;
; Line 765:	if (ct->Class == 0)
;
	CMP	DWORD [ESI+014H],BYTE 00H
	JE	SHORT	L_448
;
; Line 766:	return;
;
L_455:
L_452:
;
; Line 763:	while (ct->Class == TEXT || ct->Class == BOX)	{
;
	CMP	DWORD [ESI+014H],BYTE 0DH
	JE	SHORT	L_454
	CMP	DWORD [ESI+014H],BYTE 0AH
	JE	SHORT	L_454
L_453:
;
; Line 768:	SendMessage(ct->wnd, SETFOCUS, TRUE, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 01H
	PUSH	BYTE 08H
	PUSH	DWORD [ESI+02CH]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_450:
;
; Line 770:	}
;
L_448:
	POP	ESI
	POP	EBP
	RET
;
; Line 773:	static void NextFocus(DBOX *db)
;
_NextFocus:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	EDI,DWORD [EBP+08H]
L_458:
;
; Line 774:	{
;
;
; Line 775:	CTLWINDOW *ct = WindowControl(db, inFocus);
;
	PUSH	DWORD [_inFocus]
	PUSH	EDI
	CALL	_WindowControl
	ADD	ESP,BYTE 08H
	MOV	ESI,EAX
;
; Line 776:	int looped = 0;
;
	MOV	EBX,00H
;
; Line 777:	if (ct != NULL)	{
;
	TEST	ESI,ESI
	JE	SHORT	L_459
;
; Line 778:	do	{
;
L_461:
;
; Line 779:	ct++;
;
	ADD	ESI,BYTE 030H
;
; Line 780:	if (ct->Class == 0)	{
;
	CMP	DWORD [ESI+014H],BYTE 00H
	JNE	SHORT	L_464
;
; Line 781:	if (looped)
;
	TEST	EBX,EBX
	JNE	SHORT	L_457
;
; Line 782:	return;
;
L_466:
;
; Line 783:	looped++;
;
	INC	EBX
;
; Line 784:	ct = db->ctl;
;
	MOV	ESI,EDI
	ADD	ESI,BYTE 018H
L_464:
L_462:
	CMP	DWORD [ESI+014H],BYTE 0DH
	JE	SHORT	L_461
	CMP	DWORD [ESI+014H],BYTE 0AH
	JE	SHORT	L_461
L_463:
;
; Line 787:	SendMessage(ct->wnd, SETFOCUS, TRUE, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 01H
	PUSH	BYTE 08H
	PUSH	DWORD [ESI+02CH]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_459:
;
; Line 789:	}
;
L_457:
	POP	EDI
	POP	ESI
	POP	EBX
	POP	EBP
	RET
;
; Line 792:	static void PrevFocus(DBOX *db)
;
_PrevFocus:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	EDI,DWORD [EBP+08H]
L_469:
;
; Line 793:	{
;
;
; Line 794:	CTLWINDOW *ct = WindowControl(db, inFocus);
;
	PUSH	DWORD [_inFocus]
	PUSH	EDI
	CALL	_WindowControl
	ADD	ESP,BYTE 08H
	MOV	ESI,EAX
;
; Line 795:	int looped = 0;
;
	MOV	EBX,00H
;
; Line 796:	if (ct != NULL)	{
;
	TEST	ESI,ESI
	JE	SHORT	L_470
;
; Line 797:	do	{
;
L_472:
;
; Line 798:	if (ct == db->ctl)	{
;
	MOV	EAX,EDI
	ADD	EAX,BYTE 018H
	CMP	ESI,EAX
	JNE	SHORT	L_475
;
; Line 799:	if (looped)
;
	TEST	EBX,EBX
	JNE	SHORT	L_468
;
; Line 800:	return;
;
L_477:
;
; Line 801:	looped++;
;
	INC	EBX
	JMP	SHORT	L_479
L_481:
;
; Line 803:	ct++;
;
	ADD	ESI,BYTE 030H
L_479:
;
; Line 802:	while (ct->Class)
;
	CMP	DWORD [ESI+014H],BYTE 00H
	JNE	SHORT	L_481
L_480:
L_475:
;
; Line 805:	--ct;
;
	SUB	ESI,BYTE 030H
L_473:
	CMP	DWORD [ESI+014H],BYTE 0DH
	JE	SHORT	L_472
	CMP	DWORD [ESI+014H],BYTE 0AH
	JE	SHORT	L_472
L_474:
;
; Line 807:	SendMessage(ct->wnd, SETFOCUS, TRUE, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 01H
	PUSH	BYTE 08H
	PUSH	DWORD [ESI+02CH]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_470:
;
; Line 809:	}
;
L_468:
	POP	EDI
	POP	ESI
	POP	EBX
	POP	EBP
	RET
[GLOBAL	_SetFocusCursor]
;
; Line 811:	void SetFocusCursor(WINDOW wnd)
;
_SetFocusCursor:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	MOV	EBX,DWORD [EBP+08H]
L_483:
;
; Line 812:	{
;
;
; Line 813:	if (wnd == inFocus)    {
;
	CMP	EBX,DWORD [_inFocus]
	JNE	SHORT	L_484
;
; Line 814:	SendMessage(NULL, SHOW_CURSOR, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 01BH
	PUSH	BYTE 00H
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 815:	SendMessage(wnd, KEYBOARD_CURSOR, 1, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 01H
	PUSH	BYTE 018H
	PUSH	EBX
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_484:
;
; Line 817:	}
;
L_482:
	POP	EBX
	POP	EBP
	RET
SECTION _STRING
L_209:
	DB	00H
SECTION _DATA

_dbs	DD	00H

_dbct	DD	00H
SECTION _BSS

_SysMenuOpen	RESB	04H
SECTION _CONST

SECTION _TEXT
[EXTERN	_WindowMoving]
[EXTERN	_CreateWindow]
[EXTERN	_WindowSizing]
[EXTERN	_DFrealloc]
[EXTERN	_inFocus]
[EXTERN	_AltConvert]
[EXTERN	_isVisible]
[EXTERN	_isDerivedFrom]
[EXTERN	_strncpy]
[EXTERN	_SetRadioButton]
[EXTERN	_strlen]
[EXTERN	_tstrlen]
[EXTERN	_dispatch_message]
[EXTERN	_isAncestor]
[EXTERN	_BuildSystemMenu]
[EXTERN	_tolower]
[EXTERN	_free]
[EXTERN	_classdefs]
[EXTERN	_SendMessage]
[EXTERN	_DisplayHelp]
[EXTERN	_PostMessage]
[EXTERN	_strchr]
