
; HiLevel Syntax Generator Version 2.00
; Source file: c:\wdasm\hello1.asm

		TITLE	WDASM Example Program
		.286
		.MODEL	SMALL

		OPTION	NOM510
		OPTION	CASEMAP:NONE
		OPTION	PROLOGUE:cPrologue
		OPTION	EPILOGUE:cEpilogue

		INCLUDE	PROLOGUE.INC
		INCLUDE	HILEVEL.INC

		INCLUDE	HELLO.INC

		EXTERN		DefWindowProc:FAR
		EXTERN		GetMessage:FAR
		EXTERN		TranslateMessage:FAR
		EXTERN		FatalExit:FAR
		EXTERN		DispatchMessage:FAR
		EXTERN		GetVersion:FAR
		EXTERN		GetDosEnvironment:FAR
		EXTERN		LocalAlloc:FAR
		EXTERN		LocalRealloc:FAR
		EXTERN		LocalFree:FAR
		EXTERN		FatalAppExit:FAR
		EXTERN		LocalSize:FAR
		EXTERN		UpdateWindow:FAR
		EXTERN		GlobalRealloc:FAR
		EXTERN		GlobalSize:FAR
		EXTERN		InitApp:FAR
		EXTERN		PostQuitMessage:FAR
		EXTERN		LockSegment:FAR
		EXTERN		UnlockSegment:FAR
		EXTERN		WaitEvent:FAR
		EXTERN		GetClientRect:FAR
		EXTERN		GetModuleFileName:FAR
		EXTERN		BeginPaint:FAR
		EXTERN		EndPaint:FAR
		EXTERN		CreateWindow:FAR
		EXTERN		ShowWindow:FAR
		EXTERN		LoadCursor:FAR
		EXTERN		LoadIcon:FAR
		EXTERN		RegisterClass:FAR
		EXTERN		InitTask:FAR
		EXTERN		GetStockObject:FAR
		EXTERN		DrawText:FAR
		EXTERN		Dos3Call:FAR
		EXTERN		__winflags:FAR


		.CODE

Procedure0000	PROC	NEAR C
		ADD	BYTE PTR [BX+SI], AL
		ADD	BYTE PTR [BX+SI], AL
		ADD	BYTE PTR [BX+SI], AL
		ADD	BYTE PTR [BX+SI], AL
		ADD	BYTE PTR [BX+SI], AL
		ADD	BYTE PTR [BX+SI], AL
		ADD	BYTE PTR [BX+SI], AL
		ADD	BYTE PTR [BX+SI], AL
Procedure0000	ENDP


Procedure0010	PROC	NEAR PASCAL <NOLOADDS, NOINCBP, FORCEFRAME, CHECKSTACK>, par12:WORD, par10:WORD, par8:WORD, par6:WORD, par4:WORD
		LOCAL	local2:WORD, local4:WORD, local6:WORD,	\
			local8:WORD, local10:WORD, local12:WORD, local14:WORD,	\
			local16:WORD, local18:WORD, local20:WORD, local22:WORD,	\
			local24:WORD, local26:WORD, local28:WORD, local30:WORD,	\
			local32:WORD, local34:WORD, local36:WORD, local38:WORD,	\
			local40:WORD, local42:WORD, local44:WORD, local46:WORD
		.IF	(WORD PTR par10 == 0)
L0022H:			MOV	WORD PTR local46, 0003H
			MOV	WORD PTR local44, LROFFSET WNDPROC
			MOV	WORD PTR local42, SEG WNDPROC
			MOV	WORD PTR local40, 0000H
			MOV	WORD PTR local38, 0000H
			MOV	AX, WORD PTR par12
			MOV	WORD PTR local36, AX
			cCall	<FAR PTR LoadIcon, 0, 0, 7F00H>
			MOV	WORD PTR local34, AX
			cCall	<FAR PTR LoadCursor, 0, 0, 7F00H>
			MOV	WORD PTR local32, AX
			cCall	<FAR PTR GetStockObject, 0>
			MOV	WORD PTR local30, AX
			MOV	WORD PTR local28, 0000H
			MOV	WORD PTR local26, 0000H
			MOV	AX, 0010H
			MOV	DX, DS
			MOV	WORD PTR local24, AX
			MOV	WORD PTR local22, DX
			LEA	AX, WORD PTR local46
			MOV	DX, SS
			cCall	<FAR PTR RegisterClass, DX, AX>
		.ENDIF
L008AH:		MOV	AX, 0010H
		MOV	DX, DS
		PUSH	DX
		PUSH	AX
		MOV	AX, 00C2H
		MOV	DX, DS
		cCall	<FAR PTR CreateWindow, DX, AX, 00CFH, 0, 8000H, 8000H, 8000H, 8000H, 0, 0, WORD PTR par12, 0, 0>
		MOV	WORD PTR local2, AX
		cCall	<FAR PTR ShowWindow, AX, WORD PTR par4>
		cCall	<FAR PTR UpdateWindow, WORD PTR local2>
