	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 30:	static int CreateWindowMsg(WINDOW wnd)
;
_CreateWindowMsg:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	MOV	ESI,DWORD [EBP+08H]
L_2:
;
; Line 31:	{
;
;
; Line 32:	int rtn = BaseWndProc(EDITBOX, wnd, CREATE_WINDOW, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 03H
	PUSH	ESI
	MOV	EAX,DWORD [_classdefs+030H]
	IMUL	EAX,BYTE 0CH
	CALL	DWORD [EAX+04H+_classdefs+00H]
	ADD	ESP,BYTE 010H
	MOV	EBX,EAX
;
; Line 33:	wnd->MaxTextLength = MAXTEXTLEN+1;
;
	MOV	DWORD [ESI+0FCH],07FFFFFF0H
;
; Line 34:	wnd->InsertMode = TRUE;
;
	MOV	DWORD [ESI+0F4H],01H
;
; Line 35:	if (isMultiLine(wnd))
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JE	SHORT	L_3
;
; Line 36:	wnd->WordWrapMode = TRUE;
;
	MOV	DWORD [ESI+0F8H],01H
L_3:
;
; Line 37:	SendMessage(wnd, CLEARTEXT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 033H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 38:	return rtn;
;
	MOV	EAX,EBX
L_1:
	POP	ESI
	POP	EBX
	POP	EBP
	RET
;
; Line 41:	static int SetTextMsg(WINDOW wnd, PARAM p1, PARAM p2)
;
_SetTextMsg:
	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]
L_6:
;
; Line 42:	{
;
;
; Line 43:	int rtn = FALSE;
;
	MOV	DWORD [EBP-04H],00H
;
; Line 45:	if (p2)
;
	CMP	DWORD [EBP+010H],BYTE 00H
	JE	SHORT	L_7
;
; Line 46:	len = tstrlen((char *)p1);
;
	PUSH	EBX
	CALL	_tstrlen
	POP	ECX
	MOV	EDI,EAX
	JMP	SHORT	L_8
L_7:
;
; Line 48:	len = strlen((char *)p1);
;
	PUSH	EBX
	CALL	_strlen
	POP	ECX
	MOV	EDI,EAX
L_8:
;
; Line 49:	if (len <= wnd->MaxTextLength)	{
;
	CMP	EDI,DWORD [ESI+0FCH]
	JA	SHORT	L_9
;
; Line 50:	rtn = BaseWndProc(EDITBOX, wnd, SETTEXT, p1, p2);
;
	PUSH	DWORD [EBP+010H]
	PUSH	EBX
	PUSH	BYTE 034H
	PUSH	ESI
	MOV	EAX,DWORD [_classdefs+030H]
	IMUL	EAX,BYTE 0CH
	CALL	DWORD [EAX+04H+_classdefs+00H]
	ADD	ESP,BYTE 010H
	MOV	DWORD [EBP-04H],EAX
;
; Line 51:	ChangedText(wnd, FALSE);
;
	PUSH	BYTE 00H
	PUSH	ESI
	CALL	_ChangedText
	ADD	ESP,BYTE 08H
L_9:
;
; Line 53:	return rtn;
;
	MOV	EAX,DWORD [EBP-04H]
L_5:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
;
; Line 56:	static int ClearTextMsg(WINDOW wnd)
;
_ClearTextMsg:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
L_12:
;
; Line 57:	{
;
;
; Line 58:	int rtn = BaseWndProc(EDITBOX, wnd, CLEARTEXT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 033H
	PUSH	ESI
	MOV	EAX,DWORD [_classdefs+030H]
	IMUL	EAX,BYTE 0CH
	CALL	DWORD [EAX+04H+_classdefs+00H]
	ADD	ESP,BYTE 010H
	MOV	EDI,EAX
;
; Line 59:	unsigned blen = EditBufLen(wnd)+2;
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JE	SHORT	L_13
	MOV	EAX,0400H
	JMP	SHORT	L_14
L_13:
	MOV	EAX,0100H
L_14:
	ADD	EAX,BYTE 02H
	MOV	EBX,EAX
;
; Line 60:	wnd->text = DFrealloc(wnd->text, blen * sizeof(ATTRCHR));
;
	MOV	EAX,EBX
	SHL	EAX,01H
	PUSH	EAX
	PUSH	DWORD [ESI+098H]
	CALL	_DFrealloc
	ADD	ESP,BYTE 08H
	MOV	DWORD [ESI+098H],EAX
;
; Line 61:	memset(wnd->text, 0, blen);
;
	PUSH	EBX
	PUSH	BYTE 00H
	PUSH	DWORD [ESI+098H]
	CALL	_memset
	ADD	ESP,BYTE 0CH
;
; Line 62:	wnd->wlines = 0;
;
	MOV	DWORD [ESI+090H],00H
;
; Line 63:	wnd->CurrLine = 0;
;
	MOV	DWORD [ESI+0DCH],00H
;
; Line 64:	wnd->CurrCol = 0;
;
	MOV	DWORD [ESI+0D8H],00H
;
; Line 65:	wnd->WndRow = 0;
;
	MOV	DWORD [ESI+0E0H],00H
;
; Line 66:	wnd->wleft = 0;
;
	MOV	DWORD [ESI+0A4H],00H
;
; Line 67:	wnd->wtop = 0;
;
	MOV	DWORD [ESI+094H],00H
;
; Line 68:	wnd->textwidth = 0;
;
	MOV	DWORD [ESI+0A8H],00H
;
; Line 69:	ChangedText(wnd, FALSE);
;
	PUSH	BYTE 00H
	PUSH	ESI
	CALL	_ChangedText
	ADD	ESP,BYTE 08H
;
; Line 70:	return rtn;
;
	MOV	EAX,EDI
L_11:
	POP	EDI
	POP	ESI
	POP	EBX
	POP	EBP
	RET
;
; Line 73:	static int AddTextMsg(WINDOW wnd, PARAM p1, PARAM p2)
;
_AddTextMsg:
	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]
L_16:
;
; Line 74:	{
;
;
; Line 75:	int rtn = FALSE;
;
	MOV	EDI,00H
;
; Line 77:	if (p2)
;
	CMP	DWORD [EBP+010H],BYTE 00H
	JE	SHORT	L_17
;
; Line 78:	len = strlen((char *)p1);
;
	PUSH	EBX
	CALL	_strlen
	POP	ECX
	MOV	DWORD [EBP-04H],EAX
	JMP	SHORT	L_18
L_17:
;
; Line 80:	len = tstrlen((ATTRCHR *)p1);
;
	PUSH	EBX
	CALL	_tstrlen
	POP	ECX
	MOV	DWORD [EBP-04H],EAX
L_18:
;
; Line 81:	if (len+wnd->textlen <= wnd->MaxTextLength) {
;
	MOV	EAX,DWORD [EBP-04H]
	ADD	EAX,DWORD [ESI+09CH]
	CMP	EAX,DWORD [ESI+0FCH]
	JA	NEAR	L_19
;
; Line 82:	rtn = BaseWndProc(EDITBOX, wnd, ADDTEXT, p1, p2);
;
	PUSH	DWORD [EBP+010H]
	PUSH	EBX
	PUSH	BYTE 030H
	PUSH	ESI
	MOV	EAX,DWORD [_classdefs+030H]
	IMUL	EAX,BYTE 0CH
	CALL	DWORD [EAX+04H+_classdefs+00H]
	ADD	ESP,BYTE 010H
	MOV	EDI,EAX
;
; Line 83:	if (rtn != FALSE)    {
;
	TEST	EDI,EDI
	JE	NEAR	L_21
;
; Line 84:	if (!isMultiLine(wnd))    {
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JNE	NEAR	L_23
;
; Line 85:	wnd->CurrLine = 0;
;
	MOV	DWORD [ESI+0DCH],00H
;
; Line 86:	wnd->CurrCol = strlen((char *)p1);
;
	PUSH	EBX
	CALL	_strlen
	POP	ECX
	MOV	DWORD [ESI+0D8H],EAX
;
; Line 87:	if (wnd->CurrCol >= ClientWidth(wnd))    {
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,04000H
	JE	SHORT	L_27
	MOV	EAX,01H
	JMP	SHORT	L_28
L_27:
	MOV	EAX,00H
L_28:
	SHL	EAX,01H
	MOV	ECX,DWORD [ESI+020H]
	SUB	ECX,EAX
	CMP	DWORD [ESI+0D8H],ECX
	JL	SHORT	L_25
;
; Line 88:	wnd->wleft = wnd->CurrCol-ClientWidth(wnd);
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,04000H
	JE	SHORT	L_29
	MOV	EAX,01H
	JMP	SHORT	L_30
L_29:
	MOV	EAX,00H
L_30:
	SHL	EAX,01H
	MOV	ECX,DWORD [ESI+020H]
	SUB	ECX,EAX
	MOV	EAX,DWORD [ESI+0D8H]
	SUB	EAX,ECX
	MOV	DWORD [ESI+0A4H],EAX
;
; Line 89:	wnd->CurrCol -= wnd->wleft;
;
	MOV	EAX,DWORD [ESI+0A4H]
	SUB	DWORD [ESI+0D8H],EAX
L_25:
;
; Line 91:	wnd->BlkEndCol = wnd->CurrCol;
;
	MOV	EAX,DWORD [ESI+0D8H]
	MOV	DWORD [ESI+0B8H],EAX
;
; Line 92:	SendMessage(wnd, KEYBOARD_CURSOR,
;
	PUSH	DWORD [ESI+0E0H]
	MOV	EAX,DWORD [ESI+0D8H]
	SUB	EAX,DWORD [ESI+0A4H]
	PUSH	EAX
	PUSH	BYTE 018H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_23:
L_21:
L_19:
;
; Line 97:	return rtn;
;
	MOV	EAX,EDI
L_15:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
;
; Line 100:	static int GetTextMsg(WINDOW wnd, PARAM p1, PARAM p2)
;
_GetTextMsg:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	ESI
	PUSH	EDI
L_32:
;
; Line 101:	{
;
;
; Line 102:	char *cp1 = (char *)p1;
;
	MOV	EDI,DWORD [EBP+0CH]
;
; Line 103:	ATTRCHR *cp2 = wnd->text;
;
	MOV	EAX,DWORD [EBP+08H]
	MOV	ESI,DWORD [EAX+098H]
;
; Line 104:	if (cp2 != NULL)    {
;
	TEST	ESI,ESI
	JE	SHORT	L_33
	JMP	SHORT	L_35
L_37:
;
; Line 106:	*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_35:
;
; Line 105:	while (p2-- && cp2->ch && cp2->ch != '\n')
;
	MOV	EAX,DWORD [EBP+010H]
	DEC	DWORD [EBP+010H]
	TEST	EAX,EAX
	JE	SHORT	L_38
	CMP	BYTE [ESI+00H],BYTE 00H
	JE	SHORT	L_38
	MOVZX	EAX,BYTE [ESI+00H]
	CMP	EAX,BYTE 0AH
	JNE	SHORT	L_37
L_38:
L_36:
;
; Line 107:	*cp1 = '\0';
;
	MOV	BYTE [EDI+00H],00H
;
; Line 108:	return TRUE;
;
	MOV	EAX,01H
	JMP	SHORT	L_31
L_33:
;
; Line 110:	return FALSE;
;
	MOV	EAX,00H
L_31:
	POP	EDI
	POP	ESI
	POP	EBP
	RET
;
; Line 113:	static int SetTextLengthMsg(WINDOW wnd, unsigned int len)
;
_SetTextLengthMsg:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	MOV	ESI,DWORD [EBP+08H]
	MOV	EBX,DWORD [EBP+0CH]
L_40:
;
; Line 114:	{
;
;
; Line 115:	if (len < MAXTEXTLEN)    {
;
	CMP	EBX,07FFFFFEFH
	JNC	SHORT	L_41
;
; Line 116:	wnd->MaxTextLength = len;
;
	MOV	DWORD [ESI+0FCH],EBX
;
; Line 117:	if (len < wnd->textlen)    {
;
	CMP	EBX,DWORD [ESI+09CH]
	JNC	SHORT	L_43
;
; Line 118:	wnd->textalloc = len + 1;
;
	MOV	EAX,EBX
	INC	EAX
	MOV	DWORD [ESI+0A0H],EAX
;
; Line 119:	wnd->text=DFrealloc(wnd->text, wnd->textalloc * sizeof(ATTRCHR));
;
	MOV	EAX,DWORD [ESI+0A0H]
	SHL	EAX,01H
	PUSH	EAX
	PUSH	DWORD [ESI+098H]
	CALL	_DFrealloc
	ADD	ESP,BYTE 08H
	MOV	DWORD [ESI+098H],EAX
;
; Line 120:	wnd->textlen = len;
;
	MOV	DWORD [ESI+09CH],EBX
;
; Line 121:	wnd->text[len].ch = '\0';
;
	MOV	EAX,DWORD [ESI+098H]
	MOV	BYTE [EAX+EBX*2+00H],00H
;
; Line 122:	wnd->text[len + 1].ch = '\0';
;
	MOV	EAX,DWORD [ESI+098H]
	MOV	ECX,EBX
	INC	ECX
	MOV	BYTE [EAX+ECX*2+00H],00H
;
; Line 123:	BuildTextPointers(wnd);
;
	PUSH	ESI
	CALL	_BuildTextPointers
	POP	ECX
L_43:
;
; Line 125:	return TRUE;
;
	MOV	EAX,01H
	JMP	SHORT	L_39
L_41:
;
; Line 127:	return FALSE;
;
	MOV	EAX,00H
L_39:
	POP	ESI
	POP	EBX
	POP	EBP
	RET
;
; Line 130:	static void KeyboardCursorMsg(WINDOW wnd, PARAM p1, PARAM p2)
;
_KeyboardCursorMsg:
	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_46:
;
; Line 131:	{
;
;
; Line 132:	wnd->CurrCol = (int)p1 + wnd->wleft;
;
	MOV	EAX,EDI
	ADD	EAX,DWORD [ESI+0A4H]
	MOV	DWORD [ESI+0D8H],EAX
;
; Line 133:	wnd->WndRow = (int)p2;
;
	MOV	DWORD [ESI+0E0H],EBX
;
; Line 134:	wnd->CurrLine = (int)p2 + wnd->wtop;
;
	MOV	EAX,EBX
	ADD	EAX,DWORD [ESI+094H]
	MOV	DWORD [ESI+0DCH],EAX
;
; Line 135:	if (wnd == inFocus)	{
;
	CMP	ESI,DWORD [_inFocus]
	JNE	SHORT	L_47
;
; Line 136:	if (CharInView(wnd, (int)p1, (int)p2))
;
	PUSH	EBX
	PUSH	EDI
	PUSH	ESI
	CALL	_CharInView
	ADD	ESP,BYTE 0CH
	TEST	EAX,EAX
	JE	SHORT	L_49
;
; Line 137:	SendMessage(NULL, SHOW_CURSOR,
;
	PUSH	BYTE 00H
	CMP	DWORD [ESI+0F4H],BYTE 00H
	JE	SHORT	L_52
	CMP	DWORD [_TextMarking],BYTE 00H
	JE	SHORT	L_51
L_52:
	SUB	EAX,EAX
; TEST EAX,IMMED (branches around next four bytes of code)
	DB	0A9H
L_51:
	SUB	EAX,EAX
	INC	EAX
	NOP
	PUSH	EAX
	PUSH	BYTE 01BH
	PUSH	BYTE 00H
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
	JMP	SHORT	L_50
L_49:
;
; Line 140:	SendMessage(NULL, HIDE_CURSOR, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 01AH
	PUSH	BYTE 00H
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_50:
L_47:
;
; Line 142:	}
;
L_45:
	POP	EDI
	POP	ESI
	POP	EBX
	POP	EBP
	RET
[GLOBAL	_SizeMsg]
;
; Line 144:	int SizeMsg(WINDOW wnd, PARAM p1, PARAM p2)
;
_SizeMsg:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	MOV	ESI,DWORD [EBP+08H]
L_54:
;
; Line 145:	{
;
;
; Line 146:	int rtn = BaseWndProc(EDITBOX, wnd, SIZE, p1, p2);
;
	PUSH	DWORD [EBP+010H]
	PUSH	DWORD [EBP+0CH]
	PUSH	BYTE 0DH
	PUSH	ESI
	MOV	EAX,DWORD [_classdefs+030H]
	IMUL	EAX,BYTE 0CH
	CALL	DWORD [EAX+04H+_classdefs+00H]
	ADD	ESP,BYTE 010H
	MOV	EBX,EAX
;
; Line 147:	if (WndCol > ClientWidth(wnd)-1)
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,04000H
	JE	SHORT	L_57
	MOV	EAX,01H
	JMP	SHORT	L_58
L_57:
	MOV	EAX,00H
L_58:
	SHL	EAX,01H
	MOV	ECX,DWORD [ESI+020H]
	SUB	ECX,EAX
	DEC	ECX
	MOV	EAX,DWORD [ESI+0D8H]
	SUB	EAX,DWORD [ESI+0A4H]
	CMP	EAX,ECX
	JLE	SHORT	L_55
;
; Line 148:	wnd->CurrCol = ClientWidth(wnd)-1 + wnd->wleft;
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,04000H
	JE	SHORT	L_59
	MOV	EAX,01H
	JMP	SHORT	L_60
L_59:
	MOV	EAX,00H
L_60:
	SHL	EAX,01H
	MOV	ECX,DWORD [ESI+020H]
	SUB	ECX,EAX
	DEC	ECX
	ADD	ECX,DWORD [ESI+0A4H]
	MOV	DWORD [ESI+0D8H],ECX
L_55:
;
; Line 149:	if (wnd->WndRow > ClientHeight(wnd)-1)    {
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_63
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,BYTE 08H
	JE	SHORT	L_63
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,010000H
	JE	SHORT	L_63
	MOV	EAX,03H
	JMP	SHORT	L_64
L_63:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_68
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,BYTE 08H
	JNE	SHORT	L_67
L_68:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_65
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,010000H
	JE	SHORT	L_65
L_67:
	MOV	EAX,02H
	JMP	SHORT	L_66
L_65:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,014108H
	JE	SHORT	L_69
	MOV	EAX,01H
	JMP	SHORT	L_70
L_69:
	MOV	EAX,00H
L_70:
L_66:
L_64:
	MOV	ECX,DWORD [ESI+01CH]
	SUB	ECX,EAX
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,08000H
	JE	SHORT	L_71
	MOV	EAX,01H
	JMP	SHORT	L_72
L_71:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,04000H
	JE	SHORT	L_73
	MOV	EAX,01H
	JMP	SHORT	L_74
L_73:
	MOV	EAX,00H
L_74:
L_72:
	SUB	ECX,EAX
	DEC	ECX
	CMP	DWORD [ESI+0E0H],ECX
	JLE	NEAR	L_61
;
; Line 150:	wnd->WndRow = ClientHeight(wnd)-1;
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_75
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,BYTE 08H
	JE	SHORT	L_75
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,010000H
	JE	SHORT	L_75
	MOV	EAX,03H
	JMP	SHORT	L_76
L_75:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_80
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,BYTE 08H
	JNE	SHORT	L_79
L_80:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_77
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,010000H
	JE	SHORT	L_77
L_79:
	MOV	EAX,02H
	JMP	SHORT	L_78
L_77:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,014108H
	JE	SHORT	L_81
	MOV	EAX,01H
	JMP	SHORT	L_82
L_81:
	MOV	EAX,00H
L_82:
L_78:
L_76:
	MOV	ECX,DWORD [ESI+01CH]
	SUB	ECX,EAX
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,08000H
	JE	SHORT	L_83
	MOV	EAX,01H
	JMP	SHORT	L_84
L_83:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,04000H
	JE	SHORT	L_85
	MOV	EAX,01H
	JMP	SHORT	L_86
L_85:
	MOV	EAX,00H
L_86:
L_84:
	SUB	ECX,EAX
	DEC	ECX
	MOV	DWORD [ESI+0E0H],ECX
;
; Line 151:	SetLinePointer(wnd, wnd->WndRow+wnd->wtop);
;
	MOV	EAX,DWORD [ESI+0E0H]
	ADD	EAX,DWORD [ESI+094H]
	MOV	DWORD [ESI+0DCH],EAX
L_61:
;
; Line 153:	SendMessage(wnd, KEYBOARD_CURSOR, WndCol, wnd->WndRow);
;
	PUSH	DWORD [ESI+0E0H]
	MOV	EAX,DWORD [ESI+0D8H]
	SUB	EAX,DWORD [ESI+0A4H]
	PUSH	EAX
	PUSH	BYTE 018H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 154:	return rtn;
;
	MOV	EAX,EBX
L_53:
	POP	ESI
	POP	EBX
	POP	EBP
	RET
;
; Line 157:	static int ScrollMsg(WINDOW wnd, PARAM p1)
;
_ScrollMsg:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
	MOV	EDI,DWORD [EBP+0CH]
L_88:
;
; Line 158:	{
;
;
; Line 159:	int rtn = FALSE;
;
	MOV	EBX,00H
;
; Line 160:	if (isMultiLine(wnd))    {
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JE	NEAR	L_89
;
; Line 161:	rtn = BaseWndProc(EDITBOX,wnd,SCROLL,p1,0);
;
	PUSH	BYTE 00H
	PUSH	EDI
	PUSH	BYTE 035H
	PUSH	ESI
	MOV	EAX,DWORD [_classdefs+030H]
	IMUL	EAX,BYTE 0CH
	CALL	DWORD [EAX+04H+_classdefs+00H]
	ADD	ESP,BYTE 010H
	MOV	EBX,EAX
;
; Line 162:	if (rtn != FALSE)    {
;
	TEST	EBX,EBX
	JE	NEAR	L_91
;
; Line 163:	if (p1)    {
;
	TEST	EDI,EDI
	JE	SHORT	L_93
;
; Line 165:	if (wnd->WndRow == 0)    {
;
	CMP	DWORD [ESI+0E0H],BYTE 00H
	JNE	SHORT	L_95
;
; Line 166:	wnd->CurrLine++;
;
	INC	DWORD [ESI+0DCH]
;
; Line 167:	StickEnd(wnd);
;
	PUSH	ESI
	CALL	_StickEnd
	POP	ECX
	JMP	SHORT	L_96
L_95:
;
; Line 170:	--wnd->WndRow;
;
	DEC	DWORD [ESI+0E0H]
L_96:
	JMP	NEAR	L_94
L_93:
;
; Line 174:	if (wnd->WndRow == ClientHeight(wnd)-1)    {
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_99
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,BYTE 08H
	JE	SHORT	L_99
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,010000H
	JE	SHORT	L_99
	MOV	EAX,03H
	JMP	SHORT	L_100
L_99:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_104
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,BYTE 08H
	JNE	SHORT	L_103
L_104:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_101
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,010000H
	JE	SHORT	L_101
L_103:
	MOV	EAX,02H
	JMP	SHORT	L_102
L_101:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,014108H
	JE	SHORT	L_105
	MOV	EAX,01H
	JMP	SHORT	L_106
L_105:
	MOV	EAX,00H
L_106:
L_102:
L_100:
	MOV	ECX,DWORD [ESI+01CH]
	SUB	ECX,EAX
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,08000H
	JE	SHORT	L_107
	MOV	EAX,01H
	JMP	SHORT	L_108
L_107:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,04000H
	JE	SHORT	L_109
	MOV	EAX,01H
	JMP	SHORT	L_110
L_109:
	MOV	EAX,00H
L_110:
L_108:
	SUB	ECX,EAX
	DEC	ECX
	CMP	DWORD [ESI+0E0H],ECX
	JNE	SHORT	L_97
;
; Line 175:	if (wnd->CurrLine > 0)
;
	CMP	DWORD [ESI+0DCH],BYTE 00H
	JLE	SHORT	L_111
;
; Line 176:	--wnd->CurrLine;
;
	DEC	DWORD [ESI+0DCH]
L_111:
;
; Line 177:	StickEnd(wnd);
;
	PUSH	ESI
	CALL	_StickEnd
	POP	ECX
	JMP	SHORT	L_98
L_97:
;
; Line 180:	wnd->WndRow++;
;
	INC	DWORD [ESI+0E0H]
L_98:
L_94:
;
; Line 182:	SendMessage(wnd,KEYBOARD_CURSOR,WndCol,wnd->WndRow);
;
	PUSH	DWORD [ESI+0E0H]
	MOV	EAX,DWORD [ESI+0D8H]
	SUB	EAX,DWORD [ESI+0A4H]
	PUSH	EAX
	PUSH	BYTE 018H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_91:
L_89:
;
; Line 185:	return rtn;
;
	MOV	EAX,EBX
L_87:
	POP	EDI
	POP	ESI
	POP	EBX
	POP	EBP
	RET
;
; Line 188:	static int HorizScrollMsg(WINDOW wnd, PARAM p1)
;
_HorizScrollMsg:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 08H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
	MOV	EDI,DWORD [EBP+0CH]
L_114:
;
; Line 189:	{
;
;
; Line 190:	int rtn = FALSE;
;
	MOV	EBX,00H
;
; Line 191:	ATTRCHR *currchar = CurrChar;
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	SHL	ECX,01H
	ADD	ECX,DWORD [ESI+098H]
	MOV	EAX,DWORD [ESI+0D8H]
	SHL	EAX,01H
	ADD	ECX,EAX
	MOV	DWORD [EBP-04H],ECX
;
; Line 192:	if (!(p1 &&
;
	TEST	EDI,EDI
	JE	SHORT	L_117
	MOV	EAX,DWORD [ESI+0D8H]
	CMP	EAX,DWORD [ESI+0A4H]
	JNE	SHORT	L_117
	MOV	EAX,DWORD [EBP-04H]
	MOVZX	EAX,BYTE [EAX+00H]
	CMP	EAX,BYTE 0AH
	JE	NEAR	L_115
L_117:
;
; Line 194:	rtn = BaseWndProc(EDITBOX, wnd, HORIZSCROLL, p1, 0);
;
	PUSH	BYTE 00H
	PUSH	EDI
	PUSH	BYTE 036H
	PUSH	ESI
	MOV	EAX,DWORD [_classdefs+030H]
	IMUL	EAX,BYTE 0CH
	CALL	DWORD [EAX+04H+_classdefs+00H]
	ADD	ESP,BYTE 010H
	MOV	EBX,EAX
;
; Line 195:	if (rtn != FALSE)    {
;
	TEST	EBX,EBX
	JE	SHORT	L_118
;
; Line 196:	if (wnd->CurrCol < wnd->wleft)
;
	MOV	EAX,DWORD [ESI+0D8H]
	CMP	EAX,DWORD [ESI+0A4H]
	JGE	SHORT	L_120
;
; Line 197:	wnd->CurrCol++;
;
	INC	DWORD [ESI+0D8H]
	JMP	SHORT	L_121
L_120:
;
; Line 198:	else if (WndCol == ClientWidth(wnd))
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,04000H
	JE	SHORT	L_124
	MOV	EAX,01H
	JMP	SHORT	L_125
L_124:
	MOV	EAX,00H
L_125:
	SHL	EAX,01H
	MOV	ECX,DWORD [ESI+020H]
	SUB	ECX,EAX
	MOV	EAX,DWORD [ESI+0D8H]
	SUB	EAX,DWORD [ESI+0A4H]
	CMP	EAX,ECX
	JNE	SHORT	L_122
;
; Line 199:	--wnd->CurrCol;
;
	DEC	DWORD [ESI+0D8H]
L_122:
L_121:
;
; Line 200:	SendMessage(wnd,KEYBOARD_CURSOR,WndCol,wnd->WndRow);
;
	PUSH	DWORD [ESI+0E0H]
	MOV	EAX,DWORD [ESI+0D8H]
	SUB	EAX,DWORD [ESI+0A4H]
	PUSH	EAX
	PUSH	BYTE 018H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_118:
L_115:
;
; Line 203:	return rtn;
;
	MOV	EAX,EBX
L_113:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
;
; Line 206:	static int ScrollPageMsg(WINDOW wnd, PARAM p1)
;
_ScrollPageMsg:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	MOV	ESI,DWORD [EBP+08H]
L_127:
;
; Line 207:	{
;
;
; Line 208:	int rtn = FALSE;
;
	MOV	EBX,00H
;
; Line 209:	if (isMultiLine(wnd))    {
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JE	SHORT	L_128
;
; Line 210:	rtn = BaseWndProc(EDITBOX, wnd, SCROLLPAGE, p1, 0);
;
	PUSH	BYTE 00H
	PUSH	DWORD [EBP+0CH]
	PUSH	BYTE 037H
	PUSH	ESI
	MOV	EAX,DWORD [_classdefs+030H]
	IMUL	EAX,BYTE 0CH
	CALL	DWORD [EAX+04H+_classdefs+00H]
	ADD	ESP,BYTE 010H
	MOV	EBX,EAX
;
; Line 211:	SetLinePointer(wnd, wnd->wtop+wnd->WndRow);
;
	MOV	EAX,DWORD [ESI+094H]
	ADD	EAX,DWORD [ESI+0E0H]
	MOV	DWORD [ESI+0DCH],EAX
;
; Line 212:	StickEnd(wnd);
;
	PUSH	ESI
	CALL	_StickEnd
	POP	ECX
;
; Line 213:	SendMessage(wnd, KEYBOARD_CURSOR,WndCol, wnd->WndRow);
;
	PUSH	DWORD [ESI+0E0H]
	MOV	EAX,DWORD [ESI+0D8H]
	SUB	EAX,DWORD [ESI+0A4H]
	PUSH	EAX
	PUSH	BYTE 018H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_128:
;
; Line 215:	return rtn;
;
	MOV	EAX,EBX
L_126:
	POP	ESI
	POP	EBX
	POP	EBP
	RET
;
; Line 218:	static int HorizPageMsg(WINDOW wnd, PARAM p1)
;
_HorizPageMsg:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
	MOV	EBX,DWORD [EBP+0CH]
L_131:
;
; Line 219:	{
;
;
; Line 220:	int rtn = BaseWndProc(EDITBOX, wnd, HORIZPAGE, p1, 0);
;
	PUSH	BYTE 00H
	PUSH	EBX
	PUSH	BYTE 038H
	PUSH	ESI
	MOV	EAX,DWORD [_classdefs+030H]
	IMUL	EAX,BYTE 0CH
	CALL	DWORD [EAX+04H+_classdefs+00H]
	ADD	ESP,BYTE 010H
	MOV	EDI,EAX
;
; Line 221:	if ((int) p1 == FALSE)    {
;
	TEST	EBX,EBX
	JNE	SHORT	L_132
;
; Line 222:	if (wnd->CurrCol > wnd->wleft+ClientWidth(wnd)-1)
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,04000H
	JE	SHORT	L_136
	MOV	EAX,01H
	JMP	SHORT	L_137
L_136:
	MOV	EAX,00H
L_137:
	SHL	EAX,01H
	MOV	ECX,DWORD [ESI+020H]
	SUB	ECX,EAX
	ADD	ECX,DWORD [ESI+0A4H]
	DEC	ECX
	CMP	DWORD [ESI+0D8H],ECX
	JLE	SHORT	L_134
;
; Line 223:	wnd->CurrCol = wnd->wleft+ClientWidth(wnd)-1;
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,04000H
	JE	SHORT	L_138
	MOV	EAX,01H
	JMP	SHORT	L_139
L_138:
	MOV	EAX,00H
L_139:
	SHL	EAX,01H
	MOV	ECX,DWORD [ESI+020H]
	SUB	ECX,EAX
	ADD	ECX,DWORD [ESI+0A4H]
	DEC	ECX
	MOV	DWORD [ESI+0D8H],ECX
L_134:
	JMP	SHORT	L_133
L_132:
;
; Line 225:	else if (wnd->CurrCol < wnd->wleft)
;
	MOV	EAX,DWORD [ESI+0D8H]
	CMP	EAX,DWORD [ESI+0A4H]
	JGE	SHORT	L_140
;
; Line 226:	wnd->CurrCol = wnd->wleft;
;
	MOV	EAX,DWORD [ESI+0A4H]
	MOV	DWORD [ESI+0D8H],EAX
L_140:
L_133:
;
; Line 227:	SendMessage(wnd, KEYBOARD_CURSOR, WndCol, wnd->WndRow);
;
	PUSH	DWORD [ESI+0E0H]
	MOV	EAX,DWORD [ESI+0D8H]
	SUB	EAX,DWORD [ESI+0A4H]
	PUSH	EAX
	PUSH	BYTE 018H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 228:	return rtn;
;
	MOV	EAX,EDI
L_130:
	POP	EDI
	POP	ESI
	POP	EBX
	POP	EBP
	RET
;
; Line 231:	static void ExtendBlock(WINDOW wnd, int x, int y)
;
_ExtendBlock:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 01CH
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
	MOV	EBX,DWORD [EBP+010H]
L_143:
;
; Line 232:	{
;
;
; Line 234:	int ptop = min(wnd->BlkBegLine, wnd->BlkEndLine);
;
	MOV	EAX,DWORD [ESI+0ACH]
	CMP	EAX,DWORD [ESI+0B4H]
	JGE	SHORT	L_144
	MOV	EAX,DWORD [ESI+0ACH]
	JMP	SHORT	L_145
L_144:
	MOV	EAX,DWORD [ESI+0B4H]
L_145:
	MOV	DWORD [EBP-014H],EAX
;
; Line 235:	int pbot = max(wnd->BlkBegLine, wnd->BlkEndLine);
;
	MOV	EAX,DWORD [ESI+0ACH]
	CMP	EAX,DWORD [ESI+0B4H]
	JLE	SHORT	L_146
	MOV	EAX,DWORD [ESI+0ACH]
	JMP	SHORT	L_147
L_146:
	MOV	EAX,DWORD [ESI+0B4H]
L_147:
	MOV	DWORD [EBP-010H],EAX
;
; Line 236:	ATTRCHR *lp = TextLine(wnd, wnd->wtop+y), *lp2 = lp;
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+094H]
	LEA	EAX,[EAX+ECX*4+00H]
	MOV	EAX,DWORD [EAX+EBX*4+00H]
	SHL	EAX,01H
	ADD	EAX,DWORD [ESI+098H]
	MOV	DWORD [EBP-0CH],EAX
	MOV	EAX,DWORD [EBP-0CH]
	MOV	DWORD [EBP-08H],EAX
	JMP	SHORT	L_148
L_150:
;
; Line 239:	lp2++;
;
	ADD	DWORD [EBP-08H],BYTE 02H
L_148:
;
; Line 238:	while (lp2->ch && lp2->ch != '\n')
;
	MOV	EAX,DWORD [EBP-08H]
	CMP	BYTE [EAX+00H],BYTE 00H
	JE	SHORT	L_151
	MOV	EAX,DWORD [EBP-08H]
	MOVZX	EAX,BYTE [EAX+00H]
	CMP	EAX,BYTE 0AH
	JNE	SHORT	L_150
L_151:
L_149:
;
; Line 240:	len = (int) (lp2 - lp);
;
	MOV	EAX,DWORD [EBP-08H]
	SUB	EAX,DWORD [EBP-0CH]
	SHR	EAX,01H
	MOV	DWORD [EBP-04H],EAX
;
; Line 241:	x = max(0, min(x, len));
;
	MOV	EAX,DWORD [EBP+0CH]
	CMP	EAX,DWORD [EBP-04H]
	JGE	SHORT	L_154
	MOV	EAX,DWORD [EBP+0CH]
	JMP	SHORT	L_155
L_154:
	MOV	EAX,DWORD [EBP-04H]
L_155:
	TEST	EAX,EAX
	JGE	SHORT	L_152
	MOV	EAX,00H
	JMP	SHORT	L_153
L_152:
	MOV	EAX,DWORD [EBP+0CH]
	CMP	EAX,DWORD [EBP-04H]
	JGE	SHORT	L_156
	MOV	EAX,DWORD [EBP+0CH]
	JMP	SHORT	L_157
L_156:
	MOV	EAX,DWORD [EBP-04H]
L_157:
L_153:
	MOV	DWORD [EBP+0CH],EAX
;
; Line 242:	y = max(0, y);
;
	TEST	EBX,EBX
	JGE	SHORT	L_158
	MOV	EAX,00H
	JMP	SHORT	L_159
L_158:
	MOV	EAX,EBX
L_159:
	MOV	EBX,EAX
;
; Line 243:	wnd->BlkEndCol = min(len, x+wnd->wleft);
;
	MOV	EAX,DWORD [EBP+0CH]
	ADD	EAX,DWORD [ESI+0A4H]
	CMP	DWORD [EBP-04H],EAX
	JGE	SHORT	L_160
	MOV	EAX,DWORD [EBP-04H]
	JMP	SHORT	L_161
L_160:
	MOV	EAX,DWORD [EBP+0CH]
	ADD	EAX,DWORD [ESI+0A4H]
L_161:
	MOV	DWORD [ESI+0B8H],EAX
;
; Line 244:	wnd->BlkEndLine = y+wnd->wtop;
;
	MOV	EAX,EBX
	ADD	EAX,DWORD [ESI+094H]
	MOV	DWORD [ESI+0B4H],EAX
;
; Line 245:	bbl = min(wnd->BlkBegLine, wnd->BlkEndLine);
;
	MOV	EAX,DWORD [ESI+0ACH]
	CMP	EAX,DWORD [ESI+0B4H]
	JGE	SHORT	L_162
	MOV	EAX,DWORD [ESI+0ACH]
	JMP	SHORT	L_163
L_162:
	MOV	EAX,DWORD [ESI+0B4H]
L_163:
	MOV	DWORD [EBP-018H],EAX
;
; Line 246:	bel = max(wnd->BlkBegLine, wnd->BlkEndLine);
;
	MOV	EAX,DWORD [ESI+0ACH]
	CMP	EAX,DWORD [ESI+0B4H]
	JLE	SHORT	L_164
	MOV	EAX,DWORD [ESI+0ACH]
	JMP	SHORT	L_165
L_164:
	MOV	EAX,DWORD [ESI+0B4H]
L_165:
	MOV	EDI,EAX
	JMP	SHORT	L_166
L_168:
;
; Line 248:	WriteTextLine(wnd, NULL, ptop, FALSE);
;
	PUSH	BYTE 00H
	PUSH	DWORD [EBP-014H]
	PUSH	BYTE 00H
	PUSH	ESI
	CALL	_WriteTextLine
	ADD	ESP,BYTE 010H
;
; Line 249:	ptop++;
;
	INC	DWORD [EBP-014H]
L_166:
;
; Line 247:	while (ptop < bbl)    {
;
	MOV	EAX,DWORD [EBP-014H]
	CMP	EAX,DWORD [EBP-018H]
	JL	SHORT	L_168
L_167:
	MOV	EBX,DWORD [EBP-018H]
	JMP	SHORT	L_171
L_169:
;
; Line 252:	WriteTextLine(wnd, NULL, y, FALSE);
;
	PUSH	BYTE 00H
	PUSH	EBX
	PUSH	BYTE 00H
	PUSH	ESI
	CALL	_WriteTextLine
	ADD	ESP,BYTE 010H
;
; Line 251:	for (y = bbl; y <= bel; y++)
;
L_170:
	INC	EBX
L_171:
	CMP	EBX,EDI
	JLE	SHORT	L_169
L_172:
	JMP	SHORT	L_173
L_175:
;
; Line 254:	WriteTextLine(wnd, NULL, pbot, FALSE);
;
	PUSH	BYTE 00H
	PUSH	DWORD [EBP-010H]
	PUSH	BYTE 00H
	PUSH	ESI
	CALL	_WriteTextLine
	ADD	ESP,BYTE 010H
;
; Line 255:	--pbot;
;
	DEC	DWORD [EBP-010H]
L_173:
;
; Line 253:	while (pbot > bel)    {
;
	CMP	DWORD [EBP-010H],EDI
	JG	SHORT	L_175
L_174:
;
; Line 257:	}
;
L_142:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
;
; Line 259:	static int LeftButtonMsg(WINDOW wnd, PARAM p1, PARAM p2)
;
_LeftButtonMsg:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 03CH
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
L_177:
;
; Line 260:	{
;
;
; Line 261:	int MouseX = (int) p1 - GetClientLeft(wnd);
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,04000H
	JE	SHORT	L_178
	MOV	EAX,01H
	JMP	SHORT	L_179
L_178:
	MOV	EAX,00H
L_179:
	ADD	EAX,DWORD [ESI+0CH]
	MOV	EBX,DWORD [EBP+0CH]
	SUB	EBX,EAX
;
; Line 262:	int MouseY = (int) p2 - GetClientTop(wnd);
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_180
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,BYTE 08H
	JE	SHORT	L_180
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,010000H
	JE	SHORT	L_180
	MOV	EAX,03H
	JMP	SHORT	L_181
L_180:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_185
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,BYTE 08H
	JNE	SHORT	L_184
L_185:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_182
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,010000H
	JE	SHORT	L_182
L_184:
	MOV	EAX,02H
	JMP	SHORT	L_183
L_182:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,014108H
	JE	SHORT	L_186
	MOV	EAX,01H
	JMP	SHORT	L_187
L_186:
	MOV	EAX,00H
L_187:
L_183:
L_181:
	ADD	EAX,DWORD [ESI+010H]
	MOV	ECX,DWORD [EBP+010H]
	SUB	ECX,EAX
	MOV	DWORD [EBP-028H],ECX
;
; Line 263:	RECT rc = ClientRect(wnd);
;
	PUSH	ESI
	LEA	EAX,[EBP-014H]
	PUSH	EAX
	CALL	_ClientRect
	ADD	ESP,BYTE 08H
	PUSH	ESI
	PUSH	EDI
	LEA	ESI,[EAX+00H]
	LEA	EDI,[EBP-024H]
	PUSH	SS
	POP	ES
	CLD
	MOV	ECX,04H
	REP	MOVSD
	POP	EDI
	POP	ESI
;
; Line 266:	if (KeyBoardMarking)
;
	CMP	DWORD [_KeyBoardMarking],BYTE 00H
	JE	SHORT	L_188
;
; Line 267:	return TRUE;
;
	MOV	EAX,01H
	JMP	NEAR	L_176
L_188:
;
; Line 268:	if (WindowMoving || WindowSizing)
;
	CMP	DWORD [_WindowMoving],BYTE 00H
	JNE	SHORT	L_192
	CMP	DWORD [_WindowSizing],BYTE 00H
	JE	SHORT	L_190
L_192:
;
; Line 269:	return FALSE;
;
	MOV	EAX,00H
	JMP	NEAR	L_176
L_190:
;
; Line 270:	if (TextMarking)    {
;
	CMP	DWORD [_TextMarking],BYTE 00H
	JE	NEAR	L_193
;
; Line 271:	if (!InsideRect(p1, p2, rc))    {
;
	MOV	EAX,DWORD [EBP+0CH]
	CMP	EAX,DWORD [EBP-024H]
	JL	SHORT	L_197
	MOV	EAX,DWORD [EBP+0CH]
	CMP	EAX,DWORD [EBP-01CH]
	JG	SHORT	L_197
	MOV	EAX,DWORD [EBP+010H]
	CMP	EAX,DWORD [EBP-020H]
	JL	SHORT	L_198
	MOV	EAX,DWORD [EBP+010H]
	CMP	EAX,DWORD [EBP-018H]
	JLE	NEAR	L_195
L_198:
L_197:
;
; Line 272:	int x = MouseX, y = MouseY;
;
	MOV	DWORD [EBP-03CH],EBX
	MOV	EAX,DWORD [EBP-028H]
	MOV	DWORD [EBP-038H],EAX
;
; Line 274:	MESSAGE msg = 0;
;
	MOV	DWORD [EBP-030H],00H
;
; Line 275:	if ((int)p2 == GetTop(wnd))
;
	MOV	EAX,DWORD [EBP+010H]
	CMP	EAX,DWORD [ESI+010H]
	JNE	SHORT	L_199
;
; Line 276:	y++, dir = FALSE, msg = SCROLL;
;
	INC	DWORD [EBP-038H]
	MOV	DWORD [EBP-034H],00H
	MOV	DWORD [EBP-030H],035H
	JMP	SHORT	L_200
L_199:
;
; Line 277:	else if ((int)p2 == GetBottom(wnd))
;
	MOV	EAX,DWORD [EBP+010H]
	CMP	EAX,DWORD [ESI+018H]
	JNE	SHORT	L_201
;
; Line 278:	--y, dir = TRUE, msg = SCROLL;
;
	DEC	DWORD [EBP-038H]
	MOV	DWORD [EBP-034H],01H
	MOV	DWORD [EBP-030H],035H
	JMP	SHORT	L_202
L_201:
;
; Line 279:	else if ((int)p1 == GetLeft(wnd))
;
	MOV	EAX,DWORD [EBP+0CH]
	CMP	EAX,DWORD [ESI+0CH]
	JNE	SHORT	L_203
;
; Line 280:	--x, dir = FALSE, msg = HORIZSCROLL;
;
	DEC	DWORD [EBP-03CH]
	MOV	DWORD [EBP-034H],00H
	MOV	DWORD [EBP-030H],036H
	JMP	SHORT	L_204
L_203:
;
; Line 281:	else if ((int)p1 == GetRight(wnd))
;
	MOV	EAX,DWORD [EBP+0CH]
	CMP	EAX,DWORD [ESI+014H]
	JNE	SHORT	L_205
;
; Line 282:	x++, dir = TRUE, msg = HORIZSCROLL;
;
	INC	DWORD [EBP-03CH]
	MOV	DWORD [EBP-034H],01H
	MOV	DWORD [EBP-030H],036H
L_205:
L_204:
L_202:
L_200:
;
; Line 283:	if (msg != 0)	{
;
	CMP	DWORD [EBP-030H],BYTE 00H
	JE	SHORT	L_207
;
; Line 284:	if (SendMessage(wnd, msg, dir, 0))
;
	PUSH	BYTE 00H
	PUSH	DWORD [EBP-034H]
	MOVSX	EAX,WORD [EBP-030H]
	PUSH	EAX
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
	TEST	EAX,EAX
	JE	SHORT	L_209
;
; Line 285:	ExtendBlock(wnd, x, y);
;
	PUSH	DWORD [EBP-038H]
	PUSH	DWORD [EBP-03CH]
	PUSH	ESI
	CALL	_ExtendBlock
	ADD	ESP,BYTE 0CH
L_209:
;
; Line 286:	SendMessage(wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_207:
L_195:
;
; Line 289:	return TRUE;
;
	MOV	EAX,01H
	JMP	NEAR	L_176
L_193:
;
; Line 291:	if (!InsideRect(p1, p2, rc))
;
	MOV	EAX,DWORD [EBP+0CH]
	CMP	EAX,DWORD [EBP-024H]
	JL	SHORT	L_213
	MOV	EAX,DWORD [EBP+0CH]
	CMP	EAX,DWORD [EBP-01CH]
	JG	SHORT	L_213
	MOV	EAX,DWORD [EBP+010H]
	CMP	EAX,DWORD [EBP-020H]
	JL	SHORT	L_214
	MOV	EAX,DWORD [EBP+010H]
	CMP	EAX,DWORD [EBP-018H]
	JLE	SHORT	L_211
L_214:
L_213:
;
; Line 292:	return FALSE;
;
	MOV	EAX,00H
	JMP	NEAR	L_176
L_211:
;
; Line 293:	if (TextBlockMarked(wnd))    {
;
	CMP	DWORD [ESI+0ACH],BYTE 00H
	JNE	SHORT	L_217
	CMP	DWORD [ESI+0B4H],BYTE 00H
	JNE	SHORT	L_217
	CMP	DWORD [ESI+0B0H],BYTE 00H
	JNE	SHORT	L_217
	CMP	DWORD [ESI+0B8H],BYTE 00H
	JE	SHORT	L_215
L_217:
;
; Line 294:	ClearTextBlock(wnd);
;
	MOV	DWORD [ESI+0B8H],00H
	MOV	DWORD [ESI+0B0H],00H
	MOV	DWORD [ESI+0B4H],00H
	MOV	DWORD [ESI+0ACH],00H
;
; Line 295:	SendMessage(wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_215:
;
; Line 297:	if (wnd->wlines)    {
;
	CMP	DWORD [ESI+090H],BYTE 00H
	JE	NEAR	L_218
;
; Line 298:	if (MouseY > wnd->wlines-1)
;
	MOV	EAX,DWORD [ESI+090H]
	DEC	EAX
	CMP	DWORD [EBP-028H],EAX
	JLE	SHORT	L_220
;
; Line 299:	return TRUE;
;
	MOV	EAX,01H
	JMP	NEAR	L_176
L_220:
;
; Line 300:	lp = TextLine(wnd, MouseY+wnd->wtop);
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [EBP-028H]
	LEA	EAX,[EAX+ECX*4+00H]
	MOV	ECX,DWORD [ESI+094H]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	SHL	ECX,01H
	ADD	ECX,DWORD [ESI+098H]
	MOV	DWORD [EBP-04H],ECX
;
; Line 301:	len = (int) (strchr(lp, '\n') - lp) / sizeof(ATTRCHR);
;
	PUSH	BYTE 0AH
	PUSH	DWORD [EBP-04H]
	CALL	_strchr
	ADD	ESP,BYTE 08H
	SUB	EAX,DWORD [EBP-04H]
	SAR	EAX,01H
	JNS	SHORT	L_222
	ADC	EAX,BYTE 00H
L_222:
	MOV	EDI,EAX
;
; Line 302:	MouseX = min(MouseX + wnd->wleft, len) - wnd->wleft;
;
	MOV	EAX,EBX
	ADD	EAX,DWORD [ESI+0A4H]
	CMP	EAX,EDI
	JGE	SHORT	L_223
	MOV	EAX,EBX
	ADD	EAX,DWORD [ESI+0A4H]
	JMP	SHORT	L_224
L_223:
	MOV	EAX,EDI
L_224:
	SUB	EAX,DWORD [ESI+0A4H]
	MOV	EBX,EAX
;
; Line 303:	if (MouseX < wnd->wleft)    {
;
	CMP	EBX,DWORD [ESI+0A4H]
	JGE	SHORT	L_225
;
; Line 304:	MouseX = 0;
;
	MOV	EBX,00H
;
; Line 305:	SendMessage(wnd, KEYBOARD, HOME, 0);
;
	PUSH	BYTE 00H
	PUSH	DWORD 010C7H
	PUSH	BYTE 015H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_225:
;
; Line 307:	ButtonDown = TRUE;
;
	MOV	DWORD [_ButtonDown],01H
;
; Line 308:	ButtonX = MouseX;
;
	MOV	DWORD [_ButtonX],EBX
;
; Line 309:	ButtonY = MouseY;
;
	MOV	EAX,DWORD [EBP-028H]
	MOV	DWORD [_ButtonY],EAX
	JMP	SHORT	L_219
L_218:
;
; Line 312:	MouseX = MouseY = 0;
;
	MOV	DWORD [EBP-028H],00H
	MOV	EBX,00H
L_219:
;
; Line 313:	wnd->WndRow = MouseY;
;
	MOV	EAX,DWORD [EBP-028H]
	MOV	DWORD [ESI+0E0H],EAX
;
; Line 314:	SetLinePointer(wnd, MouseY+wnd->wtop);
;
	MOV	EAX,DWORD [EBP-028H]
	ADD	EAX,DWORD [ESI+094H]
	MOV	DWORD [ESI+0DCH],EAX
;
; Line 316:	if (isMultiLine(wnd) ||
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JNE	SHORT	L_229
	CMP	DWORD [ESI+0ACH],BYTE 00H
	JNE	SHORT	L_227
	CMP	DWORD [ESI+0B4H],BYTE 00H
	JNE	SHORT	L_227
	CMP	DWORD [ESI+0B0H],BYTE 00H
	JNE	SHORT	L_227
	CMP	DWORD [ESI+0B8H],BYTE 00H
	JNE	SHORT	L_227
	MOV	EAX,EBX
	ADD	EAX,DWORD [ESI+0A4H]
	CMP	EAX,DWORD [ESI+09CH]
	JNC	SHORT	L_227
L_229:
;
; Line 319:	wnd->CurrCol = MouseX+wnd->wleft;
;
	MOV	EAX,EBX
	ADD	EAX,DWORD [ESI+0A4H]
	MOV	DWORD [ESI+0D8H],EAX
L_227:
;
; Line 320:	SendMessage(wnd, KEYBOARD_CURSOR, WndCol, wnd->WndRow);
;
	PUSH	DWORD [ESI+0E0H]
	MOV	EAX,DWORD [ESI+0D8H]
	SUB	EAX,DWORD [ESI+0A4H]
	PUSH	EAX
	PUSH	BYTE 018H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 321:	return TRUE;
;
	MOV	EAX,01H
L_176:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
;
; Line 324:	static int MouseMovedMsg(WINDOW wnd, PARAM p1, PARAM p2)
;
_MouseMovedMsg:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 02CH
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
	LEA	EDI,[EBP-020H]
	MOV	EBX,DWORD [EBP+010H]
L_231:
;
; Line 325:	{
;
;
; Line 326:	int MouseX = (int) p1 - GetClientLeft(wnd);
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,04000H
	JE	SHORT	L_232
	MOV	EAX,01H
	JMP	SHORT	L_233
L_232:
	MOV	EAX,00H
L_233:
	ADD	EAX,DWORD [ESI+0CH]
	MOV	ECX,DWORD [EBP+0CH]
	SUB	ECX,EAX
	MOV	DWORD [EBP-028H],ECX
;
; Line 327:	int MouseY = (int) p2 - GetClientTop(wnd);
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_234
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,BYTE 08H
	JE	SHORT	L_234
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,010000H
	JE	SHORT	L_234
	MOV	EAX,03H
	JMP	SHORT	L_235
L_234:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_239
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,BYTE 08H
	JNE	SHORT	L_238
L_239:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_236
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,010000H
	JE	SHORT	L_236
L_238:
	MOV	EAX,02H
	JMP	SHORT	L_237
L_236:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,014108H
	JE	SHORT	L_240
	MOV	EAX,01H
	JMP	SHORT	L_241
L_240:
	MOV	EAX,00H
L_241:
L_237:
L_235:
	ADD	EAX,DWORD [ESI+010H]
	MOV	ECX,EBX
	SUB	ECX,EAX
	MOV	DWORD [EBP-024H],ECX
;
; Line 328:	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]
	PUSH	ES
	PUSH	SS
	POP	ES
	CLD
	MOV	ECX,04H
	REP	MOVSD
	POP	ES
	POP	EDI
	POP	ESI
;
; Line 329:	if (!InsideRect(p1, p2, rc))
;
	MOV	EAX,DWORD [EBP+0CH]
	CMP	EAX,DWORD [SS:EDI+00H]
	JL	SHORT	L_244
	MOV	EAX,DWORD [EBP+0CH]
	CMP	EAX,DWORD [SS:EDI+08H]
	JG	SHORT	L_244
	CMP	EBX,DWORD [SS:EDI+04H]
	JL	SHORT	L_245
	CMP	EBX,DWORD [SS:EDI+0CH]
	JLE	SHORT	L_242
L_245:
L_244:
;
; Line 330:	return FALSE;
;
	MOV	EAX,00H
	JMP	NEAR	L_230
L_242:
;
; Line 331:	if (MouseY > wnd->wlines-1)
;
	MOV	EAX,DWORD [ESI+090H]
	DEC	EAX
	CMP	DWORD [EBP-024H],EAX
	JLE	SHORT	L_246
;
; Line 332:	return FALSE;
;
	MOV	EAX,00H
	JMP	NEAR	L_230
L_246:
;
; Line 333:	if (ButtonDown)    {
;
	CMP	DWORD [_ButtonDown],BYTE 00H
	JE	SHORT	L_248
;
; Line 334:	SetAnchor(wnd, ButtonX+wnd->wleft, ButtonY+wnd->wtop);
;
	MOV	EAX,DWORD [_ButtonY]
	ADD	EAX,DWORD [ESI+094H]
	PUSH	EAX
	MOV	EAX,DWORD [_ButtonX]
	ADD	EAX,DWORD [ESI+0A4H]
	PUSH	EAX
	PUSH	ESI
	CALL	_SetAnchor
	ADD	ESP,BYTE 0CH
;
; Line 335:	TextMarking = TRUE;
;
	MOV	DWORD [_TextMarking],01H
;
; Line 336:	rc = WindowRect(wnd);
;
	PUSH	ESI
	PUSH	EDI
	ADD	ESI,BYTE 0CH
	PUSH	ES
	PUSH	SS
	POP	ES
	CLD
	MOV	ECX,04H
	REP	MOVSD
	POP	ES
	POP	EDI
	POP	ESI
;
; Line 337:	SendMessage(NULL,MOUSE_TRAVEL,(PARAM) &rc, 0);
;
	PUSH	BYTE 00H
	PUSH	EDI
	PUSH	BYTE 021H
	PUSH	BYTE 00H
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 338:	ButtonDown = FALSE;
;
	MOV	DWORD [_ButtonDown],00H
L_248:
;
; Line 340:	if (TextMarking && !(WindowMoving || WindowSizing))    {
;
	CMP	DWORD [_TextMarking],BYTE 00H
	JE	SHORT	L_250
	CMP	DWORD [_WindowMoving],BYTE 00H
	JNE	SHORT	L_250
	CMP	DWORD [_WindowSizing],BYTE 00H
	JNE	SHORT	L_250
;
; Line 341:	ExtendBlock(wnd, MouseX, MouseY);
;
	PUSH	DWORD [EBP-024H]
	PUSH	DWORD [EBP-028H]
	PUSH	ESI
	CALL	_ExtendBlock
	ADD	ESP,BYTE 0CH
;
; Line 342:	return TRUE;
;
	MOV	EAX,01H
	JMP	SHORT	L_230
L_250:
;
; Line 344:	return FALSE;
;
	MOV	EAX,00H
L_230:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
;
; Line 346:	static void StopMarking(WINDOW wnd)
;
_StopMarking:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 04H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
L_253:
;
; Line 347:	{
;
;
; Line 348:	TextMarking = FALSE;
;
	MOV	DWORD [_TextMarking],00H
;
; Line 349:	if (wnd->BlkBegLine > wnd->BlkEndLine)    {
;
	MOV	EAX,DWORD [ESI+0ACH]
	CMP	EAX,DWORD [ESI+0B4H]
	JLE	SHORT	L_254
;
; Line 350:	swap(wnd->BlkBegLine, wnd->BlkEndLine);
;
	MOV	EAX,DWORD [ESI+0ACH]
	MOV	DWORD [EBP-04H],EAX
	MOV	EAX,DWORD [ESI+0B4H]
	MOV	DWORD [ESI+0ACH],EAX
	MOV	EAX,DWORD [EBP-04H]
	MOV	DWORD [ESI+0B4H],EAX
;
; Line 351:	swap(wnd->BlkBegCol, wnd->BlkEndCol);
;
	MOV	EDI,DWORD [ESI+0B0H]
	MOV	EAX,DWORD [ESI+0B8H]
	MOV	DWORD [ESI+0B0H],EAX
	MOV	DWORD [ESI+0B8H],EDI
L_254:
;
; Line 353:	if (wnd->BlkBegLine == wnd->BlkEndLine &&
;
	MOV	EAX,DWORD [ESI+0ACH]
	CMP	EAX,DWORD [ESI+0B4H]
	JNE	SHORT	L_256
	MOV	EAX,DWORD [ESI+0B0H]
	CMP	EAX,DWORD [ESI+0B8H]
	JLE	SHORT	L_256
;
; Line 355:	swap(wnd->BlkBegCol, wnd->BlkEndCol);
;
	MOV	EBX,DWORD [ESI+0B0H]
	MOV	EAX,DWORD [ESI+0B8H]
	MOV	DWORD [ESI+0B0H],EAX
	MOV	DWORD [ESI+0B8H],EBX
L_256:
;
; Line 356:	}
;
L_252:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
;
; Line 358:	static int ButtonReleasedMsg(WINDOW wnd)
;
_ButtonReleasedMsg:
	PUSH	EBP
	MOV	EBP,ESP
L_259:
;
; Line 359:	{
;
;
; Line 360:	ButtonDown = FALSE;
;
	MOV	DWORD [_ButtonDown],00H
;
; Line 361:	if (TextMarking && !(WindowMoving || WindowSizing))  {
;
	CMP	DWORD [_TextMarking],BYTE 00H
	JE	SHORT	L_260
	CMP	DWORD [_WindowMoving],BYTE 00H
	JNE	SHORT	L_260
	CMP	DWORD [_WindowSizing],BYTE 00H
	JNE	SHORT	L_260
;
; Line 363:	SendMessage(NULL, MOUSE_TRAVEL, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 021H
	PUSH	BYTE 00H
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 364:	StopMarking(wnd);
;
	PUSH	DWORD [EBP+08H]
	CALL	_StopMarking
	POP	ECX
;
; Line 365:	return TRUE;
;
	MOV	EAX,01H
	JMP	SHORT	L_258
L_260:
;
; Line 367:	PrevY = -1;
;
	MOV	DWORD [_PrevY],0FFFFFFFFH
;
; Line 368:	return FALSE;
;
	MOV	EAX,00H
L_258:
	POP	EBP
	RET
;
; Line 371:	static void DoMultiLines(WINDOW wnd, int c, PARAM p2)
;
_DoMultiLines:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	ESI
	MOV	ESI,DWORD [EBP+08H]
L_263:
;
; Line 372:	{
;
;
; Line 373:	if (!KeyBoardMarking)    {
;
	CMP	DWORD [_KeyBoardMarking],BYTE 00H
	JNE	NEAR	L_264
;
; Line 374:	if ((int)p2 & (LEFTSHIFT | RIGHTSHIFT))    {
;
	MOV	EAX,DWORD [EBP+010H]
	AND	EAX,BYTE 03H
	JE	NEAR	L_266
;
; Line 375:	switch (c)    {
;
	MOV	EAX,DWORD [EBP+0CH]
	CMP	EAX,DWORD 010D0H
	JE	SHORT	L_281
	JG	SHORT	L_284
	CMP	EAX,DWORD 010C9H
	JE	SHORT	L_273
	JG	SHORT	L_285
	CMP	EAX,DWORD 010C7H
	JE	SHORT	L_270
	JG	SHORT	L_286
	CMP	EAX,DWORD 01084H
	JE	SHORT	L_274
	JMP	NEAR	L_269
L_286:
	CMP	EAX,DWORD 010C8H
	JE	SHORT	L_275
	JMP	SHORT	L_269
L_285:
	CMP	EAX,DWORD 010CDH
	JE	SHORT	L_282
	JG	SHORT	L_287
	CMP	EAX,DWORD 010CBH
	JE	SHORT	L_276
	JMP	SHORT	L_269
L_287:
	CMP	EAX,DWORD 010CFH
	JE	SHORT	L_277
	JMP	SHORT	L_269
L_284:
	CMP	EAX,DWORD 010F5H
	JE	SHORT	L_278
	JG	SHORT	L_288
	CMP	EAX,DWORD 010F3H
	JE	SHORT	L_272
	JG	SHORT	L_289
	CMP	EAX,DWORD 010D1H
	JE	SHORT	L_279
	JMP	SHORT	L_269
L_289:
	CMP	EAX,DWORD 010F4H
	JE	SHORT	L_283
	JMP	SHORT	L_269
L_288:
	CMP	EAX,DWORD 010F7H
	JE	SHORT	L_271
	JG	SHORT	L_269
	CMP	EAX,DWORD 010F6H
	JE	SHORT	L_280
	JMP	SHORT	L_269
L_270:
;
; Line 377:	case CTRL_HOME:
;
L_271:
;
; Line 378:	case CTRL_BS:
;
L_272:
;
; Line 379:	case PGUP:
;
L_273:
;
; Line 380:	case CTRL_PGUP:
;
L_274:
;
; Line 381:	case UP:
;
L_275:
;
; Line 382:	case BS:
;
L_276:
;
; Line 383:	case END:
;
L_277:
;
; Line 384:	case CTRL_END:
;
L_278:
;
; Line 385:	case PGDN:
;
L_279:
;
; Line 386:	case CTRL_PGDN:
;
L_280:
;
; Line 387:	case DN:
;
L_281:
;
; Line 388:	case FWD:
;
L_282:
;
; Line 389:	case CTRL_FWD:
;
L_283:
;
; Line 390:	KeyBoardMarking = TextMarking = TRUE;
;
	MOV	DWORD [_TextMarking],01H
	MOV	DWORD [_KeyBoardMarking],01H
;
; Line 391:	SetAnchor(wnd, wnd->CurrCol, wnd->CurrLine);
;
	PUSH	DWORD [ESI+0DCH]
	PUSH	DWORD [ESI+0D8H]
	PUSH	ESI
	CALL	_SetAnchor
	ADD	ESP,BYTE 0CH
;
; Line 392:	break;
;
	JMP	SHORT	L_268
L_269:
;
; Line 394:	break;
;
	JMP	SHORT	L_268
L_268:
L_266:
L_264:
;
; Line 398:	}
;
L_262:
	POP	ESI
	POP	EBP
	RET
;
; Line 400:	static int DoScrolling(WINDOW wnd, int c, PARAM p2)
;
_DoScrolling:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
	MOV	EBX,DWORD [EBP+0CH]
	MOV	EDI,DWORD [EBP+010H]
L_291:
;
; Line 401:	{
;
;
; Line 402:	switch (c)    {
;
	CMP	EBX,DWORD 010D0H
	JE	NEAR	L_305
	JG	SHORT	L_308
	CMP	EBX,DWORD 010C9H
	JE	NEAR	L_294
	JG	SHORT	L_309
	CMP	EBX,DWORD 010C7H
	JE	NEAR	L_298
	JG	SHORT	L_310
	CMP	EBX,DWORD 01084H
	JE	NEAR	L_296
	JMP	NEAR	L_293
L_310:
	CMP	EBX,DWORD 010C8H
	JE	NEAR	L_304
	JMP	NEAR	L_293
L_309:
	CMP	EBX,DWORD 010CDH
	JE	NEAR	L_306
	JG	SHORT	L_311
	CMP	EBX,DWORD 010CBH
	JE	NEAR	L_307
	JMP	NEAR	L_293
L_311:
	CMP	EBX,DWORD 010CFH
	JE	NEAR	L_299
	JMP	NEAR	L_293
L_308:
	CMP	EBX,DWORD 010F5H
	JE	NEAR	L_303
	JG	SHORT	L_312
	CMP	EBX,DWORD 010F3H
	JE	NEAR	L_301
	JG	SHORT	L_313
	CMP	EBX,DWORD 010D1H
	JE	SHORT	L_295
	JMP	NEAR	L_293
L_313:
	CMP	EBX,DWORD 010F4H
	JE	NEAR	L_300
	JMP	NEAR	L_293
L_312:
	CMP	EBX,DWORD 010F7H
	JE	NEAR	L_302
	JG	NEAR	L_293
	CMP	EBX,DWORD 010F6H
	JE	SHORT	L_297
	JMP	NEAR	L_293
L_294:
;
; Line 404:	case PGDN:
;
L_295:
;
; Line 405:	if (isMultiLine(wnd))
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JE	SHORT	L_314
;
; Line 406:	BaseWndProc(EDITBOX, wnd, KEYBOARD, c, p2);
;
	PUSH	EDI
	PUSH	EBX
	PUSH	BYTE 015H
	PUSH	ESI
	MOV	EAX,DWORD [_classdefs+030H]
	IMUL	EAX,BYTE 0CH
	CALL	DWORD [EAX+04H+_classdefs+00H]
	ADD	ESP,BYTE 010H
L_314:
;
; Line 407:	break;
;
	JMP	NEAR	L_292
L_296:
;
; Line 409:	case CTRL_PGDN:
;
L_297:
;
; Line 410:	BaseWndProc(EDITBOX, wnd, KEYBOARD, c, p2);
;
	PUSH	EDI
	PUSH	EBX
	PUSH	BYTE 015H
	PUSH	ESI
	MOV	EAX,DWORD [_classdefs+030H]
	IMUL	EAX,BYTE 0CH
	CALL	DWORD [EAX+04H+_classdefs+00H]
	ADD	ESP,BYTE 010H
;
; Line 411:	break;
;
	JMP	NEAR	L_292
L_298:
;
; Line 413:	Home(wnd);
;
	PUSH	ESI
	CALL	_Home
	POP	ECX
;
; Line 414:	break;
;
	JMP	NEAR	L_292
L_299:
;
; Line 416:	End(wnd);
;
	PUSH	ESI
	CALL	_End
	POP	ECX
;
; Line 417:	break;
;
	JMP	NEAR	L_292
L_300:
;
; Line 419:	NextWord(wnd);
;
	PUSH	ESI
	CALL	_NextWord
	POP	ECX
;
; Line 420:	break;
;
	JMP	NEAR	L_292
L_301:
;
; Line 422:	PrevWord(wnd);
;
	PUSH	ESI
	CALL	_PrevWord
	POP	ECX
;
; Line 423:	break;
;
	JMP	NEAR	L_292
L_302:
;
; Line 425:	if (isMultiLine(wnd))    {
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JE	SHORT	L_316
;
; Line 426:	SendMessage(wnd, SCROLLDOC, TRUE, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 01H
	PUSH	BYTE 039H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 427:	wnd->CurrLine = 0;
;
	MOV	DWORD [ESI+0DCH],00H
;
; Line 428:	wnd->WndRow = 0;
;
	MOV	DWORD [ESI+0E0H],00H
L_316:
;
; Line 430:	Home(wnd);
;
	PUSH	ESI
	CALL	_Home
	POP	ECX
;
; Line 431:	break;
;
	JMP	NEAR	L_292
L_303:
;
; Line 433:	if (isMultiLine(wnd) &&
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JE	NEAR	L_318
	MOV	EAX,DWORD [ESI+0E0H]
	ADD	EAX,DWORD [ESI+094H]
	INC	EAX
	CMP	EAX,DWORD [ESI+090H]
	JGE	NEAR	L_318
	CMP	DWORD [ESI+090H],BYTE 00H
	JLE	NEAR	L_318
;
; Line 436:	SendMessage(wnd, SCROLLDOC, FALSE, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 039H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 437:	SetLinePointer(wnd, wnd->wlines-1);
;
	MOV	EAX,DWORD [ESI+090H]
	DEC	EAX
	MOV	DWORD [ESI+0DCH],EAX
;
; Line 438:	wnd->WndRow =
;
	MOV	EAX,DWORD [ESI+090H]
	DEC	EAX
	MOV	ECX,DWORD [ESI+054H]
	AND	ECX,0100H
	JE	SHORT	L_322
	MOV	ECX,DWORD [ESI+054H]
	AND	ECX,BYTE 08H
	JE	SHORT	L_322
	MOV	ECX,DWORD [ESI+054H]
	AND	ECX,010000H
	JE	SHORT	L_322
	MOV	ECX,03H
	JMP	SHORT	L_323
L_322:
	MOV	ECX,DWORD [ESI+054H]
	AND	ECX,0100H
	JE	SHORT	L_327
	MOV	ECX,DWORD [ESI+054H]
	AND	ECX,BYTE 08H
	JNE	SHORT	L_326
L_327:
	MOV	ECX,DWORD [ESI+054H]
	AND	ECX,0100H
	JE	SHORT	L_324
	MOV	ECX,DWORD [ESI+054H]
	AND	ECX,010000H
	JE	SHORT	L_324
L_326:
	MOV	ECX,02H
	JMP	SHORT	L_325
L_324:
	MOV	ECX,DWORD [ESI+054H]
	AND	ECX,014108H
	JE	SHORT	L_328
	MOV	ECX,01H
	JMP	SHORT	L_329
L_328:
	MOV	ECX,00H
L_329:
L_325:
L_323:
	MOV	EDX,DWORD [ESI+01CH]
	SUB	EDX,ECX
	MOV	ECX,DWORD [ESI+054H]
	AND	ECX,08000H
	JE	SHORT	L_330
	MOV	ECX,01H
	JMP	SHORT	L_331
L_330:
	MOV	ECX,DWORD [ESI+054H]
	AND	ECX,04000H
	JE	SHORT	L_332
	MOV	ECX,01H
	JMP	SHORT	L_333
L_332:
	MOV	ECX,00H
L_333:
L_331:
	SUB	EDX,ECX
	DEC	EDX
	CMP	EDX,EAX
	JGE	NEAR	L_320
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_334
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,BYTE 08H
	JE	SHORT	L_334
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,010000H
	JE	SHORT	L_334
	MOV	EAX,03H
	JMP	SHORT	L_335
L_334:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_339
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,BYTE 08H
	JNE	SHORT	L_338
L_339:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_336
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,010000H
	JE	SHORT	L_336
L_338:
	MOV	EAX,02H
	JMP	SHORT	L_337
L_336:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,014108H
	JE	SHORT	L_340
	MOV	EAX,01H
	JMP	SHORT	L_341
L_340:
	MOV	EAX,00H
L_341:
L_337:
L_335:
	MOV	ECX,DWORD [ESI+01CH]
	SUB	ECX,EAX
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,08000H
	JE	SHORT	L_342
	MOV	EAX,01H
	JMP	SHORT	L_343
L_342:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,04000H
	JE	SHORT	L_344
	MOV	EAX,01H
	JMP	SHORT	L_345
L_344:
	MOV	EAX,00H
L_345:
L_343:
	SUB	ECX,EAX
	DEC	ECX
	JMP	SHORT	L_321
L_320:
	MOV	EAX,DWORD [ESI+090H]
	DEC	EAX
	MOV	ECX,EAX
L_321:
	MOV	DWORD [ESI+0E0H],ECX
;
; Line 440:	Home(wnd);
;
	PUSH	ESI
	CALL	_Home
	POP	ECX
L_318:
;
; Line 442:	End(wnd);
;
	PUSH	ESI
	CALL	_End
	POP	ECX
;
; Line 443:	break;
;
	JMP	SHORT	L_292
L_304:
;
; Line 445:	if (isMultiLine(wnd))
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JE	SHORT	L_346
;
; Line 446:	Upward(wnd);
;
	PUSH	ESI
	CALL	_Upward
	POP	ECX
L_346:
;
; Line 447:	break;
;
	JMP	SHORT	L_292
L_305:
;
; Line 449:	if (isMultiLine(wnd))
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JE	SHORT	L_348
;
; Line 450:	Downward(wnd);
;
	PUSH	ESI
	CALL	_Downward
	POP	ECX
L_348:
;
; Line 451:	break;
;
	JMP	SHORT	L_292
L_306:
;
; Line 453:	Forward(wnd);
;
	PUSH	ESI
	CALL	_Forward
	POP	ECX
;
; Line 454:	break;
;
	JMP	SHORT	L_292
L_307:
;
; Line 456:	Backward(wnd);
;
	PUSH	ESI
	CALL	_Backward
	POP	ECX
;
; Line 457:	break;
;
	JMP	SHORT	L_292
L_293:
;
; Line 459:	return FALSE;
;
	MOV	EAX,00H
	JMP	NEAR	L_290
L_292:
;
; Line 461:	if (!KeyBoardMarking && TextBlockMarked(wnd))    {
;
	CMP	DWORD [_KeyBoardMarking],BYTE 00H
	JNE	SHORT	L_350
	CMP	DWORD [ESI+0ACH],BYTE 00H
	JNE	SHORT	L_352
	CMP	DWORD [ESI+0B4H],BYTE 00H
	JNE	SHORT	L_352
	CMP	DWORD [ESI+0B0H],BYTE 00H
	JNE	SHORT	L_352
	CMP	DWORD [ESI+0B8H],BYTE 00H
	JE	SHORT	L_350
L_352:
;
; Line 462:	ClearTextBlock(wnd);
;
	MOV	DWORD [ESI+0B8H],00H
	MOV	DWORD [ESI+0B0H],00H
	MOV	DWORD [ESI+0B4H],00H
	MOV	DWORD [ESI+0ACH],00H
;
; Line 463:	SendMessage(wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_350:
;
; Line 465:	SendMessage(wnd, KEYBOARD_CURSOR, WndCol, wnd->WndRow);
;
	PUSH	DWORD [ESI+0E0H]
	MOV	EAX,DWORD [ESI+0D8H]
	SUB	EAX,DWORD [ESI+0A4H]
	PUSH	EAX
	PUSH	BYTE 018H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 466:	return TRUE;
;
	MOV	EAX,01H
L_290:
	POP	EDI
	POP	ESI
	POP	EBX
	POP	EBP
	RET
;
; Line 469:	static void DelKey(WINDOW wnd)
;
_DelKey:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
L_354:
;
; Line 470:	{
;
;
; Line 471:	ATTRCHR *currchar = CurrChar;
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	SHL	ECX,01H
	ADD	ECX,DWORD [ESI+098H]
	MOV	EAX,DWORD [ESI+0D8H]
	SHL	EAX,01H
	ADD	ECX,EAX
	MOV	EDI,ECX
;
; Line 472:	int repaint = currchar->ch == '\n';
;
	MOVZX	EAX,BYTE [EDI+00H]
	CMP	EAX,BYTE 0AH
	SETE	AL
	MOVZX	EAX,AL
	MOV	EBX,EAX
;
; Line 473:	if (TextBlockMarked(wnd))    {
;
	CMP	DWORD [ESI+0ACH],BYTE 00H
	JNE	SHORT	L_357
	CMP	DWORD [ESI+0B4H],BYTE 00H
	JNE	SHORT	L_357
	CMP	DWORD [ESI+0B0H],BYTE 00H
	JNE	SHORT	L_357
	CMP	DWORD [ESI+0B8H],BYTE 00H
	JE	SHORT	L_355
L_357:
;
; Line 474:	SendMessage(wnd, COMMAND, ID_DELETETEXT, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 0FH
	PUSH	BYTE 02H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 475:	SendMessage(wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 476:	return;
;
	JMP	NEAR	L_353
L_355:
;
; Line 478:	if (  currchar->ch == '\n' && (currchar+1)->ch == '\0')
;
	MOVZX	EAX,BYTE [EDI+00H]
	CMP	EAX,BYTE 0AH
	JNE	SHORT	L_358
	MOVZX	EAX,BYTE [EDI+02H]
	TEST	EAX,EAX
	JE	NEAR	L_353
;
; Line 479:	return;
;
L_358:
;
; Line 480:	if (currchar->ch == '\0')
;
	MOVZX	EAX,BYTE [EDI+00H]
	TEST	EAX,EAX
	JE	NEAR	L_353
;
; Line 481:	return;
;
L_360:
;
; Line 482:	memcpy(currchar, currchar+1, (wnd->textlen - (currchar - wnd->text) + 1) * sizeof(ATTRCHR));
;
	MOV	EAX,EDI
	SUB	EAX,DWORD [ESI+098H]
	SHR	EAX,01H
	MOV	ECX,DWORD [ESI+09CH]
	SUB	ECX,EAX
	INC	ECX
	SHL	ECX,01H
	PUSH	ECX
	MOV	EAX,EDI
	ADD	EAX,BYTE 02H
	PUSH	EAX
	PUSH	EDI
	CALL	_memcpy
	ADD	ESP,BYTE 0CH
;
; Line 483:	wnd->textlen--;
;
	DEC	DWORD [ESI+09CH]
;
; Line 484:	if (repaint)    {
;
	TEST	EBX,EBX
	JE	SHORT	L_362
;
; Line 485:	BuildTextPointers(wnd);
;
	PUSH	ESI
	CALL	_BuildTextPointers
	POP	ECX
;
; Line 486:	SendMessage(wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
	JMP	SHORT	L_363
L_362:
;
; Line 489:	ModTextPointers(wnd, wnd->CurrLine+1, -1);
;
	PUSH	BYTE 0FFFFFFFFH
	MOV	EAX,DWORD [ESI+0DCH]
	INC	EAX
	PUSH	EAX
	PUSH	ESI
	CALL	_ModTextPointers
	ADD	ESP,BYTE 0CH
;
; Line 490:	WriteTextLine(wnd, NULL, wnd->WndRow+wnd->wtop, FALSE);
;
	PUSH	BYTE 00H
	MOV	EAX,DWORD [ESI+0E0H]
	ADD	EAX,DWORD [ESI+094H]
	PUSH	EAX
	PUSH	BYTE 00H
	PUSH	ESI
	CALL	_WriteTextLine
	ADD	ESP,BYTE 010H
L_363:
;
; Line 492:	ChangedText(wnd, TRUE);
;
	PUSH	BYTE 01H
	PUSH	ESI
	CALL	_ChangedText
	ADD	ESP,BYTE 08H
;
; Line 493:	}
;
L_353:
	POP	EDI
	POP	ESI
	POP	EBX
	POP	EBP
	RET
;
; Line 495:	static void TabKey(WINDOW wnd, PARAM p2)
;
_TabKey:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
L_365:
;
; Line 496:	{
;
;
; Line 497:	if (isMultiLine(wnd))    {
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JE	SHORT	L_366
;
; Line 498:	int insmd = wnd->InsertMode;
;
	MOV	EBX,DWORD [ESI+0F4H]
;
; Line 499:	do  {
;
L_368:
;
; Line 500:	char *cc = CurrChar+1;
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	SHL	ECX,01H
	ADD	ECX,DWORD [ESI+098H]
	MOV	EAX,DWORD [ESI+0D8H]
	SHL	EAX,01H
	ADD	ECX,EAX
	ADD	ECX,BYTE 02H
	MOV	EDI,ECX
;
; Line 501:	if (!insmd && *cc == '\0')
;
	TEST	EBX,EBX
	JNE	SHORT	L_371
	MOVSX	EAX,BYTE [EDI+00H]
	TEST	EAX,EAX
	JE	SHORT	L_370
;
; Line 502:	break;
;
L_371:
;
; Line 503:	if (wnd->textlen == wnd->MaxTextLength)
;
	MOV	EAX,DWORD [ESI+09CH]
	CMP	EAX,DWORD [ESI+0FCH]
	JE	SHORT	L_370
;
; Line 504:	break;
;
L_373:
;
; Line 505:	SendMessage(wnd,KEYBOARD,insmd ? ' ' : FWD,0);
;
	PUSH	BYTE 00H
	TEST	EBX,EBX
	JE	SHORT	L_375
	MOV	EAX,020H
	JMP	SHORT	L_376
L_375:
	MOV	EAX,010CDH
L_376:
	PUSH	EAX
	PUSH	BYTE 015H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_369:
	MOV	EAX,DWORD [ESI+0D8H]
	CDQ
	IDIV	DWORD [018H+_cfg]
	TEST	EDX,EDX
	JNE	SHORT	L_368
L_370:
	JMP	SHORT	L_367
L_366:
;
; Line 509:	PostMessage(GetParent(wnd), KEYBOARD, '\t', p2);
;
	PUSH	DWORD [EBP+0CH]
	PUSH	BYTE 09H
	PUSH	BYTE 015H
	PUSH	DWORD [ESI+03CH]
	CALL	_PostMessage
	ADD	ESP,BYTE 010H
L_367:
;
; Line 510:	}
;
L_364:
	POP	EDI
	POP	ESI
	POP	EBX
	POP	EBP
	RET
;
; Line 512:	static void ShiftTabKey(WINDOW wnd, PARAM p2)
;
_ShiftTabKey:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	ESI
	MOV	ESI,DWORD [EBP+08H]
L_378:
;
; Line 513:	{
;
;
; Line 514:	if (isMultiLine(wnd))    {
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JE	SHORT	L_379
;
; Line 515:	do  {
;
L_381:
;
; Line 516:	if (CurrChar == GetText(wnd))
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	SHL	ECX,01H
	ADD	ECX,DWORD [ESI+098H]
	MOV	EAX,DWORD [ESI+0D8H]
	SHL	EAX,01H
	ADD	ECX,EAX
	CMP	ECX,DWORD [ESI+098H]
	JE	SHORT	L_383
;
; Line 517:	break;
;
L_384:
;
; Line 518:	SendMessage(wnd,KEYBOARD,BS,0);
;
	PUSH	BYTE 00H
	PUSH	DWORD 010CBH
	PUSH	BYTE 015H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_382:
	MOV	EAX,DWORD [ESI+0D8H]
	CDQ
	IDIV	DWORD [018H+_cfg]
	TEST	EDX,EDX
	JNE	SHORT	L_381
L_383:
	JMP	SHORT	L_380
L_379:
;
; Line 522:	PostMessage(GetParent(wnd), KEYBOARD, SHIFT_HT, p2);
;
	PUSH	DWORD [EBP+0CH]
	PUSH	DWORD 0108FH
	PUSH	BYTE 015H
	PUSH	DWORD [ESI+03CH]
	CALL	_PostMessage
	ADD	ESP,BYTE 010H
L_380:
;
; Line 523:	}
;
L_377:
	POP	ESI
	POP	EBP
	RET
;
; Line 525:	static void KeyTyped(WINDOW wnd, int c)
;
_KeyTyped:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 04H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
L_387:
;
; Line 526:	{
;
;
; Line 527:	ATTRCHR *currchar = CurrChar;
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	SHL	ECX,01H
	ADD	ECX,DWORD [ESI+098H]
	MOV	EAX,DWORD [ESI+0D8H]
	SHL	EAX,01H
	ADD	ECX,EAX
	MOV	EDI,ECX
;
; Line 528:	if ((c != '\n' && c < ' ') || (c & 0x1000))
;
	CMP	DWORD [EBP+0CH],BYTE 0AH
	JE	SHORT	L_391
	CMP	DWORD [EBP+0CH],BYTE 020H
	JL	SHORT	L_390
L_391:
	MOV	EAX,DWORD [EBP+0CH]
	AND	EAX,01000H
	JE	SHORT	L_388
L_390:
;
; Line 530:	return;
;
	JMP	NEAR	L_386
L_388:
;
; Line 531:	if (!isMultiLine(wnd) && TextBlockMarked(wnd))    {
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JNE	SHORT	L_392
	CMP	DWORD [ESI+0ACH],BYTE 00H
	JNE	SHORT	L_394
	CMP	DWORD [ESI+0B4H],BYTE 00H
	JNE	SHORT	L_394
	CMP	DWORD [ESI+0B0H],BYTE 00H
	JNE	SHORT	L_394
	CMP	DWORD [ESI+0B8H],BYTE 00H
	JE	SHORT	L_392
L_394:
;
; Line 532:	SendMessage(wnd, CLEARTEXT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 033H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 533:	currchar = CurrChar;
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	SHL	ECX,01H
	ADD	ECX,DWORD [ESI+098H]
	MOV	EAX,DWORD [ESI+0D8H]
	SHL	EAX,01H
	ADD	ECX,EAX
	MOV	EDI,ECX
L_392:
;
; Line 535:	if (currchar->ch == '\0')    {
;
	MOVZX	EAX,BYTE [EDI+00H]
	TEST	EAX,EAX
	JNE	NEAR	L_395
;
; Line 537:	if (wnd->textlen >= wnd->MaxTextLength)    {
;
	MOV	EAX,DWORD [ESI+09CH]
	CMP	EAX,DWORD [ESI+0FCH]
	JB	SHORT	L_397
;
; Line 539:	beep();
;
	CALL	_beep
;
; Line 540:	return;
;
	JMP	NEAR	L_386
L_397:
;
; Line 542:	if (wnd->textlen >= wnd->textalloc-2)
;
	MOV	EAX,DWORD [ESI+0A0H]
	SUB	EAX,BYTE 02H
	CMP	DWORD [ESI+09CH],EAX
	JB	SHORT	L_399
;
; Line 544:	wnd->textalloc += GROWLENGTH+2;
;
	ADD	DWORD [ESI+0A0H],BYTE 042H
;
; Line 545:	wnd->text = (ATTRCHR *)DFrealloc(wnd->text, wnd->textalloc * sizeof(ATTRCHR));
;
	MOV	EAX,DWORD [ESI+0A0H]
	SHL	EAX,01H
	PUSH	EAX
	PUSH	DWORD [ESI+098H]
	CALL	_DFrealloc
	ADD	ESP,BYTE 08H
	MOV	DWORD [ESI+098H],EAX
;
; Line 546:	currchar = CurrChar;
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	SHL	ECX,01H
	ADD	ECX,DWORD [ESI+098H]
	MOV	EAX,DWORD [ESI+0D8H]
	SHL	EAX,01H
	ADD	ECX,EAX
	MOV	EDI,ECX
L_399:
;
; Line 549:	currchar->ch = '\n';
;
	MOV	BYTE [EDI+00H],0AH
;
; Line 550:	(currchar+1)->ch = '\0';
;
	MOV	BYTE [EDI+02H],00H
;
; Line 551:	wnd->textlen++;
;
	INC	DWORD [ESI+09CH]
;
; Line 552:	BuildTextPointers(wnd);
;
	PUSH	ESI
	CALL	_BuildTextPointers
	POP	ECX
L_395:
;
; Line 555:	if (c == '\n' || wnd->InsertMode || currchar->ch == '\n') {
;
	CMP	DWORD [EBP+0CH],BYTE 0AH
	JE	SHORT	L_403
	CMP	DWORD [ESI+0F4H],BYTE 00H
	JNE	SHORT	L_403
	MOVZX	EAX,BYTE [EDI+00H]
	CMP	EAX,BYTE 0AH
	JNE	NEAR	L_401
L_403:
;
; Line 557:	if (wnd->textlen == wnd->MaxTextLength)    {
;
	MOV	EAX,DWORD [ESI+09CH]
	CMP	EAX,DWORD [ESI+0FCH]
	JNE	SHORT	L_404
;
; Line 559:	beep();
;
	CALL	_beep
;
; Line 560:	return;
;
	JMP	NEAR	L_386
L_404:
;
; Line 562:	if (wnd->textlen >= wnd->textalloc - 2) {
;
	MOV	EAX,DWORD [ESI+0A0H]
	SUB	EAX,BYTE 02H
	CMP	DWORD [ESI+09CH],EAX
	JB	SHORT	L_406
;
; Line 565:	wnd->textalloc += GROWLENGTH + 2;
;
	ADD	DWORD [ESI+0A0H],BYTE 042H
;
; Line 566:	wnd->text = DFrealloc(wnd->text, wnd->textalloc * sizeof(ATTRCHR));
;
	MOV	EAX,DWORD [ESI+0A0H]
	SHL	EAX,01H
	PUSH	EAX
	PUSH	DWORD [ESI+098H]
	CALL	_DFrealloc
	ADD	ESP,BYTE 08H
	MOV	DWORD [ESI+098H],EAX
;
; Line 567:	currchar = CurrChar;
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	SHL	ECX,01H
	ADD	ECX,DWORD [ESI+098H]
	MOV	EAX,DWORD [ESI+0D8H]
	SHL	EAX,01H
	ADD	ECX,EAX
	MOV	EDI,ECX
L_406:
;
; Line 569:	memmove(currchar+1, currchar, (wnd->textlen - (currchar - wnd->text)+1) * sizeof(ATTRCHR));
;
	MOV	EAX,EDI
	SUB	EAX,DWORD [ESI+098H]
	SHR	EAX,01H
	MOV	ECX,DWORD [ESI+09CH]
	SUB	ECX,EAX
	INC	ECX
	SHL	ECX,01H
	PUSH	ECX
	PUSH	EDI
	MOV	EAX,EDI
	ADD	EAX,BYTE 02H
	PUSH	EAX
	CALL	_memmove
	ADD	ESP,BYTE 0CH
;
; Line 570:	wnd->textlen++;
;
	INC	DWORD [ESI+09CH]
;
; Line 571:	ModTextPointers(wnd, wnd->CurrLine+1, 1);
;
	PUSH	BYTE 01H
	MOV	EAX,DWORD [ESI+0DCH]
	INC	EAX
	PUSH	EAX
	PUSH	ESI
	CALL	_ModTextPointers
	ADD	ESP,BYTE 0CH
;
; Line 572:	if (isMultiLine(wnd) && wnd->wlines > 1)
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JE	NEAR	L_408
	CMP	DWORD [ESI+090H],BYTE 01H
	JLE	NEAR	L_408
;
; Line 575:	wnd->textwidth = max(wnd->textwidth,                 (int) (TextLine(wnd, wnd->CurrLine+1)-                 TextLine(wnd, wnd->CurrLine)));
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	LEA	EAX,[EAX+ECX*4+00H]
	MOV	EAX,DWORD [EAX+04H]
	SHL	EAX,01H
	ADD	EAX,DWORD [ESI+098H]
	MOV	ECX,DWORD [ESI+0C4H]
	MOV	EDX,DWORD [ESI+0DCH]
	MOV	EDX,DWORD [ECX+EDX*4+00H]
	SHL	EDX,01H
	ADD	EDX,DWORD [ESI+098H]
	SUB	EAX,EDX
	SHR	EAX,01H
	CMP	DWORD [ESI+0A8H],EAX
	JLE	SHORT	L_410
	MOV	EAX,DWORD [ESI+0A8H]
	JMP	SHORT	L_411
L_410:
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	LEA	EAX,[EAX+ECX*4+00H]
	MOV	EAX,DWORD [EAX+04H]
	SHL	EAX,01H
	ADD	EAX,DWORD [ESI+098H]
	MOV	ECX,DWORD [ESI+0C4H]
	MOV	EDX,DWORD [ESI+0DCH]
	MOV	EDX,DWORD [ECX+EDX*4+00H]
	SHL	EDX,01H
	ADD	EDX,DWORD [ESI+098H]
	SUB	EAX,EDX
	SHR	EAX,01H
L_411:
	MOV	DWORD [ESI+0A8H],EAX
	JMP	SHORT	L_409
L_408:
;
; Line 578:	wnd->textwidth = max(wnd->textwidth,                 wnd->textlen);
;
	MOV	EAX,DWORD [ESI+0A8H]
	CMP	EAX,DWORD [ESI+09CH]
	JBE	SHORT	L_412
	MOV	EAX,DWORD [ESI+0A8H]
	JMP	SHORT	L_413
L_412:
	MOV	EAX,DWORD [ESI+09CH]
L_413:
	MOV	DWORD [ESI+0A8H],EAX
L_409:
;
; Line 579:	WriteTextLine(wnd, NULL,
;
	PUSH	BYTE 00H
	MOV	EAX,DWORD [ESI+094H]
	ADD	EAX,DWORD [ESI+0E0H]
	PUSH	EAX
	PUSH	BYTE 00H
	PUSH	ESI
	CALL	_WriteTextLine
	ADD	ESP,BYTE 010H
L_401:
;
; Line 583:	currchar->ch = c;
;
	MOV	EAX,DWORD [EBP+0CH]
	MOV	BYTE [EDI+00H],AL
;
; Line 584:	currchar->attrib = clr(WndForeground(wnd), WndBackground(wnd));
;
	MOVSX	EAX,BYTE [ESI+035H]
	SAL	EAX,04H
	MOVSX	ECX,BYTE [ESI+034H]
	OR	ECX,EAX
	MOV	BYTE [EDI+01H],CL
;
; Line 585:	ChangedText(wnd, TRUE);
;
	PUSH	BYTE 01H
	PUSH	ESI
	CALL	_ChangedText
	ADD	ESP,BYTE 08H
;
; Line 586:	if (c == '\n')    {
;
	CMP	DWORD [EBP+0CH],BYTE 0AH
	JNE	SHORT	L_414
;
; Line 587:	wnd->wleft = 0;
;
	MOV	DWORD [ESI+0A4H],00H
;
; Line 588:	BuildTextPointers(wnd);
;
	PUSH	ESI
	CALL	_BuildTextPointers
	POP	ECX
;
; Line 589:	End(wnd);
;
	PUSH	ESI
	CALL	_End
	POP	ECX
;
; Line 590:	Forward(wnd);
;
	PUSH	ESI
	CALL	_Forward
	POP	ECX
;
; Line 591:	SendMessage(wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 592:	return;
;
	JMP	NEAR	L_386
L_414:
;
; Line 595:	if (WndCol == ClientWidth(wnd)-1)    {
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,04000H
	JE	SHORT	L_418
	MOV	EAX,01H
	JMP	SHORT	L_419
L_418:
	MOV	EAX,00H
L_419:
	SHL	EAX,01H
	MOV	ECX,DWORD [ESI+020H]
	SUB	ECX,EAX
	DEC	ECX
	MOV	EAX,DWORD [ESI+0D8H]
	SUB	EAX,DWORD [ESI+0A4H]
	CMP	EAX,ECX
	JNE	NEAR	L_416
;
; Line 596:	if (!isMultiLine(wnd))	{
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JNE	SHORT	L_420
;
; Line 597:	if (!(currchar == wnd->text+wnd->MaxTextLength-2))
;
	MOV	EAX,DWORD [ESI+0FCH]
	SHL	EAX,01H
	ADD	EAX,DWORD [ESI+098H]
	SUB	EAX,BYTE 04H
	CMP	EDI,EAX
	JE	SHORT	L_422
;
; Line 598:	SendMessage(wnd, HORIZSCROLL, TRUE, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 01H
	PUSH	BYTE 036H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_422:
	JMP	NEAR	L_421
L_420:
;
; Line 601:	ATTRCHR *cp = currchar;
;
	MOV	DWORD [EBP-04H],EDI
	JMP	SHORT	L_424
L_426:
;
; Line 603:	--cp;
;
	SUB	DWORD [EBP-04H],BYTE 02H
L_424:
;
; Line 602:	while (cp->ch != ' ' && cp != TextLine(wnd, wnd->CurrLine))
;
	MOV	EAX,DWORD [EBP-04H]
	MOVZX	EAX,BYTE [EAX+00H]
	CMP	EAX,BYTE 020H
	JE	SHORT	L_427
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	SHL	ECX,01H
	ADD	ECX,DWORD [ESI+098H]
	CMP	DWORD [EBP-04H],ECX
	JNE	SHORT	L_426
L_427:
L_425:
;
; Line 604:	if (cp == TextLine(wnd, wnd->CurrLine) ||
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	SHL	ECX,01H
	ADD	ECX,DWORD [ESI+098H]
	CMP	DWORD [EBP-04H],ECX
	JE	SHORT	L_430
	CMP	DWORD [ESI+0F8H],BYTE 00H
	JNE	SHORT	L_428
L_430:
;
; Line 606:	SendMessage(wnd, HORIZSCROLL, TRUE, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 01H
	PUSH	BYTE 036H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
	JMP	SHORT	L_429
L_428:
;
; Line 608:	int dif = 0;
;
	MOV	EBX,00H
;
; Line 609:	if (c != ' ')    {
;
	CMP	DWORD [EBP+0CH],BYTE 020H
	JE	SHORT	L_431
;
; Line 610:	dif = (int) (currchar - cp);
;
	MOV	EBX,EDI
	SUB	EBX,DWORD [EBP-04H]
	SHR	EBX,01H
;
; Line 611:	wnd->CurrCol -= dif;
;
	SUB	DWORD [ESI+0D8H],EBX
;
; Line 612:	SendMessage(wnd, KEYBOARD, DEL, 0);
;
	PUSH	BYTE 00H
	PUSH	DWORD 010D3H
	PUSH	BYTE 015H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 613:	--dif;
;
	DEC	EBX
L_431:
;
; Line 615:	SendMessage(wnd, KEYBOARD, '\n', 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 0AH
	PUSH	BYTE 015H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 616:	currchar = CurrChar;
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	SHL	ECX,01H
	ADD	ECX,DWORD [ESI+098H]
	MOV	EAX,DWORD [ESI+0D8H]
	SHL	EAX,01H
	ADD	ECX,EAX
	MOV	EDI,ECX
;
; Line 617:	wnd->CurrCol = dif;
;
	MOV	DWORD [ESI+0D8H],EBX
;
; Line 618:	if (c == ' ')
;
	CMP	DWORD [EBP+0CH],BYTE 020H
	JE	SHORT	L_386
;
; Line 619:	return;
;
L_433:
L_429:
L_421:
L_416:
;
; Line 624:	SetStandardColor(wnd);
;
	PUSH	ESI
	CALL	_SetStandardColor
	POP	ECX
;
; Line 625:	if (wnd->protect)
;
	CMP	DWORD [ESI+0E8H],BYTE 00H
	JE	SHORT	L_435
;
; Line 626:	c = '*';
;
	MOV	DWORD [EBP+0CH],02AH
L_435:
;
; Line 627:	PutWindowChar(wnd, c, WndCol, wnd->WndRow);
;
	PUSH	DWORD [ESI+0E0H]
	MOV	EAX,DWORD [ESI+0D8H]
	SUB	EAX,DWORD [ESI+0A4H]
	PUSH	EAX
	PUSH	DWORD [EBP+0CH]
	PUSH	ESI
	CALL	_PutWindowChar
	ADD	ESP,BYTE 010H
;
; Line 629:	wnd->CurrCol++;
;
	INC	DWORD [ESI+0D8H]
;
; Line 630:	}
;
L_386:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
;
; Line 633:	static void DoKeyStroke(WINDOW wnd, int c, PARAM p2)
;
_DoKeyStroke:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
	MOV	EBX,DWORD [EBP+0CH]
	MOV	EDI,DWORD [EBP+010H]
L_438:
;
; Line 634:	{
;
;
; Line 635:	switch (c)    {
;
	CMP	EBX,BYTE 0DH
	JE	NEAR	L_445
	JG	SHORT	L_446
	CMP	EBX,BYTE 09H
	JE	NEAR	L_444
	JG	NEAR	L_440
	CMP	EBX,BYTE 08H
	JE	SHORT	L_441
	JMP	NEAR	L_440
L_446:
	CMP	EBX,DWORD 010D3H
	JE	NEAR	L_442
	JG	NEAR	L_440
	CMP	EBX,DWORD 0108FH
	JE	NEAR	L_443
	JMP	NEAR	L_440
L_441:
;
; Line 637:	if (wnd->CurrCol == 0 && wnd->CurrLine == 0)
;
	CMP	DWORD [ESI+0D8H],BYTE 00H
	JNE	SHORT	L_447
	CMP	DWORD [ESI+0DCH],BYTE 00H
	JE	NEAR	L_439
;
; Line 638:	break;
;
L_447:
;
; Line 639:	if (TextBlockMarked(wnd))    {
;
	CMP	DWORD [ESI+0ACH],BYTE 00H
	JNE	SHORT	L_451
	CMP	DWORD [ESI+0B4H],BYTE 00H
	JNE	SHORT	L_451
	CMP	DWORD [ESI+0B0H],BYTE 00H
	JNE	SHORT	L_451
	CMP	DWORD [ESI+0B8H],BYTE 00H
	JE	SHORT	L_449
L_451:
;
; Line 640:	SendMessage(wnd, COMMAND, ID_DELETETEXT, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 0FH
	PUSH	BYTE 02H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 641:	SendMessage(wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 642:	return;
;
	JMP	NEAR	L_437
L_449:
;
; Line 644:	SendMessage(wnd, KEYBOARD, BS, 0);
;
	PUSH	BYTE 00H
	PUSH	DWORD 010CBH
	PUSH	BYTE 015H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 645:	SendMessage(wnd, KEYBOARD, DEL, 0);
;
	PUSH	BYTE 00H
	PUSH	DWORD 010D3H
	PUSH	BYTE 015H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 646:	break;
;
	JMP	NEAR	L_439
L_442:
;
; Line 648:	DelKey(wnd);
;
	PUSH	ESI
	CALL	_DelKey
	POP	ECX
;
; Line 649:	break;
;
	JMP	NEAR	L_439
L_443:
;
; Line 651:	ShiftTabKey(wnd, p2);
;
	PUSH	EDI
	PUSH	ESI
	CALL	_ShiftTabKey
	ADD	ESP,BYTE 08H
;
; Line 652:	break;
;
	JMP	SHORT	L_439
L_444:
;
; Line 654:	TabKey(wnd, p2);
;
	PUSH	EDI
	PUSH	ESI
	CALL	_TabKey
	ADD	ESP,BYTE 08H
;
; Line 655:	break;
;
	JMP	SHORT	L_439
L_445:
;
; Line 657:	if (!isMultiLine(wnd))    {
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JNE	SHORT	L_452
;
; Line 658:	PostMessage(GetParent(wnd), KEYBOARD, c, p2);
;
	PUSH	EDI
	PUSH	EBX
	PUSH	BYTE 015H
	PUSH	DWORD [ESI+03CH]
	CALL	_PostMessage
	ADD	ESP,BYTE 010H
;
; Line 659:	break;
;
	JMP	SHORT	L_439
L_452:
;
; Line 661:	c = '\n';
;
	MOV	EBX,0AH
;
; Line 662:	default:
;
L_440:
;
; Line 663:	if (TextBlockMarked(wnd))    {
;
	CMP	DWORD [ESI+0ACH],BYTE 00H
	JNE	SHORT	L_456
	CMP	DWORD [ESI+0B4H],BYTE 00H
	JNE	SHORT	L_456
	CMP	DWORD [ESI+0B0H],BYTE 00H
	JNE	SHORT	L_456
	CMP	DWORD [ESI+0B8H],BYTE 00H
	JE	SHORT	L_454
L_456:
;
; Line 664:	SendMessage(wnd, COMMAND, ID_DELETETEXT, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 0FH
	PUSH	BYTE 02H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 665:	SendMessage(wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_454:
;
; Line 667:	KeyTyped(wnd, c);
;
	PUSH	EBX
	PUSH	ESI
	CALL	_KeyTyped
	ADD	ESP,BYTE 08H
;
; Line 668:	break;
;
	JMP	SHORT	L_439
L_439:
;
; Line 670:	}
;
L_437:
	POP	EDI
	POP	ESI
	POP	EBX
	POP	EBP
	RET
;
; Line 672:	static int KeyboardMsg(WINDOW wnd, PARAM p1, PARAM p2)
;
_KeyboardMsg:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
	MOV	EBX,DWORD [EBP+010H]
L_458:
;
; Line 673:	{
;
;
; Line 674:	int c = (int) p1;
;
	MOV	EDI,DWORD [EBP+0CH]
;
; Line 675:	if (WindowMoving || WindowSizing || ((int)p2 & ALTKEY))
;
	CMP	DWORD [_WindowMoving],BYTE 00H
	JNE	SHORT	L_461
	CMP	DWORD [_WindowSizing],BYTE 00H
	JNE	SHORT	L_461
	MOV	EAX,EBX
	AND	EAX,BYTE 08H
	JE	SHORT	L_459
L_461:
;
; Line 676:	return FALSE;
;
	MOV	EAX,00H
	JMP	NEAR	L_457
L_459:
;
; Line 677:	switch (c)    {
;
	CMP	EDI,DWORD 010C1H
	JE	NEAR	L_471
	JG	NEAR	L_485
	CMP	EDI,DWORD 010BCH
	JE	NEAR	L_466
	JG	SHORT	L_486
	CMP	EDI,DWORD 01084H
	JE	NEAR	L_482
	JG	SHORT	L_487
	CMP	EDI,BYTE 01BH
	JE	NEAR	L_464
	JG	NEAR	L_463
	CMP	EDI,BYTE 01AH
	JE	NEAR	L_484
	JMP	NEAR	L_463
L_487:
	CMP	EDI,DWORD 010BBH
	JE	NEAR	L_465
	JG	NEAR	L_463
	CMP	EDI,DWORD 010B9H
	JE	NEAR	L_476
	JMP	NEAR	L_463
L_486:
	CMP	EDI,DWORD 010BFH
	JE	NEAR	L_469
	JG	SHORT	L_488
	CMP	EDI,DWORD 010BEH
	JE	NEAR	L_468
	JG	NEAR	L_463
	CMP	EDI,DWORD 010BDH
	JE	SHORT	L_467
	JMP	NEAR	L_463
L_488:
	CMP	EDI,DWORD 010C0H
	JE	SHORT	L_470
	JMP	SHORT	L_463
L_485:
	CMP	EDI,DWORD 010F3H
	JE	SHORT	L_479
	JG	SHORT	L_489
	CMP	EDI,DWORD 010C4H
	JE	SHORT	L_474
	JG	SHORT	L_490
	CMP	EDI,DWORD 010C3H
	JE	SHORT	L_473
	JG	SHORT	L_463
	CMP	EDI,DWORD 010C2H
	JE	SHORT	L_472
	JMP	SHORT	L_463
L_490:
	CMP	EDI,DWORD 010D2H
	JE	SHORT	L_475
	JG	SHORT	L_463
	CMP	EDI,DWORD 010C6H
	JE	SHORT	L_477
	JMP	SHORT	L_463
L_489:
	CMP	EDI,DWORD 010F6H
	JE	SHORT	L_483
	JG	SHORT	L_491
	CMP	EDI,DWORD 010F5H
	JE	SHORT	L_481
	JG	SHORT	L_463
	CMP	EDI,DWORD 010F4H
	JE	SHORT	L_478
	JMP	SHORT	L_463
L_491:
	CMP	EDI,DWORD 010F7H
	JE	SHORT	L_480
	JMP	SHORT	L_463
L_464:
;
; Line 680:	case F1:
;
L_465:
;
; Line 681:	case F2:
;
L_466:
;
; Line 682:	case F3:
;
L_467:
;
; Line 683:	case F4:
;
L_468:
;
; Line 684:	case F5:
;
L_469:
;
; Line 685:	case F6:
;
L_470:
;
; Line 686:	case F7:
;
L_471:
;
; Line 687:	case F8:
;
L_472:
;
; Line 688:	case F9:
;
L_473:
;
; Line 689:	case F10:
;
L_474:
;
; Line 690:	case INS:
;
L_475:
;
; Line 691:	case SHIFT_INS:
;
L_476:
;
; Line 692:	case SHIFT_DEL:
;
L_477:
;
; Line 693:	return FALSE;
;
	MOV	EAX,00H
	JMP	NEAR	L_457
L_478:
;
; Line 696:	case CTRL_BS:
;
L_479:
;
; Line 697:	case CTRL_HOME:
;
L_480:
;
; Line 698:	case CTRL_END:
;
L_481:
;
; Line 699:	case CTRL_PGUP:
;
L_482:
;
; Line 700:	case CTRL_PGDN:
;
L_483:
;
; Line 701:	break;
;
	JMP	SHORT	L_462
L_484:
;
; Line 703:	UndoCmd(wnd);
;
	PUSH	ESI
	CALL	_UndoCmd
	POP	ECX
;
; Line 704:	break;
;
	JMP	SHORT	L_462
L_463:
;
; Line 707:	if ((int)p2 & CTRLKEY)
;
	MOV	EAX,EBX
	AND	EAX,BYTE 04H
	JE	SHORT	L_492
;
; Line 708:	return FALSE;
;
	MOV	EAX,00H
	JMP	NEAR	L_457
L_492:
;
; Line 710:	break;
;
	JMP	SHORT	L_462
L_462:
;
; Line 712:	DoMultiLines(wnd, c, p2);
;
	PUSH	EBX
	PUSH	EDI
	PUSH	ESI
	CALL	_DoMultiLines
	ADD	ESP,BYTE 0CH
;
; Line 713:	if (DoScrolling(wnd, c, p2))    {
;
	PUSH	EBX
	PUSH	EDI
	PUSH	ESI
	CALL	_DoScrolling
	ADD	ESP,BYTE 0CH
	TEST	EAX,EAX
	JE	SHORT	L_494
;
; Line 714:	if (KeyBoardMarking)
;
	CMP	DWORD [_KeyBoardMarking],BYTE 00H
	JE	SHORT	L_496
;
; Line 715:	ExtendBlock(wnd, WndCol, wnd->WndRow);
;
	PUSH	DWORD [ESI+0E0H]
	MOV	EAX,DWORD [ESI+0D8H]
	SUB	EAX,DWORD [ESI+0A4H]
	PUSH	EAX
	PUSH	ESI
	CALL	_ExtendBlock
	ADD	ESP,BYTE 0CH
L_496:
	JMP	SHORT	L_495
L_494:
;
; Line 717:	else if (!TestAttribute(wnd, READONLY))    {
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,01000H
	JNE	SHORT	L_498
;
; Line 718:	DoKeyStroke(wnd, c, p2);
;
	PUSH	EBX
	PUSH	EDI
	PUSH	ESI
	CALL	_DoKeyStroke
	ADD	ESP,BYTE 0CH
;
; Line 719:	SendMessage(wnd, KEYBOARD_CURSOR, WndCol, wnd->WndRow);
;
	PUSH	DWORD [ESI+0E0H]
	MOV	EAX,DWORD [ESI+0D8H]
	SUB	EAX,DWORD [ESI+0A4H]
	PUSH	EAX
	PUSH	BYTE 018H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
	JMP	SHORT	L_499
L_498:
;
; Line 721:	else if (c == '\t')
;
	CMP	EDI,BYTE 09H
	JNE	SHORT	L_500
;
; Line 722:	PostMessage(GetParent(wnd), KEYBOARD, '\t', p2);
;
	PUSH	EBX
	PUSH	BYTE 09H
	PUSH	BYTE 015H
	PUSH	DWORD [ESI+03CH]
	CALL	_PostMessage
	ADD	ESP,BYTE 010H
	JMP	SHORT	L_501
L_500:
;
; Line 724:	beep();
;
	CALL	_beep
L_501:
L_499:
L_495:
;
; Line 725:	return TRUE;
;
	MOV	EAX,01H
L_457:
	POP	EDI
	POP	ESI
	POP	EBX
	POP	EBP
	RET
;
; Line 728:	static void ShiftChangedMsg(WINDOW wnd, PARAM p1)
;
_ShiftChangedMsg:
	PUSH	EBP
	MOV	EBP,ESP
L_503:
;
; Line 729:	{
;
;
; Line 730:	if (!((int)p1 & (LEFTSHIFT | RIGHTSHIFT)) &&
;
	MOV	EAX,DWORD [EBP+0CH]
	AND	EAX,BYTE 03H
	JNE	SHORT	L_504
	CMP	DWORD [_KeyBoardMarking],BYTE 00H
	JE	SHORT	L_504
;
; Line 732:	StopMarking(wnd);
;
	PUSH	DWORD [EBP+08H]
	CALL	_StopMarking
	POP	ECX
;
; Line 733:	KeyBoardMarking = FALSE;
;
	MOV	DWORD [_KeyBoardMarking],00H
L_504:
;
; Line 735:	}
;
L_502:
	POP	EBP
	RET
;
; Line 737:	static void DeleteTextCmd(WINDOW wnd)
;
_DeleteTextCmd:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 04H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
L_507:
;
; Line 738:	{
;
;
; Line 739:	if (TextBlockMarked(wnd))    {
;
	CMP	DWORD [ESI+0ACH],BYTE 00H
	JNE	SHORT	L_510
	CMP	DWORD [ESI+0B4H],BYTE 00H
	JNE	SHORT	L_510
	CMP	DWORD [ESI+0B0H],BYTE 00H
	JNE	SHORT	L_510
	CMP	DWORD [ESI+0B8H],BYTE 00H
	JE	NEAR	L_508
L_510:
;
; Line 740:	ATTRCHR *bbl=TextLine(wnd,wnd->BlkBegLine)+wnd->BlkBegCol;
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0ACH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	SHL	ECX,01H
	ADD	ECX,DWORD [ESI+098H]
	MOV	EAX,DWORD [ESI+0B0H]
	SHL	EAX,01H
	ADD	ECX,EAX
	MOV	EBX,ECX
;
; Line 741:	ATTRCHR *bel=TextLine(wnd,wnd->BlkEndLine)+wnd->BlkEndCol;
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0B4H]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	SHL	ECX,01H
	ADD	ECX,DWORD [ESI+098H]
	MOV	EAX,DWORD [ESI+0B8H]
	SHL	EAX,01H
	ADD	ECX,EAX
	MOV	DWORD [EBP-04H],ECX
;
; Line 742:	int len = (int) (bel - bbl);
;
	MOV	EDI,DWORD [EBP-04H]
	SUB	EDI,EBX
	SHR	EDI,01H
;
; Line 743:	SaveDeletedText(wnd, bbl, len);
;
	PUSH	EDI
	PUSH	EBX
	PUSH	ESI
	CALL	_SaveDeletedText
	ADD	ESP,BYTE 0CH
;
; Line 744:	ChangedText(wnd, TRUE);
;
	PUSH	BYTE 01H
	PUSH	ESI
	CALL	_ChangedText
	ADD	ESP,BYTE 08H
;
; Line 745:	memcpy(bbl, bel, (wnd->textlen - (bel - wnd->text) + 1) * sizeof(ATTRCHR));
;
	MOV	EAX,DWORD [EBP-04H]
	SUB	EAX,DWORD [ESI+098H]
	SHR	EAX,01H
	MOV	ECX,DWORD [ESI+09CH]
	SUB	ECX,EAX
	INC	ECX
	SHL	ECX,01H
	PUSH	ECX
	PUSH	DWORD [EBP-04H]
	PUSH	EBX
	CALL	_memcpy
	ADD	ESP,BYTE 0CH
;
; Line 746:	wnd->textlen -= len;
;
	SUB	DWORD [ESI+09CH],EDI
;
; Line 747:	wnd->CurrLine = TextLineNumber(wnd, bbl-wnd->BlkBegCol);
;
	MOV	EAX,DWORD [ESI+0B0H]
	SHL	EAX,01H
	MOV	ECX,EBX
	SUB	ECX,EAX
	PUSH	ECX
	PUSH	ESI
	CALL	_TextLineNumber
	ADD	ESP,BYTE 08H
	MOV	DWORD [ESI+0DCH],EAX
;
; Line 748:	wnd->CurrCol = wnd->BlkBegCol;
;
	MOV	EAX,DWORD [ESI+0B0H]
	MOV	DWORD [ESI+0D8H],EAX
;
; Line 749:	wnd->WndRow = wnd->BlkBegLine - wnd->wtop;
;
	MOV	EAX,DWORD [ESI+0ACH]
	SUB	EAX,DWORD [ESI+094H]
	MOV	DWORD [ESI+0E0H],EAX
;
; Line 750:	if (wnd->WndRow < 0)    {
;
	CMP	DWORD [ESI+0E0H],BYTE 00H
	JGE	SHORT	L_511
;
; Line 751:	wnd->wtop = wnd->BlkBegLine;
;
	MOV	EAX,DWORD [ESI+0ACH]
	MOV	DWORD [ESI+094H],EAX
;
; Line 752:	wnd->WndRow = 0;
;
	MOV	DWORD [ESI+0E0H],00H
L_511:
;
; Line 754:	SendMessage(wnd, KEYBOARD_CURSOR, WndCol, wnd->WndRow);
;
	PUSH	DWORD [ESI+0E0H]
	MOV	EAX,DWORD [ESI+0D8H]
	SUB	EAX,DWORD [ESI+0A4H]
	PUSH	EAX
	PUSH	BYTE 018H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 755:	ClearTextBlock(wnd);
;
	MOV	DWORD [ESI+0B8H],00H
	MOV	DWORD [ESI+0B0H],00H
	MOV	DWORD [ESI+0B4H],00H
	MOV	DWORD [ESI+0ACH],00H
;
; Line 756:	BuildTextPointers(wnd);
;
	PUSH	ESI
	CALL	_BuildTextPointers
	POP	ECX
L_508:
;
; Line 758:	}
;
L_506:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
;
; Line 760:	static void ClearCmd(WINDOW wnd)
;
_ClearCmd:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 08H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
L_514:
;
; Line 761:	{
;
;
; Line 762:	if (TextBlockMarked(wnd))    {
;
	CMP	DWORD [ESI+0ACH],BYTE 00H
	JNE	SHORT	L_517
	CMP	DWORD [ESI+0B4H],BYTE 00H
	JNE	SHORT	L_517
	CMP	DWORD [ESI+0B0H],BYTE 00H
	JNE	SHORT	L_517
	CMP	DWORD [ESI+0B8H],BYTE 00H
	JE	NEAR	L_515
L_517:
;
; Line 763:	ATTRCHR *bbl=TextLine(wnd,wnd->BlkBegLine)+wnd->BlkBegCol;
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0ACH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	SHL	ECX,01H
	ADD	ECX,DWORD [ESI+098H]
	MOV	EAX,DWORD [ESI+0B0H]
	SHL	EAX,01H
	ADD	ECX,EAX
	MOV	EDI,ECX
;
; Line 764:	ATTRCHR *bel=TextLine(wnd,wnd->BlkEndLine)+wnd->BlkEndCol;
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0B4H]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	SHL	ECX,01H
	ADD	ECX,DWORD [ESI+098H]
	MOV	EAX,DWORD [ESI+0B8H]
	SHL	EAX,01H
	ADD	ECX,EAX
	MOV	DWORD [EBP-08H],ECX
;
; Line 765:	int len = (int) (bel - bbl);
;
	MOV	EAX,DWORD [EBP-08H]
	SUB	EAX,EDI
	SHR	EAX,01H
	MOV	DWORD [EBP-04H],EAX
;
; Line 766:	SaveDeletedText(wnd, bbl, len);
;
	PUSH	DWORD [EBP-04H]
	PUSH	EDI
	PUSH	ESI
	CALL	_SaveDeletedText
	ADD	ESP,BYTE 0CH
;
; Line 767:	wnd->CurrLine = TextLineNumber(wnd, bbl);
;
	PUSH	EDI
	PUSH	ESI
	CALL	_TextLineNumber
	ADD	ESP,BYTE 08H
	MOV	DWORD [ESI+0DCH],EAX
;
; Line 768:	wnd->CurrCol = wnd->BlkBegCol;
;
	MOV	EAX,DWORD [ESI+0B0H]
	MOV	DWORD [ESI+0D8H],EAX
;
; Line 769:	wnd->WndRow = wnd->BlkBegLine - wnd->wtop;
;
	MOV	EAX,DWORD [ESI+0ACH]
	SUB	EAX,DWORD [ESI+094H]
	MOV	DWORD [ESI+0E0H],EAX
;
; Line 770:	if (wnd->WndRow < 0)    {
;
	CMP	DWORD [ESI+0E0H],BYTE 00H
	JGE	SHORT	L_518
;
; Line 771:	wnd->WndRow = 0;
;
	MOV	DWORD [ESI+0E0H],00H
;
; Line 772:	wnd->wtop = wnd->BlkBegLine;
;
	MOV	EAX,DWORD [ESI+0ACH]
	MOV	DWORD [ESI+094H],EAX
L_518:
	JMP	SHORT	L_520
L_522:
;
; Line 776:	ATTRCHR *cp = bbl;
;
	MOV	EBX,EDI
	JMP	SHORT	L_523
L_525:
;
; Line 778:	cp++;
;
	ADD	EBX,BYTE 02H
L_523:
;
; Line 777:	while (cp->ch && cp->ch != '\n')
;
	CMP	BYTE [EBX+00H],BYTE 00H
	JE	SHORT	L_526
	MOVZX	EAX,BYTE [EBX+00H]
	CMP	EAX,BYTE 0AH
	JNE	SHORT	L_525
L_526:
L_524:
;
; Line 779:	if (cp > bel)
;
	CMP	EBX,DWORD [EBP-08H]
	JBE	SHORT	L_527
;
; Line 780:	cp = bel;
;
	MOV	EBX,DWORD [EBP-08H]
L_527:
;
; Line 781:	memcpy(bbl, cp, (wnd->textlen - (cp - wnd->text) + 1) * sizeof(ATTRCHR));
;
	MOV	EAX,EBX
	SUB	EAX,DWORD [ESI+098H]
	SHR	EAX,01H
	MOV	ECX,DWORD [ESI+09CH]
	SUB	ECX,EAX
	INC	ECX
	SHL	ECX,01H
	PUSH	ECX
	PUSH	EBX
	PUSH	EDI
	CALL	_memcpy
	ADD	ESP,BYTE 0CH
;
; Line 782:	wnd->textlen -= (int)(cp - bbl);
;
	MOV	EAX,EBX
	SUB	EAX,EDI
	SHR	EAX,01H
	SUB	DWORD [ESI+09CH],EAX
;
; Line 783:	bel -= (int) (cp - bbl);
;
	MOV	EAX,EBX
	SUB	EAX,EDI
	SHR	EAX,01H
	SHL	EAX,01H
	SUB	DWORD [EBP-08H],EAX
;
; Line 784:	bbl++;
;
	ADD	EDI,BYTE 02H
L_520:
;
; Line 775:	while (bbl < bel)    {
;
	CMP	EDI,DWORD [EBP-08H]
	JB	SHORT	L_522
L_521:
;
; Line 786:	ClearTextBlock(wnd);
;
	MOV	DWORD [ESI+0B8H],00H
	MOV	DWORD [ESI+0B0H],00H
	MOV	DWORD [ESI+0B4H],00H
	MOV	DWORD [ESI+0ACH],00H
;
; Line 787:	BuildTextPointers(wnd);
;
	PUSH	ESI
	CALL	_BuildTextPointers
	POP	ECX
;
; Line 788:	SendMessage(wnd, KEYBOARD_CURSOR, WndCol, wnd->WndRow);
;
	PUSH	DWORD [ESI+0E0H]
	MOV	EAX,DWORD [ESI+0D8H]
	SUB	EAX,DWORD [ESI+0A4H]
	PUSH	EAX
	PUSH	BYTE 018H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 789:	ChangedText(wnd, TRUE);
;
	PUSH	BYTE 01H
	PUSH	ESI
	CALL	_ChangedText
	ADD	ESP,BYTE 08H
L_515:
;
; Line 791:	}
;
L_513:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
;
; Line 793:	static void UndoCmd(WINDOW wnd)
;
_UndoCmd:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	ESI
	MOV	ESI,DWORD [EBP+08H]
L_530:
;
; Line 794:	{
;
;
; Line 795:	if (wnd->DeletedText != NULL)    {
;
	CMP	DWORD [ESI+0ECH],BYTE 00H
	JE	SHORT	L_531
;
; Line 796:	PasteText(wnd, wnd->DeletedText, wnd->DeletedLength);
;
	PUSH	DWORD [ESI+0F0H]
	PUSH	DWORD [ESI+0ECH]
	PUSH	ESI
	CALL	_PasteText
	ADD	ESP,BYTE 0CH
;
; Line 797:	free(wnd->DeletedText);
;
	PUSH	DWORD [ESI+0ECH]
	CALL	_free
	POP	ECX
;
; Line 798:	wnd->DeletedText = NULL;
;
	MOV	DWORD [ESI+0ECH],00H
;
; Line 799:	wnd->DeletedLength = 0;
;
	MOV	DWORD [ESI+0F0H],00H
;
; Line 800:	SendMessage(wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_531:
;
; Line 802:	}
;
L_529:
	POP	ESI
	POP	EBP
	RET
;
; Line 804:	static void ParagraphCmd(WINDOW wnd)
;
_ParagraphCmd:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 01CH
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
L_534:
;
; Line 805:	{
;
;
; Line 809:	ClearTextBlock(wnd);
;
	MOV	DWORD [ESI+0B8H],00H
	MOV	DWORD [ESI+0B0H],00H
	MOV	DWORD [ESI+0B4H],00H
	MOV	DWORD [ESI+0ACH],00H
;
; Line 811:	fl = wnd->wtop + wnd->WndRow;
;
	MOV	EAX,DWORD [ESI+094H]
	ADD	EAX,DWORD [ESI+0E0H]
	MOV	DWORD [EBP-0CH],EAX
;
; Line 812:	bbl = bel = bl = TextLine(wnd, wnd->CurrLine);
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	SHL	ECX,01H
	ADD	ECX,DWORD [ESI+098H]
	MOV	DWORD [EBP-08H],ECX
	MOV	DWORD [EBP-04H],ECX
	MOV	EDI,ECX
;
; Line 813:	if ((bc = wnd->CurrCol) >= ClientWidth(wnd))
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,04000H
	JE	SHORT	L_537
	MOV	EAX,01H
	JMP	SHORT	L_538
L_537:
	MOV	EAX,00H
L_538:
	SHL	EAX,01H
	MOV	ECX,DWORD [ESI+020H]
	SUB	ECX,EAX
	MOV	EAX,DWORD [ESI+0D8H]
	MOV	DWORD [EBP-010H],EAX
	CMP	EAX,ECX
	JL	SHORT	L_535
;
; Line 814:	bc = 0;
;
	MOV	DWORD [EBP-010H],00H
L_535:
;
; Line 815:	Home(wnd);
;
	PUSH	ESI
	CALL	_Home
	POP	ECX
	JMP	SHORT	L_539
L_541:
;
; Line 818:	int blank = TRUE;
;
	MOV	DWORD [EBP-01CH],01H
;
; Line 819:	ATTRCHR *bll = bel;
;
	MOV	EAX,DWORD [EBP-04H]
	MOV	DWORD [EBP-018H],EAX
	JMP	SHORT	L_542
L_544:
;
; Line 822:	if (bel->ch != ' ')
;
	MOV	EAX,DWORD [EBP-04H]
	MOVZX	EAX,BYTE [EAX+00H]
	CMP	EAX,BYTE 020H
	JE	SHORT	L_545
;
; Line 823:	blank = FALSE;
;
	MOV	DWORD [EBP-01CH],00H
L_545:
;
; Line 824:	bel++;
;
	ADD	DWORD [EBP-04H],BYTE 02H
L_542:
;
; Line 821:	while (bel->ch && bel->ch != '\n')    {
;
	MOV	EAX,DWORD [EBP-04H]
	CMP	BYTE [EAX+00H],BYTE 00H
	JE	SHORT	L_547
	MOV	EAX,DWORD [EBP-04H]
	MOVZX	EAX,BYTE [EAX+00H]
	CMP	EAX,BYTE 0AH
	JNE	SHORT	L_544
L_547:
L_543:
;
; Line 826:	if (blank)    {
;
	CMP	DWORD [EBP-01CH],BYTE 00H
	JE	SHORT	L_548
;
; Line 827:	bel = bll;
;
	MOV	EAX,DWORD [EBP-018H]
	MOV	DWORD [EBP-04H],EAX
;
; Line 828:	break;
;
	JMP	SHORT	L_540
L_548:
;
; Line 830:	if (bel->ch)
;
	MOV	EAX,DWORD [EBP-04H]
	CMP	BYTE [EAX+00H],BYTE 00H
	JE	SHORT	L_550
;
; Line 831:	bel++;
;
	ADD	DWORD [EBP-04H],BYTE 02H
L_550:
L_539:
;
; Line 817:	while (bel->ch)    {
;
	MOV	EAX,DWORD [EBP-04H]
	CMP	BYTE [EAX+00H],BYTE 00H
	JNE	SHORT	L_541
L_540:
;
; Line 833:	if (bel == bbl)    {
;
	CMP	DWORD [EBP-04H],EDI
	JNE	SHORT	L_552
;
; Line 834:	SendMessage(wnd, KEYBOARD, DN, 0);
;
	PUSH	BYTE 00H
	PUSH	DWORD 010D0H
	PUSH	BYTE 015H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 835:	return;
;
	JMP	NEAR	L_533
L_552:
;
; Line 837:	if (bel->ch == '\0')
;
	MOV	EAX,DWORD [EBP-04H]
	MOVZX	EAX,BYTE [EAX+00H]
	TEST	EAX,EAX
	JNE	SHORT	L_554
;
; Line 838:	--bel;
;
	SUB	DWORD [EBP-04H],BYTE 02H
L_554:
;
; Line 839:	if (bel->ch == '\n')
;
	MOV	EAX,DWORD [EBP-04H]
	MOVZX	EAX,BYTE [EAX+00H]
	CMP	EAX,BYTE 0AH
	JNE	SHORT	L_556
;
; Line 840:	--bel;
;
	SUB	DWORD [EBP-04H],BYTE 02H
L_556:
	JMP	SHORT	L_558
L_560:
;
; Line 843:	if (CurrChar->ch == '\n')    {
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	MOV	EAX,DWORD [ESI+098H]
	LEA	EAX,[EAX+ECX*2+00H]
	MOV	ECX,DWORD [ESI+0D8H]
	MOVZX	EAX,BYTE [EAX+ECX*2+00H]
	CMP	EAX,BYTE 0AH
	JNE	SHORT	L_561
;
; Line 844:	CurrChar->ch = ' ';
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	MOV	EAX,DWORD [ESI+098H]
	LEA	EAX,[EAX+ECX*2+00H]
	MOV	ECX,DWORD [ESI+0D8H]
	MOV	BYTE [EAX+ECX*2+00H],020H
;
; Line 845:	wnd->CurrLine++;
;
	INC	DWORD [ESI+0DCH]
;
; Line 846:	wnd->CurrCol = 0;
;
	MOV	DWORD [ESI+0D8H],00H
	JMP	SHORT	L_562
L_561:
;
; Line 849:	wnd->CurrCol++;
;
	INC	DWORD [ESI+0D8H]
L_562:
L_558:
;
; Line 842:	while (CurrChar < bel)    {
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	SHL	ECX,01H
	ADD	ECX,DWORD [ESI+098H]
	MOV	EAX,DWORD [ESI+0D8H]
	SHL	EAX,01H
	ADD	ECX,EAX
	CMP	ECX,DWORD [EBP-04H]
	JB	NEAR	L_560
L_559:
;
; Line 852:	bb = bbl;
;
	MOV	EBX,EDI
	JMP	SHORT	L_563
L_565:
;
; Line 854:	bbl++;
;
	ADD	EDI,BYTE 02H
;
; Line 855:	if ((int)(bbl - bb) == ClientWidth(wnd)-1)    {
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,04000H
	JE	SHORT	L_568
	MOV	EAX,01H
	JMP	SHORT	L_569
L_568:
	MOV	EAX,00H
L_569:
	SHL	EAX,01H
	MOV	ECX,DWORD [ESI+020H]
	SUB	ECX,EAX
	DEC	ECX
	MOV	EAX,EDI
	SUB	EAX,EBX
	SHR	EAX,01H
	CMP	EAX,ECX
	JNE	SHORT	L_566
	JMP	SHORT	L_570
L_572:
;
; Line 857:	--bbl;
;
	SUB	EDI,BYTE 02H
L_570:
;
; Line 856:	while (bbl->ch != ' ' && bbl > bb)
;
	MOVZX	EAX,BYTE [EDI+00H]
	CMP	EAX,BYTE 020H
	JE	SHORT	L_573
	CMP	EDI,EBX
	JA	SHORT	L_572
L_573:
L_571:
;
; Line 858:	if (bbl->ch != ' ')    {
;
	MOVZX	EAX,BYTE [EDI+00H]
	CMP	EAX,BYTE 020H
	JE	SHORT	L_574
	JMP	SHORT	L_576
L_578:
;
; Line 860:	bbl++;
;
	ADD	EDI,BYTE 02H
L_576:
;
; Line 859:	while (bbl->ch && bbl->ch != ' ')
;
	CMP	BYTE [EDI+00H],BYTE 00H
	JE	SHORT	L_579
	MOVZX	EAX,BYTE [EDI+00H]
	CMP	EAX,BYTE 020H
	JNE	SHORT	L_578
L_579:
L_577:
;
; Line 861:	if (!bbl->ch)
;
	CMP	BYTE [EDI+00H],BYTE 00H
	JNE	SHORT	L_580
;
; Line 862:	bbl = NULL;
;
	MOV	EDI,00H
L_580:
;
; Line 863:	if (bbl == NULL || bbl >= bel)
;
	TEST	EDI,EDI
	JE	SHORT	L_584
	CMP	EDI,DWORD [EBP-04H]
	JB	SHORT	L_582
L_584:
;
; Line 864:	break;
;
	JMP	SHORT	L_564
L_582:
L_574:
;
; Line 866:	bbl->ch = '\n';
;
	MOV	BYTE [EDI+00H],0AH
;
; Line 867:	bb = bbl+1;
;
	MOV	EBX,EDI
	ADD	EBX,BYTE 02H
L_566:
L_563:
;
; Line 853:	while (bbl < bel)    {
;
	CMP	EDI,DWORD [EBP-04H]
	JB	SHORT	L_565
L_564:
;
; Line 870:	BuildTextPointers(wnd);
;
	PUSH	ESI
	CALL	_BuildTextPointers
	POP	ECX
;
; Line 872:	wnd->CurrLine = TextLineNumber(wnd, bl);
;
	PUSH	DWORD [EBP-08H]
	PUSH	ESI
	CALL	_TextLineNumber
	ADD	ESP,BYTE 08H
	MOV	DWORD [ESI+0DCH],EAX
;
; Line 873:	wnd->CurrCol = bc;
;
	MOV	EAX,DWORD [EBP-010H]
	MOV	DWORD [ESI+0D8H],EAX
;
; Line 874:	if (fl < wnd->wtop)
;
	MOV	EAX,DWORD [EBP-0CH]
	CMP	EAX,DWORD [ESI+094H]
	JGE	SHORT	L_585
;
; Line 875:	wnd->wtop = fl;
;
	MOV	EAX,DWORD [EBP-0CH]
	MOV	DWORD [ESI+094H],EAX
L_585:
;
; Line 876:	wnd->WndRow = fl - wnd->wtop;
;
	MOV	EAX,DWORD [EBP-0CH]
	SUB	EAX,DWORD [ESI+094H]
	MOV	DWORD [ESI+0E0H],EAX
;
; Line 877:	SendMessage(wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 878:	SendMessage(wnd, KEYBOARD_CURSOR, WndCol, wnd->WndRow);
;
	PUSH	DWORD [ESI+0E0H]
	MOV	EAX,DWORD [ESI+0D8H]
	SUB	EAX,DWORD [ESI+0A4H]
	PUSH	EAX
	PUSH	BYTE 018H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 879:	ChangedText(wnd, TRUE);
;
	PUSH	BYTE 01H
	PUSH	ESI
	CALL	_ChangedText
	ADD	ESP,BYTE 08H
;
; Line 880:	BuildTextPointers(wnd);
;
	PUSH	ESI
	CALL	_BuildTextPointers
	POP	ECX
;
; Line 881:	}
;
L_533:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
;
; Line 883:	static int CommandMsg(WINDOW wnd, PARAM p1)
;
_CommandMsg:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	MOV	EBX,DWORD [EBP+08H]
L_588:
;
; Line 884:	{
;
;
; Line 885:	switch ((int)p1)    {
;
	MOV	EAX,DWORD [EBP+0CH]
	CMP	EAX,BYTE 0EH
	JE	NEAR	L_598
	JG	SHORT	L_601
	CMP	EAX,BYTE 0BH
	JE	NEAR	L_595
	JG	SHORT	L_602
	CMP	EAX,BYTE 0AH
	JE	NEAR	L_594
	JG	NEAR	L_590
	CMP	EAX,BYTE 09H
	JE	NEAR	L_599
	JMP	NEAR	L_590
L_602:
	CMP	EAX,BYTE 0DH
	JE	NEAR	L_600
	JG	NEAR	L_590
	CMP	EAX,BYTE 0CH
	JE	NEAR	L_596
	JMP	NEAR	L_590
L_601:
	CMP	EAX,BYTE 011H
	JE	SHORT	L_592
	JG	SHORT	L_603
	CMP	EAX,BYTE 010H
	JE	SHORT	L_591
	JG	NEAR	L_590
	CMP	EAX,BYTE 0FH
	JE	NEAR	L_597
	JMP	NEAR	L_590
L_603:
	CMP	EAX,BYTE 012H
	JE	SHORT	L_593
	JMP	NEAR	L_590
L_591:
;
; Line 887:	SearchText(wnd);
;
	PUSH	EBX
	CALL	_SearchText
	POP	ECX
;
; Line 888:	return TRUE;
;
	MOV	EAX,01H
	JMP	NEAR	L_587
L_592:
;
; Line 890:	ReplaceText(wnd);
;
	PUSH	EBX
	CALL	_ReplaceText
	POP	ECX
;
; Line 891:	return TRUE;
;
	MOV	EAX,01H
	JMP	NEAR	L_587
L_593:
;
; Line 893:	SearchNext(wnd);
;
	PUSH	EBX
	CALL	_SearchNext
	POP	ECX
;
; Line 894:	return TRUE;
;
	MOV	EAX,01H
	JMP	NEAR	L_587
L_594:
;
; Line 896:	CopyToClipboard(wnd);
;
	PUSH	EBX
	CALL	_CopyToClipboard
	POP	ECX
;
; Line 897:	SendMessage(wnd, COMMAND, ID_DELETETEXT, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 0FH
	PUSH	BYTE 02H
	PUSH	EBX
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 898:	SendMessage(wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	EBX
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 899:	return TRUE;
;
	MOV	EAX,01H
	JMP	NEAR	L_587
L_595:
;
; Line 901:	CopyToClipboard(wnd);
;
	PUSH	EBX
	CALL	_CopyToClipboard
	POP	ECX
;
; Line 902:	ClearTextBlock(wnd);
;
	MOV	DWORD [EBX+0B8H],00H
	MOV	DWORD [EBX+0B0H],00H
	MOV	DWORD [EBX+0B4H],00H
	MOV	DWORD [EBX+0ACH],00H
;
; Line 903:	SendMessage(wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	EBX
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 904:	return TRUE;
;
	MOV	EAX,01H
	JMP	NEAR	L_587
L_596:
;
; Line 906:	PasteFromClipboard(wnd);
;
	PUSH	DWORD [_ClipboardLength]
	PUSH	DWORD [_Clipboard]
	PUSH	EBX
	CALL	_PasteText
	ADD	ESP,BYTE 0CH
;
; Line 907:	SendMessage(wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	EBX
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 908:	return TRUE;
;
	MOV	EAX,01H
	JMP	SHORT	L_587
L_597:
;
; Line 910:	DeleteTextCmd(wnd);
;
	PUSH	EBX
	CALL	_DeleteTextCmd
	POP	ECX
;
; Line 911:	SendMessage(wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	EBX
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 912:	return TRUE;
;
	MOV	EAX,01H
	JMP	SHORT	L_587
L_598:
;
; Line 914:	ClearCmd(wnd);
;
	PUSH	EBX
	CALL	_ClearCmd
	POP	ECX
;
; Line 915:	SendMessage(wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	EBX
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 916:	return TRUE;
;
	MOV	EAX,01H
	JMP	SHORT	L_587
L_599:
;
; Line 918:	UndoCmd(wnd);
;
	PUSH	EBX
	CALL	_UndoCmd
	POP	ECX
;
; Line 919:	SendMessage(wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	EBX
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 920:	return TRUE;
;
	MOV	EAX,01H
	JMP	SHORT	L_587
L_600:
;
; Line 922:	ParagraphCmd(wnd);
;
	PUSH	EBX
	CALL	_ParagraphCmd
	POP	ECX
;
; Line 923:	SendMessage(wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	EBX
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 924:	return TRUE;
;
	MOV	EAX,01H
	JMP	SHORT	L_587
L_590:
;
; Line 926:	break;
;
	JMP	SHORT	L_589
L_589:
;
; Line 928:	return FALSE;
;
	MOV	EAX,00H
L_587:
	POP	EBX
	POP	EBP
	RET
;
; Line 931:	static int CloseWindowMsg(WINDOW wnd, PARAM p1, PARAM p2)
;
_CloseWindowMsg:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	MOV	ESI,DWORD [EBP+08H]
L_605:
;
; Line 932:	{
;
;
; Line 934:	SendMessage(NULL, HIDE_CURSOR, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 01AH
	PUSH	BYTE 00H
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 935:	if (wnd->DeletedText != NULL)
;
	CMP	DWORD [ESI+0ECH],BYTE 00H
	JE	SHORT	L_606
;
; Line 936:	free(wnd->DeletedText);
;
	PUSH	DWORD [ESI+0ECH]
	CALL	_free
	POP	ECX
L_606:
;
; Line 937:	rtn = BaseWndProc(EDITBOX, wnd, CLOSE_WINDOW, p1, p2);
;
	PUSH	DWORD [EBP+010H]
	PUSH	DWORD [EBP+0CH]
	PUSH	BYTE 07H
	PUSH	ESI
	MOV	EAX,DWORD [_classdefs+030H]
	IMUL	EAX,BYTE 0CH
	CALL	DWORD [EAX+04H+_classdefs+00H]
	ADD	ESP,BYTE 010H
	MOV	EBX,EAX
;
; Line 938:	if (wnd->text != NULL)	{
;
	CMP	DWORD [ESI+098H],BYTE 00H
	JE	SHORT	L_608
;
; Line 939:	free(wnd->text);
;
	PUSH	DWORD [ESI+098H]
	CALL	_free
	POP	ECX
;
; Line 940:	wnd->text = NULL;
;
	MOV	DWORD [ESI+098H],00H
L_608:
;
; Line 942:	return rtn;
;
	MOV	EAX,EBX
L_604:
	POP	ESI
	POP	EBX
	POP	EBP
	RET
[GLOBAL	_EditBoxProc]
;
; Line 945:	int EditBoxProc(WINDOW wnd, MESSAGE msg, PARAM p1, PARAM p2)
;
_EditBoxProc:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 08H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	EBX,DWORD [EBP+08H]
	MOV	ESI,DWORD [EBP+010H]
	MOV	EDI,DWORD _classdefs
L_611:
;
; Line 946:	{
;
;
; Line 948:	switch (msg)    {
;
	MOV	EAX,DWORD [EBP+0CH]
	CMP	EAX,BYTE 026H
	JE	NEAR	L_630
	JA	NEAR	L_636
	CMP	EAX,BYTE 0CH
	JE	NEAR	L_623
	JA	SHORT	L_637
	CMP	EAX,BYTE 07H
	JE	NEAR	L_635
	JA	SHORT	L_638
	CMP	EAX,BYTE 03H
	JE	NEAR	L_614
	JA	NEAR	L_613
	CMP	EAX,BYTE 02H
	JE	NEAR	L_634
	JMP	NEAR	L_613
L_638:
	CMP	EAX,BYTE 09H
	JE	NEAR	L_622
	JA	NEAR	L_613
	CMP	EAX,BYTE 08H
	JE	NEAR	L_621
	JMP	NEAR	L_613
L_637:
	CMP	EAX,BYTE 018H
	JE	NEAR	L_620
	JA	SHORT	L_639
	CMP	EAX,BYTE 015H
	JE	NEAR	L_632
	JA	NEAR	L_613
	CMP	EAX,BYTE 0DH
	JE	NEAR	L_624
	JMP	NEAR	L_613
L_639:
	CMP	EAX,BYTE 024H
	JE	NEAR	L_629
	JA	NEAR	L_613
	CMP	EAX,BYTE 01EH
	JE	NEAR	L_633
	JMP	NEAR	L_613
L_636:
	CMP	EAX,BYTE 036H
	JE	NEAR	L_626
	JA	SHORT	L_640
	CMP	EAX,BYTE 033H
	JE	NEAR	L_617
	JA	SHORT	L_641
	CMP	EAX,BYTE 030H
	JE	SHORT	L_615
	JA	NEAR	L_613
	CMP	EAX,BYTE 027H
	JE	NEAR	L_631
	JMP	NEAR	L_613
L_641:
	CMP	EAX,BYTE 035H
	JE	NEAR	L_625
	JA	NEAR	L_613
	CMP	EAX,BYTE 034H
	JE	SHORT	L_616
	JMP	NEAR	L_613
L_640:
	CMP	EAX,BYTE 03AH
	JE	SHORT	L_618
	JA	SHORT	L_642
	CMP	EAX,BYTE 038H
	JE	NEAR	L_628
	JA	NEAR	L_613
	CMP	EAX,BYTE 037H
	JE	NEAR	L_627
	JMP	NEAR	L_613
L_642:
	CMP	EAX,BYTE 03BH
	JE	SHORT	L_619
	JMP	NEAR	L_613
L_614:
;
; Line 950:	return CreateWindowMsg(wnd);
;
	PUSH	EBX
	CALL	_CreateWindowMsg
	POP	ECX
	JMP	NEAR	L_610
L_615:
;
; Line 952:	return AddTextMsg(wnd, p1, p2);
;
	PUSH	DWORD [EBP+014H]
	PUSH	ESI
	PUSH	EBX
	CALL	_AddTextMsg
	ADD	ESP,BYTE 0CH
	JMP	NEAR	L_610
L_616:
;
; Line 954:	return SetTextMsg(wnd, p1, p2);
;
	PUSH	DWORD [EBP+014H]
	PUSH	ESI
	PUSH	EBX
	CALL	_SetTextMsg
	ADD	ESP,BYTE 0CH
	JMP	NEAR	L_610
L_617:
;
; Line 956:	return ClearTextMsg(wnd);
;
	PUSH	EBX
	CALL	_ClearTextMsg
	POP	ECX
	JMP	NEAR	L_610
L_618:
;
; Line 958:	return GetTextMsg(wnd, p1, p2);
;
	PUSH	DWORD [EBP+014H]
	PUSH	ESI
	PUSH	EBX
	CALL	_GetTextMsg
	ADD	ESP,BYTE 0CH
	JMP	NEAR	L_610
L_619:
;
; Line 960:	return SetTextLengthMsg(wnd, (unsigned) p1);
;
	PUSH	ESI
	PUSH	EBX
	CALL	_SetTextLengthMsg
	ADD	ESP,BYTE 08H
	JMP	NEAR	L_610
L_620:
;
; Line 962:	KeyboardCursorMsg(wnd, p1, p2);
;
	PUSH	DWORD [EBP+014H]
	PUSH	ESI
	PUSH	EBX
	CALL	_KeyboardCursorMsg
	ADD	ESP,BYTE 0CH
;
; Line 963:	return TRUE;
;
	MOV	EAX,01H
	JMP	NEAR	L_610
L_621:
;
; Line 965:	if (!(int)p1)
;
	TEST	ESI,ESI
	JNE	SHORT	L_643
;
; Line 966:	SendMessage(NULL, HIDE_CURSOR, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 01AH
	PUSH	BYTE 00H
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_643:
;
; Line 967:	case PAINT:
;
L_622:
;
; Line 968:	case MOVE:
;
L_623:
;
; Line 969:	rtn = BaseWndProc(EDITBOX, wnd, msg, p1, p2);
;
	PUSH	DWORD [EBP+014H]
	PUSH	ESI
	MOVSX	EAX,WORD [EBP+0CH]
	PUSH	EAX
	PUSH	EBX
	MOV	EAX,DWORD [EDI+030H]
	IMUL	EAX,BYTE 0CH
	LEA	EAX,[EDI+EAX+00H]
	CALL	DWORD [EAX+04H]
	ADD	ESP,BYTE 010H
	MOV	DWORD [EBP-04H],EAX
;
; Line 970:	SendMessage(wnd,KEYBOARD_CURSOR,WndCol,wnd->WndRow);
;
	PUSH	DWORD [EBX+0E0H]
	MOV	EAX,DWORD [EBX+0D8H]
	SUB	EAX,DWORD [EBX+0A4H]
	PUSH	EAX
	PUSH	BYTE 018H
	PUSH	EBX
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 971:	return rtn;
;
	MOV	EAX,DWORD [EBP-04H]
	JMP	NEAR	L_610
L_624:
;
; Line 973:	return SizeMsg(wnd, p1, p2);
;
	PUSH	DWORD [EBP+014H]
	PUSH	ESI
	PUSH	EBX
	CALL	_SizeMsg
	ADD	ESP,BYTE 0CH
	JMP	NEAR	L_610
L_625:
;
; Line 975:	return ScrollMsg(wnd, p1);
;
	PUSH	ESI
	PUSH	EBX
	CALL	_ScrollMsg
	ADD	ESP,BYTE 08H
	JMP	NEAR	L_610
L_626:
;
; Line 977:	return HorizScrollMsg(wnd, p1);
;
	PUSH	ESI
	PUSH	EBX
	CALL	_HorizScrollMsg
	ADD	ESP,BYTE 08H
	JMP	NEAR	L_610
L_627:
;
; Line 979:	return ScrollPageMsg(wnd, p1);
;
	PUSH	ESI
	PUSH	EBX
	CALL	_ScrollPageMsg
	ADD	ESP,BYTE 08H
	JMP	NEAR	L_610
L_628:
;
; Line 981:	return HorizPageMsg(wnd, p1);
;
	PUSH	ESI
	PUSH	EBX
	CALL	_HorizPageMsg
	ADD	ESP,BYTE 08H
	JMP	NEAR	L_610
L_629:
;
; Line 983:	if (LeftButtonMsg(wnd, p1, p2))
;
	PUSH	DWORD [EBP+014H]
	PUSH	ESI
	PUSH	EBX
	CALL	_LeftButtonMsg
	ADD	ESP,BYTE 0CH
	TEST	EAX,EAX
	JE	SHORT	L_645
;
; Line 984:	return TRUE;
;
	MOV	EAX,01H
	JMP	NEAR	L_610
L_645:
;
; Line 985:	break;
;
	JMP	NEAR	L_612
L_630:
;
; Line 987:	if (MouseMovedMsg(wnd, p1, p2))
;
	PUSH	DWORD [EBP+014H]
	PUSH	ESI
	PUSH	EBX
	CALL	_MouseMovedMsg
	ADD	ESP,BYTE 0CH
	TEST	EAX,EAX
	JE	SHORT	L_647
;
; Line 988:	return TRUE;
;
	MOV	EAX,01H
	JMP	NEAR	L_610
L_647:
;
; Line 989:	break;
;
	JMP	SHORT	L_612
L_631:
;
; Line 991:	if (ButtonReleasedMsg(wnd))
;
	PUSH	EBX
	CALL	_ButtonReleasedMsg
	POP	ECX
	TEST	EAX,EAX
	JE	SHORT	L_649
;
; Line 992:	return TRUE;
;
	MOV	EAX,01H
	JMP	SHORT	L_610
L_649:
;
; Line 993:	break;
;
	JMP	SHORT	L_612
L_632:
;
; Line 995:	if (KeyboardMsg(wnd, p1, p2))
;
	PUSH	DWORD [EBP+014H]
	PUSH	ESI
	PUSH	EBX
	CALL	_KeyboardMsg
	ADD	ESP,BYTE 0CH
	TEST	EAX,EAX
	JE	SHORT	L_651
;
; Line 996:	return TRUE;
;
	MOV	EAX,01H
	JMP	SHORT	L_610
L_651:
;
; Line 997:	break;
;
	JMP	SHORT	L_612
L_633:
;
; Line 999:	ShiftChangedMsg(wnd, p1);
;
	PUSH	ESI
	PUSH	EBX
	CALL	_ShiftChangedMsg
	ADD	ESP,BYTE 08H
;
; Line 1000:	break;
;
	JMP	SHORT	L_612
L_634:
;
; Line 1002:	if (CommandMsg(wnd, p1))
;
	PUSH	ESI
	PUSH	EBX
	CALL	_CommandMsg
	ADD	ESP,BYTE 08H
	TEST	EAX,EAX
	JE	SHORT	L_653
;
; Line 1003:	return TRUE;
;
	MOV	EAX,01H
	JMP	SHORT	L_610
L_653:
;
; Line 1004:	break;
;
	JMP	SHORT	L_612
L_635:
;
; Line 1006:	return CloseWindowMsg(wnd, p1, p2);
;
	PUSH	DWORD [EBP+014H]
	PUSH	ESI
	PUSH	EBX
	CALL	_CloseWindowMsg
	ADD	ESP,BYTE 0CH
	JMP	SHORT	L_610
L_613:
;
; Line 1008:	break;
;
	JMP	SHORT	L_612
L_612:
;
; Line 1010:	return BaseWndProc(EDITBOX, wnd, msg, p1, p2);
;
	PUSH	DWORD [EBP+014H]
	PUSH	ESI
	MOVSX	EAX,WORD [EBP+0CH]
	PUSH	EAX
	PUSH	EBX
	MOV	EAX,DWORD [EDI+030H]
	IMUL	EAX,BYTE 0CH
	LEA	EAX,[EDI+EAX+00H]
	CALL	DWORD [EAX+04H]
	ADD	ESP,BYTE 010H
L_610:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
;
; Line 1013:	static void SaveDeletedText(WINDOW wnd, ATTRCHR *bbl, int len)
;
_SaveDeletedText:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 08H
	PUSH	EBX
	PUSH	ESI
	MOV	ESI,DWORD [EBP+08H]
	MOV	EBX,DWORD [EBP+010H]
L_656:
;
; Line 1014:	{
;
;
; Line 1016:	wnd->DeletedLength = len;
;
	MOV	DWORD [ESI+0F0H],EBX
;
; Line 1017:	wnd->DeletedText=DFrealloc(wnd->DeletedText, (len + 1) * sizeof(ATTRCHR));
;
	MOV	EAX,EBX
	INC	EAX
	SHL	EAX,01H
	PUSH	EAX
	PUSH	DWORD [ESI+0ECH]
	CALL	_DFrealloc
	ADD	ESP,BYTE 08H
	MOV	DWORD [ESI+0ECH],EAX
;
; Line 1018:	memcpy(wnd->DeletedText, bbl, (len + 1 ) * sizeof(ATTRCHR));
;
	MOV	EAX,EBX
	INC	EAX
	SHL	EAX,01H
	PUSH	EAX
	PUSH	DWORD [EBP+0CH]
	PUSH	DWORD [ESI+0ECH]
	CALL	_memcpy
	ADD	ESP,BYTE 0CH
;
; Line 1019:	}
;
L_655:
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
;
; Line 1021:	static void Forward(WINDOW wnd)
;
_Forward:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
L_658:
;
; Line 1022:	{
;
;
; Line 1023:	ATTRCHR *cc = CurrChar+1;
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	SHL	ECX,01H
	ADD	ECX,DWORD [ESI+098H]
	MOV	EAX,DWORD [ESI+0D8H]
	SHL	EAX,01H
	ADD	ECX,EAX
	ADD	ECX,BYTE 02H
	MOV	EDI,ECX
;
; Line 1024:	if (cc->ch == '\0')
;
	MOVZX	EAX,BYTE [EDI+00H]
	TEST	EAX,EAX
	JE	SHORT	L_657
;
; Line 1025:	return;
;
L_659:
;
; Line 1026:	if (CurrChar->ch == '\n')    {
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	MOV	EAX,DWORD [ESI+098H]
	LEA	EAX,[EAX+ECX*2+00H]
	MOV	ECX,DWORD [ESI+0D8H]
	MOVZX	EAX,BYTE [EAX+ECX*2+00H]
	CMP	EAX,BYTE 0AH
	JNE	SHORT	L_661
;
; Line 1027:	Home(wnd);
;
	PUSH	ESI
	CALL	_Home
	POP	ECX
;
; Line 1028:	Downward(wnd);
;
	PUSH	ESI
	CALL	_Downward
	POP	ECX
	JMP	SHORT	L_662
L_661:
;
; Line 1031:	wnd->CurrCol++;
;
	INC	DWORD [ESI+0D8H]
;
; Line 1032:	if (WndCol == ClientWidth(wnd))
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,04000H
	JE	SHORT	L_665
	MOV	EAX,01H
	JMP	SHORT	L_666
L_665:
	MOV	EAX,00H
L_666:
	SHL	EAX,01H
	MOV	ECX,DWORD [ESI+020H]
	SUB	ECX,EAX
	MOV	EAX,DWORD [ESI+0D8H]
	SUB	EAX,DWORD [ESI+0A4H]
	CMP	EAX,ECX
	JNE	SHORT	L_663
;
; Line 1033:	SendMessage(wnd, HORIZSCROLL, TRUE, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 01H
	PUSH	BYTE 036H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_663:
L_662:
;
; Line 1035:	}
;
L_657:
	POP	EDI
	POP	ESI
	POP	EBP
	RET
;
; Line 1037:	static void StickEnd(WINDOW wnd)
;
_StickEnd:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 08H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
L_668:
;
; Line 1038:	{
;
;
; Line 1039:	ATTRCHR *cp = TextLine(wnd, wnd->CurrLine);
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	SHL	ECX,01H
	ADD	ECX,DWORD [ESI+098H]
	MOV	DWORD [EBP-04H],ECX
;
; Line 1040:	ATTRCHR *cp1 = cp;
;
	MOV	EDI,DWORD [EBP-04H]
	JMP	SHORT	L_669
L_671:
;
; Line 1043:	cp1++;
;
	ADD	EDI,BYTE 02H
L_669:
;
; Line 1042:	while (cp1->ch && cp1->ch != '\n')
;
	CMP	BYTE [EDI+00H],BYTE 00H
	JE	SHORT	L_672
	MOVZX	EAX,BYTE [EDI+00H]
	CMP	EAX,BYTE 0AH
	JNE	SHORT	L_671
L_672:
L_670:
;
; Line 1044:	len = (cp1 - cp) ;
;
	MOV	EBX,EDI
	SUB	EBX,DWORD [EBP-04H]
	SHR	EBX,01H
;
; Line 1045:	wnd->CurrCol = min(len, wnd->CurrCol);
;
	CMP	EBX,DWORD [ESI+0D8H]
	JGE	SHORT	L_673
	MOV	EAX,EBX
	JMP	SHORT	L_674
L_673:
	MOV	EAX,DWORD [ESI+0D8H]
L_674:
	MOV	DWORD [ESI+0D8H],EAX
;
; Line 1046:	if (wnd->wleft > wnd->CurrCol)    {
;
	MOV	EAX,DWORD [ESI+0A4H]
	CMP	EAX,DWORD [ESI+0D8H]
	JLE	SHORT	L_675
;
; Line 1047:	wnd->wleft = max(0, wnd->CurrCol - 4);
;
	MOV	EAX,DWORD [ESI+0D8H]
	SUB	EAX,BYTE 04H
	JGE	SHORT	L_677
	MOV	EAX,00H
	JMP	SHORT	L_678
L_677:
	MOV	EAX,DWORD [ESI+0D8H]
	SUB	EAX,BYTE 04H
L_678:
	MOV	DWORD [ESI+0A4H],EAX
;
; Line 1048:	SendMessage(wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
	JMP	SHORT	L_676
L_675:
;
; Line 1050:	else if (wnd->CurrCol-wnd->wleft >= ClientWidth(wnd))    {
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,04000H
	JE	SHORT	L_681
	MOV	EAX,01H
	JMP	SHORT	L_682
L_681:
	MOV	EAX,00H
L_682:
	SHL	EAX,01H
	MOV	ECX,DWORD [ESI+020H]
	SUB	ECX,EAX
	MOV	EAX,DWORD [ESI+0D8H]
	SUB	EAX,DWORD [ESI+0A4H]
	CMP	EAX,ECX
	JL	SHORT	L_679
;
; Line 1051:	wnd->wleft = wnd->CurrCol - (ClientWidth(wnd)-1);
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,04000H
	JE	SHORT	L_683
	MOV	EAX,01H
	JMP	SHORT	L_684
L_683:
	MOV	EAX,00H
L_684:
	SHL	EAX,01H
	MOV	ECX,DWORD [ESI+020H]
	SUB	ECX,EAX
	DEC	ECX
	MOV	EAX,DWORD [ESI+0D8H]
	SUB	EAX,ECX
	MOV	DWORD [ESI+0A4H],EAX
;
; Line 1052:	SendMessage(wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_679:
L_676:
;
; Line 1054:	}
;
L_667:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
;
; Line 1056:	static void Downward(WINDOW wnd)
;
_Downward:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	ESI
	MOV	ESI,DWORD [EBP+08H]
L_686:
;
; Line 1057:	{
;
;
; Line 1058:	if (isMultiLine(wnd) &&
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JE	NEAR	L_687
	MOV	EAX,DWORD [ESI+0E0H]
	ADD	EAX,DWORD [ESI+094H]
	INC	EAX
	CMP	EAX,DWORD [ESI+090H]
	JGE	NEAR	L_687
;
; Line 1060:	wnd->CurrLine++;
;
	INC	DWORD [ESI+0DCH]
;
; Line 1061:	if (wnd->WndRow == ClientHeight(wnd)-1)
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_691
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,BYTE 08H
	JE	SHORT	L_691
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,010000H
	JE	SHORT	L_691
	MOV	EAX,03H
	JMP	SHORT	L_692
L_691:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_696
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,BYTE 08H
	JNE	SHORT	L_695
L_696:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,0100H
	JE	SHORT	L_693
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,010000H
	JE	SHORT	L_693
L_695:
	MOV	EAX,02H
	JMP	SHORT	L_694
L_693:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,014108H
	JE	SHORT	L_697
	MOV	EAX,01H
	JMP	SHORT	L_698
L_697:
	MOV	EAX,00H
L_698:
L_694:
L_692:
	MOV	ECX,DWORD [ESI+01CH]
	SUB	ECX,EAX
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,08000H
	JE	SHORT	L_699
	MOV	EAX,01H
	JMP	SHORT	L_700
L_699:
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,04000H
	JE	SHORT	L_701
	MOV	EAX,01H
	JMP	SHORT	L_702
L_701:
	MOV	EAX,00H
L_702:
L_700:
	SUB	ECX,EAX
	DEC	ECX
	CMP	DWORD [ESI+0E0H],ECX
	JNE	SHORT	L_689
;
; Line 1062:	SendMessage(wnd, SCROLL, TRUE, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 01H
	PUSH	BYTE 035H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_689:
;
; Line 1063:	wnd->WndRow++;
;
	INC	DWORD [ESI+0E0H]
;
; Line 1064:	StickEnd(wnd);
;
	PUSH	ESI
	CALL	_StickEnd
	POP	ECX
L_687:
;
; Line 1066:	}
;
L_685:
	POP	ESI
	POP	EBP
	RET
;
; Line 1068:	static void Upward(WINDOW wnd)
;
_Upward:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	ESI
	MOV	ESI,DWORD [EBP+08H]
L_704:
;
; Line 1069:	{
;
;
; Line 1070:	if (isMultiLine(wnd) && wnd->CurrLine != 0)    {
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JE	SHORT	L_705
	CMP	DWORD [ESI+0DCH],BYTE 00H
	JE	SHORT	L_705
;
; Line 1071:	--wnd->CurrLine;
;
	DEC	DWORD [ESI+0DCH]
;
; Line 1072:	if (wnd->WndRow == 0)
;
	CMP	DWORD [ESI+0E0H],BYTE 00H
	JNE	SHORT	L_707
;
; Line 1073:	SendMessage(wnd, SCROLL, FALSE, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 035H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_707:
;
; Line 1074:	--wnd->WndRow;
;
	DEC	DWORD [ESI+0E0H]
;
; Line 1075:	StickEnd(wnd);
;
	PUSH	ESI
	CALL	_StickEnd
	POP	ECX
L_705:
;
; Line 1077:	}
;
L_703:
	POP	ESI
	POP	EBP
	RET
;
; Line 1079:	static void Backward(WINDOW wnd)
;
_Backward:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	ESI
	MOV	ESI,DWORD [EBP+08H]
L_710:
;
; Line 1080:	{
;
;
; Line 1081:	if (wnd->CurrCol)    {
;
	CMP	DWORD [ESI+0D8H],BYTE 00H
	JE	SHORT	L_711
;
; Line 1082:	--wnd->CurrCol;
;
	DEC	DWORD [ESI+0D8H]
;
; Line 1083:	if (wnd->CurrCol < wnd->wleft)
;
	MOV	EAX,DWORD [ESI+0D8H]
	CMP	EAX,DWORD [ESI+0A4H]
	JGE	SHORT	L_713
;
; Line 1084:	SendMessage(wnd, HORIZSCROLL, FALSE, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 036H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_713:
	JMP	SHORT	L_712
L_711:
;
; Line 1086:	else if (isMultiLine(wnd) && wnd->CurrLine != 0)    {
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,02000H
	JE	SHORT	L_715
	CMP	DWORD [ESI+0DCH],BYTE 00H
	JE	SHORT	L_715
;
; Line 1087:	Upward(wnd);
;
	PUSH	ESI
	CALL	_Upward
	POP	ECX
;
; Line 1088:	End(wnd);
;
	PUSH	ESI
	CALL	_End
	POP	ECX
L_715:
L_712:
;
; Line 1090:	}
;
L_709:
	POP	ESI
	POP	EBP
	RET
;
; Line 1092:	static void End(WINDOW wnd)
;
_End:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	ESI
	MOV	ESI,DWORD [EBP+08H]
L_718:
;
; Line 1093:	{
;
	JMP	SHORT	L_719
L_721:
;
; Line 1095:	++wnd->CurrCol;
;
	INC	DWORD [ESI+0D8H]
L_719:
;
; Line 1094:	while (CurrChar->ch && CurrChar->ch != '\n')
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	MOV	EAX,DWORD [ESI+098H]
	LEA	EAX,[EAX+ECX*2+00H]
	MOV	ECX,DWORD [ESI+0D8H]
	CMP	BYTE [EAX+ECX*2+00H],BYTE 00H
	JE	SHORT	L_722
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	MOV	EAX,DWORD [ESI+098H]
	LEA	EAX,[EAX+ECX*2+00H]
	MOV	ECX,DWORD [ESI+0D8H]
	MOVZX	EAX,BYTE [EAX+ECX*2+00H]
	CMP	EAX,BYTE 0AH
	JNE	SHORT	L_721
L_722:
L_720:
;
; Line 1096:	if (WndCol >= ClientWidth(wnd))    {
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,04000H
	JE	SHORT	L_725
	MOV	EAX,01H
	JMP	SHORT	L_726
L_725:
	MOV	EAX,00H
L_726:
	SHL	EAX,01H
	MOV	ECX,DWORD [ESI+020H]
	SUB	ECX,EAX
	MOV	EAX,DWORD [ESI+0D8H]
	SUB	EAX,DWORD [ESI+0A4H]
	CMP	EAX,ECX
	JL	SHORT	L_723
;
; Line 1097:	wnd->wleft = wnd->CurrCol - (ClientWidth(wnd)-1);
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,04000H
	JE	SHORT	L_727
	MOV	EAX,01H
	JMP	SHORT	L_728
L_727:
	MOV	EAX,00H
L_728:
	SHL	EAX,01H
	MOV	ECX,DWORD [ESI+020H]
	SUB	ECX,EAX
	DEC	ECX
	MOV	EAX,DWORD [ESI+0D8H]
	SUB	EAX,ECX
	MOV	DWORD [ESI+0A4H],EAX
;
; Line 1098:	SendMessage(wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_723:
;
; Line 1100:	}
;
L_717:
	POP	ESI
	POP	EBP
	RET
;
; Line 1102:	static void Home(WINDOW wnd)
;
_Home:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	ESI
	MOV	ESI,DWORD [EBP+08H]
L_730:
;
; Line 1103:	{
;
;
; Line 1104:	wnd->CurrCol = 0;
;
	MOV	DWORD [ESI+0D8H],00H
;
; Line 1105:	if (wnd->wleft != 0)    {
;
	CMP	DWORD [ESI+0A4H],BYTE 00H
	JE	SHORT	L_731
;
; Line 1106:	wnd->wleft = 0;
;
	MOV	DWORD [ESI+0A4H],00H
;
; Line 1107:	SendMessage(wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_731:
;
; Line 1109:	}
;
L_729:
	POP	ESI
	POP	EBP
	RET
;
; Line 1111:	static void NextWord(WINDOW wnd)
;
_NextWord:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 0CH
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
L_734:
;
; Line 1112:	{
;
;
; Line 1113:	int savetop = wnd->wtop;
;
	MOV	EAX,DWORD [ESI+094H]
	MOV	DWORD [EBP-08H],EAX
;
; Line 1114:	int saveleft = wnd->wleft;
;
	MOV	EAX,DWORD [ESI+0A4H]
	MOV	DWORD [EBP-04H],EAX
;
; Line 1115:	ClearVisible(wnd);
;
	AND	DWORD [ESI+054H],BYTE 0FFFFFFBFH
	JMP	SHORT	L_735
L_737:
;
; Line 1117:	ATTRCHR *cc = CurrChar+1;
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	SHL	ECX,01H
	ADD	ECX,DWORD [ESI+098H]
	MOV	EAX,DWORD [ESI+0D8H]
	SHL	EAX,01H
	ADD	ECX,EAX
	ADD	ECX,BYTE 02H
	MOV	EBX,ECX
;
; Line 1118:	if (cc->ch == '\0')
;
	MOVZX	EAX,BYTE [EBX+00H]
	TEST	EAX,EAX
	JE	NEAR	L_736
;
; Line 1119:	break;
;
L_738:
;
; Line 1120:	Forward(wnd);
;
	PUSH	ESI
	CALL	_Forward
	POP	ECX
L_735:
;
; Line 1116:	while (!isWhite(CurrChar->ch))    {
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	MOV	EAX,DWORD [ESI+098H]
	LEA	EAX,[EAX+ECX*2+00H]
	MOV	ECX,DWORD [ESI+0D8H]
	MOVZX	ECX,BYTE [EAX+ECX*2+00H]
	AND	ECX,BYTE 07FH
	CMP	ECX,BYTE 020H
	JE	NEAR	L_740
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	MOV	EAX,DWORD [ESI+098H]
	LEA	EAX,[EAX+ECX*2+00H]
	MOV	ECX,DWORD [ESI+0D8H]
	MOVZX	ECX,BYTE [EAX+ECX*2+00H]
	AND	ECX,BYTE 07FH
	CMP	ECX,BYTE 0AH
	JE	SHORT	L_740
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	MOV	EAX,DWORD [ESI+098H]
	LEA	EAX,[EAX+ECX*2+00H]
	MOV	ECX,DWORD [ESI+0D8H]
	MOVZX	ECX,BYTE [EAX+ECX*2+00H]
	AND	ECX,BYTE 07FH
	CMP	ECX,BYTE 0CH
	JE	SHORT	L_740
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	MOV	EAX,DWORD [ESI+098H]
	LEA	EAX,[EAX+ECX*2+00H]
	MOV	ECX,DWORD [ESI+0D8H]
	MOVZX	ECX,BYTE [EAX+ECX*2+00H]
	AND	ECX,BYTE 07FH
	CMP	ECX,BYTE 09H
	JNE	NEAR	L_737
L_740:
L_736:
	JMP	SHORT	L_741
L_743:
;
; Line 1123:	ATTRCHR *cc = CurrChar+1;
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	SHL	ECX,01H
	ADD	ECX,DWORD [ESI+098H]
	MOV	EAX,DWORD [ESI+0D8H]
	SHL	EAX,01H
	ADD	ECX,EAX
	ADD	ECX,BYTE 02H
	MOV	EDI,ECX
;
; Line 1124:	if (cc->ch == '\0')
;
	MOVZX	EAX,BYTE [EDI+00H]
	TEST	EAX,EAX
	JE	NEAR	L_742
;
; Line 1125:	break;
;
L_744:
;
; Line 1126:	Forward(wnd);
;
	PUSH	ESI
	CALL	_Forward
	POP	ECX
L_741:
;
; Line 1122:	while (isWhite(CurrChar->ch))    {
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	MOV	EAX,DWORD [ESI+098H]
	LEA	EAX,[EAX+ECX*2+00H]
	MOV	ECX,DWORD [ESI+0D8H]
	MOVZX	ECX,BYTE [EAX+ECX*2+00H]
	AND	ECX,BYTE 07FH
	CMP	ECX,BYTE 020H
	JE	SHORT	L_743
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	MOV	EAX,DWORD [ESI+098H]
	LEA	EAX,[EAX+ECX*2+00H]
	MOV	ECX,DWORD [ESI+0D8H]
	MOVZX	ECX,BYTE [EAX+ECX*2+00H]
	AND	ECX,BYTE 07FH
	CMP	ECX,BYTE 0AH
	JE	NEAR	L_743
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	MOV	EAX,DWORD [ESI+098H]
	LEA	EAX,[EAX+ECX*2+00H]
	MOV	ECX,DWORD [ESI+0D8H]
	MOVZX	ECX,BYTE [EAX+ECX*2+00H]
	AND	ECX,BYTE 07FH
	CMP	ECX,BYTE 0CH
	JE	NEAR	L_743
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	MOV	EAX,DWORD [ESI+098H]
	LEA	EAX,[EAX+ECX*2+00H]
	MOV	ECX,DWORD [ESI+0D8H]
	MOVZX	ECX,BYTE [EAX+ECX*2+00H]
	AND	ECX,BYTE 07FH
	CMP	ECX,BYTE 09H
	JE	NEAR	L_743
L_742:
;
; Line 1128:	SetVisible(wnd);
;
	BTS	DWORD [ESI+054H],06H
;
; Line 1129:	SendMessage(wnd, KEYBOARD_CURSOR, WndCol, wnd->WndRow);
;
	PUSH	DWORD [ESI+0E0H]
	MOV	EAX,DWORD [ESI+0D8H]
	SUB	EAX,DWORD [ESI+0A4H]
	PUSH	EAX
	PUSH	BYTE 018H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 1130:	if (wnd->wtop != savetop || wnd->wleft != saveleft)
;
	MOV	EAX,DWORD [ESI+094H]
	CMP	EAX,DWORD [EBP-08H]
	JNE	SHORT	L_748
	MOV	EAX,DWORD [ESI+0A4H]
	CMP	EAX,DWORD [EBP-04H]
	JE	SHORT	L_746
L_748:
;
; Line 1131:	SendMessage(wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_746:
;
; Line 1132:	}
;
L_733:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
;
; Line 1134:	static void PrevWord(WINDOW wnd)
;
_PrevWord:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
L_750:
;
; Line 1135:	{
;
;
; Line 1136:	int savetop = wnd->wtop;
;
	MOV	EDI,DWORD [ESI+094H]
;
; Line 1137:	int saveleft = wnd->wleft;
;
	MOV	EBX,DWORD [ESI+0A4H]
;
; Line 1138:	ClearVisible(wnd);
;
	AND	DWORD [ESI+054H],BYTE 0FFFFFFBFH
;
; Line 1139:	Backward(wnd);
;
	PUSH	ESI
	CALL	_Backward
	POP	ECX
	JMP	SHORT	L_751
L_753:
;
; Line 1141:	if (wnd->CurrLine == 0 && wnd->CurrCol == 0)
;
	CMP	DWORD [ESI+0DCH],BYTE 00H
	JNE	SHORT	L_754
	CMP	DWORD [ESI+0D8H],BYTE 00H
	JE	NEAR	L_752
;
; Line 1142:	break;
;
L_754:
;
; Line 1143:	Backward(wnd);
;
	PUSH	ESI
	CALL	_Backward
	POP	ECX
L_751:
;
; Line 1140:	while (isWhite(CurrChar->ch))    {
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	MOV	EAX,DWORD [ESI+098H]
	LEA	EAX,[EAX+ECX*2+00H]
	MOV	ECX,DWORD [ESI+0D8H]
	MOVZX	ECX,BYTE [EAX+ECX*2+00H]
	AND	ECX,BYTE 07FH
	CMP	ECX,BYTE 020H
	JE	SHORT	L_753
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	MOV	EAX,DWORD [ESI+098H]
	LEA	EAX,[EAX+ECX*2+00H]
	MOV	ECX,DWORD [ESI+0D8H]
	MOVZX	ECX,BYTE [EAX+ECX*2+00H]
	AND	ECX,BYTE 07FH
	CMP	ECX,BYTE 0AH
	JE	SHORT	L_753
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	MOV	EAX,DWORD [ESI+098H]
	LEA	EAX,[EAX+ECX*2+00H]
	MOV	ECX,DWORD [ESI+0D8H]
	MOVZX	ECX,BYTE [EAX+ECX*2+00H]
	AND	ECX,BYTE 07FH
	CMP	ECX,BYTE 0CH
	JE	NEAR	L_753
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	MOV	EAX,DWORD [ESI+098H]
	LEA	EAX,[EAX+ECX*2+00H]
	MOV	ECX,DWORD [ESI+0D8H]
	MOVZX	ECX,BYTE [EAX+ECX*2+00H]
	AND	ECX,BYTE 07FH
	CMP	ECX,BYTE 09H
	JE	NEAR	L_753
L_752:
	JMP	SHORT	L_756
L_758:
;
; Line 1146:	Backward(wnd);
;
	PUSH	ESI
	CALL	_Backward
	POP	ECX
L_756:
;
; Line 1145:	while (wnd->CurrCol != 0 && !isWhite(CurrChar->ch))
;
	CMP	DWORD [ESI+0D8H],BYTE 00H
	JE	NEAR	L_759
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	MOV	EAX,DWORD [ESI+098H]
	LEA	EAX,[EAX+ECX*2+00H]
	MOV	ECX,DWORD [ESI+0D8H]
	MOVZX	ECX,BYTE [EAX+ECX*2+00H]
	AND	ECX,BYTE 07FH
	CMP	ECX,BYTE 020H
	JE	NEAR	L_760
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	MOV	EAX,DWORD [ESI+098H]
	LEA	EAX,[EAX+ECX*2+00H]
	MOV	ECX,DWORD [ESI+0D8H]
	MOVZX	ECX,BYTE [EAX+ECX*2+00H]
	AND	ECX,BYTE 07FH
	CMP	ECX,BYTE 0AH
	JE	SHORT	L_760
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	MOV	EAX,DWORD [ESI+098H]
	LEA	EAX,[EAX+ECX*2+00H]
	MOV	ECX,DWORD [ESI+0D8H]
	MOVZX	ECX,BYTE [EAX+ECX*2+00H]
	AND	ECX,BYTE 07FH
	CMP	ECX,BYTE 0CH
	JE	SHORT	L_760
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	MOV	EAX,DWORD [ESI+098H]
	LEA	EAX,[EAX+ECX*2+00H]
	MOV	ECX,DWORD [ESI+0D8H]
	MOVZX	ECX,BYTE [EAX+ECX*2+00H]
	AND	ECX,BYTE 07FH
	CMP	ECX,BYTE 09H
	JNE	NEAR	L_758
L_760:
L_759:
L_757:
;
; Line 1147:	if (isWhite(CurrChar->ch))
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	MOV	EAX,DWORD [ESI+098H]
	LEA	EAX,[EAX+ECX*2+00H]
	MOV	ECX,DWORD [ESI+0D8H]
	MOVZX	ECX,BYTE [EAX+ECX*2+00H]
	AND	ECX,BYTE 07FH
	CMP	ECX,BYTE 020H
	JE	NEAR	L_763
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	MOV	EAX,DWORD [ESI+098H]
	LEA	EAX,[EAX+ECX*2+00H]
	MOV	ECX,DWORD [ESI+0D8H]
	MOVZX	ECX,BYTE [EAX+ECX*2+00H]
	AND	ECX,BYTE 07FH
	CMP	ECX,BYTE 0AH
	JE	SHORT	L_763
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	MOV	EAX,DWORD [ESI+098H]
	LEA	EAX,[EAX+ECX*2+00H]
	MOV	ECX,DWORD [ESI+0D8H]
	MOVZX	ECX,BYTE [EAX+ECX*2+00H]
	AND	ECX,BYTE 07FH
	CMP	ECX,BYTE 0CH
	JE	SHORT	L_763
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,DWORD [ESI+0DCH]
	MOV	ECX,DWORD [EAX+ECX*4+00H]
	MOV	EAX,DWORD [ESI+098H]
	LEA	EAX,[EAX+ECX*2+00H]
	MOV	ECX,DWORD [ESI+0D8H]
	MOVZX	ECX,BYTE [EAX+ECX*2+00H]
	AND	ECX,BYTE 07FH
	CMP	ECX,BYTE 09H
	JNE	SHORT	L_761
L_763:
;
; Line 1148:	Forward(wnd);
;
	PUSH	ESI
	CALL	_Forward
	POP	ECX
L_761:
;
; Line 1149:	SetVisible(wnd);
;
	BTS	DWORD [ESI+054H],06H
;
; Line 1150:	if (wnd->wleft != saveleft)
;
	CMP	DWORD [ESI+0A4H],EBX
	JE	SHORT	L_764
;
; Line 1151:	if (wnd->CurrCol >= saveleft)
;
	CMP	DWORD [ESI+0D8H],EBX
	JL	SHORT	L_766
;
; Line 1152:	if (wnd->CurrCol - saveleft < ClientWidth(wnd))
;
	MOV	EAX,DWORD [ESI+054H]
	AND	EAX,04000H
	JE	SHORT	L_770
	MOV	EAX,01H
	JMP	SHORT	L_771
L_770:
	MOV	EAX,00H
L_771:
	SHL	EAX,01H
	MOV	ECX,DWORD [ESI+020H]
	SUB	ECX,EAX
	MOV	EAX,DWORD [ESI+0D8H]
	SUB	EAX,EBX
	CMP	EAX,ECX
	JGE	SHORT	L_768
;
; Line 1153:	wnd->wleft = saveleft;
;
	MOV	DWORD [ESI+0A4H],EBX
L_768:
L_766:
L_764:
;
; Line 1154:	SendMessage(wnd, KEYBOARD_CURSOR, WndCol, wnd->WndRow);
;
	PUSH	DWORD [ESI+0E0H]
	MOV	EAX,DWORD [ESI+0D8H]
	SUB	EAX,DWORD [ESI+0A4H]
	PUSH	EAX
	PUSH	BYTE 018H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 1155:	if (wnd->wtop != savetop || wnd->wleft != saveleft)
;
	CMP	DWORD [ESI+094H],EDI
	JNE	SHORT	L_774
	CMP	DWORD [ESI+0A4H],EBX
	JE	SHORT	L_772
L_774:
;
; Line 1156:	SendMessage(wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_772:
;
; Line 1157:	}
;
L_749:
	POP	EDI
	POP	ESI
	POP	EBX
	POP	EBP
	RET
;
; Line 1160:	static void ModTextPointers(WINDOW wnd, int lineno, int var)
;
_ModTextPointers:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	MOV	ESI,DWORD [EBP+08H]
	MOV	EBX,DWORD [EBP+0CH]
L_776:
;
; Line 1161:	{
;
	JMP	SHORT	L_777
L_779:
;
; Line 1163:	*((wnd->TextPointers) + lineno++) += var ;
;
	MOV	EAX,DWORD [ESI+0C4H]
	MOV	ECX,EBX
	INC	EBX
	MOV	EDX,DWORD [EBP+010H]
	ADD	DWORD [EAX+ECX*4+00H],EDX
L_777:
;
; Line 1162:	while (lineno < wnd->wlines)
;
	CMP	EBX,DWORD [ESI+090H]
	JL	SHORT	L_779
L_778:
;
; Line 1164:	}
;
L_775:
	POP	ESI
	POP	EBX
	POP	EBP
	RET
;
; Line 1166:	static void SetAnchor(WINDOW wnd, int mx, int my)
;
_SetAnchor:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	ESI
	MOV	ESI,DWORD [EBP+08H]
L_781:
;
; Line 1167:	{
;
;
; Line 1168:	ClearTextBlock(wnd);
;
	MOV	DWORD [ESI+0B8H],00H
	MOV	DWORD [ESI+0B0H],00H
	MOV	DWORD [ESI+0B4H],00H
	MOV	DWORD [ESI+0ACH],00H
;
; Line 1170:	wnd->BlkBegLine = wnd->BlkEndLine = my;
;
	MOV	EAX,DWORD [EBP+010H]
	MOV	DWORD [ESI+0B4H],EAX
	MOV	DWORD [ESI+0ACH],EAX
;
; Line 1171:	wnd->BlkBegCol = wnd->BlkEndCol = mx;
;
	MOV	EAX,DWORD [EBP+0CH]
	MOV	DWORD [ESI+0B8H],EAX
	MOV	DWORD [ESI+0B0H],EAX
;
; Line 1172:	SendMessage(wnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	ESI
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 1173:	}
;
L_780:
	POP	ESI
	POP	EBP
	RET
SECTION _DATA

_PrevY	DD	0FFFFFFFFH
SECTION _BSS

_KeyBoardMarking	RESB	04H

_ButtonDown	RESB	04H

_TextMarking	RESB	04H

_ButtonX	RESB	04H

_ButtonY	RESB	04H
SECTION _CONST

SECTION _TEXT
[EXTERN	_Clipboard]
[EXTERN	_WindowMoving]
[EXTERN	_ChangedText]
[EXTERN	_WindowSizing]
[EXTERN	_DFrealloc]
[EXTERN	_ClientRect]
[EXTERN	_inFocus]
[EXTERN	_PasteText]
[EXTERN	_CharInView]
[EXTERN	_SearchNext]
[EXTERN	_strlen]
[EXTERN	_ClipboardLength]
[EXTERN	_tstrlen]
[EXTERN	_memcpy]
[EXTERN	_cfg]
[EXTERN	_memmove]
[EXTERN	_WriteTextLine]
[EXTERN	_CopyToClipboard]
[EXTERN	_PutWindowChar]
[EXTERN	_beep]
[EXTERN	_free]
[EXTERN	_SetStandardColor]
[EXTERN	_classdefs]
[EXTERN	_memset]
[EXTERN	_SendMessage]
[EXTERN	_SearchText]
[EXTERN	_PostMessage]
[EXTERN	_TextLineNumber]
[EXTERN	_strchr]
[EXTERN	_ReplaceText]
[EXTERN	_BuildTextPointers]
