	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 23:	static void AddModeKey(WINDOW wnd)
;
_AddModeKey:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	ESI
	MOV	ESI,DWORD [EBP+08H]
L_3:
;
; Line 24:	{
;
;
; Line 25:	if (isMultiLine(wnd))    {
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JE	SHORT	L_4
;
; Line 26:	wnd->AddMode ^= TRUE;
;
	BTC	DWORD [ESI+0CCH],00H
;
; Line 27:	SendMessage(GetParent(wnd), ADDSTATUS,
;
	PUSH	BYTE 00H
	CMP	DWORD [ESI+0CCH],BYTE 00H
	JE	SHORT	L_6
	MOV	EAX,DWORD L_1
	JMP	SHORT	L_7
L_6:
	MOV	EAX,00H
L_7:
	PUSH	EAX
	PUSH	BYTE 04DH
	PUSH	DWORD [ESI+03CH]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_4:
;
; Line 30:	}
;
L_2:
	POP	ESI
	POP	EBP
	RET
;
; Line 34:	static void UpKey(WINDOW wnd, PARAM p2)
;
_UpKey:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
	MOV	EDI,DWORD [EBP+0CH]
L_9:
;
; Line 35:	{
;
;
; Line 36:	if (wnd->selection > 0)    {
;
	CMP	DWORD [ESI+0C8H],BYTE 00H
	JLE	NEAR	L_10
;
; Line 37:	if (wnd->selection == wnd->wtop)    {
;
	MOV	EAX,DWORD [ESI+0C8H]
	CMP	EAX,DWORD [ESI+094H]
	JNE	SHORT	L_12
;
; Line 38:	BaseWndProc(LISTBOX, wnd, KEYBOARD, UP, p2);
;
	PUSH	EDI
	PUSH	DWORD 010C8H
	PUSH	BYTE 015H
	PUSH	ESI
	MOV	EAX,DWORD [_classdefs+024H]
	IMUL	EAX,BYTE 0CH
	CALL	DWORD [EAX+04H+_classdefs+00H]
	ADD	ESP,BYTE 010H
;
; Line 39:	PostMessage(wnd, LB_SELECTION, wnd->selection-1,
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JE	SHORT	L_14
	MOV	EAX,EDI
	JMP	SHORT	L_15
L_14:
	MOV	EAX,00H
L_15:
	PUSH	EAX
	MOV	EAX,DWORD [ESI+0C8H]
	DEC	EAX
	PUSH	EAX
	PUSH	BYTE 040H
	PUSH	ESI
	CALL	_PostMessage
	ADD	ESP,BYTE 010H
	JMP	NEAR	L_13
L_12:
;
; Line 43:	int newsel = wnd->selection-1;
;
	MOV	EBX,DWORD [ESI+0C8H]
	DEC	EBX
;
; Line 44:	if (wnd->wlines == ClientHeight(wnd))
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_18
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,BYTE 08H
	JE	SHORT	L_18
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,010000H
	JE	SHORT	L_18
	MOV	EAX,03H
	JMP	SHORT	L_19
L_18:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_23
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,BYTE 08H
	JNE	SHORT	L_22
L_23:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_20
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,010000H
	JE	SHORT	L_20
L_22:
	MOV	EAX,02H
	JMP	SHORT	L_21
L_20:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,014108H
	JE	SHORT	L_24
	MOV	EAX,01H
	JMP	SHORT	L_25
L_24:
	MOV	EAX,00H
L_25:
L_21:
L_19:
	MOV	ECX,DWORD [ESI+01CH]
	SUB	ECX,EAX
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,08000H
	JE	SHORT	L_26
	MOV	EAX,01H
	JMP	SHORT	L_27
L_26:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,04000H
	JE	SHORT	L_28
	MOV	EAX,01H
	JMP	SHORT	L_29
L_28:
	MOV	EAX,00H
L_29:
L_27:
	SUB	ECX,EAX
	CMP	DWORD [ESI+090H],ECX
	JNE	SHORT	L_16
	JMP	SHORT	L_30
L_32:
;
; Line 46:	--newsel;
;
	DEC	EBX
L_30:
;
; Line 45:	while (TextLine(wnd, newsel)->ch == LINE)
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	EAX,DWORD [EAX+EBX*4+00H]
	MOV	ECX,DWORD [ESI+098H]
	MOVZX	EAX,BYTE [ECX+EAX*2+00H]
	CMP	EAX,0C4H
	JE	SHORT	L_32
L_31:
L_16:
;
; Line 47:	PostMessage(wnd, LB_SELECTION, newsel,
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JE	SHORT	L_33
	MOV	EAX,EDI
	JMP	SHORT	L_34
L_33:
	MOV	EAX,00H
L_34:
	PUSH	EAX
	PUSH	EBX
	PUSH	BYTE 040H
	PUSH	ESI
	CALL	_PostMessage
	ADD	ESP,BYTE 010H
L_13:
L_10:
;
; Line 54:	}
;
L_8:
	POP	EDI
	POP	ESI
	POP	EBX
	POP	EBP
	RET
;
; Line 57:	static void DnKey(WINDOW wnd, PARAM p2)
;
_DnKey:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
	MOV	EDI,DWORD [EBP+0CH]
L_36:
;
; Line 58:	{
;
;
; Line 59:	if (wnd->selection < wnd->wlines-1)    {
;
	MOV	EAX,DWORD [ESI+090H]
	DEC	EAX
	CMP	DWORD [ESI+0C8H],EAX
	JGE	NEAR	L_37
;
; Line 60:	if (wnd->selection == wnd->wtop+ClientHeight(wnd)-1)  {
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_41
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,BYTE 08H
	JE	SHORT	L_41
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,010000H
	JE	SHORT	L_41
	MOV	EAX,03H
	JMP	SHORT	L_42
L_41:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_46
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,BYTE 08H
	JNE	SHORT	L_45
L_46:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_43
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,010000H
	JE	SHORT	L_43
L_45:
	MOV	EAX,02H
	JMP	SHORT	L_44
L_43:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,014108H
	JE	SHORT	L_47
	MOV	EAX,01H
	JMP	SHORT	L_48
L_47:
	MOV	EAX,00H
L_48:
L_44:
L_42:
	MOV	ECX,DWORD [ESI+01CH]
	SUB	ECX,EAX
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,08000H
	JE	SHORT	L_49
	MOV	EAX,01H
	JMP	SHORT	L_50
L_49:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,04000H
	JE	SHORT	L_51
	MOV	EAX,01H
	JMP	SHORT	L_52
L_51:
	MOV	EAX,00H
L_52:
L_50:
	SUB	ECX,EAX
	ADD	ECX,DWORD [ESI+094H]
	DEC	ECX
	CMP	DWORD [ESI+0C8H],ECX
	JNE	SHORT	L_39
;
; Line 61:	BaseWndProc(LISTBOX, wnd, KEYBOARD, DN, p2);
;
	PUSH	EDI
	PUSH	DWORD 010D0H
	PUSH	BYTE 015H
	PUSH	ESI
	MOV	EAX,DWORD [_classdefs+024H]
	IMUL	EAX,BYTE 0CH
	CALL	DWORD [EAX+04H+_classdefs+00H]
	ADD	ESP,BYTE 010H
;
; Line 62:	PostMessage(wnd, LB_SELECTION, wnd->selection+1,
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JE	SHORT	L_53
	MOV	EAX,EDI
	JMP	SHORT	L_54
L_53:
	MOV	EAX,00H
L_54:
	PUSH	EAX
	MOV	EAX,DWORD [ESI+0C8H]
	INC	EAX
	PUSH	EAX
	PUSH	BYTE 040H
	PUSH	ESI
	CALL	_PostMessage
	ADD	ESP,BYTE 010H
	JMP	NEAR	L_40
L_39:
;
; Line 66:	int newsel = wnd->selection+1;
;
	MOV	EBX,DWORD [ESI+0C8H]
	INC	EBX
;
; Line 67:	if (wnd->wlines == ClientHeight(wnd))
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_57
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,BYTE 08H
	JE	SHORT	L_57
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,010000H
	JE	SHORT	L_57
	MOV	EAX,03H
	JMP	SHORT	L_58
L_57:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_62
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,BYTE 08H
	JNE	SHORT	L_61
L_62:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_59
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,010000H
	JE	SHORT	L_59
L_61:
	MOV	EAX,02H
	JMP	SHORT	L_60
L_59:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,014108H
	JE	SHORT	L_63
	MOV	EAX,01H
	JMP	SHORT	L_64
L_63:
	MOV	EAX,00H
L_64:
L_60:
L_58:
	MOV	ECX,DWORD [ESI+01CH]
	SUB	ECX,EAX
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,08000H
	JE	SHORT	L_65
	MOV	EAX,01H
	JMP	SHORT	L_66
L_65:
	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:
L_66:
	SUB	ECX,EAX
	CMP	DWORD [ESI+090H],ECX
	JNE	SHORT	L_55
	JMP	SHORT	L_69
L_71:
;
; Line 69:	newsel++;
;
	INC	EBX
L_69:
;
; Line 68:	while (TextLine(wnd, newsel)->ch == LINE)
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	EAX,DWORD [EAX+EBX*4+00H]
	MOV	ECX,DWORD [ESI+098H]
	MOVZX	EAX,BYTE [ECX+EAX*2+00H]
	CMP	EAX,0C4H
	JE	SHORT	L_71
L_70:
L_55:
;
; Line 70:	PostMessage(wnd, LB_SELECTION, newsel,
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JE	SHORT	L_72
	MOV	EAX,EDI
	JMP	SHORT	L_73
L_72:
	MOV	EAX,00H
L_73:
	PUSH	EAX
	PUSH	EBX
	PUSH	BYTE 040H
	PUSH	ESI
	CALL	_PostMessage
	ADD	ESP,BYTE 010H
L_40:
L_37:
;
; Line 77:	}
;
L_35:
	POP	EDI
	POP	ESI
	POP	EBX
	POP	EBP
	RET
;
; Line 80:	static void HomePgUpKey(WINDOW wnd, PARAM p1, PARAM p2)
;
_HomePgUpKey:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	MOV	ESI,DWORD [EBP+08H]
	MOV	EBX,DWORD [EBP+010H]
L_75:
;
; Line 81:	{
;
;
; Line 82:	BaseWndProc(LISTBOX, wnd, KEYBOARD, p1, p2);
;
	PUSH	EBX
	PUSH	DWORD [EBP+0CH]
	PUSH	BYTE 015H
	PUSH	ESI
	MOV	EAX,DWORD [_classdefs+024H]
	IMUL	EAX,BYTE 0CH
	CALL	DWORD [EAX+04H+_classdefs+00H]
	ADD	ESP,BYTE 010H
;
; Line 83:	PostMessage(wnd, LB_SELECTION, wnd->wtop,
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JE	SHORT	L_76
	MOV	EAX,EBX
	JMP	SHORT	L_77
L_76:
	MOV	EAX,00H
L_77:
	PUSH	EAX
	PUSH	DWORD [ESI+094H]
	PUSH	BYTE 040H
	PUSH	ESI
	CALL	_PostMessage
	ADD	ESP,BYTE 010H
;
; Line 88:	}
;
L_74:
	POP	ESI
	POP	EBX
	POP	EBP
	RET
;
; Line 91:	static void EndPgDnKey(WINDOW wnd, PARAM p1, PARAM p2)
;
_EndPgDnKey:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
	MOV	EDI,DWORD [EBP+010H]
L_79:
;
; Line 92:	{
;
;
; Line 94:	BaseWndProc(LISTBOX, wnd, KEYBOARD, p1, p2);
;
	PUSH	EDI
	PUSH	DWORD [EBP+0CH]
	PUSH	BYTE 015H
	PUSH	ESI
	MOV	EAX,DWORD [_classdefs+024H]
	IMUL	EAX,BYTE 0CH
	CALL	DWORD [EAX+04H+_classdefs+00H]
	ADD	ESP,BYTE 010H
;
; Line 95:	bot = wnd->wtop+ClientHeight(wnd)-1;
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_80
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,BYTE 08H
	JE	SHORT	L_80
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,010000H
	JE	SHORT	L_80
	MOV	EAX,03H
	JMP	SHORT	L_81
L_80:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_85
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,BYTE 08H
	JNE	SHORT	L_84
L_85:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_82
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,010000H
	JE	SHORT	L_82
L_84:
	MOV	EAX,02H
	JMP	SHORT	L_83
L_82:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,014108H
	JE	SHORT	L_86
	MOV	EAX,01H
	JMP	SHORT	L_87
L_86:
	MOV	EAX,00H
L_87:
L_83:
L_81:
	MOV	ECX,DWORD [ESI+01CH]
	SUB	ECX,EAX
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,08000H
	JE	SHORT	L_88
	MOV	EAX,01H
	JMP	SHORT	L_89
L_88:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,04000H
	JE	SHORT	L_90
	MOV	EAX,01H
	JMP	SHORT	L_91
L_90:
	MOV	EAX,00H
L_91:
L_89:
	SUB	ECX,EAX
	ADD	ECX,DWORD [ESI+094H]
	DEC	ECX
	MOV	EBX,ECX
;
; Line 96:	if (bot > wnd->wlines-1)
;
	MOV	EAX,DWORD [ESI+090H]
	DEC	EAX
	CMP	EBX,EAX
	JLE	SHORT	L_92
;
; Line 97:	bot = wnd->wlines-1;
;
	MOV	EBX,DWORD [ESI+090H]
	DEC	EBX
L_92:
;
; Line 98:	PostMessage(wnd, LB_SELECTION, bot,
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JE	SHORT	L_94
	MOV	EAX,EDI
	JMP	SHORT	L_95
L_94:
	MOV	EAX,00H
L_95:
	PUSH	EAX
	PUSH	EBX
	PUSH	BYTE 040H
	PUSH	ESI
	CALL	_PostMessage
	ADD	ESP,BYTE 010H
;
; Line 103:	}
;
L_78:
	POP	EDI
	POP	ESI
	POP	EBX
	POP	EBP
	RET
;
; Line 107:	static void SpacebarKey(WINDOW wnd, PARAM p2)
;
_SpacebarKey:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
	MOV	EDI,DWORD [EBP+0CH]
L_97:
;
; Line 108:	{
;
;
; Line 109:	if (isMultiLine(wnd))    {
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JE	SHORT	L_98
;
; Line 110:	int sel = SendMessage(wnd, LB_CURRENTSELECTION, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 042H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
	MOV	EBX,EAX
;
; Line 111:	if (sel != -1)    {
;
	CMP	EBX,BYTE 0FFFFFFFFH
	JE	SHORT	L_100
;
; Line 112:	if (wnd->AddMode)
;
	CMP	DWORD [ESI+0CCH],BYTE 00H
	JE	SHORT	L_102
;
; Line 113:	FlipSelection(wnd, sel);
;
	PUSH	EBX
	PUSH	ESI
	CALL	_FlipSelection
	ADD	ESP,BYTE 08H
L_102:
;
; Line 114:	if (ItemSelected(wnd, sel))    {
;
	PUSH	EBX
	PUSH	ESI
	CALL	_ItemSelected
	ADD	ESP,BYTE 08H
	TEST	EAX,EAX
	JE	SHORT	L_104
;
; Line 115:	if (!((int) p2 & (LEFTSHIFT | RIGHTSHIFT)))
;
	MOV	EAX,EDI
	AND	EAX,BYTE 03H
	JNE	SHORT	L_106
;
; Line 116:	wnd->AnchorPoint = sel;
;
	MOV	DWORD [ESI+0D0H],EBX
L_106:
;
; Line 117:	ExtendSelections(wnd, sel, (int) p2);
;
	PUSH	EDI
	PUSH	EBX
	PUSH	ESI
	CALL	_ExtendSelections
	ADD	ESP,BYTE 0CH
	JMP	SHORT	L_105
L_104:
;
; Line 120:	wnd->AnchorPoint = -1;
;
	MOV	DWORD [ESI+0D0H],0FFFFFFFFH
L_105:
;
; Line 121:	SendMessage(wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_100:
L_98:
;
; Line 124:	}
;
L_96:
	POP	EDI
	POP	ESI
	POP	EBX
	POP	EBP
	RET
;
; Line 128:	static void EnterKey(WINDOW wnd)
;
_EnterKey:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	ESI
	MOV	ESI,DWORD [EBP+08H]
L_109:
;
; Line 129:	{
;
;
; Line 130:	if (wnd->selection != -1)    {
;
	CMP	DWORD [ESI+0C8H],BYTE 0FFFFFFFFH
	JE	SHORT	L_110
;
; Line 131:	SendMessage(wnd, LB_SELECTION, wnd->selection, TRUE);
;
	PUSH	BYTE 01H
	PUSH	DWORD [ESI+0C8H]
	PUSH	BYTE 040H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 132:	SendMessage(wnd, LB_CHOOSE, wnd->selection, 0);
;
	PUSH	BYTE 00H
	PUSH	DWORD [ESI+0C8H]
	PUSH	BYTE 041H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_110:
;
; Line 134:	}
;
L_108:
	POP	ESI
	POP	EBP
	RET
;
; Line 137:	static void KeyPress(WINDOW wnd, PARAM p1, PARAM p2)
;
_KeyPress:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
L_113:
;
; Line 138:	{
;
;
; Line 139:	int sel = wnd->selection+1;
;
	MOV	EBX,DWORD [ESI+0C8H]
	INC	EBX
	JMP	NEAR	L_114
L_116:
;
; Line 141:	char *cp = TextLine(wnd, sel);
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	EDI,DWORD [EAX+EBX*4+00H]
	SHL	EDI,01H
	ADD	EDI,DWORD [ESI+098H]
;
; Line 142:	if (cp == NULL)
;
	JE	NEAR	L_115
;
; Line 143:	break;
;
L_117:
;
; Line 145:	if (isMultiLine(wnd))
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JE	SHORT	L_119
;
; Line 146:	cp++;
;
	INC	EDI
L_119:
;
; Line 148:	if (tolower(*cp) == (int)p1)    {
;
	MOVSX	EAX,BYTE [EDI+00H]
	PUSH	EAX
	CALL	_tolower
	POP	ECX
	CMP	EAX,DWORD [EBP+0CH]
	JNE	NEAR	L_121
;
; Line 149:	SendMessage(wnd, LB_SELECTION, sel,
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JE	SHORT	L_123
	MOV	EAX,DWORD [EBP+010H]
	JMP	SHORT	L_124
L_123:
	MOV	EAX,00H
L_124:
	PUSH	EAX
	PUSH	EBX
	PUSH	BYTE 040H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 151:	if (!SelectionInWindow(wnd, sel))    {
;
	PUSH	EBX
	PUSH	ESI
	CALL	_SelectionInWindow
	ADD	ESP,BYTE 08H
	TEST	EAX,EAX
	JNE	NEAR	L_125
;
; Line 152:	wnd->wtop = sel-ClientHeight(wnd)+1;
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_127
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,BYTE 08H
	JE	SHORT	L_127
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,010000H
	JE	SHORT	L_127
	MOV	EAX,03H
	JMP	SHORT	L_128
L_127:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_132
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,BYTE 08H
	JNE	SHORT	L_131
L_132:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_129
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,010000H
	JE	SHORT	L_129
L_131:
	MOV	EAX,02H
	JMP	SHORT	L_130
L_129:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,014108H
	JE	SHORT	L_133
	MOV	EAX,01H
	JMP	SHORT	L_134
L_133:
	MOV	EAX,00H
L_134:
L_130:
L_128:
	MOV	ECX,DWORD [ESI+01CH]
	SUB	ECX,EAX
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,08000H
	JE	SHORT	L_135
	MOV	EAX,01H
	JMP	SHORT	L_136
L_135:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,04000H
	JE	SHORT	L_137
	MOV	EAX,01H
	JMP	SHORT	L_138
L_137:
	MOV	EAX,00H
L_138:
L_136:
	SUB	ECX,EAX
	MOV	EAX,EBX
	SUB	EAX,ECX
	INC	EAX
	MOV	DWORD [ESI+094H],EAX
;
; Line 153:	SendMessage(wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_125:
;
; Line 155:	break;
;
	JMP	SHORT	L_115
L_121:
;
; Line 157:	sel++;
;
	INC	EBX
L_114:
;
; Line 140:	while (sel < wnd->wlines)    {
;
	CMP	EBX,DWORD [ESI+090H]
	JL	NEAR	L_116
L_115:
;
; Line 159:	}
;
L_112:
	POP	EDI
	POP	ESI
	POP	EBX
	POP	EBP
	RET
;
; Line 162:	static int KeyboardMsg(WINDOW wnd, PARAM p1, PARAM p2)
;
_KeyboardMsg:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	EBX,DWORD [EBP+08H]
	MOV	ESI,DWORD [EBP+010H]
	MOV	EDI,DWORD [EBP+0CH]
L_140:
;
; Line 163:	{
;
;
; Line 164:	switch ((int) p1)    {
;
	CMP	EDI,DWORD 010C9H
	JE	NEAR	L_146
	JG	SHORT	L_152
	CMP	EDI,DWORD 010C7H
	JE	NEAR	L_147
	JG	SHORT	L_153
	CMP	EDI,BYTE 020H
	JE	NEAR	L_150
	JG	NEAR	L_142
	CMP	EDI,BYTE 0DH
	JE	NEAR	L_151
	JMP	NEAR	L_142
L_153:
	CMP	EDI,DWORD 010C8H
	JE	SHORT	L_144
	JMP	NEAR	L_142
L_152:
	CMP	EDI,DWORD 010D1H
	JE	NEAR	L_148
	JG	SHORT	L_154
	CMP	EDI,DWORD 010D0H
	JE	SHORT	L_145
	JG	NEAR	L_142
	CMP	EDI,DWORD 010CFH
	JE	SHORT	L_149
	JMP	NEAR	L_142
L_154:
	CMP	EDI,DWORD 010DBH
	JE	SHORT	L_143
	JMP	NEAR	L_142
L_143:
;
; Line 167:	AddModeKey(wnd);
;
	PUSH	EBX
	CALL	_AddModeKey
	POP	ECX
;
; Line 168:	return TRUE;
;
	MOV	EAX,01H
	JMP	NEAR	L_139
L_144:
;
; Line 171:	TestExtended(wnd, p2);
;
	PUSH	ESI
	PUSH	EBX
	CALL	_TestExtended
	ADD	ESP,BYTE 08H
;
; Line 172:	UpKey(wnd, p2);
;
	PUSH	ESI
	PUSH	EBX
	CALL	_UpKey
	ADD	ESP,BYTE 08H
;
; Line 173:	return TRUE;
;
	MOV	EAX,01H
	JMP	NEAR	L_139
L_145:
;
; Line 175:	TestExtended(wnd, p2);
;
	PUSH	ESI
	PUSH	EBX
	CALL	_TestExtended
	ADD	ESP,BYTE 08H
;
; Line 176:	DnKey(wnd, p2);
;
	PUSH	ESI
	PUSH	EBX
	CALL	_DnKey
	ADD	ESP,BYTE 08H
;
; Line 177:	return TRUE;
;
	MOV	EAX,01H
	JMP	SHORT	L_139
L_146:
;
; Line 179:	case HOME:
;
L_147:
;
; Line 180:	TestExtended(wnd, p2);
;
	PUSH	ESI
	PUSH	EBX
	CALL	_TestExtended
	ADD	ESP,BYTE 08H
;
; Line 181:	HomePgUpKey(wnd, p1, p2);
;
	PUSH	ESI
	PUSH	EDI
	PUSH	EBX
	CALL	_HomePgUpKey
	ADD	ESP,BYTE 0CH
;
; Line 182:	return TRUE;
;
	MOV	EAX,01H
	JMP	SHORT	L_139
L_148:
;
; Line 184:	case END:
;
L_149:
;
; Line 185:	TestExtended(wnd, p2);
;
	PUSH	ESI
	PUSH	EBX
	CALL	_TestExtended
	ADD	ESP,BYTE 08H
;
; Line 186:	EndPgDnKey(wnd, p1, p2);
;
	PUSH	ESI
	PUSH	EDI
	PUSH	EBX
	CALL	_EndPgDnKey
	ADD	ESP,BYTE 0CH
;
; Line 187:	return TRUE;
;
	MOV	EAX,01H
	JMP	SHORT	L_139
L_150:
;
; Line 190:	SpacebarKey(wnd, p2);
;
	PUSH	ESI
	PUSH	EBX
	CALL	_SpacebarKey
	ADD	ESP,BYTE 08H
;
; Line 191:	break;
;
	JMP	SHORT	L_141
L_151:
;
; Line 194:	EnterKey(wnd);
;
	PUSH	EBX
	CALL	_EnterKey
	POP	ECX
;
; Line 195:	return TRUE;
;
	MOV	EAX,01H
	JMP	SHORT	L_139
L_142:
;
; Line 197:	KeyPress(wnd, p1, p2);
;
	PUSH	ESI
	PUSH	EDI
	PUSH	EBX
	CALL	_KeyPress
	ADD	ESP,BYTE 0CH
;
; Line 198:	break;
;
	JMP	SHORT	L_141
L_141:
;
; Line 200:	return FALSE;
;
	MOV	EAX,00H
L_139:
	POP	EDI
	POP	ESI
	POP	EBX
	POP	EBP
	RET
;
; Line 204:	static int LeftButtonMsg(WINDOW wnd, PARAM p1, PARAM p2)
;
_LeftButtonMsg:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 048H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
L_156:
;
; Line 205:	{
;
;
; Line 206:	int my = (int) p2 - GetTop(wnd);
;
	MOV	EBX,DWORD [EBP+010H]
	SUB	EBX,DWORD [ESI+010H]
;
; Line 207:	if (my >= wnd->wlines-wnd->wtop)
;
	MOV	EAX,DWORD [ESI+090H]
	SUB	EAX,DWORD [ESI+094H]
	CMP	EBX,EAX
	JL	SHORT	L_157
;
; Line 208:	my = wnd->wlines - wnd->wtop;
;
	MOV	EBX,DWORD [ESI+090H]
	SUB	EBX,DWORD [ESI+094H]
L_157:
;
; Line 210:	if (!InsideRect(p1, p2, ClientRect(wnd)))
;
	PUSH	ESI
	LEA	EAX,[EBP-040H]
	PUSH	EAX
	CALL	_ClientRect
	ADD	ESP,BYTE 08H
	MOV	ECX,DWORD [EBP+0CH]
	CMP	ECX,DWORD [EAX+00H]
	JL	SHORT	L_161
	PUSH	ESI
	LEA	EAX,[EBP-030H]
	PUSH	EAX
	CALL	_ClientRect
	ADD	ESP,BYTE 08H
	MOV	ECX,DWORD [EBP+0CH]
	CMP	ECX,DWORD [EAX+08H]
	JG	SHORT	L_161
	PUSH	ESI
	LEA	EAX,[EBP-020H]
	PUSH	EAX
	CALL	_ClientRect
	ADD	ESP,BYTE 08H
	MOV	ECX,DWORD [EBP+010H]
	CMP	ECX,DWORD [EAX+04H]
	JL	SHORT	L_162
	PUSH	ESI
	LEA	EAX,[EBP-010H]
	PUSH	EAX
	CALL	_ClientRect
	ADD	ESP,BYTE 08H
	MOV	ECX,DWORD [EBP+010H]
	CMP	ECX,DWORD [EAX+0CH]
	JLE	SHORT	L_159
L_162:
L_161:
;
; Line 211:	return FALSE;
;
	MOV	EAX,00H
	JMP	SHORT	L_155
L_159:
;
; Line 212:	if (wnd->wlines && my != py)    {
;
	CMP	DWORD [ESI+090H],BYTE 00H
	JE	SHORT	L_163
	CMP	EBX,DWORD [_py]
	JE	SHORT	L_163
;
; Line 213:	int sel = wnd->wtop+my-1;
;
	MOV	EAX,DWORD [ESI+094H]
	ADD	EAX,EBX
	DEC	EAX
	MOV	DWORD [EBP-048H],EAX
;
; Line 215:	int sh = getshift();
;
	CALL	_getshift
	MOV	EDI,EAX
;
; Line 216:	if (!(sh & (LEFTSHIFT | RIGHTSHIFT)))    {
;
	MOV	EAX,EDI
	AND	EAX,BYTE 03H
	JNE	SHORT	L_165
;
; Line 217:	if (!(sh & CTRLKEY))
;
	MOV	EAX,EDI
	AND	EAX,BYTE 04H
	JNE	SHORT	L_167
;
; Line 218:	ClearAllSelections(wnd);
;
	PUSH	ESI
	CALL	_ClearAllSelections
	POP	ECX
L_167:
;
; Line 219:	wnd->AnchorPoint = sel;
;
	MOV	EAX,DWORD [EBP-048H]
	MOV	DWORD [ESI+0D0H],EAX
;
; Line 220:	SendMessage(wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_165:
;
; Line 223:	SendMessage(wnd, LB_SELECTION, sel, TRUE);
;
	PUSH	BYTE 01H
	PUSH	DWORD [EBP-048H]
	PUSH	BYTE 040H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 224:	py = my;
;
	MOV	DWORD [_py],EBX
L_163:
;
; Line 226:	return TRUE;
;
	MOV	EAX,01H
L_155:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
;
; Line 230:	static int DoubleClickMsg(WINDOW wnd, PARAM p1, PARAM p2)
;
_DoubleClickMsg:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 020H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
	MOV	EBX,DWORD [EBP+0CH]
	MOV	EDI,DWORD [EBP+010H]
L_170:
;
; Line 231:	{
;
;
; Line 232:	if (WindowMoving || WindowSizing)
;
	CMP	DWORD [_WindowMoving],BYTE 00H
	JNE	SHORT	L_173
	CMP	DWORD [_WindowSizing],BYTE 00H
	JE	SHORT	L_171
L_173:
;
; Line 233:	return FALSE;
;
	MOV	EAX,00H
	JMP	SHORT	L_169
L_171:
;
; Line 234:	if (wnd->wlines)    {
;
	CMP	DWORD [ESI+090H],BYTE 00H
	JE	SHORT	L_174
;
; Line 235:	RECT rc = ClientRect(wnd);
;
	PUSH	ESI
	LEA	EAX,[EBP-010H]
	PUSH	EAX
	CALL	_ClientRect
	ADD	ESP,BYTE 08H
	PUSH	ESI
	PUSH	EDI
	LEA	ESI,[EAX+00H]
	LEA	EDI,[EBP-020H]
	PUSH	SS
	POP	ES
	CLD
	MOV	ECX,04H
	REP	MOVSD
	POP	EDI
	POP	ESI
;
; Line 236:	BaseWndProc(LISTBOX, wnd, DOUBLE_CLICK, p1, p2);
;
	PUSH	EDI
	PUSH	EBX
	PUSH	BYTE 025H
	PUSH	ESI
	MOV	EAX,DWORD [_classdefs+024H]
	IMUL	EAX,BYTE 0CH
	CALL	DWORD [EAX+04H+_classdefs+00H]
	ADD	ESP,BYTE 010H
;
; Line 237:	if (InsideRect(p1, p2, rc))
;
	CMP	EBX,DWORD [EBP-020H]
	JL	SHORT	L_176
	CMP	EBX,DWORD [EBP-018H]
	JG	SHORT	L_176
	CMP	EDI,DWORD [EBP-01CH]
	JL	SHORT	L_176
	CMP	EDI,DWORD [EBP-014H]
	JG	SHORT	L_176
;
; Line 238:	SendMessage(wnd, LB_CHOOSE, wnd->selection, 0);
;
	PUSH	BYTE 00H
	PUSH	DWORD [ESI+0C8H]
	PUSH	BYTE 041H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_176:
L_174:
;
; Line 240:	return TRUE;
;
	MOV	EAX,01H
L_169:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
;
; Line 244:	static int AddTextMsg(WINDOW wnd, PARAM p1, PARAM p2)
;
_AddTextMsg:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
	MOV	EDI,DWORD [EBP+0CH]
L_179:
;
; Line 245:	{
;
;
; Line 246:	int rtn = BaseWndProc(LISTBOX, wnd, ADDTEXT, p1, p2);
;
	PUSH	DWORD [EBP+010H]
	PUSH	EDI
	PUSH	BYTE 030H
	PUSH	ESI
	MOV	EAX,DWORD [_classdefs+024H]
	IMUL	EAX,BYTE 0CH
	CALL	DWORD [EAX+04H+_classdefs+00H]
	ADD	ESP,BYTE 010H
	MOV	EBX,EAX
;
; Line 247:	if (wnd->selection == -1)
;
	CMP	DWORD [ESI+0C8H],BYTE 0FFFFFFFFH
	JNE	SHORT	L_180
;
; Line 248:	SendMessage(wnd, LB_SETSELECTION, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 044H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_180:
;
; Line 250:	if (*(char *)p1 == LISTSELECTOR)
;
	MOVSX	EAX,BYTE [EDI+00H]
	CMP	EAX,BYTE 04H
	JNE	SHORT	L_182
;
; Line 251:	wnd->SelectCount++;
;
	INC	DWORD [ESI+0D4H]
L_182:
;
; Line 253:	return rtn;
;
	MOV	EAX,EBX
L_178:
	POP	EDI
	POP	ESI
	POP	EBX
	POP	EBP
	RET
;
; Line 257:	static void GetTextMsg(WINDOW wnd, PARAM p1, PARAM p2)
;
_GetTextMsg:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	EBX,DWORD [EBP+08H]
L_185:
;
; Line 258:	{
;
;
; Line 259:	if ((int)p2 != -1)    {
;
	CMP	DWORD [EBP+010H],BYTE 0FFFFFFFFH
	JE	SHORT	L_186
;
; Line 260:	char *cp1 = (char *)p1;
;
	MOV	EDI,DWORD [EBP+0CH]
;
; Line 261:	ATTRCHR *cp2 = TextLine(wnd, (int)p2);
;
	MOV	EAX,DWORD [EBX+0C4H]
	MOV	ECX,DWORD [EBP+010H]
	MOV	ESI,DWORD [EAX+ECX*4+00H]
	SHL	ESI,01H
	ADD	ESI,DWORD [EBX+098H]
	JMP	SHORT	L_188
L_190:
;
; Line 263:	*cp1++ = cp2++->ch;
;
	MOV	EAX,ESI
	ADD	ESI,BYTE 02H
	MOV	ECX,EDI
	INC	EDI
	MOV	AL,BYTE [EAX+00H]
	MOV	BYTE [ECX+00H],AL
L_188:
;
; Line 262:	while (cp2 && cp2->ch && cp2->ch != '\n')
;
	TEST	ESI,ESI
	JE	SHORT	L_191
	CMP	BYTE [ESI+00H],BYTE 00H
	JE	SHORT	L_191
	MOVZX	EAX,BYTE [ESI+00H]
	CMP	EAX,BYTE 0AH
	JNE	SHORT	L_190
L_191:
L_189:
;
; Line 264:	*cp1 = '\0';
;
	MOV	BYTE [EDI+00H],00H
L_186:
;
; Line 266:	}
;
L_184:
	POP	EDI
	POP	ESI
	POP	EBX
	POP	EBP
	RET
[GLOBAL	_ListBoxProc]
;
; Line 269:	int ListBoxProc(WINDOW wnd, MESSAGE msg, PARAM p1, PARAM p2)
;
_ListBoxProc:
	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+014H]
L_193:
;
; Line 270:	{
;
;
; Line 271:	switch (msg)    {
;
	MOV	EAX,DWORD [EBP+0CH]
	CMP	EAX,BYTE 035H
	JE	NEAR	L_206
	JA	NEAR	L_216
	CMP	EAX,BYTE 024H
	JE	NEAR	L_198
	JA	SHORT	L_217
	CMP	EAX,BYTE 08H
	JE	NEAR	L_205
	JA	SHORT	L_218
	CMP	EAX,BYTE 07H
	JE	NEAR	L_215
	JA	NEAR	L_195
	CMP	EAX,BYTE 03H
	JE	NEAR	L_196
	JMP	NEAR	L_195
L_218:
	CMP	EAX,BYTE 015H
	JE	NEAR	L_197
	JA	NEAR	L_195
	CMP	EAX,BYTE 09H
	JE	NEAR	L_204
	JMP	NEAR	L_195
L_217:
	CMP	EAX,BYTE 030H
	JE	NEAR	L_201
	JA	SHORT	L_219
	CMP	EAX,BYTE 027H
	JE	NEAR	L_200
	JA	NEAR	L_195
	CMP	EAX,BYTE 025H
	JE	NEAR	L_199
	JMP	NEAR	L_195
L_219:
	CMP	EAX,BYTE 033H
	JE	NEAR	L_203
	JMP	NEAR	L_195
L_216:
	CMP	EAX,BYTE 040H
	JE	NEAR	L_212
	JA	SHORT	L_220
	CMP	EAX,BYTE 038H
	JE	NEAR	L_209
	JA	SHORT	L_221
	CMP	EAX,BYTE 037H
	JE	NEAR	L_208
	JA	NEAR	L_195
	CMP	EAX,BYTE 036H
	JE	NEAR	L_207
	JMP	NEAR	L_195
L_221:
	CMP	EAX,BYTE 039H
	JE	NEAR	L_210
	JMP	NEAR	L_195
L_220:
	CMP	EAX,BYTE 043H
	JE	NEAR	L_202
	JA	SHORT	L_222
	CMP	EAX,BYTE 042H
	JE	NEAR	L_213
	JA	NEAR	L_195
	CMP	EAX,BYTE 041H
	JE	NEAR	L_211
	JMP	NEAR	L_195
L_222:
	CMP	EAX,BYTE 044H
	JE	NEAR	L_214
	JMP	NEAR	L_195
L_196:
;
; Line 273:	BaseWndProc(LISTBOX, wnd, msg, p1, p2);
;
	PUSH	EDI
	PUSH	EBX
	MOVSX	EAX,WORD [EBP+0CH]
	PUSH	EAX
	PUSH	ESI
	MOV	EAX,DWORD [_classdefs+024H]
	IMUL	EAX,BYTE 0CH
	CALL	DWORD [EAX+04H+_classdefs+00H]
	ADD	ESP,BYTE 010H
;
; Line 274:	wnd->selection = -1;
;
	MOV	DWORD [ESI+0C8H],0FFFFFFFFH
;
; Line 276:	wnd->AnchorPoint = -1;
;
	MOV	DWORD [ESI+0D0H],0FFFFFFFFH
;
; Line 278:	return TRUE;
;
	MOV	EAX,01H
	JMP	NEAR	L_192
L_197:
;
; Line 280:	if (WindowMoving || WindowSizing)
;
	CMP	DWORD [_WindowMoving],BYTE 00H
	JNE	SHORT	L_225
	CMP	DWORD [_WindowSizing],BYTE 00H
	JE	SHORT	L_223
L_225:
;
; Line 281:	break;
;
	JMP	NEAR	L_194
L_223:
;
; Line 282:	if (KeyboardMsg(wnd, p1, p2))
;
	PUSH	EDI
	PUSH	EBX
	PUSH	ESI
	CALL	_KeyboardMsg
	ADD	ESP,BYTE 0CH
	TEST	EAX,EAX
	JE	SHORT	L_226
;
; Line 283:	return TRUE;
;
	MOV	EAX,01H
	JMP	NEAR	L_192
L_226:
;
; Line 284:	break;
;
	JMP	NEAR	L_194
L_198:
;
; Line 286:	if (LeftButtonMsg(wnd, p1, p2) == TRUE)
;
	PUSH	EDI
	PUSH	EBX
	PUSH	ESI
	CALL	_LeftButtonMsg
	ADD	ESP,BYTE 0CH
	CMP	EAX,BYTE 01H
	JNE	SHORT	L_228
;
; Line 287:	return TRUE;
;
	MOV	EAX,01H
	JMP	NEAR	L_192
L_228:
;
; Line 288:	break;
;
	JMP	NEAR	L_194
L_199:
;
; Line 290:	if (DoubleClickMsg(wnd, p1, p2))
;
	PUSH	EDI
	PUSH	EBX
	PUSH	ESI
	CALL	_DoubleClickMsg
	ADD	ESP,BYTE 0CH
	TEST	EAX,EAX
	JE	SHORT	L_230
;
; Line 291:	return TRUE;
;
	MOV	EAX,01H
	JMP	NEAR	L_192
L_230:
;
; Line 292:	break;
;
	JMP	NEAR	L_194
L_200:
;
; Line 294:	if (WindowMoving || WindowSizing || VSliding)
;
	CMP	DWORD [_WindowMoving],BYTE 00H
	JNE	SHORT	L_234
	CMP	DWORD [_WindowSizing],BYTE 00H
	JNE	SHORT	L_234
	CMP	DWORD [_VSliding],BYTE 00H
	JE	SHORT	L_232
L_234:
;
; Line 295:	break;
;
	JMP	NEAR	L_194
L_232:
;
; Line 296:	py = -1;
;
	MOV	DWORD [_py],0FFFFFFFFH
;
; Line 297:	return TRUE;
;
	MOV	EAX,01H
	JMP	NEAR	L_192
L_201:
;
; Line 299:	return AddTextMsg(wnd, p1, p2);
;
	PUSH	EDI
	PUSH	EBX
	PUSH	ESI
	CALL	_AddTextMsg
	ADD	ESP,BYTE 0CH
	JMP	NEAR	L_192
L_202:
;
; Line 301:	GetTextMsg(wnd, p1, p2);
;
	PUSH	EDI
	PUSH	EBX
	PUSH	ESI
	CALL	_GetTextMsg
	ADD	ESP,BYTE 0CH
;
; Line 302:	return TRUE;
;
	MOV	EAX,01H
	JMP	NEAR	L_192
L_203:
;
; Line 304:	wnd->selection = -1;
;
	MOV	DWORD [ESI+0C8H],0FFFFFFFFH
;
; Line 306:	wnd->AnchorPoint = -1;
;
	MOV	DWORD [ESI+0D0H],0FFFFFFFFH
;
; Line 308:	wnd->SelectCount = 0;
;
	MOV	DWORD [ESI+0D4H],00H
;
; Line 309:	break;
;
	JMP	NEAR	L_194
L_204:
;
; Line 311:	BaseWndProc(LISTBOX, wnd, msg, p1, p2);
;
	PUSH	EDI
	PUSH	EBX
	MOVSX	EAX,WORD [EBP+0CH]
	PUSH	EAX
	PUSH	ESI
	MOV	EAX,DWORD [_classdefs+024H]
	IMUL	EAX,BYTE 0CH
	CALL	DWORD [EAX+04H+_classdefs+00H]
	ADD	ESP,BYTE 010H
;
; Line 312:	WriteSelection(wnd, wnd->selection, TRUE, (RECT *)p1);
;
	PUSH	EBX
	PUSH	BYTE 01H
	PUSH	DWORD [ESI+0C8H]
	PUSH	ESI
	CALL	_WriteSelection
	ADD	ESP,BYTE 010H
;
; Line 313:	return TRUE;
;
	MOV	EAX,01H
	JMP	NEAR	L_192
L_205:
;
; Line 315:	BaseWndProc(LISTBOX, wnd, msg, p1, p2);
;
	PUSH	EDI
	PUSH	EBX
	MOVSX	EAX,WORD [EBP+0CH]
	PUSH	EAX
	PUSH	ESI
	MOV	EAX,DWORD [_classdefs+024H]
	IMUL	EAX,BYTE 0CH
	CALL	DWORD [EAX+04H+_classdefs+00H]
	ADD	ESP,BYTE 010H
;
; Line 316:	if ((int)p1)
;
	TEST	EBX,EBX
	JE	SHORT	L_235
;
; Line 317:	WriteSelection(wnd, wnd->selection, TRUE, NULL);
;
	PUSH	BYTE 00H
	PUSH	BYTE 01H
	PUSH	DWORD [ESI+0C8H]
	PUSH	ESI
	CALL	_WriteSelection
	ADD	ESP,BYTE 010H
L_235:
;
; Line 318:	return TRUE;
;
	MOV	EAX,01H
	JMP	NEAR	L_192
L_206:
;
; Line 320:	case HORIZSCROLL:
;
L_207:
;
; Line 321:	case SCROLLPAGE:
;
L_208:
;
; Line 322:	case HORIZPAGE:
;
L_209:
;
; Line 323:	case SCROLLDOC:
;
L_210:
;
; Line 324:	BaseWndProc(LISTBOX, wnd, msg, p1, p2);
;
	PUSH	EDI
	PUSH	EBX
	MOVSX	EAX,WORD [EBP+0CH]
	PUSH	EAX
	PUSH	ESI
	MOV	EAX,DWORD [_classdefs+024H]
	IMUL	EAX,BYTE 0CH
	CALL	DWORD [EAX+04H+_classdefs+00H]
	ADD	ESP,BYTE 010H
;
; Line 325:	WriteSelection(wnd,wnd->selection,TRUE,NULL);
;
	PUSH	BYTE 00H
	PUSH	BYTE 01H
	PUSH	DWORD [ESI+0C8H]
	PUSH	ESI
	CALL	_WriteSelection
	ADD	ESP,BYTE 010H
;
; Line 326:	return TRUE;
;
	MOV	EAX,01H
	JMP	NEAR	L_192
L_211:
;
; Line 328:	SendMessage(GetParent(wnd), LB_CHOOSE, p1, p2);
;
	PUSH	EDI
	PUSH	EBX
	PUSH	BYTE 041H
	PUSH	DWORD [ESI+03CH]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 329:	return TRUE;
;
	MOV	EAX,01H
	JMP	NEAR	L_192
L_212:
;
; Line 331:	ChangeSelection(wnd, (int) p1, (int) p2);
;
	PUSH	EDI
	PUSH	EBX
	PUSH	ESI
	CALL	_ChangeSelection
	ADD	ESP,BYTE 0CH
;
; Line 332:	SendMessage(GetParent(wnd), LB_SELECTION,
;
	PUSH	BYTE 00H
	PUSH	DWORD [ESI+0C8H]
	PUSH	BYTE 040H
	PUSH	DWORD [ESI+03CH]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 334:	return TRUE;
;
	MOV	EAX,01H
	JMP	SHORT	L_192
L_213:
;
; Line 336:	return wnd->selection;
;
	MOV	EAX,DWORD [ESI+0C8H]
	JMP	SHORT	L_192
L_214:
;
; Line 338:	ChangeSelection(wnd, (int) p1, 0);
;
	PUSH	BYTE 00H
	PUSH	EBX
	PUSH	ESI
	CALL	_ChangeSelection
	ADD	ESP,BYTE 0CH
;
; Line 339:	return TRUE;
;
	MOV	EAX,01H
	JMP	SHORT	L_192
L_215:
;
; Line 342:	if (isMultiLine(wnd) && wnd->AddMode)    {
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JE	SHORT	L_237
	CMP	DWORD [ESI+0CCH],BYTE 00H
	JE	SHORT	L_237
;
; Line 343:	wnd->AddMode = FALSE;
;
	MOV	DWORD [ESI+0CCH],00H
;
; Line 344:	SendMessage(GetParent(wnd), ADDSTATUS, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 04DH
	PUSH	DWORD [ESI+03CH]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_237:
;
; Line 346:	break;
;
	JMP	SHORT	L_194
L_195:
;
; Line 349:	break;
;
	JMP	SHORT	L_194
L_194:
;
; Line 351:	return BaseWndProc(LISTBOX, wnd, msg, p1, p2);
;
	PUSH	EDI
	PUSH	EBX
	MOVSX	EAX,WORD [EBP+0CH]
	PUSH	EAX
	PUSH	ESI
	MOV	EAX,DWORD [_classdefs+024H]
	IMUL	EAX,BYTE 0CH
	CALL	DWORD [EAX+04H+_classdefs+00H]
	ADD	ESP,BYTE 010H
L_192:
	POP	EDI
	POP	ESI
	POP	EBX
	POP	EBP
	RET
;
; Line 354:	static BOOL SelectionInWindow(WINDOW wnd, int sel)
;
_SelectionInWindow:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	MOV	ESI,DWORD [EBP+08H]
	MOV	EBX,DWORD [EBP+0CH]
L_240:
;
; Line 355:	{
;
;
; Line 356:	return (wnd->wlines && sel >= wnd->wtop &&
;
	CMP	DWORD [ESI+090H],BYTE 00H
	JE	NEAR	L_242
	CMP	EBX,DWORD [ESI+094H]
	JL	NEAR	L_242
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_243
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,BYTE 08H
	JE	SHORT	L_243
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,010000H
	JE	SHORT	L_243
	MOV	EAX,03H
	JMP	SHORT	L_244
L_243:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_248
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,BYTE 08H
	JNE	SHORT	L_247
L_248:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_245
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,010000H
	JE	SHORT	L_245
L_247:
	MOV	EAX,02H
	JMP	SHORT	L_246
L_245:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,014108H
	JE	SHORT	L_249
	MOV	EAX,01H
	JMP	SHORT	L_250
L_249:
	MOV	EAX,00H
L_250:
L_246:
L_244:
	MOV	ECX,DWORD [ESI+01CH]
	SUB	ECX,EAX
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,08000H
	JE	SHORT	L_251
	MOV	EAX,01H
	JMP	SHORT	L_252
L_251:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,04000H
	JE	SHORT	L_253
	MOV	EAX,01H
	JMP	SHORT	L_254
L_253:
	MOV	EAX,00H
L_254:
L_252:
	SUB	ECX,EAX
	ADD	ECX,DWORD [ESI+094H]
	CMP	EBX,ECX
	JL	SHORT	L_241
L_242:
	SUB	EAX,EAX
; TEST EAX,IMMED (branches around next four bytes of code)
	DB	0A9H
L_241:
	SUB	EAX,EAX
	INC	EAX
	NOP
L_239:
	POP	ESI
	POP	EBX
	POP	EBP
	RET
;
; Line 360:	static void near WriteSelection(WINDOW wnd, int sel,
;
_WriteSelection:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	MOV	EBX,DWORD [EBP+08H]
	MOV	ESI,DWORD [EBP+0CH]
L_256:
;
; Line 362:	{
;
;
; Line 363:	if (isVisible(wnd))
;
	PUSH	EBX
	CALL	_isVisible
	POP	ECX
	TEST	EAX,EAX
	JE	SHORT	L_257
;
; Line 364:	if (SelectionInWindow(wnd, sel))
;
	PUSH	ESI
	PUSH	EBX
	CALL	_SelectionInWindow
	ADD	ESP,BYTE 08H
	TEST	EAX,EAX
	JE	SHORT	L_259
;
; Line 365:	WriteTextLine(wnd, rc, sel, reverse);
;
	MOVSX	EAX,WORD [EBP+010H]
	PUSH	EAX
	PUSH	ESI
	PUSH	DWORD [EBP+014H]
	PUSH	EBX
	CALL	_WriteTextLine
	ADD	ESP,BYTE 010H
L_259:
L_257:
;
; Line 366:	}
;
L_255:
	POP	ESI
	POP	EBX
	POP	EBP
	RET
;
; Line 370:	static void TestExtended(WINDOW wnd, PARAM p2)
;
_TestExtended:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	ESI
	MOV	ESI,DWORD [EBP+08H]
L_262:
;
; Line 371:	{
;
;
; Line 372:	if (isMultiLine(wnd) && !wnd->AddMode &&
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JE	SHORT	L_263
	CMP	DWORD [ESI+0CCH],BYTE 00H
	JNE	SHORT	L_263
	MOV	EAX,DWORD [EBP+0CH]
	AND	EAX,BYTE 03H
	JNE	SHORT	L_263
;
; Line 374:	if (wnd->SelectCount > 1)    {
;
	CMP	DWORD [ESI+0D4H],BYTE 01H
	JLE	SHORT	L_265
;
; Line 375:	ClearAllSelections(wnd);
;
	PUSH	ESI
	CALL	_ClearAllSelections
	POP	ECX
;
; Line 376:	SendMessage(wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_265:
L_263:
;
; Line 379:	}
;
L_261:
	POP	ESI
	POP	EBP
	RET
;
; Line 382:	static void ClearAllSelections(WINDOW wnd)
;
_ClearAllSelections:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	MOV	ESI,DWORD [EBP+08H]
L_268:
;
; Line 383:	{
;
;
; Line 384:	if (isMultiLine(wnd) && wnd->SelectCount > 0)    {
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JE	SHORT	L_269
	CMP	DWORD [ESI+0D4H],BYTE 00H
	JLE	SHORT	L_269
	MOV	EBX,00H
	JMP	SHORT	L_273
L_271:
;
; Line 387:	ClearSelection(wnd, sel);
;
	PUSH	EBX
	PUSH	ESI
	CALL	_ClearSelection
	ADD	ESP,BYTE 08H
;
; Line 386:	for (sel = 0; sel < wnd->wlines; sel++)
;
L_272:
	INC	EBX
L_273:
	CMP	EBX,DWORD [ESI+090H]
	JL	SHORT	L_271
L_274:
L_269:
;
; Line 389:	}
;
L_267:
	POP	ESI
	POP	EBX
	POP	EBP
	RET
;
; Line 392:	static void FlipSelection(WINDOW wnd, int sel)
;
_FlipSelection:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	MOV	EBX,DWORD [EBP+08H]
	MOV	ESI,DWORD [EBP+0CH]
L_276:
;
; Line 393:	{
;
;
; Line 394:	if (isMultiLine(wnd))    {
;
	MOV	EAX,DWORD [EBX+054H]
	AND	EAX,02000H
	JE	SHORT	L_277
;
; Line 395:	if (ItemSelected(wnd, sel))
;
	PUSH	ESI
	PUSH	EBX
	CALL	_ItemSelected
	ADD	ESP,BYTE 08H
	TEST	EAX,EAX
	JE	SHORT	L_279
;
; Line 396:	ClearSelection(wnd, sel);
;
	PUSH	ESI
	PUSH	EBX
	CALL	_ClearSelection
	ADD	ESP,BYTE 08H
	JMP	SHORT	L_280
L_279:
;
; Line 398:	SetSelection(wnd, sel);
;
	PUSH	ESI
	PUSH	EBX
	CALL	_SetSelection
	ADD	ESP,BYTE 08H
L_280:
L_277:
;
; Line 400:	}
;
L_275:
	POP	ESI
	POP	EBX
	POP	EBP
	RET
;
; Line 402:	static int ExtendSelections(WINDOW wnd, int sel, int shift)
;
_ExtendSelections:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 04H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
L_282:
;
; Line 403:	{
;
;
; Line 404:	if (shift & (LEFTSHIFT | RIGHTSHIFT) &&
;
	MOV	EAX,DWORD [EBP+010H]
	AND	EAX,BYTE 03H
	JE	SHORT	L_283
	MOV	EAX,DWORD [EBP+08H]
	CMP	DWORD [EAX+0D0H],BYTE 0FFFFFFFFH
	JE	SHORT	L_283
;
; Line 406:	int i = sel;
;
	MOV	ESI,DWORD [EBP+0CH]
;
; Line 407:	int j = wnd->AnchorPoint;
;
	MOV	EAX,DWORD [EBP+08H]
	MOV	EBX,DWORD [EAX+0D0H]
;
; Line 409:	if (j > i)
;
	CMP	EBX,ESI
	JLE	SHORT	L_285
;
; Line 410:	swap(i,j);
;
	MOV	DWORD [EBP-04H],ESI
	MOV	ESI,EBX
	MOV	EBX,DWORD [EBP-04H]
L_285:
;
; Line 411:	rtn = i - j;
;
	MOV	EDI,ESI
	SUB	EDI,EBX
	JMP	SHORT	L_287
L_289:
;
; Line 413:	SetSelection(wnd, j++);
;
	MOV	EAX,EBX
	INC	EBX
	PUSH	EAX
	PUSH	DWORD [EBP+08H]
	CALL	_SetSelection
	ADD	ESP,BYTE 08H
L_287:
;
; Line 412:	while (j <= i)
;
	CMP	EBX,ESI
	JLE	SHORT	L_289
L_288:
;
; Line 414:	return rtn;
;
	MOV	EAX,EDI
	JMP	SHORT	L_281
L_283:
;
; Line 416:	return 0;
;
	MOV	EAX,00H
L_281:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
;
; Line 419:	static void SetSelection(WINDOW wnd, int sel)
;
_SetSelection:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
	MOV	EBX,DWORD [EBP+0CH]
L_291:
;
; Line 420:	{
;
;
; Line 421:	if (isMultiLine(wnd) && !ItemSelected(wnd, sel))    {
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JE	SHORT	L_292
	PUSH	EBX
	PUSH	ESI
	CALL	_ItemSelected
	ADD	ESP,BYTE 08H
	TEST	EAX,EAX
	JNE	SHORT	L_292
;
; Line 422:	char *lp = TextLine(wnd, sel);
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	EDI,DWORD [EAX+EBX*4+00H]
	SHL	EDI,01H
	ADD	EDI,DWORD [ESI+098H]
;
; Line 423:	*lp = LISTSELECTOR;
;
	MOV	BYTE [EDI+00H],04H
;
; Line 424:	wnd->SelectCount++;
;
	INC	DWORD [ESI+0D4H]
L_292:
;
; Line 426:	}
;
L_290:
	POP	EDI
	POP	ESI
	POP	EBX
	POP	EBP
	RET
;
; Line 428:	static void ClearSelection(WINDOW wnd, int sel)
;
_ClearSelection:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
	MOV	EBX,DWORD [EBP+0CH]
L_295:
;
; Line 429:	{
;
;
; Line 430:	if (isMultiLine(wnd) && ItemSelected(wnd, sel))    {
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JE	SHORT	L_296
	PUSH	EBX
	PUSH	ESI
	CALL	_ItemSelected
	ADD	ESP,BYTE 08H
	TEST	EAX,EAX
	JE	SHORT	L_296
;
; Line 431:	char *lp = TextLine(wnd, sel);
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	EDI,DWORD [EAX+EBX*4+00H]
	SHL	EDI,01H
	ADD	EDI,DWORD [ESI+098H]
;
; Line 432:	*lp = ' ';
;
	MOV	BYTE [EDI+00H],020H
;
; Line 433:	--wnd->SelectCount;
;
	DEC	DWORD [ESI+0D4H]
L_296:
;
; Line 435:	}
;
L_294:
	POP	EDI
	POP	ESI
	POP	EBX
	POP	EBP
	RET
[GLOBAL	_ItemSelected]
;
; Line 437:	BOOL ItemSelected(WINDOW wnd, int sel)
;
_ItemSelected:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
	MOV	EBX,DWORD [EBP+0CH]
L_299:
;
; Line 438:	{
;
;
; Line 439:	if (sel != -1 && isMultiLine(wnd) && sel < wnd->wlines)    {
;
	CMP	EBX,BYTE 0FFFFFFFFH
	JE	SHORT	L_300
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JE	SHORT	L_300
	CMP	EBX,DWORD [ESI+090H]
	JGE	SHORT	L_300
;
; Line 440:	char *cp = TextLine(wnd, sel);
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	EDI,DWORD [EAX+EBX*4+00H]
	SHL	EDI,01H
	ADD	EDI,DWORD [ESI+098H]
;
; Line 441:	return (int)((*cp) & 255) == LISTSELECTOR;
;
	MOVSX	EAX,BYTE [EDI+00H]
	MOVZX	EAX,AL
	CMP	EAX,BYTE 04H
	SETE	AL
	MOVZX	EAX,AL
	JMP	SHORT	L_298
L_300:
;
; Line 443:	return FALSE;
;
	MOV	EAX,00H
L_298:
	POP	EDI
	POP	ESI
	POP	EBX
	POP	EBP
	RET
;
; Line 447:	static void near ChangeSelection(WINDOW wnd,int sel,int shift)
;
_ChangeSelection:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
	MOV	EBX,DWORD [EBP+0CH]
L_303:
;
; Line 448:	{
;
;
; Line 449:	if (sel != wnd->selection)    {
;
	CMP	EBX,DWORD [ESI+0C8H]
	JE	NEAR	L_304
;
; Line 451:	if (sel != -1 && isMultiLine(wnd))        {
;
	CMP	EBX,BYTE 0FFFFFFFFH
	JE	SHORT	L_306
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JE	SHORT	L_306
;
; Line 453:	if (!wnd->AddMode)
;
	CMP	DWORD [ESI+0CCH],BYTE 00H
	JNE	SHORT	L_308
;
; Line 454:	ClearAllSelections(wnd);
;
	PUSH	ESI
	CALL	_ClearAllSelections
	POP	ECX
L_308:
;
; Line 455:	sels = ExtendSelections(wnd, sel, shift);
;
	PUSH	DWORD [EBP+010H]
	PUSH	EBX
	PUSH	ESI
	CALL	_ExtendSelections
	ADD	ESP,BYTE 0CH
	MOV	EDI,EAX
;
; Line 456:	if (sels > 1)
;
	CMP	EDI,BYTE 01H
	JLE	SHORT	L_310
;
; Line 457:	SendMessage(wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_310:
;
; Line 458:	if (sels == 0 && !wnd->AddMode)    {
;
	TEST	EDI,EDI
	JNE	SHORT	L_312
	CMP	DWORD [ESI+0CCH],BYTE 00H
	JNE	SHORT	L_312
;
; Line 459:	ClearSelection(wnd, wnd->selection);
;
	PUSH	DWORD [ESI+0C8H]
	PUSH	ESI
	CALL	_ClearSelection
	ADD	ESP,BYTE 08H
;
; Line 460:	SetSelection(wnd, sel);
;
	PUSH	EBX
	PUSH	ESI
	CALL	_SetSelection
	ADD	ESP,BYTE 08H
;
; Line 461:	wnd->AnchorPoint = sel;
;
	MOV	DWORD [ESI+0D0H],EBX
L_312:
L_306:
;
; Line 465:	WriteSelection(wnd, wnd->selection, FALSE, NULL);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	DWORD [ESI+0C8H]
	PUSH	ESI
	CALL	_WriteSelection
	ADD	ESP,BYTE 010H
;
; Line 466:	wnd->selection = sel;
;
	MOV	DWORD [ESI+0C8H],EBX
;
; Line 467:	if (sel != -1)
;
	CMP	EBX,BYTE 0FFFFFFFFH
	JE	SHORT	L_314
;
; Line 468:	WriteSelection(wnd, sel, TRUE, NULL);
;
	PUSH	BYTE 00H
	PUSH	BYTE 01H
	PUSH	EBX
	PUSH	ESI
	CALL	_WriteSelection
	ADD	ESP,BYTE 010H
L_314:
L_304:
;
; Line 470:	}
;
L_302:
	POP	EDI
	POP	ESI
	POP	EBX
	POP	EBP
	RET
SECTION _STRING
L_1:
	DB	041H,064H,064H,020H,04DH,06FH,064H,065H,00H
SECTION _DATA

_py	DD	0FFFFFFFFH
SECTION _CONST

SECTION _TEXT
[EXTERN	_WindowMoving]
[EXTERN	_VSliding]
[EXTERN	_WindowSizing]
[EXTERN	_ClientRect]
[EXTERN	_isVisible]
[EXTERN	_WriteTextLine]
[EXTERN	_tolower]
[EXTERN	_classdefs]
[EXTERN	_getshift]
[EXTERN	_SendMessage]
[EXTERN	_PostMessage]