L00CDH:		LEA	AX, WORD PTR local20
		MOV	DX, SS
		cCall	<FAR PTR GetMessage, DX, AX, 0, 0, 0>
		.IF	(AX)
			LEA	AX, WORD PTR local20
			MOV	DX, SS
			cCall	<FAR PTR TranslateMessage, DX, AX>
			LEA	AX, WORD PTR local20
			MOV	DX, SS
			cCall	<FAR PTR DispatchMessage, DX, AX>
			JMP	SHORT L00CDH
			NOP
		.ENDIF
L00FEH:		MOV	AX, WORD PTR local16
		RET
Procedure0010	ENDP


Procedure0105	PROC	NEAR C
		NOP
Procedure0105	ENDP


WNDPROC	PROC	FAR PASCAL PUBLIC <LOADDS, INCBP, FORCEFRAME, CHECKSTACK>, par14:WORD, par12:WORD, par10:WORD, par8:WORD, par6:WORD
		LOCAL	local2:WORD, local4:WORD, local6:WORD,	\
			local8:WORD, local10:WORD, local12:WORD, local14:WORD,	\
			local16:WORD, local18:WORD, local20:WORD, local22:WORD,	\
			local24:WORD, local26:WORD, local28:WORD, local30:WORD,	\
			local32:WORD, local34:WORD, local36:WORD, local38:WORD,	\
			local40:WORD, local42:WORD, local44:WORD
		PUSH	SI
		PUSH	DI
		MOV	SI, WORD PTR par14
		MOV	AX, WORD PTR par12
		JMP	NEAR PTR L017AH
		NOP
L0122H:		PUSH	SI
		LEA	AX, WORD PTR local36
		MOV	DX, SS
		cCall	<FAR PTR BeginPaint, DX, AX>
		MOV	DI, AX
		PUSH	SI
		LEA	AX, WORD PTR local44
		MOV	DX, SS
		cCall	<FAR PTR GetClientRect, DX, AX>
		PUSH	DI
		MOV	AX, 00DFH
		MOV	DX, DS
		PUSH	DX
		PUSH	AX
		PUSH	-1
		LEA	AX, WORD PTR local44
		MOV	DX, SS
		cCall	<FAR PTR DrawText, DX, AX, 37>
		PUSH	SI
		LEA	AX, WORD PTR local36
		MOV	DX, SS
		cCall	<FAR PTR EndPaint, DX, AX>
		XOR	AX, AX
		XOR	DX, DX
		JMP	SHORT L019FH
		NOP
L016AH:		cCall	<FAR PTR PostQuitMessage, 0>
		XOR	AX, AX
		XOR	DX, DX
		JMP	SHORT L019FH
		NOP
		JMP	SHORT L0187H
L017AH:		CMP	AX, 0002H
		JZ	L016AH
		.IF	(AX == 000FH)
			JMP	NEAR PTR L0122H
		.ENDIF
L0187H:		cCall	<FAR PTR DefWindowProc, SI, WORD PTR par12, WORD PTR par10, WORD PTR par8, WORD PTR par6>
		JMP	SHORT L019FH
		NOP
		MOV	WORD PTR par14, SI
L019FH:		POP	DI
		POP	SI
		RET
WNDPROC	ENDP


L01ACH		DW	LROFFSET __winflags
Procedure01AC	PROC	NEAR C
L01AEH:		MOV	AL, -1
		cCall	<NEAR PTR Procedure034E, AX>
L01B4H::	XOR	BP, BP
		cCall	<FAR PTR InitTask, BP>
		OR	AX, AX
		JZ	L01AEH
		MOV	WORD PTR D0064H, ES
		ADD	CX, 0100H
		JB	L01AEH
		MOV	WORD PTR D002EH, CX
		MOV	WORD PTR D0030H, SI
		MOV	WORD PTR D0032H, DI
		MOV	WORD PTR D0034H, BX
		MOV	WORD PTR D0036H, ES
		MOV	WORD PTR D0038H, DX
		CALL	FAR PTR GetVersion
		MOV	WORD PTR D0066H, AX
		MOV	AH, 48
		.IF	(WORD PTR CS:L01ACH & SWORD PTR 0001H)
			CALL	FAR PTR Dos3Call
			JMP	SHORT L01FEH
		.ENDIF
L01FCH:		INT	0021H
L01FEH:		MOV	WORD PTR D0068H, AX
		.IF	( !(WORD PTR CS:L01ACH & 0001H))
			MOV	AL, 0
			MOV	BYTE PTR D006BH, AL
		.ENDIF
