	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
[GLOBAL	__dos_getdrive]
;
; Line 9:	{
;
__dos_getdrive:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,0108H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	LEA	ESI,[EBP+0FFFFFFF8H]
	MOV	EDI,DWORD [EBP+08H]
	LEA	EBX,[EBP+0FFFFFEF8H]
;
; Line 11:		GetCurrentDirectoryA(256,buf);
;
	PUSH	EBX
	PUSH	DWORD 0100H
	CALL	GetCurrentDirectoryA
;
; Line 12:		if (drive)
;
	TEST	EDI,EDI
	JE	SHORT	L_1
;
; Line 13:			*drive = buf[0] - '@' ;
;
	MOVSX	EAX,BYTE [EBX+00H]
	SUB	EAX,BYTE 040H
	MOV	DWORD [EDI+00H],EAX
L_1:
;
; Line 14:		buf1[0] = '=' ;
;
	MOV	BYTE [ESI+00H],03DH
;
; Line 15:		buf1[1] = buf[0] ;
;
	MOV	AL,BYTE [EBX+00H]
	MOV	BYTE [ESI+01H],AL
;
; Line 16:		buf1[2] = ':' ;
;
	MOV	BYTE [ESI+02H],03AH
;
; Line 17:		buf1[3] = '\\' ;
;
	MOV	BYTE [ESI+03H],05CH
;
; Line 18:		buf1[4] = 0 ;
;
	MOV	BYTE [ESI+04H],00H
;
; Line 19:		SetEnvironmentVariableA(buf1,buf) ;
;
	PUSH	EBX
	PUSH	ESI
	CALL	SetEnvironmentVariableA
;
; Line 20:		return 0 ;
;
	MOV	EAX,00H
L_3:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
[GLOBAL	__dos_setdrive]
;
; Line 23:	{
;
__dos_setdrive:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,010CH
	PUSH	ESI
	LEA	ESI,[EBP+0FFFFFEF4H]
;
; Line 26:		buf[0] = '=' ;
;
	MOV	BYTE [ESI+00H],03DH
;
; Line 27:		buf[1] = drive + '@' ;
;
	MOV	EAX,DWORD [EBP+08H]
	ADD	EAX,BYTE 040H
	MOV	BYTE [ESI+01H],AL
;
; Line 28:		buf[2] = ':' ;
;
	MOV	BYTE [ESI+02H],03AH
;
; Line 29:		buf[3] = '\\' ;
;
	MOV	BYTE [ESI+03H],05CH
;
; Line 30:		buf[4] = 0;
;
	MOV	BYTE [ESI+04H],00H
;
; Line 31:		if (!GetEnvironmentVariableA(buf,equals,256)) {
;
	PUSH	DWORD 0100H
	LEA	EAX,[EBP+0FFFFFF00H]
	PUSH	EAX
	PUSH	ESI
	CALL	GetEnvironmentVariableA
	TEST	EAX,EAX
	JNE	NEAR	L_4
;
; Line 32:			if (!SetEnvironmentVariableA(buf,buf+1))
;
	LEA	EAX,[ESI+00H]
	INC	EAX
	PUSH	EAX
	PUSH	ESI
	CALL	SetEnvironmentVariableA
	TEST	EAX,EAX
	JNE	SHORT	L_6
;
; Line 33:				return 1 ;
;
	MOV	EAX,01H
	JMP	L_8
L_6:
;
; Line 34:			if (!SetCurrentDirectoryA(buf+1))
;
	LEA	EAX,[ESI+00H]
	INC	EAX
	PUSH	EAX
	CALL	SetCurrentDirectoryA
	TEST	EAX,EAX
	JNE	SHORT	L_9
;
; Line 35:				return 1 ;
;
	MOV	EAX,01H
	JMP	L_8
L_9:
;
; Line 36:		} else
;
	JMP	L_5
L_4:
;
; Line 37:			if (!SetCurrentDirectoryA(equals))
;
	LEA	EAX,[EBP+0FFFFFF00H]
	PUSH	EAX
	CALL	SetCurrentDirectoryA
	TEST	EAX,EAX
	JNE	SHORT	L_11
;
; Line 38:				return 1 ;
;
	MOV	EAX,01H
	JMP	L_8
L_11:
L_5:
;
; Line 39:		return 0;
;
	MOV	EAX,00H
L_8:
	POP	ESI
	MOV	ESP,EBP
	POP	EBP
	RET
[GLOBAL	__dos_getpwd]
;
; Line 42:	{
;
__dos_getpwd:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,010CH
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	EBX,DWORD [EBP+08H]
	LEA	ESI,[EBP+0FFFFFEF4H]
	LEA	EDI,[EBP+0FFFFFF00H]
;
; Line 44:		if (drive == 0) {
;
	CMP	DWORD [EBP+0CH],BYTE 00H
	JNE	SHORT	L_14
;
; Line 45:			GetCurrentDirectoryA(256,equals) ;
;
	PUSH	EDI
	PUSH	DWORD 0100H
	CALL	GetCurrentDirectoryA
;
; Line 46:			goto finish ;
;
	JMP	L_13
L_14:
;
; Line 48:		buf[0] = 0;
;
	MOV	BYTE [EBX+00H],00H
;
; Line 49:		name[0] = '=' ;      
;
	MOV	BYTE [ESI+00H],03DH
;
; Line 50:		name[1] = drive + '@' ;
;
	MOV	EAX,DWORD [EBP+0CH]
	ADD	EAX,BYTE 040H
	MOV	BYTE [ESI+01H],AL
;
; Line 51:		name[2] = ':' ;
;
	MOV	BYTE [ESI+02H],03AH
;
; Line 52:		name[3] = '\\' ;
;
	MOV	BYTE [ESI+03H],05CH
;
; Line 53:		name[4] = 0;
;
	MOV	BYTE [ESI+04H],00H
;
; Line 54:		if (!GetEnvironmentVariableA(name,equals,256)) {
;
	PUSH	DWORD 0100H
	PUSH	EDI
	PUSH	ESI
	CALL	GetEnvironmentVariableA
	TEST	EAX,EAX
	JNE	NEAR	L_16
;
; Line 55:			strcpy(equals,name+1) ;
;
	LEA	EAX,[ESI+00H]
	INC	EAX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,EAX
	XCHG	ESI,EDI
	CLD
	PUSH	EDI
	SUB	EAX,EAX
	MOV	ECX,0FFFFFFFFH
	REPNZ	SCASB
	NOT	ECX
	MOV	EAX,ECX
	POP	EDI
	XCHG	ESI,EDI
	REPNZ	MOVSB
	POP	EDI
	POP	ESI
L_13:
;
; Line 57:			SetEnvironmentVariableA(buf,equals) ;
;
	PUSH	EDI
	PUSH	EBX
	CALL	SetEnvironmentVariableA
;
; Line 58:	  }	
;
L_16:
;
; Line 59:		strcpy(buf,equals+3);
;
	LEA	EAX,[EDI+00H]
	ADD	EAX,BYTE 03H
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,EAX
	MOV	EDI,EBX
	XCHG	ESI,EDI
	CLD
	PUSH	EDI
	SUB	EAX,EAX
	MOV	ECX,0FFFFFFFFH
	REPNZ	SCASB
	NOT	ECX
	MOV	EAX,ECX
	POP	EDI
	XCHG	ESI,EDI
	REPNZ	MOVSB
	POP	EDI
	POP	ESI
;
; Line 60:		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_18:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
[GLOBAL	__dos_setpwd]
;
; Line 63:	{
;
__dos_setpwd:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,0108H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	LEA	ESI,[EBP+0FFFFFEF8H]
	LEA	EDI,[EBP+0FFFFFFF8H]
	MOV	EBX,DWORD [EBP+08H]
;
; Line 65:		dir[0] = _dos_getdrive(0) + '@';
;
	PUSH	BYTE 00H
	CALL	__dos_getdrive
	POP	ECX
	ADD	EAX,BYTE 040H
	MOV	BYTE [ESI+00H],AL
;
; Line 66:		dir[1] = ':' ;
;
	MOV	BYTE [ESI+01H],03AH
;
; Line 67:		if (buf[0] != '\\')
;
	MOVSX	EAX,BYTE [EBX+00H]
	CMP	EAX,BYTE 05CH
	JE	NEAR	L_19
;
; Line 68:			_dos_getpwd(dir+2, dir[0] - '@');
;
	MOVSX	EAX,BYTE [ESI+00H]
	SUB	EAX,BYTE 040H
	PUSH	EAX
	LEA	EAX,[ESI+00H]
	ADD	EAX,BYTE 02H
	PUSH	EAX
	CALL	__dos_getpwd
	ADD	ESP,BYTE 08H
	JMP	L_20
L_19:
;
; Line 70:			dir[2] = '\\';
;
	MOV	BYTE [ESI+02H],05CH
;
; Line 71:			dir[3] = 0;
;
	MOV	BYTE [ESI+03H],00H
;
; Line 72:		}
;
L_20:
;
; Line 73:		strcat(dir,buf);
;
	MOV	EAX,ESI
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,EBX
	MOV	EDI,EAX
	CLD
	SUB	EAX,EAX
	MOV	ECX,0FFFFFFFFH
	REPNZ	SCASB
	DEC	EDI
	XCHG	ESI,EDI
	PUSH	EDI
	SUB	EAX,EAX
	MOV	ECX,0FFFFFFFFH
	REPNZ	SCASB
	NOT	ECX
	MOV	EAX,ECX
	POP	EDI
	XCHG	ESI,EDI
	REPNZ	MOVSB
	POP	EDI
	POP	ESI
;
; Line 74:		name[0] = '=' ;      
;
	MOV	BYTE [EDI+00H],03DH
;
; Line 75:		name[1] = dir[0] ;
;
	MOV	AL,BYTE [ESI+00H]
	MOV	BYTE [EDI+01H],AL
;
; Line 76:		name[2] = ':' ;
;
	MOV	BYTE [EDI+02H],03AH
;
; Line 77:		name[3] = '\\' ;
;
	MOV	BYTE [EDI+03H],05CH
;
; Line 78:		name[4] = 0;
;
	MOV	BYTE [EDI+04H],00H
;
; Line 79:		SetEnvironmentVariableA(name,dir) ;
;
	PUSH	ESI
	PUSH	EDI
	CALL	SetEnvironmentVariableA
;
; Line 80:		return !SetCurrentDirectoryA(dir) ;
;
	PUSH	ESI
	CALL	SetCurrentDirectoryA
	TEST	EAX,EAX
	SETE	AL
	MOVZX	EAX,AL
L_21:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
;
; Line 83:	{
;
_convert_file_time:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 08H
;
; Line 85:		FileTimeToLocalFileTime(timet,&timex);
;
	LEA	EAX,[EBP+0FFFFFFF8H]
	PUSH	EAX
	PUSH	DWORD [EBP+08H]
	CALL	FileTimeToLocalFileTime
;
; Line 86:		FileTimeToDosDateTime(&timex, xdate, xtime) ;
;
	PUSH	DWORD [EBP+0CH]
	PUSH	DWORD [EBP+010H]
	LEA	EAX,[EBP+0FFFFFFF8H]
	PUSH	EAX
	CALL	FileTimeToDosDateTime
;
; Line 87:	}
;
	MOV	ESP,EBP
	POP	EBP
	RET
;
; Line 89:	{
;
_format_finddata:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
	MOV	EDI,DWORD [EBP+0CH]
;
; Line 90:		if (data->dwFileAttributes & (32))
;
	MOV	EAX,DWORD [EDI+00H]
	AND	EAX,BYTE 020H
	JE	SHORT	L_22
;
; Line 91:			buf->attrib |= 0x20          ;
;
	BTS	DWORD [ESI+015H],05H
L_22:
;
; Line 92:		if (data->dwFileAttributes & (16))
;
	MOV	EAX,DWORD [EDI+00H]
	AND	EAX,BYTE 010H
	JE	SHORT	L_24
;
; Line 93:			buf->attrib |= 0x10          ;
;
	BTS	DWORD [ESI+015H],04H
L_24:
;
; Line 94:		if (data->dwFileAttributes & (2))
;
	MOV	EAX,DWORD [EDI+00H]
	AND	EAX,BYTE 02H
	JE	SHORT	L_26
;
; Line 95:			buf->attrib |= 0x02          ;
;
	BTS	DWORD [ESI+015H],01H
L_26:
;
; Line 96:		if (data->dwFileAttributes & (1))
;
	MOV	EAX,DWORD [EDI+00H]
	AND	EAX,BYTE 01H
	JE	SHORT	L_28
;
; Line 97:			buf->attrib |= 0x01          ;
;
	BTS	DWORD [ESI+015H],00H
L_28:
;
; Line 98:		if (data->dwFileAttributes & (4))
;
	MOV	EAX,DWORD [EDI+00H]
	AND	EAX,BYTE 04H
	JE	SHORT	L_30
;
; Line 99:			buf->attrib |= 0x04          ;
;
	BTS	DWORD [ESI+015H],02H
L_30:
;
; Line 100:		convert_file_time(&data->ftLastAccessTime,&buf->wr_time,&buf->wr_date);
;
	LEA	EAX,[ESI+018H]
	PUSH	EAX
	LEA	EAX,[ESI+016H]
	PUSH	EAX
	LEA	EAX,[EDI+0CH]
	PUSH	EAX
	CALL	_convert_file_time
	ADD	ESP,BYTE 0CH
;
; Line 101:		if (data->nFileSizeHigh)
;
	CMP	DWORD [EDI+01CH],BYTE 00H
	JE	SHORT	L_32
;
; Line 102:			*(DWORD *)(&buf->size) = 0xffffffff ;
;
	MOV	DWORD [ESI+00H+01AH],0FFFFFFFFH
	JMP	L_33
L_32:
;
; Line 104:			*(DWORD *)(&buf->size) = data->nFileSizeLow;
;
	MOV	ECX,DWORD [EDI+020H]
	MOV	DWORD [ESI+00H+01AH],ECX
L_33:
;
; Line 105:		strcpy(buf->name,data->cFileName);
;
	LEA	EAX,[EDI+02CH]
	LEA	ECX,[ESI+01EH]
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,EAX
	MOV	EDI,ECX
	XCHG	ESI,EDI
	CLD
	PUSH	EDI
	SUB	EAX,EAX
	MOV	ECX,0FFFFFFFFH
	REPNZ	SCASB
	NOT	ECX
	MOV	EAX,ECX
	POP	EDI
	XCHG	ESI,EDI
	REPNZ	MOVSB
	POP	EDI
	POP	ESI
	LEA	ECX,[ESI+01EH]
;
; Line 106:	}
;
	POP	EDI
	POP	ESI
	POP	EBP
	RET
;
; Line 108:	{
;
_matchedattr:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	MOV	EBX,DWORD [EBP+08H]
;
; Line 109:		if ((attr & mattr) == attr)
;
	MOV	EAX,EBX
	AND	EAX,DWORD [EBP+0CH]
	CMP	EAX,EBX
	JNE	SHORT	L_34
;
; Line 110:			return 1 ;
;
	MOV	EAX,01H
	JMP	L_36
L_34:
;
; Line 111:		return 0;
;
	MOV	EAX,00H
L_36:
	POP	EBX
	POP	EBP
	RET
[GLOBAL	__dos_findfirst]
;
; Line 114:	{
;
__dos_findfirst:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,0140H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+010H]
	MOV	EDI,DWORD [EBP+0CH]
;
; Line 116:		HANDLE val = FindFirstFileA(string,&find_data);
;
	LEA	EAX,[EBP+0FFFFFEC0H]
	PUSH	EAX
	PUSH	DWORD [EBP+08H]
	CALL	FindFirstFileA
	MOV	EBX,EAX
;
; Line 117:		memset(buf,0,sizeof(*buf));
;
	MOV	EAX,00H
	MOV	ECX,012BH
	PUSH	EDI
	PUSH	EAX
	MOV	EDI,ESI
	CLD
	REPNZ	STOSB
	POP	EAX
	POP	EDI
;
; Line 118:		if (val == ((HANDLE)-1))
;
	CMP	EBX,BYTE 0FFFFFFFFH
	JNE	SHORT	L_37
;
; Line 119:			return 1 ;
;
	MOV	EAX,01H
	JMP	L_39
L_37:
;
; Line 120:		*(HANDLE *)(buf->reserved) = val ;
;
	MOV	DWORD [ESI+00H],EBX
;
; Line 121:		*(DWORD *)(buf->reserved + 4) = attr ;
;
	MOV	DWORD [ESI+00H+04H],EDI
;
; Line 122:		format_finddata(buf,&find_data);
;
	LEA	EAX,[EBP+0FFFFFEC0H]
	PUSH	EAX
	PUSH	ESI
	CALL	_format_finddata
	ADD	ESP,BYTE 08H
;
; Line 123:		if (matchedattr(attr,buf->attrib))
;
	MOVZX	EAX,BYTE [ESI+015H]
	PUSH	EAX
	PUSH	EDI
	CALL	_matchedattr
	ADD	ESP,BYTE 08H
	TEST	EAX,EAX
	JE	SHORT	L_40
;
; Line 124:			return 0;
;
	MOV	EAX,00H
	JMP	L_39
L_40:
;
; Line 126:			return _dos_findnext(buf) ;
;
	PUSH	ESI
	CALL	__dos_findnext
	POP	ECX
L_41:
;
; Line 128:	}
;
L_39:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
[GLOBAL	__dos_findnext]
;
; Line 130:	{
;
__dos_findnext:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,0140H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
;
; Line 132:		HANDLE val = *(HANDLE *)(buf->reserved);
;
	MOV	EBX,DWORD [ESI+00H]
;
; Line 133:		DWORD attr = *(DWORD *)(buf->reserved + 4) ;
;
	MOV	EDI,DWORD [ESI+00H+04H]
;
; Line 134:		do {
;
L_42:
;
; Line 135:			if (!FindNextFileA(val,&find_data)) {
;
	LEA	EAX,[EBP+0FFFFFEC0H]
	PUSH	EAX
	PUSH	EBX
	CALL	FindNextFileA
	TEST	EAX,EAX
	JNE	SHORT	L_44
;
; Line 136:				FindClose(val) ;
;
	PUSH	EBX
	CALL	FindClose
;
; Line 137:				return 1;
;
	MOV	EAX,01H
	JMP	L_46
L_44:
;
; Line 139:			format_finddata(buf,&find_data) ;
;
	LEA	EAX,[EBP+0FFFFFEC0H]
	PUSH	EAX
	PUSH	ESI
	CALL	_format_finddata
	ADD	ESP,BYTE 08H
;
; Line 140:		} while (!matchedattr(attr,buf->attrib));
;
	MOVZX	EAX,BYTE [ESI+015H]
	PUSH	EAX
	PUSH	EDI
	CALL	_matchedattr
	ADD	ESP,BYTE 08H
	TEST	EAX,EAX
	JE	NEAR	L_42
L_43:
;
; Line 142:		return 0 ;
;
	MOV	EAX,00H
L_46:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
[GLOBAL	__dos_open]
;
; Line 145:	{
;
__dos_open:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	MOV	ESI,DWORD [EBP+010H]
;
; Line 146:		int flags = 0;
;
	MOV	EBX,00H
;
; Line 147:		switch(mode) {
;
	MOV	EAX,DWORD [EBP+0CH]
	CMP	EAX,DWORD 00H
	JE	SHORT	L_49
	CMP	EAX,DWORD 01H
	JE	SHORT	L_50
	CMP	EAX,DWORD 02H
	JE	SHORT	L_51
	JMP	L_47
L_49:
;
; Line 149:				flags = (0x80000000L) ;
;
	MOV	EBX,080000000H
;
; Line 150:				break ;
;
	JMP	L_48
L_50:
;
; Line 152:				flags = (0x40000000L) ;
;
	MOV	EBX,040000000H
;
; Line 153:				break ;
;
	JMP	L_48
L_51:
;
; Line 155:				flags = (0x80000000L) | (0x40000000L) ;
;
	MOV	EBX,0C0000000H
L_47:
L_48:
;
; Line 157:		*fd = _ll_open(name,flags);
;
	PUSH	EBX
	PUSH	DWORD [EBP+08H]
	CALL	__ll_open
	ADD	ESP,BYTE 08H
	MOV	DWORD [ESI+00H],EAX
;
; Line 158:		if (*fd == 0)
;
	CMP	DWORD [ESI+00H],BYTE 00H
	JNE	SHORT	L_52
;
; Line 159:			return 2;
;
	MOV	EAX,02H
	JMP	L_54
L_52:
;
; Line 160:		return 0;
;
	MOV	EAX,00H
L_54:
	POP	ESI
	POP	EBX
	POP	EBP
	RET
[GLOBAL	__dos_close]
;
; Line 163:	{
;
__dos_close:
	PUSH	EBP
	MOV	EBP,ESP
;
; Line 164:		_ll_close(fd);
;
	PUSH	DWORD [EBP+08H]
	CALL	__ll_close
	POP	ECX
;
; Line 165:		return 0;
;
	MOV	EAX,00H
L_55:
	POP	EBP
	RET
[GLOBAL	__dos_setftime]
;
; Line 168:	{
;
__dos_setftime:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 010H
;
; Line 170:		DosDateTimeToFileTime(date,time,&timex) ;
;
	LEA	EAX,[EBP+0FFFFFFF0H]
	PUSH	EAX
	MOVZX	EAX,WORD [EBP+010H]
	PUSH	EAX
	MOVZX	EAX,WORD [EBP+0CH]
	PUSH	EAX
	CALL	DosDateTimeToFileTime
;
; Line 171:		LocalFileTimeToFileTime(&timex,&timet);
;
	LEA	EAX,[EBP+0FFFFFFF8H]
	PUSH	EAX
	LEA	EAX,[EBP+0FFFFFFF0H]
	PUSH	EAX
	CALL	LocalFileTimeToFileTime
;
; Line 172:		return (!SetFileTime((HANDLE)fd,0,0,&timet));
;
	LEA	EAX,[EBP+0FFFFFFF8H]
	PUSH	EAX
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	DWORD [EBP+08H]
	CALL	SetFileTime
	TEST	EAX,EAX
	SETE	AL
	MOVZX	EAX,AL
L_56:
	MOV	ESP,EBP
	POP	EBP
	RET
[GLOBAL	__dos_getftime]
;
; Line 175:	{
;
__dos_getftime:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 034H
;
; Line 177:		if (!GetFileInformationByHandle((HANDLE)fd,&info))
;
	LEA	EAX,[EBP+0FFFFFFCCH]
	PUSH	EAX
	PUSH	DWORD [EBP+08H]
	CALL	GetFileInformationByHandle
	TEST	EAX,EAX
	JNE	SHORT	L_57
;
; Line 178:			return 2 ;
;
	MOV	EAX,02H
	JMP	L_59
L_57:
;
; Line 180:		convert_file_time(&info.ftLastWriteTime,time,date);
;
	PUSH	DWORD [EBP+0CH]
	PUSH	DWORD [EBP+010H]
	LEA	EAX,[EBP+0FFFFFFCCH]
	ADD	EAX,BYTE 014H
	PUSH	EAX
	CALL	_convert_file_time
	ADD	ESP,BYTE 0CH
;
; Line 181:		return 0;
;
	MOV	EAX,00H
L_59:
	MOV	ESP,EBP
	POP	EBP
	RET


SECTION _TEXT
[EXTERN	FileTimeToDosDateTime]
[EXTERN	__ll_close]
[EXTERN	GetFileInformationByHandle]
[EXTERN	FindFirstFileA]
[EXTERN	DosDateTimeToFileTime]
[EXTERN	FileTimeToLocalFileTime]
[EXTERN	LocalFileTimeToFileTime]
[EXTERN	__ll_open]
[EXTERN	SetEnvironmentVariableA]
[EXTERN	GetEnvironmentVariableA]
[EXTERN	SetCurrentDirectoryA]
[EXTERN	GetCurrentDirectoryA]
[EXTERN	SetFileTime]
[EXTERN	FindNextFileA]
[EXTERN	FindClose]
