	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	_ComboProc]
;
; Line 7:	int ComboProc(WINDOW wnd, MESSAGE msg, PARAM p1, PARAM p2)
;
_ComboProc:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
	MOV	EBX,DWORD [EBP+010H]
	MOV	EDI,DWORD [EBP+0CH]
L_2:
;
; Line 8:	{
;
;
; Line 9:	switch (msg)    {
;
	CMP	EDI,BYTE 09H
	JE	NEAR	L_6
	JA	SHORT	L_10
	CMP	EDI,BYTE 07H
	JE	NEAR	L_9
	JA	NEAR	L_4
	CMP	EDI,BYTE 03H
	JE	SHORT	L_5
	JMP	NEAR	L_4
L_10:
	CMP	EDI,BYTE 024H
	JE	NEAR	L_8
	JA	NEAR	L_4
	CMP	EDI,BYTE 015H
	JE	SHORT	L_7
	JMP	NEAR	L_4
L_5:
;
; Line 11:	wnd->extension = CreateWindow(
;
	PUSH	DWORD 04880H
	PUSH	DWORD _ListProc
	PUSH	ESI
	PUSH	BYTE 00H
	MOV	EAX,DWORD [ESI+020H]
	INC	EAX
	PUSH	EAX
	MOV	EAX,DWORD [ESI+01CH]
	DEC	EAX
	PUSH	EAX
	MOV	EAX,DWORD [ESI+010H]
	INC	EAX
	PUSH	EAX
	PUSH	DWORD [ESI+0CH]
	PUSH	BYTE 00H
	PUSH	BYTE 03H
	CALL	_CreateWindow
	ADD	ESP,BYTE 028H
	MOV	DWORD [ESI+06CH],EAX
;
; Line 20:	((WINDOW)(wnd->extension))->ct->command =
;
	MOV	EAX,DWORD [ESI+0108H]
	MOV	ECX,DWORD [ESI+06CH]
	MOV	ECX,DWORD [ECX+0108H]
	MOV	EAX,DWORD [EAX+01CH]
	MOV	DWORD [ECX+01CH],EAX
;
; Line 22:	wnd->ht = 1;
;
	MOV	DWORD [ESI+01CH],01H
;
; Line 23:	wnd->rc.bt = wnd->rc.tp;
;
	MOV	EAX,DWORD [ESI+010H]
	MOV	DWORD [ESI+018H],EAX
;
; Line 24:	break;
;
	JMP	SHORT	L_3
L_6:
;
; Line 26:	foreground = WndBackground(wnd);
;
	MOVSX	EAX,BYTE [ESI+035H]
	MOV	DWORD [_foreground],EAX
;
; Line 27:	background = WndForeground(wnd);
;
	MOVSX	EAX,BYTE [ESI+034H]
	MOV	DWORD [_background],EAX
;
; Line 28:	wputch(wnd, DOWNSCROLLBOX, WindowWidth(wnd), 0);
;
	PUSH	BYTE 00H
	PUSH	DWORD [ESI+020H]
	PUSH	BYTE 01FH
	PUSH	ESI
	CALL	_wputch
	ADD	ESP,BYTE 010H
;
; Line 29:	break;
;
	JMP	SHORT	L_3
L_7:
;
; Line 31:	if ((int)p1 == DN)    {
;
	CMP	EBX,010D0H
	JNE	SHORT	L_11
;
; Line 32:	SendMessage(wnd->extension, SETFOCUS, TRUE, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 01H
	PUSH	BYTE 08H
	PUSH	DWORD [ESI+06CH]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 33:	return TRUE;
;
	MOV	EAX,01H
	JMP	SHORT	L_1
L_11:
;
; Line 35:	break;
;
	JMP	SHORT	L_3
L_8:
;
; Line 37:	if ((int)p1 == GetRight(wnd) + 1)
;
	MOV	EAX,DWORD [ESI+014H]
	INC	EAX
	CMP	EBX,EAX
	JNE	SHORT	L_13
;
; Line 38:	SendMessage(wnd->extension, SETFOCUS, TRUE, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 01H
	PUSH	BYTE 08H
	PUSH	DWORD [ESI+06CH]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_13:
;
; Line 39:	break;
;
	JMP	SHORT	L_3
L_9:
;
; Line 41:	SendMessage(wnd->extension, CLOSE_WINDOW, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 07H
	PUSH	DWORD [ESI+06CH]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 42:	break;
;
	JMP	SHORT	L_3
L_4:
;
; Line 44:	break;
;
	JMP	SHORT	L_3
L_3:
;
; Line 46:	return BaseWndProc(COMBOBOX, wnd, msg, p1, p2);
;
	PUSH	DWORD [EBP+014H]
	PUSH	EBX
	MOV	EAX,EDI
	MOVSX	EAX,AX
	PUSH	EAX
	PUSH	ESI
	MOV	EAX,DWORD [_classdefs+090H]
	IMUL	EAX,BYTE 0CH
	CALL	DWORD [EAX+04H+_classdefs+00H]
	ADD	ESP,BYTE 010H
L_1:
	POP	EDI
	POP	ESI
	POP	EBX
	POP	EBP
	RET
[GLOBAL	_ListProc]
;
; Line 49:	int ListProc(WINDOW wnd, MESSAGE msg, PARAM p1, PARAM p2)
;
_ListProc:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,09CH
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
	MOV	EBX,DWORD [EBP+010H]
	MOV	EDI,DWORD _inFocus
L_16:
;
; Line 50:	{
;
;
; Line 51:	WINDOW pwnd = GetParent(GetParent(wnd));
;
	MOV	EAX,DWORD [ESI+03CH]
	MOV	EAX,DWORD [EAX+03CH]
	MOV	DWORD [EBP-098H],EAX
;
; Line 52:	DBOX *db = pwnd->extension;
;
	MOV	EAX,DWORD [EBP-098H]
	MOV	EAX,DWORD [EAX+06CH]
	MOV	DWORD [EBP-094H],EAX
;
; Line 53:	WINDOW cwnd = ControlWindow(db, wnd->ct->command);
;
	MOV	EAX,DWORD [ESI+0108H]
	MOVSX	EAX,WORD [EAX+01CH]
	PUSH	EAX
	PUSH	DWORD [EBP-094H]
	CALL	_ControlWindow
	ADD	ESP,BYTE 08H
	MOV	DWORD [EBP-090H],EAX
;
; Line 57:	switch (msg)    {
;
	MOV	EAX,DWORD [EBP+0CH]
	CMP	EAX,BYTE 0AH
	JE	NEAR	L_22
	JA	SHORT	L_27
	CMP	EAX,BYTE 07H
	JE	NEAR	L_26
	JA	SHORT	L_28
	CMP	EAX,BYTE 05H
	JE	NEAR	L_21
	JA	NEAR	L_18
	CMP	EAX,BYTE 03H
	JE	SHORT	L_19
	JMP	NEAR	L_18
L_28:
	CMP	EAX,BYTE 08H
	JE	NEAR	L_20
	JMP	NEAR	L_18
L_27:
	CMP	EAX,BYTE 040H
	JE	NEAR	L_23
	JA	SHORT	L_29
	CMP	EAX,BYTE 015H
	JE	NEAR	L_24
	JMP	NEAR	L_18
L_29:
	CMP	EAX,BYTE 041H
	JE	NEAR	L_25
	JMP	NEAR	L_18
L_19:
;
; Line 59:	wnd->ct = DFmalloc(sizeof(CTLWINDOW));
;
	PUSH	BYTE 030H
	CALL	_DFmalloc
	POP	ECX
	MOV	DWORD [ESI+0108H],EAX
;
; Line 60:	wnd->ct->setting = OFF;
;
	MOV	EAX,DWORD [ESI+0108H]
	MOV	DWORD [EAX+028H],00H
;
; Line 61:	wnd->WindowColors[FRAME_COLOR][FG] =
;
	MOV	AL,BYTE [ESI+034H]
	MOV	BYTE [ESI+038H],AL
;
; Line 63:	wnd->WindowColors[FRAME_COLOR][BG] =
;
	MOV	AL,BYTE [ESI+035H]
	MOV	BYTE [ESI+039H],AL
;
; Line 65:	rtn = 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_30
	PUSH	DWORD [EBP+014H]
	PUSH	EBX
	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_31
L_30:
	PUSH	DWORD [EBP+014H]
	PUSH	EBX
	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_31:
	MOV	DWORD [EBP-08H],EAX
;
; Line 66:	return rtn;
;
	MOV	EAX,DWORD [EBP-08H]
	JMP	NEAR	L_15
L_20:
;
; Line 68:	if ((int)p1 == FALSE)    {
;
	TEST	EBX,EBX
	JNE	SHORT	L_32
;
; Line 69:	if (!wnd->isHelping)	{
;
	CMP	DWORD [ESI+08CH],BYTE 00H
	JNE	SHORT	L_34
;
; Line 70:	SendMessage(wnd, HIDE_WINDOW, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 06H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 71:	wnd->ct->setting = OFF;
;
	MOV	EAX,DWORD [ESI+0108H]
	MOV	DWORD [EAX+028H],00H
L_34:
	JMP	SHORT	L_33
L_32:
;
; Line 75:	wnd->ct->setting = ON;
;
	MOV	EAX,DWORD [ESI+0108H]
	MOV	DWORD [EAX+028H],01H
L_33:
;
; Line 76:	break;
;
	JMP	NEAR	L_17
L_21:
;
; Line 78:	if (wnd->ct->setting == OFF)
;
	MOV	EAX,DWORD [ESI+0108H]
	CMP	DWORD [EAX+028H],BYTE 00H
	JNE	SHORT	L_36
;
; Line 79:	return TRUE;
;
	MOV	EAX,01H
	JMP	NEAR	L_15
L_36:
;
; Line 80:	break;
;
	JMP	NEAR	L_17
L_22:
;
; Line 82:	currFocus = inFocus;
;
	MOV	EAX,DWORD [EDI+00H]
	MOV	DWORD [EBP-04H],EAX
;
; Line 83:	inFocus = NULL;
;
	MOV	DWORD [EDI+00H],00H
;
; Line 84:	rtn = 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_38
	PUSH	DWORD [EBP+014H]
	PUSH	EBX
	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_39
L_38:
	PUSH	DWORD [EBP+014H]
	PUSH	EBX
	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_39:
	MOV	DWORD [EBP-08H],EAX
;
; Line 85:	inFocus = currFocus;
;
	MOV	EAX,DWORD [EBP-04H]
	MOV	DWORD [EDI+00H],EAX
;
; Line 86:	return rtn;
;
	MOV	EAX,DWORD [EBP-08H]
	JMP	NEAR	L_15
L_23:
;
; Line 88:	rtn = 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_40
	PUSH	DWORD [EBP+014H]
	PUSH	EBX
	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_41
L_40:
	PUSH	DWORD [EBP+014H]
	PUSH	EBX
	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_41:
	MOV	DWORD [EBP-08H],EAX
;
; Line 89:	SendMessage(wnd, LB_GETTEXT,
;
	PUSH	DWORD [ESI+0C8H]
	LEA	EAX,[EBP-08CH]
	PUSH	EAX
	PUSH	BYTE 043H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 91:	PutItemText(pwnd, wnd->ct->command, text);
;
	LEA	EAX,[EBP-08CH]
	PUSH	EAX
	MOV	EAX,DWORD [ESI+0108H]
	MOVSX	EAX,WORD [EAX+01CH]
	PUSH	EAX
	PUSH	DWORD [EBP-098H]
	CALL	_PutItemText
	ADD	ESP,BYTE 0CH
;
; Line 92:	SendMessage(cwnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	DWORD [EBP-090H]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 93:	ChangedText(wnd, TRUE);
;
	PUSH	BYTE 01H
	PUSH	ESI
	CALL	_ChangedText
	ADD	ESP,BYTE 08H
;
; Line 94:	return rtn;
;
	MOV	EAX,DWORD [EBP-08H]
	JMP	NEAR	L_15
L_24:
;
; Line 96:	switch ((int) p1)    {
;
	CMP	EBX,BYTE 01BH
	JE	SHORT	L_44
	CMP	EBX,DWORD 010CBH
	JE	SHORT	L_46
	CMP	EBX,DWORD 010CDH
	JE	SHORT	L_45
	JMP	SHORT	L_43
L_44:
;
; Line 98:	case FWD:
;
L_45:
;
; Line 99:	case BS:
;
L_46:
;
; Line 100:	SendMessage(cwnd, SETFOCUS, TRUE, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 01H
	PUSH	BYTE 08H
	PUSH	DWORD [EBP-090H]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 101:	return TRUE;
;
	MOV	EAX,01H
	JMP	NEAR	L_15
L_43:
;
; Line 103:	break;
;
	JMP	SHORT	L_42
L_42:
;
; Line 105:	break;
;
	JMP	SHORT	L_17
L_25:
;
; Line 107:	SendMessage(cwnd, SETFOCUS, TRUE, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 01H
	PUSH	BYTE 08H
	PUSH	DWORD [EBP-090H]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 108:	return TRUE;
;
	MOV	EAX,01H
	JMP	SHORT	L_15
L_26:
;
; Line 110:	if (wnd->ct != NULL)
;
	CMP	DWORD [ESI+0108H],BYTE 00H
	JE	SHORT	L_47
;
; Line 111:	free(wnd->ct);
;
	PUSH	DWORD [ESI+0108H]
	CALL	_free
	POP	ECX
L_47:
;
; Line 112:	wnd->ct = NULL;
;
	MOV	DWORD [ESI+0108H],00H
;
; Line 113:	break;
;
	JMP	SHORT	L_17
L_18:
;
; Line 115:	break;
;
	JMP	SHORT	L_17
L_17:
;
; Line 117:	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_49
	PUSH	DWORD [EBP+014H]
	PUSH	EBX
	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_50
L_49:
	PUSH	DWORD [EBP+014H]
	PUSH	EBX
	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_50:
L_15:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
[GLOBAL	_PutComboListText]
;
; Line 120:	void PutComboListText(WINDOW wnd, enum commands cmd, char *text)
;
_PutComboListText:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
L_52:
;
; Line 121:	{
;
;
; Line 122:	CTLWINDOW *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	ESI,EAX
;
; Line 123:	if (ct != NULL)        {
;
	TEST	ESI,ESI
	JE	SHORT	L_53
;
; Line 124:	WINDOW lwnd = ((WINDOW)(ct->wnd))->extension;
;
	MOV	EAX,DWORD [ESI+02CH]
	MOV	EBX,DWORD [EAX+06CH]
;
; Line 125:	SendMessage(lwnd, ADDTEXT, (PARAM) text, 0);
;
	PUSH	BYTE 00H
	PUSH	DWORD [EBP+010H]
	PUSH	BYTE 030H
	PUSH	EBX
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_53:
;
; Line 127:	}
;
L_51:
	POP	ESI
	POP	EBX
	POP	EBP
	RET
SECTION _CONST

SECTION _TEXT
[EXTERN	_ChangedText]
[EXTERN	_wputch]
[EXTERN	_CreateWindow]
[EXTERN	_inFocus]
[EXTERN	_FindCommand]
[EXTERN	_ControlWindow]
[EXTERN	_background]
[EXTERN	_DFmalloc]
[EXTERN	_free]
[EXTERN	_foreground]
[EXTERN	_classdefs]
[EXTERN	_PutItemText]
[EXTERN	_SendMessage]