L020FH:		XOR	AX, AX
		cCall	<FAR PTR WaitEvent, AX>
		cCall	<FAR PTR InitApp, WORD PTR D0032H>
		OR	AX, AX
		JZ	L01AEH
		CALL	NEAR PTR Procedure0268
		CALL	NEAR PTR Procedure047E
		CALL	NEAR PTR Procedure05FC
		CALL	NEAR PTR Procedure085C
		cCall	<NEAR PTR Procedure024C, WORD PTR D00A0H, WORD PTR D009EH, WORD PTR D009CH>
		ADD	SP, 6
		cCall	<NEAR PTR Procedure0347, AX>
		MOV	AX, 0015H
		JMP	NEAR PTR L0683H
Procedure01AC	ENDP


;		Missing MOV SP,BP and POP BP in epilogue.
Procedure024C	PROC	NEAR C
		PUSH	BP
		MOV	BP, SP
		cCall	<NEAR PTR Procedure0010, WORD PTR D0032H, WORD PTR D0030H, WORD PTR D0036H, WORD PTR D0034H, WORD PTR D0038H>
		POP	BP
		RET
Procedure024C	ENDP


Procedure0268	PROC	NEAR C
		MOV	AX, 3500H
		.IF	(WORD PTR CS:L01ACH & SWORD PTR 0001H)
			CALL	FAR PTR Dos3Call
			JMP	SHORT L027DH
		.ENDIF
L027BH:		INT	0021H
L027DH:		MOV	WORD PTR D0050H, BX
		MOV	WORD PTR D0052H, ES
		PUSH	CS
		POP	DS
		MOV	AX, 2500H
		MOV	DX, 067EH
		.IF	(WORD PTR CS:L01ACH & SWORD PTR 0001H)
			CALL	FAR PTR Dos3Call
			JMP	SHORT L029FH
		.ENDIF
L029DH:		INT	0021H
L029FH:		PUSH	SS
		POP	DS
		MOV	CX, WORD PTR D00B8H
		JCXZ	L02D0H
		MOV	ES, WORD PTR D0064H
		MOV	SI, WORD PTR ES:D002CH
		MOV	AX, WORD PTR D00BAH
		MOV	DX, WORD PTR D00BCH
		XOR	BX, BX
		CALL	DWORD PTR D00B6H
		JAE	L02C2H
		JMP	NEAR PTR L0424H
L02C2H:		MOV	AX, WORD PTR D00BEH
		MOV	DX, WORD PTR D00C0H
		MOV	BX, 0003H
		CALL	DWORD PTR D00B6H
L02D0H:		MOV	ES, WORD PTR D0064H
		MOV	CX, WORD PTR ES:D002CH
		JCXZ	L0319H
		MOV	ES, CX
		XOR	DI, DI
L02DFH:		.IF	(BYTE PTR ES:[DI] != 0)
			MOV	CX, 000DH
			MOV	SI, 0042H
			REPE CMPSB
			JZ	L02FAH
			MOV	CX, 7FFFH
			XOR	AX, AX
			REPNE SCASB
			JNZ	L0319H
			JMP	SHORT L02DFH
L02FAH:			PUSH	ES
			PUSH	DS
			POP	ES
			POP	DS
			MOV	SI, DI
			MOV	DI, 0074H
			MOV	CL, 4
L0305H:			LODSB
			SUB	AL, 65
			JB	L0317H
			SHL	AL, CL
			XCHG	DX, AX
			LODSB
			SUB	AL, 65
			JB	L0317H
			OR	AL, DL
			STOSB
			JMP	SHORT L0305H
L0317H:			PUSH	SS
			POP	DS
		.ENDIF
L0319H:		MOV	SI, 00C2H
		MOV	DI, 00C2H
		CALL	NEAR PTR Procedure03EB
		MOV	SI, 00C2H
		MOV	DI, 00C2H
		CALL	NEAR PTR Procedure03FA
		MOV	SI, 00C2H
		MOV	DI, 00C2H
		CALL	NEAR PTR Procedure03EB
		MOV	SI, 00C2H
		MOV	DI, 00C2H
		CALL	NEAR PTR Procedure03EB
		MOV	SI, 00C2H
		MOV	DI, 00C2H
		CALL	NEAR PTR Procedure03FA
		RET
Procedure0268	ENDP


;		Missing MOV SP,BP and POP BP in epilogue.
Procedure0347	PROC	NEAR C
		PUSH	BP
		MOV	BP, SP
		XOR	CX, CX
		JMP	SHORT L0368H
Procedure0347	ENDP


