	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	_chdir]
;
; Line 11:	{
;
_chdir:
	PUSH	EBP
	MOV	EBP,ESP
;
; Line 12:		return _dos_setpwd(__path);
;
	PUSH	DWORD [EBP+08H]
	CALL	__dos_setpwd
	POP	ECX
L_1:
	POP	EBP
	RET
[GLOBAL	_findfirst]
;
; Line 17:	{
;
_findfirst:
	PUSH	EBP
	MOV	EBP,ESP
;
; Line 18:		return _dos_findfirst(__path,__attrib | 0x00         ,__ffblk);
;
	PUSH	DWORD [EBP+0CH]
	PUSH	DWORD [EBP+010H]
	PUSH	DWORD [EBP+08H]
	CALL	__dos_findfirst
	ADD	ESP,BYTE 0CH
L_2:
	POP	EBP
	RET
[GLOBAL	_findnext]
;
; Line 21:	{
;
_findnext:
	PUSH	EBP
	MOV	EBP,ESP
;
; Line 22:		return _dos_findnext(__ffblk);
;
	PUSH	DWORD [EBP+08H]
	CALL	__dos_findnext
	POP	ECX
L_3:
	POP	EBP
	RET
[GLOBAL	_fnmerge]
;
; Line 29:	{
;
_fnmerge:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
	MOV	EDI,DWORD [EBP+018H]
;
; Line 31:		if (__drive[0]) {
;
	MOV	EAX,DWORD [EBP+0CH]
	CMP	BYTE [EAX+00H],BYTE 00H
	JE	SHORT	L_4
;
; Line 32:			__path[0] = __drive[0];
;
	MOV	EAX,DWORD [EBP+0CH]
	MOV	AL,BYTE [EAX+00H]
	MOV	BYTE [ESI+00H],AL
;
; Line 33:			__path[1] = ':';
;
	MOV	BYTE [ESI+01H],03AH
;
; Line 34:			__path[2] = 0;
;
	MOV	BYTE [ESI+02H],00H
;
; Line 35:			p = __path+2;
;
	LEA	EBX,[ESI+02H]
;
; Line 36:		}
;
L_4:
;
; Line 37:		if (__dir[0]) {
;
	MOV	EAX,DWORD [EBP+010H]
	CMP	BYTE [EAX+00H],BYTE 00H
	JE	NEAR	L_6
;
; Line 38:			if (__dir[0] != '\\')
;
	MOV	EAX,DWORD [EBP+010H]
	MOVSX	EAX,BYTE [EAX+00H]
	CMP	EAX,BYTE 05CH
	JE	SHORT	L_8
;
; Line 39:				*p++ = '\\';
;
	MOV	EAX,EBX
	INC	EBX
	MOV	BYTE [EAX+00H],05CH
L_8:
;
; Line 40:			strcpy(p,__dir);
;
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+010H]
	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 41:			p = p + strlen(p);
;
	PUSH	EDI
	MOV	EDI,EBX
	CLD
	SUB	EAX,EAX
	MOV	ECX,0FFFFFFFFH
	REPNZ	SCASB
	NOT	ECX
	DEC	ECX
	MOV	EAX,ECX
	POP	EDI
	ADD	EBX,EAX
;
; Line 42:		}
;
L_6:
;
; Line 43:		strcpy(p,__name);
;
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+014H]
	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 44:		p = p + strlen(p);
;
	PUSH	EDI
	MOV	EDI,EBX
	CLD
	SUB	EAX,EAX
	MOV	ECX,0FFFFFFFFH
	REPNZ	SCASB
	NOT	ECX
	DEC	ECX
	MOV	EAX,ECX
	POP	EDI
	ADD	EBX,EAX
;
; Line 45:		if (__ext[0] && __ext[0] != '.')
;
	CMP	BYTE [EDI+00H],BYTE 00H
	JE	SHORT	L_10
	MOVSX	EAX,BYTE [EDI+00H]
	CMP	EAX,BYTE 02EH
	JE	SHORT	L_10
;
; Line 46:			*p++ = '.';
;
	MOV	EAX,EBX
	INC	EBX
	MOV	BYTE [EAX+00H],02EH
L_10:
;
; Line 47:		strcpy(p,__ext);
;
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,EDI
	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 48:	}
;
	POP	EDI
	POP	ESI
	POP	EBX
	POP	EBP
	RET
[GLOBAL	_fnsplit]
;
; Line 54:	{
;
_fnsplit:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,0104H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	EDI,DWORD [EBP+0CH]
	MOV	EBX,DWORD [EBP+014H]
;
; Line 55:		char buf[256],*p,*q =buf;
;
	LEA	EAX,[EBP+0FFFFFEFCH]
	MOV	DWORD [EBP+0FFFFFFFCH],EAX
;
; Line 56:		strcpy(buf,__path);
;
	LEA	EAX,[EBP+0FFFFFEFCH]
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
	MOV	EDI,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
	LEA	ECX,[EBP+0FFFFFEFCH]
;
; Line 57:		p = strrchr(buf,'.');
;
	PUSH	BYTE 02EH
	LEA	EAX,[EBP+0FFFFFEFCH]
	PUSH	EAX
	CALL	_strrchr
	ADD	ESP,BYTE 08H
	MOV	ESI,EAX
;
; Line 58:		if (*(p-1) != '.') {
;
	LEA	EAX,[ESI+0FFFFFFFFH]
	MOVSX	EAX,BYTE [EAX+00H]
	CMP	EAX,BYTE 02EH
	JE	NEAR	L_12
;
; Line 59:			strcpy(__ext,p);
;
	PUSH	ESI
	PUSH	EDI
	MOV	EDI,DWORD [EBP+018H]
	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:			*p=0;
;
	MOV	BYTE [ESI+00H],00H
;
; Line 61:		}
;
	JMP	L_13
L_12:
;
; Line 62:		else __ext[0] = 0;
;
	MOV	EAX,DWORD [EBP+018H]
	MOV	BYTE [EAX+00H],00H
L_13:
;
; Line 64:		if (buf[1] == ':') {
;
	MOVSX	EAX,BYTE [EBP+0FFFFFEFDH]
	CMP	EAX,BYTE 03AH
	JNE	NEAR	L_14
;
; Line 65:			strncpy(__drive,buf,2);
;
	PUSH	BYTE 02H
	LEA	EAX,[EBP+0FFFFFEFCH]
	PUSH	EAX
	PUSH	EDI
	CALL	_strncpy
	ADD	ESP,BYTE 0CH
;
; Line 66:			__drive[2] = 0;
;
	MOV	BYTE [EDI+02H],00H
;
; Line 67:			q += 2;
;
	ADD	DWORD [EBP+0FFFFFFFCH],BYTE 02H
;
; Line 68:		}
;
	JMP	L_15
L_14:
;
; Line 70:			__drive[0] = 0;
;
	MOV	BYTE [EDI+00H],00H
L_15:
;
; Line 72:		p = strrchr(buf,'\\');
;
	PUSH	BYTE 05CH
	LEA	EAX,[EBP+0FFFFFEFCH]
	PUSH	EAX
	CALL	_strrchr
	ADD	ESP,BYTE 08H
	MOV	ESI,EAX
;
; Line 73:		if (p) {
;
	TEST	ESI,ESI
	JE	NEAR	L_16
;
; Line 74:			strcpy(__name,p+1);
;
	LEA	EAX,[ESI+01H]
	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 75:			*(p+1) = 0;
;
	MOV	BYTE [ESI+01H],00H
;
; Line 76:		}
;
	JMP	L_17
L_16:
;
; Line 77:		else __name[0] = 0;
;
	MOV	BYTE [EBX+00H],00H
L_17:
;
; Line 79:		strcpy(__dir,q);
;
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+0FFFFFFFCH]
	MOV	EDI,DWORD [EBP+010H]
	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 80:		return 0;
;
	MOV	EAX,00H
L_18:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
[GLOBAL	_getcurdir]
;
; Line 83:	{
;
_getcurdir:
	PUSH	EBP
	MOV	EBP,ESP
;
; Line 84:		return _dos_getpwd(__directory,__drive);
;
	PUSH	DWORD [EBP+08H]
	PUSH	DWORD [EBP+0CH]
	CALL	__dos_getpwd
	ADD	ESP,BYTE 08H
L_19:
	POP	EBP
	RET
[GLOBAL	_getcwd]
;
; Line 87:	{
;
_getcwd:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,0108H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	LEA	ESI,[EBP+0FFFFFEFCH]
	MOV	EDI,DWORD [EBP+08H]
;
; Line 90:		drv = getdisk();
;
	CALL	_getdisk
	MOV	EBX,EAX
;
; Line 91:		rv = _dos_getpwd(ibuf+3,drv+1);
;
	LEA	EAX,[EBX+01H]
	PUSH	EAX
	LEA	EAX,[ESI+00H]
	ADD	EAX,BYTE 03H
	PUSH	EAX
	CALL	__dos_getpwd
	ADD	ESP,BYTE 08H
	MOV	DWORD [EBP+0FFFFFEF8H],EAX
;
; Line 92:		ibuf[0] = drv + 'A';
;
	LEA	EAX,[EBX+041H]
	MOV	BYTE [ESI+00H],AL
;
; Line 93:		ibuf[1] = ':';
;
	MOV	BYTE [ESI+01H],03AH
;
; Line 94:		ibuf[2] = '\\';
;
	MOV	BYTE [ESI+02H],05CH
;
; Line 95:		memcpy(__buf,ibuf,__buflen);
;
	MOV	ECX,DWORD [EBP+0CH]
	PUSH	ESI
	PUSH	EDI
	CLD
	REPNZ	MOVSB
	POP	EDI
	POP	ESI
;
; Line 96:		__buf[__buflen-1] = 0;
;
	MOV	EAX,DWORD [EBP+0CH]
	MOV	BYTE [EDI+EAX+0FFFFFFFFH+00H],00H
;
; Line 97:		return rv;
;
	MOV	EAX,DWORD [EBP+0FFFFFEF8H]
L_20:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
[GLOBAL	_getdisk]
;
; Line 100:	{
;
_getdisk:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 04H
;
; Line 102:		_dos_getdrive(&drv);
;
	LEA	EAX,[EBP+0FFFFFFFCH]
	PUSH	EAX
	CALL	__dos_getdrive
	POP	ECX
;
; Line 103:		return drv-1;
;
	MOV	EAX,DWORD [EBP+0FFFFFFFCH]
	DEC	EAX
L_21:
	MOV	ESP,EBP
	POP	EBP
	RET
[GLOBAL	_mkdir]
;
; Line 106:	{
;
_mkdir:
	PUSH	EBP
	MOV	EBP,ESP
;
; Line 107:		if (!CreateDirectoryA(__path,0)) {
;
	PUSH	BYTE 00H
	PUSH	DWORD [EBP+08H]
	CALL	CreateDirectoryA
	TEST	EAX,EAX
	JNE	SHORT	L_22
;
; Line 108:			errno = 2       ;
;
	MOV	DWORD [_errno],02H
;
; Line 109:			return -1;
;
	MOV	EAX,0FFFFFFFFH
	JMP	L_24
L_22:
;
; Line 111:		return 0;
;
	MOV	EAX,00H
L_24:
	POP	EBP
	RET
[GLOBAL	_mktemp]
;
; Line 114:	{
;
_mktemp:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 014H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
;
; Line 115:		int len = strlen(__template),i,j,k,l,m;
;
	PUSH	EDI
	MOV	EDI,ESI
	CLD
	SUB	EAX,EAX
	MOV	ECX,0FFFFFFFFH
	REPNZ	SCASB
	NOT	ECX
	DEC	ECX
	MOV	EAX,ECX
	POP	EDI
	MOV	DWORD [EBP+0FFFFFFECH],EAX
;
; Line 117:		if (len < 6) return 0;
;
	CMP	DWORD [EBP+0FFFFFFECH],BYTE 06H
	JGE	SHORT	L_27
	MOV	EAX,00H
	JMP	L_29
L_27:
;
; Line 118:		len = len - 6;
;
	SUB	DWORD [EBP+0FFFFFFECH],BYTE 06H
;
; Line 119:		if ((p =strchr(__template,'.')) && p < __template + len)
;
	PUSH	BYTE 02EH
	PUSH	ESI
	CALL	_strchr
	ADD	ESP,BYTE 08H
	MOV	DWORD [EBP+0FFFFFFFCH],EAX
	TEST	EAX,EAX
	JE	SHORT	L_30
	MOV	EAX,ESI
	ADD	EAX,DWORD [EBP+0FFFFFFECH]
	CMP	DWORD [EBP+0FFFFFFFCH],EAX
	JNC	SHORT	L_30
;
; Line 120:			return 0;
;
	MOV	EAX,00H
	JMP	L_29
L_30:
;
; Line 121:		strcpy(__template+len,"AA.AAA");
;
	MOV	EAX,DWORD L_25
	MOV	ECX,ESI
	ADD	ECX,DWORD [EBP+0FFFFFFECH]
	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
	MOV	ECX,ESI
	ADD	ECX,DWORD [EBP+0FFFFFFECH]
	MOV	DWORD [EBP+0FFFFFFF0H],00H
	JMP	L_34
L_32:
	MOV	DWORD [EBP+0FFFFFFF4H],00H
	JMP	L_38
L_36:
	MOV	DWORD [EBP+0FFFFFFF8H],00H
	JMP	L_42
L_40:
	MOV	EDI,00H
	JMP	L_46
L_44:
	MOV	EBX,00H
	JMP	L_50
L_48:
;
; Line 127:							if (!fopen(__template,"rb"))
;
	PUSH	DWORD L_26
	PUSH	ESI
	CALL	_fopen
	ADD	ESP,BYTE 08H
	TEST	EAX,EAX
	JNE	SHORT	L_52
;
; Line 128:								return __template;
;
	MOV	EAX,ESI
	JMP	L_29
L_52:
;
; Line 129:							fclose(__template);
;
	PUSH	ESI
	CALL	_fclose
	POP	ECX
;
; Line 130:							__template[l+5]++;
;
	INC	BYTE [ESI+EDI+05H]
;
; Line 131:						}
;
;
; Line 126:						for (m=0; m < 26; m++) {
;
L_49:
	INC	EBX
L_50:
	CMP	EBX,BYTE 01AH
	JL	NEAR	L_48
L_51:
;
; Line 132:						__template[l+5] = 'A';
;
	MOV	BYTE [ESI+EDI+05H+00H],041H
;
; Line 133:						__template[l+4]++;
;
	INC	BYTE [ESI+EDI+04H]
;
; Line 134:					}
;
;
; Line 125:					for (l=0; l < 26; l++) {
;
L_45:
	INC	EDI
L_46:
	CMP	EDI,BYTE 01AH
	JL	NEAR	L_44
L_47:
;
; Line 135:					__template[l+4] = 'A';
;
	MOV	BYTE [ESI+EDI+04H+00H],041H
;
; Line 136:					__template[l+3]++;
;
	INC	BYTE [ESI+EDI+03H]
;
; Line 137:				}
;
;
; Line 124:				for (k=0; k < 26; k++) {
;
L_41:
	INC	DWORD [EBP+0FFFFFFF8H]
L_42:
	CMP	DWORD [EBP+0FFFFFFF8H],BYTE 01AH
	JL	NEAR	L_40
L_43:
;
; Line 138:				__template[l+3] = 'A';
;
	MOV	BYTE [ESI+EDI+03H+00H],041H
;
; Line 139:				__template[l+1]++;
;
	INC	BYTE [ESI+EDI+01H]
;
; Line 140:			}
;
;
; Line 123:			for (j=0; j < 26; j++) {
;
L_37:
	INC	DWORD [EBP+0FFFFFFF4H]
L_38:
	CMP	DWORD [EBP+0FFFFFFF4H],BYTE 01AH
	JL	NEAR	L_36
L_39:
;
; Line 141:			__template[l+1] = 'A';
;
	MOV	BYTE [ESI+EDI+01H+00H],041H
;
; Line 142:			__template[l+0]++;
;
	INC	BYTE [ESI+EDI+00H]
;
; Line 143:		}
;
;
; Line 122:		for (i=0; i < 26; i++) {
;
L_33:
	INC	DWORD [EBP+0FFFFFFF0H]
L_34:
	CMP	DWORD [EBP+0FFFFFFF0H],BYTE 01AH
	JL	NEAR	L_32
L_35:
;
; Line 145:		return 0 ;
;
	MOV	EAX,00H
L_29:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
[GLOBAL	_rmdir]
;
; Line 149:	{
;
_rmdir:
	PUSH	EBP
	MOV	EBP,ESP
;
; Line 150:		if (!RemoveDirectoryA(__path)) {
;
	PUSH	DWORD [EBP+08H]
	CALL	RemoveDirectoryA
	TEST	EAX,EAX
	JNE	SHORT	L_54
;
; Line 151:			errno = 2       ;
;
	MOV	DWORD [_errno],02H
;
; Line 152:			return -1;
;
	MOV	EAX,0FFFFFFFFH
	JMP	L_56
L_54:
;
; Line 154:		return 0;
;
	MOV	EAX,00H
L_56:
	POP	EBP
	RET
[GLOBAL	_searchpath]
;
; Line 157:	{
;
_searchpath:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 04H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
;
; Line 159:		char *path = getenv("PATH"),*p=path,*q;
;
	PUSH	DWORD L_58
	CALL	_getenv
	POP	ECX
	MOV	DWORD [EBP+0FFFFFFFCH],EAX
	MOV	ESI,DWORD [EBP+0FFFFFFFCH]
;
; Line 161:		strcpy(buf,__file);
;
	LEA	EAX,[L_57]
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
	MOV	EDI,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
	LEA	ECX,[L_57]
;
; Line 162:		t = fopen(buf,"rb");
;
	PUSH	DWORD L_26
	LEA	EAX,[L_57]
	PUSH	EAX
	CALL	_fopen
	ADD	ESP,BYTE 08H
	MOV	EBX,EAX
;
; Line 163:		if (t) {
;
	TEST	EBX,EBX
	JE	NEAR	L_60
;
; Line 164:			fclose(t);
;
	PUSH	EBX
	CALL	_fclose
	POP	ECX
;
; Line 165:			if (!strchr(buf,'\\')) {
;
	PUSH	BYTE 05CH
	LEA	EAX,[L_57]
	PUSH	EAX
	CALL	_strchr
	ADD	ESP,BYTE 08H
	TEST	EAX,EAX
	JNE	NEAR	L_62
;
; Line 166:				getcwd(buf,255);
;
	PUSH	DWORD 0FFH
	LEA	EAX,[L_57]
	PUSH	EAX
	CALL	_getcwd
	ADD	ESP,BYTE 08H
;
; Line 167:				strcat(buf,"\\");
;
	MOV	EAX,DWORD L_59
	LEA	ECX,[L_57]
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,EAX
	MOV	EDI,ECX
	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
	LEA	ECX,[L_57]
;
; Line 168:			}
;
	JMP	L_63
L_62:
;
; Line 169:			else buf[0] = 0;
;
	MOV	BYTE [L_57],00H
L_63:
;
; Line 170:			strcat(buf,__file);
;
	LEA	EAX,[L_57]
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
	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
	LEA	ECX,[L_57]
;
; Line 171:			return buf;
;
	LEA	EAX,[L_57]
	JMP	L_64
L_60:
	JMP	L_65
L_67:
;
; Line 174:			q = buf;
;
	LEA	EDI,[L_57]
	JMP	L_68
L_70:
;
; Line 176:				*q++=*p++;
;
	MOV	EAX,ESI
	INC	ESI
	MOV	ECX,EDI
	INC	EDI
	MOV	AL,BYTE [EAX+00H]
	MOV	BYTE [ECX+00H],AL
L_68:
;
; Line 175:			while (*p != ';' && *p)
;
	MOVSX	EAX,BYTE [ESI+00H]
	CMP	EAX,BYTE 03BH
	JE	SHORT	L_71
	CMP	BYTE [ESI+00H],BYTE 00H
	JNE	NEAR	L_70
L_71:
L_69:
;
; Line 177:			if (*p) p++;
;
	CMP	BYTE [ESI+00H],BYTE 00H
	JE	SHORT	L_72
	INC	ESI
L_72:
;
; Line 178:			if (*(q-1) != '\\')
;
	LEA	EAX,[EDI+0FFFFFFFFH]
	MOVSX	EAX,BYTE [EAX+00H]
	CMP	EAX,BYTE 05CH
	JE	SHORT	L_74
;
; Line 179:				*q++ = '\\';
;
	MOV	EAX,EDI
	INC	EDI
	MOV	BYTE [EAX+00H],05CH
L_74:
;
; Line 180:			strcpy(q,__file);
;
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
	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 181:			if ((t = fopen(buf,"rb")) != 0) {
;
	PUSH	DWORD L_26
	LEA	EAX,[L_57]
	PUSH	EAX
	CALL	_fopen
	ADD	ESP,BYTE 08H
	MOV	EBX,EAX
	TEST	EAX,EAX
	JE	SHORT	L_76
;
; Line 182:				fclose(t);
;
	PUSH	EBX
	CALL	_fclose
	POP	ECX
;
; Line 183:				return buf;
;
	LEA	EAX,[L_57]
	JMP	L_64
L_76:
;
; Line 185:		}
;
L_65:
;
; Line 173:		else while (*p) {
;
	CMP	BYTE [ESI+00H],BYTE 00H
	JNE	NEAR	L_67
L_66:
L_61:
;
; Line 186:		return 0;
;
	MOV	EAX,00H
L_64:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
[GLOBAL	_setdisk]
;
; Line 190:	{
;
_setdisk:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 04H
;
; Line 192:		return _dos_setdrive(__drive,&nd);
;
	LEA	EAX,[EBP+0FFFFFFFCH]
	PUSH	EAX
	PUSH	DWORD [EBP+08H]
	CALL	__dos_setdrive
	ADD	ESP,BYTE 08H
L_78:
	MOV	ESP,EBP
	POP	EBP
	RET

SECTION _STRING
L_59:
	DB	05CH,00H
L_58:
	DB	050H,041H,054H,048H,00H
L_26:
	DB	072H,062H,00H
L_25:
	DB	041H,041H,02EH,041H,041H,041H,00H
SECTION _DATA
SECTION _BSS

L_57	RESB	0100H

SECTION _TEXT
[EXTERN	RemoveDirectoryA]
[EXTERN	_strncpy]
[EXTERN	_fopen]
[EXTERN	__dos_findnext]
[EXTERN	_getenv]
[EXTERN	_fclose]
[EXTERN	_strrchr]
[EXTERN	__dos_findfirst]
[EXTERN	__dos_setpwd]
[EXTERN	__dos_getdrive]
[EXTERN	CreateDirectoryA]
[EXTERN	_strchr]
[EXTERN	__dos_getpwd]
[EXTERN	__dos_setdrive]

SECTION _DATA
[EXTERN	_errno]
