	SECTION _TEXT CLASS=CODE USE32
	SECTION _DATA CLASS=DATA USE32
	SECTION _BSS  CLASS=BSS USE32
	SECTION _CONST  CLASS=CONST USE32
	SECTION _STRING  CLASS=STRING USE32
	SECTION cstartup CLASS=INITDATA USE32
	SECTION crundown CLASS=EXITDATA USE32
	SECTION cppinit  CLASS=CPPINIT USE32
	SECTION cppexit  CLASS=CPPEXIT USE32
	GROUP DGROUP _DATA _BSS _CONST _STRING

SECTION _TEXT
;
; Line 9:	{
;
_getdta:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 034H
	PUSH	ESI
	LEA	ESI,[EBP+0FFFFFFCCH]
;
; Line 11:		regs.b.ah = 0x2f;
;
	MOV	BYTE [ESI+01DH],02FH
;
; Line 12:		regs.h.flags = 0x72;
;
	MOV	WORD [ESI+020H],072H
;
; Line 13:		regs.h.ss = 0;
;
	MOV	WORD [ESI+030H],00H
;
; Line 14:		regs.h.sp = 0;
;
	MOV	WORD [ESI+02EH],00H
;
; Line 15:		dpmi_simulate_real_interrupt(0x21,&regs);
;
	PUSH	ESI
	PUSH	BYTE 021H
	CALL	_dpmi_simulate_real_interrupt
	ADD	ESP,BYTE 08H
;
; Line 16:		return (regs.h.es << 16) + regs.h.bx;
;
	MOVZX	EAX,WORD [ESI+022H]
	SAL	EAX,010H
	MOVZX	ECX,WORD [ESI+010H]
	ADD	EAX,ECX
L_1:
	POP	ESI
	MOV	ESP,EBP
	POP	EBP
	RET
;
; Line 20:	{
;
_setdta:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 034H
	PUSH	EBX
	PUSH	ESI
	LEA	ESI,[EBP+0FFFFFFCCH]
	MOV	EBX,DWORD [EBP+08H]
;
; Line 22:		regs.b.ah = 0x1a;
;
	MOV	BYTE [ESI+01DH],01AH
;
; Line 23:		regs.h.flags = 0x72;
;
	MOV	WORD [ESI+020H],072H
;
; Line 24:		regs.h.ss = 0;
;
	MOV	WORD [ESI+030H],00H
;
; Line 25:		regs.h.sp = 0;
;
	MOV	WORD [ESI+02EH],00H
;
; Line 26:		regs.h.ds = dta >> 16;
;
	MOV	EAX,EBX
	SAR	EAX,010H
	MOV	WORD [ESI+024H],AX
;
; Line 27:		regs.h.dx = dta & 0xffff;
;
	MOVZX	EAX,BX
	MOV	WORD [ESI+014H],AX
;
; Line 28:		dpmi_simulate_real_interrupt(0x21,&regs);
;
	PUSH	ESI
	PUSH	BYTE 021H
	CALL	_dpmi_simulate_real_interrupt
	ADD	ESP,BYTE 08H
;
; Line 29:	}
;
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
[GLOBAL	_bdos]
;
; Line 31:	{
;
_bdos:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 034H
	PUSH	ESI
	LEA	ESI,[EBP+0FFFFFFCCH]
;
; Line 33:		regs.b.ah = func;
;
	MOV	AL,BYTE [EBP+08H]
	MOV	BYTE [ESI+01DH],AL
;
; Line 34:		regs.b.al = regal;
;
	MOV	AL,BYTE [EBP+010H]
	MOV	BYTE [ESI+01CH],AL
;
; Line 35:		regs.h.dx = regdx;
;
	MOV	AX,WORD [EBP+0CH]
	MOV	WORD [ESI+014H],AX
;
; Line 36:		regs.h.flags = 0x72;
;
	MOV	WORD [ESI+020H],072H
;
; Line 37:		regs.h.ss = 0;
;
	MOV	WORD [ESI+030H],00H
;
; Line 38:		regs.h.sp = 0;
;
	MOV	WORD [ESI+02EH],00H
;
; Line 39:		dpmi_simulate_real_interrupt(0x21,&regs);
;
	PUSH	ESI
	PUSH	BYTE 021H
	CALL	_dpmi_simulate_real_interrupt
	ADD	ESP,BYTE 08H
;
; Line 40:		return regs.b.al;
;
	MOVZX	EAX,BYTE [ESI+01CH]
L_2:
	POP	ESI
	MOV	ESP,EBP
	POP	EBP
	RET
[GLOBAL	__dos_getdrive]
;
; Line 43:	{
;
__dos_getdrive:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 034H
	PUSH	ESI
	LEA	ESI,[EBP+0FFFFFFCCH]
;
; Line 45:		regs.b.ah = 0x19;
;
	MOV	BYTE [ESI+01DH],019H
;
; Line 46:		regs.h.flags = 0x72;
;
	MOV	WORD [ESI+020H],072H
;
; Line 47:		regs.h.ss = 0;
;
	MOV	WORD [ESI+030H],00H
;
; Line 48:		regs.h.sp = 0;
;
	MOV	WORD [ESI+02EH],00H
;
; Line 49:		dpmi_simulate_real_interrupt(0x21,&regs);
;
	PUSH	ESI
	PUSH	BYTE 021H
	CALL	_dpmi_simulate_real_interrupt
	ADD	ESP,BYTE 08H
;
; Line 51:		*drive = regs.b.al+1;
;
	MOVZX	EAX,BYTE [ESI+01CH]
	INC	EAX
	MOV	ECX,DWORD [EBP+08H]
	MOV	DWORD [ECX+00H],EAX
;
; Line 52:		return 0;
;
	MOV	EAX,00H
L_3:
	POP	ESI
	MOV	ESP,EBP
	POP	EBP
	RET
[GLOBAL	__dos_setdrive]
;
; Line 55:	{
;
__dos_setdrive:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 034H
	PUSH	ESI
	LEA	ESI,[EBP+0FFFFFFCCH]
;
; Line 57:		regs.b.ah = 0x0e;
;
	MOV	BYTE [ESI+01DH],0EH
;
; Line 58:		regs.b.dl = drive;
;
	MOV	AL,BYTE [EBP+08H]
	MOV	BYTE [ESI+014H],AL
;
; Line 59:		regs.h.flags = 0x72;
;
	MOV	WORD [ESI+020H],072H
;
; Line 60:		regs.h.ss = 0;
;
	MOV	WORD [ESI+030H],00H
;
; Line 61:		regs.h.sp = 0;
;
	MOV	WORD [ESI+02EH],00H
;
; Line 62:		dpmi_simulate_real_interrupt(0x21,&regs);
;
	PUSH	ESI
	PUSH	BYTE 021H
	CALL	_dpmi_simulate_real_interrupt
	ADD	ESP,BYTE 08H
;
; Line 64:	}
;
	POP	ESI
	MOV	ESP,EBP
	POP	EBP
	RET
[GLOBAL	__dos_getpwd]
;
; Line 66:	{
;
__dos_getpwd:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 038H
	PUSH	EBX
	PUSH	ESI
	LEA	ESI,[EBP+0FFFFFFC8H]
	MOV	EBX,DWORD [EBP+08H]
;
; Line 69:		if (dpmi_alloc_real_memory(&sel,&para,0x5))
;
	PUSH	BYTE 05H
	LEA	EAX,[EBP+0FFFFFFFEH]
	PUSH	EAX
	LEA	EAX,[EBP+0FFFFFFFCH]
	PUSH	EAX
	CALL	_dpmi_alloc_real_memory
	ADD	ESP,BYTE 0CH
	TEST	EAX,EAX
	JE	SHORT	L_4
;
; Line 70:			return 8;
;
	MOV	EAX,08H
	JMP	L_6
L_4:
;
; Line 71:		regs.b.ah = 0x47;
;
	MOV	BYTE [ESI+01DH],047H
;
; Line 72:		regs.h.flags = 0x72;
;
	MOV	WORD [ESI+020H],072H
;
; Line 73:		regs.h.ss = 0;
;
	MOV	WORD [ESI+030H],00H
;
; Line 74:		regs.h.sp = 0;
;
	MOV	WORD [ESI+02EH],00H
;
; Line 75:		regs.h.ds = para;
;
	MOV	AX,WORD [EBP+0FFFFFFFEH]
	MOV	WORD [ESI+024H],AX
;
; Line 76:		regs.h.dx = drive;
;
	MOV	AX,WORD [EBP+0CH]
	MOV	WORD [ESI+014H],AX
;
; Line 77:		regs.h.si = 0;
;
	MOV	WORD [ESI+04H],00H
;
; Line 78:		dpmi_simulate_real_interrupt(0x21,&regs);
;
	PUSH	ESI
	PUSH	BYTE 021H
	CALL	_dpmi_simulate_real_interrupt
	ADD	ESP,BYTE 08H
;
; Line 79:		dpmi_copy_to_ds(buf,sel,0,65);
;
	PUSH	BYTE 041H
	PUSH	BYTE 00H
	MOVZX	EAX,WORD [EBP+0FFFFFFFCH]
	PUSH	EAX
	PUSH	EBX
	CALL	_dpmi_copy_to_ds
	ADD	ESP,BYTE 010H
;
; Line 80:		dpmi_dealloc_real_memory(sel);
;
	MOVZX	EAX,WORD [EBP+0FFFFFFFCH]
	PUSH	EAX
	CALL	_dpmi_dealloc_real_memory
	POP	ECX
;
; Line 81:		return strlen(buf);
;
	PUSH	EDI
	MOV	EDI,EBX
	CLD
	SUB	EAX,EAX
	MOV	ECX,0FFFFFFFFH
	REPNZ	SCASB
	NOT	ECX
	DEC	ECX
	MOV	EAX,ECX
	POP	EDI
L_6:
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
[GLOBAL	__dos_setpwd]
;
; Line 84:	{
;
__dos_setpwd:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 038H
	PUSH	EBX
	PUSH	ESI
	LEA	ESI,[EBP+0FFFFFFC8H]
	MOV	EBX,DWORD [EBP+08H]
;
; Line 87:		if (dpmi_alloc_real_memory(&sel,&para,0x8))
;
	PUSH	BYTE 08H
	LEA	EAX,[EBP+0FFFFFFFEH]
	PUSH	EAX
	LEA	EAX,[EBP+0FFFFFFFCH]
	PUSH	EAX
	CALL	_dpmi_alloc_real_memory
	ADD	ESP,BYTE 0CH
	TEST	EAX,EAX
	JE	SHORT	L_7
;
; Line 88:			return 8;
;
	MOV	EAX,08H
	JMP	L_9
L_7:
;
; Line 89:		dpmi_copy_from_ds(sel,0,buf,strlen(buf)+1);
;
	PUSH	EDI
	MOV	EDI,EBX
	CLD
	SUB	EAX,EAX
	MOV	ECX,0FFFFFFFFH
	REPNZ	SCASB
	NOT	ECX
	DEC	ECX
	MOV	EAX,ECX
	POP	EDI
	INC	EAX
	PUSH	EAX
	PUSH	EBX
	PUSH	BYTE 00H
	MOVZX	EAX,WORD [EBP+0FFFFFFFCH]
	PUSH	EAX
	CALL	_dpmi_copy_from_ds
	ADD	ESP,BYTE 010H
;
; Line 90:		regs.b.ah = 0x3b;
;
	MOV	BYTE [ESI+01DH],03BH
;
; Line 91:		regs.h.flags = 0x72;
;
	MOV	WORD [ESI+020H],072H
;
; Line 92:		regs.h.ss = 0;
;
	MOV	WORD [ESI+030H],00H
;
; Line 93:		regs.h.sp = 0;
;
	MOV	WORD [ESI+02EH],00H
;
; Line 94:		regs.h.ds = para;
;
	MOV	AX,WORD [EBP+0FFFFFFFEH]
	MOV	WORD [ESI+024H],AX
;
; Line 95:		regs.h.dx = 0;
;
	MOV	WORD [ESI+014H],00H
;
; Line 96:		dpmi_simulate_real_interrupt(0x21,&regs);
;
	PUSH	ESI
	PUSH	BYTE 021H
	CALL	_dpmi_simulate_real_interrupt
	ADD	ESP,BYTE 08H
;
; Line 97:		dpmi_dealloc_real_memory(sel);
;
	MOVZX	EAX,WORD [EBP+0FFFFFFFCH]
	PUSH	EAX
	CALL	_dpmi_dealloc_real_memory
	POP	ECX
;
; Line 98:		return 0;
;
	MOV	EAX,00H
L_9:
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
[GLOBAL	__dos_findfirst]
;
; Line 101:	{
;
__dos_findfirst:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 03CH
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	LEA	ESI,[EBP+0FFFFFFC4H]
	MOV	EBX,DWORD [EBP+08H]
;
; Line 105:		long dta = getdta();
;
	CALL	_getdta
	MOV	EDI,EAX
;
; Line 106:		if (dpmi_alloc_real_memory(&sel,&para,0x3))
;
	PUSH	BYTE 03H
	LEA	EAX,[EBP+0FFFFFFFAH]
	PUSH	EAX
	LEA	EAX,[EBP+0FFFFFFF8H]
	PUSH	EAX
	CALL	_dpmi_alloc_real_memory
	ADD	ESP,BYTE 0CH
	TEST	EAX,EAX
	JE	SHORT	L_10
;
; Line 107:			return 8;
;
	MOV	EAX,08H
	JMP	L_12
L_10:
;
; Line 108:		if (dpmi_alloc_real_memory(&nsel,&npara,0x8)) {
;
	PUSH	BYTE 08H
	LEA	EAX,[EBP+0FFFFFFFEH]
	PUSH	EAX
	LEA	EAX,[EBP+0FFFFFFFCH]
	PUSH	EAX
	CALL	_dpmi_alloc_real_memory
	ADD	ESP,BYTE 0CH
	TEST	EAX,EAX
	JE	SHORT	L_13
;
; Line 109:			dpmi_dealloc_real_memory(sel);
;
	MOVZX	EAX,WORD [EBP+0FFFFFFF8H]
	PUSH	EAX
	CALL	_dpmi_dealloc_real_memory
	POP	ECX
;
; Line 110:			return 8;
;
	MOV	EAX,08H
	JMP	L_12
L_13:
;
; Line 112:		setdta((long)para << 16);
;
	MOVZX	EAX,WORD [EBP+0FFFFFFFAH]
	SAL	EAX,010H
	PUSH	EAX
	CALL	_setdta
	POP	ECX
;
; Line 113:		dpmi_copy_from_ds(nsel,0,string,strlen(string)+1);
;
	PUSH	EDI
	MOV	EDI,EBX
	CLD
	SUB	EAX,EAX
	MOV	ECX,0FFFFFFFFH
	REPNZ	SCASB
	NOT	ECX
	DEC	ECX
	MOV	EAX,ECX
	POP	EDI
	INC	EAX
	PUSH	EAX
	PUSH	EBX
	PUSH	BYTE 00H
	MOVZX	EAX,WORD [EBP+0FFFFFFFCH]
	PUSH	EAX
	CALL	_dpmi_copy_from_ds
	ADD	ESP,BYTE 010H
;
; Line 114:		regs.b.ah = 0x4e;
;
	MOV	BYTE [ESI+01DH],04EH
;
; Line 115:		regs.h.flags = 0x72;
;
	MOV	WORD [ESI+020H],072H
;
; Line 116:		regs.h.ss = 0;
;
	MOV	WORD [ESI+030H],00H
;
; Line 117:		regs.h.sp = 0;
;
	MOV	WORD [ESI+02EH],00H
;
; Line 118:		regs.h.ds = npara;
;
	MOV	AX,WORD [EBP+0FFFFFFFEH]
	MOV	WORD [ESI+024H],AX
;
; Line 119:		regs.h.dx = 0;
;
	MOV	WORD [ESI+014H],00H
;
; Line 120:		regs.h.cx = attr;
;
	MOV	AX,WORD [EBP+0CH]
	MOV	WORD [ESI+018H],AX
;
; Line 121:		dpmi_simulate_real_interrupt(0x21,&regs);
;
	PUSH	ESI
	PUSH	BYTE 021H
	CALL	_dpmi_simulate_real_interrupt
	ADD	ESP,BYTE 08H
;
; Line 122:		dpmi_copy_to_ds(buf,sel,0,48);
;
	PUSH	BYTE 030H
	PUSH	BYTE 00H
	MOVZX	EAX,WORD [EBP+0FFFFFFF8H]
	PUSH	EAX
	PUSH	DWORD [EBP+010H]
	CALL	_dpmi_copy_to_ds
	ADD	ESP,BYTE 010H
;
; Line 123:		dpmi_dealloc_real_memory(sel);
;
	MOVZX	EAX,WORD [EBP+0FFFFFFF8H]
	PUSH	EAX
	CALL	_dpmi_dealloc_real_memory
	POP	ECX
;
; Line 124:		dpmi_dealloc_real_memory(nsel);
;
	MOVZX	EAX,WORD [EBP+0FFFFFFFCH]
	PUSH	EAX
	CALL	_dpmi_dealloc_real_memory
	POP	ECX
;
; Line 125:		setdta(dta);
;
	PUSH	EDI
	CALL	_setdta
	POP	ECX
;
; Line 126:		if (regs.h.flags & 1)
;
	MOVZX	EAX,WORD [ESI+020H]
	AND	EAX,BYTE 01H
	JE	SHORT	L_15
;
; Line 127:			return regs.b.al;
;
	MOVZX	EAX,BYTE [ESI+01CH]
	JMP	L_12
L_15:
;
; Line 129:			return 0;
;
	MOV	EAX,00H
L_16:
;
; Line 130:	}
;
L_12:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
[GLOBAL	__dos_findnext]
;
; Line 132:	{
;
__dos_findnext:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 038H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	LEA	ESI,[EBP+0FFFFFFC8H]
	MOV	EBX,DWORD [EBP+08H]
;
; Line 135:		long dta = getdta();
;
	CALL	_getdta
	MOV	EDI,EAX
;
; Line 136:		if (dpmi_alloc_real_memory(&sel,&para,0x3))
;
	PUSH	BYTE 03H
	LEA	EAX,[EBP+0FFFFFFFEH]
	PUSH	EAX
	LEA	EAX,[EBP+0FFFFFFFCH]
	PUSH	EAX
	CALL	_dpmi_alloc_real_memory
	ADD	ESP,BYTE 0CH
	TEST	EAX,EAX
	JE	SHORT	L_17
;
; Line 137:			return 8;
;
	MOV	EAX,08H
	JMP	L_19
L_17:
;
; Line 138:		setdta((long)para << 16);
;
	MOVZX	EAX,WORD [EBP+0FFFFFFFEH]
	SAL	EAX,010H
	PUSH	EAX
	CALL	_setdta
	POP	ECX
;
; Line 139:		dpmi_copy_from_ds(sel,0,buf,48);
;
	PUSH	BYTE 030H
	PUSH	EBX
	PUSH	BYTE 00H
	MOVZX	EAX,WORD [EBP+0FFFFFFFCH]
	PUSH	EAX
	CALL	_dpmi_copy_from_ds
	ADD	ESP,BYTE 010H
;
; Line 140:		regs.b.ah = 0x4f;
;
	MOV	BYTE [ESI+01DH],04FH
;
; Line 141:		regs.h.flags = 0x72;
;
	MOV	WORD [ESI+020H],072H
;
; Line 142:		regs.h.ss = 0;
;
	MOV	WORD [ESI+030H],00H
;
; Line 143:		regs.h.sp = 0;
;
	MOV	WORD [ESI+02EH],00H
;
; Line 144:		dpmi_simulate_real_interrupt(0x21,&regs);
;
	PUSH	ESI
	PUSH	BYTE 021H
	CALL	_dpmi_simulate_real_interrupt
	ADD	ESP,BYTE 08H
;
; Line 145:		dpmi_copy_to_ds(buf,sel,0,48);
;
	PUSH	BYTE 030H
	PUSH	BYTE 00H
	MOVZX	EAX,WORD [EBP+0FFFFFFFCH]
	PUSH	EAX
	PUSH	EBX
	CALL	_dpmi_copy_to_ds
	ADD	ESP,BYTE 010H
;
; Line 146:		dpmi_dealloc_real_memory(sel);
;
	MOVZX	EAX,WORD [EBP+0FFFFFFFCH]
	PUSH	EAX
	CALL	_dpmi_dealloc_real_memory
	POP	ECX
;
; Line 147:		setdta(dta);
;
	PUSH	EDI
	CALL	_setdta
	POP	ECX
;
; Line 148:		if (regs.h.flags & 1)
;
	MOVZX	EAX,WORD [ESI+020H]
	AND	EAX,BYTE 01H
	JE	SHORT	L_20
;
; Line 149:			return regs.b.al;
;
	MOVZX	EAX,BYTE [ESI+01CH]
	JMP	L_19
L_20:
;
; Line 151:			return 0;
;
	MOV	EAX,00H
L_21:
;
; Line 152:	}
;
L_19:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
[GLOBAL	__dos_open]
;
; Line 154:	{
;
__dos_open:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	ESI
	MOV	ESI,DWORD [EBP+010H]
;
; Line 155:		*fd = _ll_open(name,mode);
;
	PUSH	DWORD [EBP+0CH]
	PUSH	DWORD [EBP+08H]
	CALL	__ll_open
	ADD	ESP,BYTE 08H
	MOV	DWORD [ESI+00H],EAX
;
; Line 156:		if (*fd == 0)
;
	CMP	DWORD [ESI+00H],BYTE 00H
	JNE	SHORT	L_22
;
; Line 157:			return 2;
;
	MOV	EAX,02H
	JMP	L_24
L_22:
;
; Line 158:		return 0;
;
	MOV	EAX,00H
L_24:
	POP	ESI
	POP	EBP
	RET
[GLOBAL	__dos_close]
;
; Line 161:	{
;
__dos_close:
	PUSH	EBP
	MOV	EBP,ESP
;
; Line 162:		_ll_close(fd);
;
	PUSH	DWORD [EBP+08H]
	CALL	__ll_close
	POP	ECX
;
; Line 163:		return 0;
;
	MOV	EAX,00H
L_25:
	POP	EBP
	RET
[GLOBAL	__dos_setftime]
;
; Line 166:	{
;
__dos_setftime:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 034H
	PUSH	ESI
	LEA	ESI,[EBP+0FFFFFFCCH]
;
; Line 168:		regs.b.al = 1;
;
	MOV	BYTE [ESI+01CH],01H
;
; Line 169:		regs.h.bx = fd;
;
	MOV	AX,WORD [EBP+08H]
	MOV	WORD [ESI+010H],AX
;
; Line 170:		regs.h.cx = time;
;
	MOV	AX,WORD [EBP+010H]
	MOV	WORD [ESI+018H],AX
;
; Line 171:		regs.h.dx = date;
;
	MOV	AX,WORD [EBP+0CH]
	MOV	WORD [ESI+014H],AX
;
; Line 172:		if (!__doscall(0x57,&regs))
;
	PUSH	ESI
	PUSH	BYTE 057H
	CALL	___doscall
	ADD	ESP,BYTE 08H
	TEST	EAX,EAX
	JNE	SHORT	L_26
;
; Line 173:			return 2;
;
	MOV	EAX,02H
	JMP	L_28
L_26:
;
; Line 174:		return 0;
;
	MOV	EAX,00H
L_28:
	POP	ESI
	MOV	ESP,EBP
	POP	EBP
	RET
[GLOBAL	__dos_getftime]
;
; Line 177:	{
;
__dos_getftime:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 034H
	PUSH	ESI
	LEA	ESI,[EBP+0FFFFFFCCH]
;
; Line 179:		regs.b.al = 0;
;
	MOV	BYTE [ESI+01CH],00H
;
; Line 180:		regs.h.bx = fd;
;
	MOV	AX,WORD [EBP+08H]
	MOV	WORD [ESI+010H],AX
;
; Line 181:		if (!__doscall(0x57,&regs))
;
	PUSH	ESI
	PUSH	BYTE 057H
	CALL	___doscall
	ADD	ESP,BYTE 08H
	TEST	EAX,EAX
	JNE	SHORT	L_29
;
; Line 182:			return 2;
;
	MOV	EAX,02H
	JMP	L_31
L_29:
;
; Line 184:		*date = regs.h.dx;
;
	MOV	EAX,DWORD [EBP+0CH]
	MOV	CX,WORD [ESI+014H]
	MOV	WORD [EAX+00H],CX
;
; Line 185:		*time = regs.h.cx;
;
	MOV	EAX,DWORD [EBP+010H]
	MOV	CX,WORD [ESI+018H]
	MOV	WORD [EAX+00H],CX
;
; Line 186:		return 0;
;
	MOV	EAX,00H
L_31:
	POP	ESI
	MOV	ESP,EBP
	POP	EBP
	RET


SECTION _TEXT
[EXTERN	_dpmi_simulate_real_interrupt]
[EXTERN	___doscall]
[EXTERN	__ll_close]
[EXTERN	_dpmi_alloc_real_memory]
[EXTERN	_dpmi_dealloc_real_memory]
[EXTERN	_dpmi_copy_to_ds]
[EXTERN	__ll_open]
[EXTERN	_dpmi_copy_from_ds]