;		Missing MOV SP,BP and POP BP in epilogue.
Procedure034E	PROC	NEAR C
		PUSH	BP
		MOV	BP, SP
		MOV	CX, 0001H
		JMP	SHORT L0368H
		PUSH	BP
		MOV	BP, SP
		PUSH	SI
		PUSH	DI
		MOV	CX, 0100H
		JMP	SHORT L0368H
		PUSH	BP
		MOV	BP, SP
		PUSH	SI
		PUSH	DI
		MOV	CX, 0101H
L0368H::	MOV	BYTE PTR D00A9H, CH
		PUSH	CX
		OR	CL, CL
		JNZ	L038DH
		MOV	SI, 024CH
		MOV	DI, 024CH
		CALL	NEAR PTR Procedure03EB
		MOV	SI, 00C2H
		MOV	DI, 00C2H
		CALL	NEAR PTR Procedure03EB
		MOV	SI, WORD PTR [BP+4]
		cCall	<NEAR PTR Procedure085C, SI>
		ADD	SP, 2
L038DH:		MOV	SI, 00C2H
		MOV	DI, 00C2H
		CALL	NEAR PTR Procedure03EB
		MOV	SI, 00C2H
		MOV	DI, 00C2H
		CALL	NEAR PTR Procedure03FA
		CALL	NEAR PTR Procedure03C2
		POP	AX
		OR	AH, AH
		JNZ	L03BEH
		MOV	AX, WORD PTR [BP+4]
		MOV	AH, 76
		.IF	(WORD PTR CS:L01ACH & SWORD PTR 0001H)
			CALL	FAR PTR Dos3Call
			JMP	SHORT L03BEH
		.ENDIF
L03BCH:		INT	0021H
L03BEH:		POP	DI
		POP	SI
		POP	BP
		RET
Procedure034E	ENDP


Procedure03C2	PROC	NEAR C
		MOV	CX, WORD PTR D00B8H
		JCXZ	L03CFH
		MOV	BX, 0002H
		CALL	DWORD PTR D00B6H
L03CFH:		PUSH	DS
		LDS	DX, DWORD PTR D0050H
		MOV	AX, 2500H
		.IF	(WORD PTR CS:L01ACH & SWORD PTR 0001H)
			CALL	FAR PTR Dos3Call
			JMP	SHORT L03E9H
		.ENDIF
L03E7H:		INT	0021H
L03E9H:		POP	DS
		RET
Procedure03C2	ENDP


Procedure03EB	PROC	NEAR C
L03EBH:
		.IF	(SI < DI)
			DEC	DI
			DEC	DI
			MOV	CX, WORD PTR [DI]
			JCXZ	L03EBH
			CALL	CX
			JMP	SHORT L03EBH
		.ENDIF
L03F9H:		RET
Procedure03EB	ENDP


Procedure03FA	PROC	NEAR C
L03FAH:
		.IF	(SI < DI)
			SUB	DI, 4
			MOV	AX, WORD PTR [DI]
			OR	AX, WORD PTR [DI+2]
			JZ	L03FAH
			CALL	DWORD PTR [DI]
			JMP	SHORT L03FAH
		.ENDIF
L040CH:		RET
Procedure03FA	ENDP


L040DH		DB	0000H
Procedure040D	PROC	NEAR C
Procedure040D	ENDP


Procedure040E	PROC	NEAR C <NOLOADDS, NOINCBP, FORCEFRAME, NOCHECKSTACK>
		MOV	AX, 00FCH
		cCall	<NEAR PTR Procedure06ED, AX>
		MOV	AX, 00FFH
		cCall	<NEAR PTR Procedure06ED, AX>
		RET
Procedure040E	ENDP


L0423H		DB	0000H
Procedure0423	PROC	NEAR C
L0424H::	MOV	AX, 0002H
		JMP	NEAR PTR L0683H
Procedure0423	ENDP


_aNchkstk	PROC	NEAR C
		POP	BX
		INC	AX
		AND	AL, -2
		SUB	AX, SP
		JAE	L0477H
		NEG	AX
		CMP	WORD PTR SS:D000AH, AX
		JA	L0477H
		.IF	(WORD PTR SS:D000CH > AX)
			MOV	WORD PTR D000CH, AX
		.ENDIF
L0446H:		MOV	SP, AX
		JMP	BX
		POP	BX
		POP	DX
		INC	AX
		AND	AL, -2
		SUB	AX, SP
		JAE	L046CH
		NEG	AX
		CMP	WORD PTR SS:D000AH, AX
		JA	L046CH
		.IF	(WORD PTR SS:D000CH > AX)
			MOV	WORD PTR D000CH, AX
		.ENDIF
L0467H:		MOV	SP, AX
		PUSH	DX
		PUSH	BX
		RETF
_aNchkstk	ENDP


L047DH		DB	0000H
Procedure046C	PROC	NEAR C
L046CH::	MOV	DX, WORD PTR SS:D00ACH
		INC	DX
		JZ	L0477H
		JMP	WORD PTR D00ACH
L0477H::	MOV	AX, 0000H
		JMP	NEAR PTR L0683H
Procedure046C	ENDP


L05FBH		DB	0000H
Procedure047E	PROC	NEAR C
		POP	WORD PTR D00AEH
		MOV	AX, 0104H
		MOV	CX, 0008H
		CALL	NEAR PTR Procedure071E
		MOV	WORD PTR D00A4H, DX
		MOV	WORD PTR D00A2H, AX
		PUSH	DX
		PUSH	AX
		PUSH	WORD PTR D0032H
		PUSH	DX
		PUSH	AX
		MOV	AX, 0104H
		cCall	<FAR PTR GetModuleFileName, AX>
		POP	BX
		POP	ES
		ADD	BX, AX
		MOV	BYTE PTR ES:[BX], 0
		MOV	DX, 0001H
		MOV	DI, 0001H
		MOV	SI, 0081H
		MOV	DS, WORD PTR D0064H
L04B8H:		LODSB
		CMP	AL, 32
		JZ	L04B8H
		CMP	AL, 9
		JZ	L04B8H
		.IF	(AL != 13)
			OR	AL, AL
			JZ	L0534H
			INC	DI
L04CAH:			DEC	SI
L04CBH:			LODSB
			CMP	AL, 32
			JZ	L04B8H
			CMP	AL, 9
			JZ	L04B8H
			CMP	AL, 13
			JZ	L0534H
			OR	AL, AL
			JZ	L0534H
			.IF	(AL != 34)
				.IF	(AL != 92)
					INC	DX
					JMP	SHORT L04CBH
				.ENDIF
L04E7H:				XOR	CX, CX
L04E9H:				INC	CX
				LODSB
				CMP	AL, 92
				JZ	L04E9H
				.IF	(AL != 34)
					ADD	DX, CX
					JMP	SHORT L04CAH
				.ENDIF
L04F7H:				MOV	AX, CX
				SHR	CX, 1
				ADC	DX, CX
				TEST	AL, 1
				JNZ	L04CBH
				JMP	SHORT L0504H
L0503H:				DEC	SI
			.ENDIF
L0504H:			LODSB
			CMP	AL, 13
			JZ	L0534H
			OR	AL, AL
			JZ	L0534H
			CMP	AL, 34
			JZ	L04CBH
			.IF	(AL != 92)
				INC	DX
				JMP	SHORT L0504H
			.ENDIF
L0518H:			XOR	CX, CX
L051AH:			INC	CX
			LODSB
			CMP	AL, 92
			JZ	L051AH
			.IF	(AL != 34)
				ADD	DX, CX
				JMP	SHORT L0503H
			.ENDIF
L0528H:			MOV	AX, CX
			SHR	CX, 1
			ADC	DX, CX
			TEST	AL, 1
			JNZ	L0504H
			JMP	SHORT L04CBH
		.ENDIF
L0534H:		PUSH	SS
		POP	DS
		MOV	WORD PTR D009CH, DI
		ADD	DX, DI
		INC	DI
		SHL	DI, 1
		ADD	DX, DI
		INC	DX
		AND	DL, -2
		SUB	SP, DX
		MOV	AX, SP
		MOV	WORD PTR D009EH, AX
		MOV	BX, AX
		ADD	DI, BX
		PUSH	SS
		POP	ES
		LDS	SI, DWORD PTR D00A2H
		MOV	WORD PTR SS:[BX], SI
		INC	BX
		INC	BX
		MOV	DS, WORD PTR SS:D0064H
		MOV	SI, 0081H
		JMP	SHORT L0568H
L0565H:		XOR	AX, AX
		STOSB
L0568H:		LODSB
		CMP	AL, 32
		JZ	L0568H
		CMP	AL, 9
		JZ	L0568H
		.IF	(AL != 13)
			OR	AL, AL
			JZ	L05F1H
			MOV	WORD PTR SS:[BX], DI
			INC	BX
			INC	BX
L057EH:			DEC	SI
L057FH:			LODSB
			CMP	AL, 32
			JZ	L0565H
			CMP	AL, 9
			JZ	L0565H
			.IF	(AL != 13)
				OR	AL, AL
				JZ	L05EEH
				.IF	(AL != 34)
					.IF	(AL != 92)
						STOSB
						JMP	SHORT L057FH
					.ENDIF
L059BH:					XOR	CX, CX
L059DH:					INC	CX
					LODSB
					CMP	AL, 92
					JZ	L059DH
					.IF	(AL != 34)
						MOV	AL, 92
						REP STOSB
						JMP	SHORT L057EH
					.ENDIF
L05ADH:					MOV	AL, 92
					SHR	CX, 1
					REP STOSB
					JAE	L05BBH
					MOV	AL, 34
					STOSB
					JMP	SHORT L057FH
L05BAH:					DEC	SI
				.ENDIF
L05BBH:				LODSB
				CMP	AL, 13
				JZ	L05EEH
				OR	AL, AL
				JZ	L05EEH
				CMP	AL, 34
				JZ	L057FH
				.IF	(AL != 92)
					STOSB
					JMP	SHORT L05BBH
				.ENDIF
L05CFH:				XOR	CX, CX
L05D1H:				INC	CX
				LODSB
				CMP	AL, 92
				JZ	L05D1H
				.IF	(AL != 34)
					MOV	AL, 92
					REP STOSB
					JMP	SHORT L05BAH
				.ENDIF
L05E1H:				MOV	AL, 92
				SHR	CX, 1
				REP STOSB
				JAE	L057FH
				MOV	AL, 34
				STOSB
				JMP	SHORT L05BBH
			.ENDIF
L05EEH:			XOR	AX, AX
			STOSB
		.ENDIF
L05F1H:		PUSH	SS
		POP	DS
		MOV	WORD PTR [BX], 0000H
		JMP	WORD PTR D00AEH
Procedure047E	ENDP


;		Missing MOV SP,BP and POP BP in epilogue.
Procedure05FC	PROC	NEAR C
		PUSH	BP
		MOV	BP, SP
		cCall	<FAR PTR GetDosEnvironment, DS>
		OR	AX, AX
		JZ	L060BH
		MOV	DX, AX
L060BH:		MOV	BX, DX
		MOV	ES, DX
		XOR	AX, AX
		XOR	SI, SI
		XOR	DI, DI
		MOV	CX, 0FFFFH
		OR	BX, BX
		JZ	L062AH
		.IF	(BYTE PTR ES:D0000H != 0)
L0624H:			REPNE SCASB
			INC	SI
			SCASB
			JNZ	L0624H
		.ENDIF
L062AH:		MOV	AX, DI
		INC	AX
		AND	AL, -2
		INC	SI
		MOV	DI, SI
		SHL	SI, 1
		MOV	CX, 0009H
		CALL	NEAR PTR Procedure071E
		PUSH	AX
		MOV	AX, SI
		CALL	NEAR PTR Procedure071E
		MOV	WORD PTR D00A0H, AX
		PUSH	ES
		PUSH	DS
		POP	ES
		POP	DS
		MOV	CX, DI
		MOV	BX, AX
		XOR	SI, SI
		POP	DI
		DEC	CX
		JCXZ	L0677H
L0651H:		MOV	AX, WORD PTR [SI]
		.IF	(AX == WORD PTR SS:D0042H)
			PUSH	CX
			PUSH	SI
			PUSH	DI
			MOV	DI, 0042H
			MOV	CX, 0006H
			REPE CMPSW
			POP	DI
			POP	SI
			POP	CX
			JZ	L066FH
		.ENDIF
L066AH:		MOV	WORD PTR ES:[BX], DI
		INC	BX
		INC	BX
L066FH:		LODSB
		STOSB
		OR	AL, AL
		JNZ	L066FH
		LOOP	L0651H
L0677H:		MOV	WORD PTR ES:[BX], CX
		POP	DS
		POP	BP
		RET
Procedure05FC	ENDP


L067DH		DB	0000H
Procedure067D	PROC	NEAR C
		PUSH	SS
		POP	DS
		MOV	AX, 0003H
L0683H::	cCall	<NEAR PTR Procedure040E, AX, AX>
		CALL	NEAR PTR Procedure06ED
		CALL	NEAR PTR Procedure06C2
		XOR	BX, BX
		OR	AX, AX
		JZ	L06B1H
		MOV	DI, AX
		MOV	AX, 0009H
		.IF	(BYTE PTR [DI] == 77)
			MOV	AX, 000FH
		.ENDIF
L06A1H:		ADD	DI, AX
		PUSH	DI
		PUSH	DS
		POP	ES
		MOV	AL, 13
		MOV	CX, 0022H
		REPNE SCASB
		MOV	BYTE PTR [DI-1], BL
		POP	AX
L06B1H:		cCall	<FAR PTR FatalAppExit, BX, DS, AX>
		MOV	AX, 00FFH
		cCall	<FAR PTR FatalExit, AX>
Procedure067D	ENDP


Procedure06C2	PROC	NEAR PASCAL <NOLOADDS, NOINCBP, FORCEFRAME, NOCHECKSTACK>, par4:WORD
		PUSH	SI
		PUSH	DI
		PUSH	DS
		POP	ES
		MOV	DX, WORD PTR par4
		MOV	SI, 0102H
L06CFH:		LODSW
		.IF	(AX != DX)
			INC	AX
			XCHG	SI, AX
			JZ	L06E4H
			XCHG	DI, AX
			XOR	AX, AX
			MOV	CX, 0FFFFH
			REPNE SCASB
			MOV	SI, DI
			JMP	SHORT L06CFH
		.ENDIF
L06E4H:		XCHG	SI, AX
		POP	DI
		POP	SI
		RET
Procedure06C2	ENDP


Procedure06ED	PROC	NEAR PASCAL <NOLOADDS, NOINCBP, FORCEFRAME, NOCHECKSTACK>, par4:WORD
		PUSH	DI
		.IF	(WORD PTR D00B2H != 0)
			cCall	<NEAR PTR Procedure06C2, WORD PTR par4>
			OR	AX, AX
			JZ	L0716H
			XCHG	DX, AX
			MOV	DI, DX
			XOR	AX, AX
			MOV	CX, 0FFFFH
			REPNE SCASB
			NOT	CX
			DEC	CX
			MOV	BX, WORD PTR D006EH
			CALL	NEAR PTR Procedure0861
		.ENDIF
L0716H:		POP	DI
		RET
Procedure06ED	ENDP


L071DH		DB	0000H
Procedure071D	PROC	NEAR C
Procedure071D	ENDP


Procedure071E	PROC	NEAR C <NOLOADDS, NOINCBP, FORCEFRAME, NOCHECKSTACK>
		PUSH	BX
		PUSH	ES
		PUSH	CX
		MOV	CX, 1000H
		XCHG	CX, WORD PTR D00B0H
		cCall	<NEAR PTR Procedure0868, CX, AX>
		POP	BX
		POP	WORD PTR D00B0H
		POP	CX
		MOV	DX, DS
		OR	AX, AX
		JZ	L0740H
		POP	ES
		POP	BX
		JMP	SHORT L0745H
L0740H:		MOV	AX, CX
		JMP	NEAR PTR L0683H
L0745H:		RET
Procedure071E	ENDP


L0749H		DB	0000H
Procedure0749	PROC	NEAR C
		PUSH	CX
		PUSH	DI
		.IF	(BYTE PTR [BX+2] & SBYTE PTR 1)
			CALL	NEAR PTR Procedure083C
			MOV	DI, SI
			MOV	AX, WORD PTR [SI]
			.IF	(AL & SBYTE PTR 1)
				SUB	CX, AX
				DEC	CX
			.ENDIF
L0760H:			INC	CX
			INC	CX
			MOV	SI, WORD PTR [BX+4]
			OR	SI, SI
			JZ	L07B5H
			ADD	CX, SI
			JAE	L0776H
			XOR	AX, AX
			MOV	DX, 0FFF0H
			JCXZ	L07A4H
			JMP	SHORT L07B5H
L0776H:			PUSH	SS
			POP	ES
			MOV	AX, WORD PTR D00B0H
			.IF	(AX != 1000H)
				MOV	DX, 8000H
L0784H:				.IF	(DX >= AX)
					SHR	DX, 1
					JNZ	L0784H
					JMP	SHORT L07B0H
				.ENDIF
L078EH:				CMP	DX, 8
				JB	L07B0H
				SHL	DX, 1
				MOV	AX, DX
			.ENDIF
L0797H:			DEC	AX
			MOV	DX, AX
			ADD	AX, CX
			JAE	L07A0H
			XOR	AX, AX
L07A0H:			NOT	DX
			AND	AX, DX
L07A4H:			cCall	<NEAR PTR Procedure07D6, DX>
			POP	DX
			JAE	L07B8H
			CMP	DX, -16
			JZ	L07B5H
L07B0H:			MOV	AX, 0010H
			JMP	SHORT L0797H
		.ENDIF
L07B5H:		STC
		JMP	SHORT L07D3H
L07B8H:		MOV	DX, AX
		SUB	DX, WORD PTR ES:[BX+4]
		MOV	WORD PTR [BX+4], AX
		MOV	WORD PTR [BX+10], DI
		MOV	SI, WORD PTR [BX+12]
		DEC	DX
		MOV	WORD PTR [SI], DX
		INC	DX
		ADD	SI, DX
		MOV	WORD PTR [SI], 0FFFEH
		MOV	WORD PTR [BX+12], SI
L07D3H:		POP	DI
		POP	CX
		RET
Procedure0749	ENDP


Procedure07D6	PROC	NEAR C
		MOV	DX, AX
		.IF	( !(BYTE PTR [BX+2] & 4))
L07E0H:			PUSH	DX
			PUSH	CX
			PUSH	BX
			MOV	SI, WORD PTR [BX+6]
			MOV	BX, WORD PTR CS:L01ACH
			XOR	CX, CX
			OR	DX, DX
			JNZ	L07F8H
			TEST	BX, 0010H
			JNZ	L0837H
			INC	CX
L07F8H:			MOV	AX, 0022H
			.IF	( !(BX & 0001H))
				MOV	AX, 0020H
			.ENDIF
L0804H:			cCall	<FAR PTR GlobalRealloc, SI, CX, DX, AX>
			OR	AX, AX
			JZ	L0837H
			CMP	AX, SI
			JNZ	L0831H
			cCall	<FAR PTR GlobalSize, SI>
			OR	DX, AX
			JZ	L0831H
			POP	BX
			POP	CX
			POP	DX
			MOV	AX, DX
			.IF	(BYTE PTR [BX+2] & SBYTE PTR 4)
				DEC	DX
				MOV	WORD PTR [BX-2], DX
			.ENDIF
L082EH:			CLC
			JMP	SHORT L083BH
		.ENDIF
L0831H:		MOV	AX, 0012H
		JMP	NEAR PTR L0683H
L0837H:		POP	BX
		POP	CX
		POP	DX
		STC
L083BH:		RET
Procedure07D6	ENDP


Procedure083C	PROC	NEAR C
		PUSH	DI
		MOV	SI, WORD PTR [BX+10]
		.IF	(SI == WORD PTR [BX+12])
			MOV	SI, WORD PTR [BX+8]
		.ENDIF
L0848H:		LODSW
		.IF	(AX != -2)
			MOV	DI, SI
			AND	AL, -2
			ADD	SI, AX
			JMP	SHORT L0848H
		.ENDIF
L0856H:		DEC	DI
		DEC	DI
		MOV	SI, DI
		POP	DI
		RET
Procedure083C	ENDP


;		Missing MOV SP,BP and POP BP in epilogue.
Procedure085C	PROC	NEAR C
		PUSH	BP
		MOV	BP, SP
		POP	BP
		RET
Procedure085C	ENDP


L0867H		DB	0000H
Procedure0861	PROC	NEAR C
		MOV	AX, 0014H
		JMP	NEAR PTR L0683H
Procedure0861	ENDP


Procedure0868	PROC	NEAR C <NOLOADDS, NOINCBP, FORCEFRAME, NOCHECKSTACK>, par4:WORD
		LOCAL	local2:WORD, local4:WORD
		MOV	AX, 0FFFFH
		cCall	<FAR PTR LockSegment, AX>
		MOV	AX, 0020H
		PUSH	AX
		.IF	(WORD PTR par4 != 0)
			MOV	AX, WORD PTR par4
			JMP	SHORT L0889H
		.ENDIF
L0886H:		MOV	AX, 0001H
L0889H:		cCall	<FAR PTR LocalAlloc, AX>
		MOV	WORD PTR local2, AX
		MOV	AX, 0FFFFH
		cCall	<FAR PTR UnlockSegment, AX>
		MOV	AX, WORD PTR local2
		RET
Procedure0868	ENDP


Procedure08A2	PROC	NEAR C <NOLOADDS, NOINCBP, FORCEFRAME, NOCHECKSTACK>, par4:WORD
		PUSH	WORD PTR par4
		CALL	FAR PTR LocalFree
		RET
Procedure08A2	ENDP


Procedure08B1	PROC	NEAR C <NOLOADDS, NOINCBP, FORCEFRAME, NOCHECKSTACK>, par6:WORD, par4:WORD
		LOCAL	local2:WORD, local4:WORD
		.IF	(WORD PTR par4 == 0)
			cCall	<NEAR PTR Procedure0868, WORD PTR par6>
			ADD	SP, 2
			JMP	SHORT L08FEH
			NOP
		.ENDIF
L08CAH:		MOV	AX, 0FFFFH
		cCall	<FAR PTR LockSegment, AX>
		PUSH	WORD PTR par4
		.IF	(WORD PTR par6 != 0)
			MOV	AX, WORD PTR par6
			JMP	SHORT L08E5H
			NOP
		.ENDIF
L08E2H:		MOV	AX, 0001H
L08E5H:		PUSH	AX
		MOV	AX, 0062H
		cCall	<FAR PTR LocalRealloc, AX>
		MOV	WORD PTR local2, AX
		MOV	AX, 0FFFFH
		cCall	<FAR PTR UnlockSegment, AX>
		MOV	AX, WORD PTR local2
L08FEH:		RET
Procedure08B1	ENDP


Procedure0902	PROC	NEAR C <NOLOADDS, NOINCBP, FORCEFRAME, NOCHECKSTACK>, par4:WORD
		PUSH	WORD PTR par4
		CALL	FAR PTR LocalSize
		RET
Procedure0902	ENDP


Procedure0911	PROC	NEAR C
		NOP
Procedure0911	ENDP


		END	L01B4H
