	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
[GLOBAL	_CreatePath]
;
; Line 18:	void CreatePath(char *spath,char *fspec,int InclName,int Change)
;
_CreatePath:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,0114H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD _dir
	MOV	EDI,DWORD [EBP+08H]
L_5:
;
; Line 19:	{
;
;
; Line 20:	int cm = 0;
;
	MOV	EBX,00H
;
; Line 25:	if (!Change)    {
;
	CMP	DWORD [EBP+014H],BYTE 00H
	JNE	SHORT	L_6
;
; Line 27:	currdrive = getdisk();
;
	CALL	_getdisk
	MOV	DWORD [EBP-0110H],EAX
;
; Line 28:	getcwd(currdir, sizeof currdir);
;
	PUSH	DWORD 0105H
	LEA	EAX,[EBP-010CH]
	PUSH	EAX
	CALL	_getcwd
	ADD	ESP,BYTE 08H
;
; Line 29:	memmove(currdir, currdir+2, strlen(currdir+1));
;
	LEA	EAX,[EBP-010BH]
	PUSH	EAX
	CALL	_strlen
	POP	ECX
	PUSH	EAX
	LEA	EAX,[EBP-010AH]
	PUSH	EAX
	LEA	EAX,[EBP-010CH]
	PUSH	EAX
	CALL	_memmove
	ADD	ESP,BYTE 0CH
;
; Line 30:	cp = currdir+strlen(currdir)-1;
;
	LEA	EAX,[EBP-010CH]
	PUSH	EAX
	LEA	EAX,[EBP-010CH]
	PUSH	EAX
	CALL	_strlen
	POP	ECX
	MOV	ECX,EAX
	POP	EAX
	ADD	EAX,ECX
	DEC	EAX
	MOV	DWORD [EBP-04H],EAX
;
; Line 31:	if (*cp == '\\')
;
	MOV	EAX,DWORD [EBP-04H]
	MOVSX	EAX,BYTE [EAX+00H]
	CMP	EAX,BYTE 05CH
	JNE	SHORT	L_8
;
; Line 32:	*cp = '\0';
;
	MOV	EAX,DWORD [EBP-04H]
	MOV	BYTE [EAX+00H],00H
L_8:
L_6:
;
; Line 34:	*drive = *dir = *name = *ext = '\0';
;
	MOV	BYTE [_ext],00H
	MOV	BYTE [_name],00H
	MOV	BYTE [ESI+00H],00H
	MOV	BYTE [_drive],00H
;
; Line 35:	fnsplit(fspec, drive, dir, name, ext);
;
	PUSH	DWORD _ext
	PUSH	DWORD _name
	PUSH	ESI
	PUSH	DWORD _drive
	PUSH	DWORD [EBP+0CH]
	CALL	_fnsplit
	ADD	ESP,BYTE 014H
;
; Line 36:	if (!InclName)
;
	CMP	DWORD [EBP+010H],BYTE 00H
	JNE	SHORT	L_10
;
; Line 37:	*name = *ext = '\0';
;
	MOV	BYTE [_ext],00H
	MOV	BYTE [_name],00H
L_10:
;
; Line 38:	*drive = toupper(*drive);
;
	MOVSX	EAX,BYTE [_drive]
	PUSH	EAX
	CALL	_toupper
	POP	ECX
	MOV	BYTE [_drive],AL
;
; Line 39:	if (*ext)
;
	CMP	BYTE [_ext],BYTE 00H
	JE	SHORT	L_12
;
; Line 40:	cm |= EXTENSION;
;
	BTS	EBX,01H
L_12:
;
; Line 41:	if (InclName && *name)
;
	CMP	DWORD [EBP+010H],BYTE 00H
	JE	SHORT	L_14
	CMP	BYTE [_name],BYTE 00H
	JE	SHORT	L_14
;
; Line 42:	cm |= FILENAME;
;
	BTS	EBX,02H
L_14:
;
; Line 43:	if (*dir)
;
	CMP	BYTE [ESI+00H],BYTE 00H
	JE	SHORT	L_16
;
; Line 44:	cm |= DIRECTORY;
;
	BTS	EBX,03H
L_16:
;
; Line 45:	if (*drive)
;
	CMP	BYTE [_drive],BYTE 00H
	JE	SHORT	L_18
;
; Line 46:	cm |= DRIVE;
;
	BTS	EBX,04H
L_18:
;
; Line 47:	if (cm & DRIVE)
;
	MOV	EAX,EBX
	AND	EAX,BYTE 010H
	JE	SHORT	L_20
;
; Line 48:	setdisk(*drive - 'A');
;
	MOVSX	EAX,BYTE [_drive]
	SUB	EAX,BYTE 041H
	PUSH	EAX
	CALL	_setdisk
	POP	ECX
	JMP	SHORT	L_21
L_20:
;
; Line 50:	*drive = getdisk();
;
	CALL	_getdisk
	MOV	BYTE [_drive],AL
;
; Line 51:	*drive += 'A';
;
	ADD	BYTE [_drive],BYTE 041H
L_21:
;
; Line 53:	if (cm & DIRECTORY)    {
;
	MOV	EAX,EBX
	AND	EAX,BYTE 08H
	JE	SHORT	L_22
;
; Line 54:	cp = dir+strlen(dir)-1;
;
	PUSH	ESI
	CALL	_strlen
	POP	ECX
	ADD	EAX,ESI
	DEC	EAX
	MOV	DWORD [EBP-04H],EAX
;
; Line 55:	if (*cp == '\\')
;
	MOV	EAX,DWORD [EBP-04H]
	MOVSX	EAX,BYTE [EAX+00H]
	CMP	EAX,BYTE 05CH
	JNE	SHORT	L_24
;
; Line 56:	*cp = '\0';
;
	MOV	EAX,DWORD [EBP-04H]
	MOV	BYTE [EAX+00H],00H
L_24:
;
; Line 57:	chdir(dir);
;
	PUSH	ESI
	CALL	_chdir
	POP	ECX
L_22:
;
; Line 59:	getcwd(dir, sizeof dir);
;
	PUSH	DWORD 0100H
	PUSH	ESI
	CALL	_getcwd
	ADD	ESP,BYTE 08H
;
; Line 60:	memmove(dir, dir+2, strlen(dir+1));
;
	MOV	EAX,ESI
	INC	EAX
	PUSH	EAX
	CALL	_strlen
	POP	ECX
	PUSH	EAX
	MOV	EAX,ESI
	ADD	EAX,BYTE 02H
	PUSH	EAX
	PUSH	ESI
	CALL	_memmove
	ADD	ESP,BYTE 0CH
;
; Line 61:	if (InclName)    {
;
	CMP	DWORD [EBP+010H],BYTE 00H
	JE	SHORT	L_26
;
; Line 62:	if (!(cm & FILENAME))
;
	MOV	EAX,EBX
	AND	EAX,BYTE 04H
	JNE	SHORT	L_28
;
; Line 63:	strcpy(name, "*");
;
	PUSH	DWORD L_1
	PUSH	DWORD _name
	CALL	_strcpy
	ADD	ESP,BYTE 08H
L_28:
;
; Line 64:	if (!(cm & EXTENSION) && strchr(fspec, '.') != NULL)
;
	MOV	EAX,EBX
	AND	EAX,BYTE 02H
	JNE	SHORT	L_30
	PUSH	BYTE 02EH
	PUSH	DWORD [EBP+0CH]
	CALL	_strchr
	ADD	ESP,BYTE 08H
	TEST	EAX,EAX
	JE	SHORT	L_30
;
; Line 65:	strcpy(ext, ".*");
;
	PUSH	DWORD L_2
	PUSH	DWORD _ext
	CALL	_strcpy
	ADD	ESP,BYTE 08H
L_30:
	JMP	SHORT	L_27
L_26:
;
; Line 68:	*name = *ext = '\0';
;
	MOV	BYTE [_ext],00H
	MOV	BYTE [_name],00H
L_27:
;
; Line 69:	if (dir[strlen(dir)-1] != '\\')
;
	PUSH	ESI
	CALL	_strlen
	POP	ECX
	DEC	EAX
	MOVSX	EAX,BYTE [ESI+EAX+00H]
	CMP	EAX,BYTE 05CH
	JE	SHORT	L_32
;
; Line 70:	strcat(dir, "\\");
;
	PUSH	DWORD L_3
	PUSH	ESI
	CALL	_strcat
	ADD	ESP,BYTE 08H
L_32:
;
; Line 71:	if (spath != NULL)
;
	TEST	EDI,EDI
	JE	SHORT	L_34
;
; Line 72:	fnmerge(spath, drive, dir, name, ext);
;
	PUSH	DWORD _ext
	PUSH	DWORD _name
	PUSH	ESI
	PUSH	DWORD _drive
	PUSH	EDI
	CALL	_fnmerge
	ADD	ESP,BYTE 014H
L_34:
;
; Line 73:	if (!Change)    {
;
	CMP	DWORD [EBP+014H],BYTE 00H
	JNE	SHORT	L_36
;
; Line 74:	setdisk(currdrive);
;
	PUSH	DWORD [EBP-0110H]
	CALL	_setdisk
	POP	ECX
;
; Line 75:	chdir(currdir);
;
	LEA	EAX,[EBP-010CH]
	PUSH	EAX
	CALL	_chdir
	POP	ECX
L_36:
;
; Line 77:	}
;
L_4:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
;
; Line 79:	static int dircmp(const void *c1, const void *c2)
;
_dircmp:
	PUSH	EBP
	MOV	EBP,ESP
L_39:
;
; Line 80:	{
;
;
; Line 81:	return stricmp(*(char **)c1, *(char **)c2);
;
	MOV	EAX,DWORD [EBP+0CH]
	PUSH	DWORD [EAX+00H]
	MOV	EAX,DWORD [EBP+08H]
	PUSH	DWORD [EAX+00H]
	CALL	_stricmp
	ADD	ESP,BYTE 08H
L_38:
	POP	EBP
	RET
;
; Line 84:	static BOOL BuildList(WINDOW wnd, char *fspec, BOOL dirs)
;
_BuildList:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,0140H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
L_42:
;
; Line 85:	{
;
;
; Line 86:	int ax, i = 0, criterr = 1;
;
	MOV	EBX,00H
	MOV	DWORD [EBP-0138H],01H
;
; Line 88:	CTLWINDOW *ct = FindCommand(wnd->extension,
;
	PUSH	BYTE 03H
	CMP	DWORD [EBP+010H],BYTE 00H
	JE	SHORT	L_43
	MOV	EAX,02CH
	JMP	SHORT	L_44
L_43:
	MOV	EAX,02BH
L_44:
	MOVSX	EAX,AX
	PUSH	EAX
	MOV	EAX,DWORD [EBP+08H]
	PUSH	DWORD [EAX+06CH]
	CALL	_FindCommand
	ADD	ESP,BYTE 0CH
	MOV	DWORD [EBP-08H],EAX
;
; Line 91:	char **dirlist = NULL;
;
	MOV	ESI,00H
;
; Line 93:	if (ct != NULL)    {
;
	CMP	DWORD [EBP-08H],BYTE 00H
	JE	NEAR	L_45
;
; Line 94:	lwnd = ct->wnd;
;
	MOV	EAX,DWORD [EBP-08H]
	MOV	EAX,DWORD [EAX+02CH]
	MOV	DWORD [EBP-04H],EAX
;
; Line 95:	SendMessage(lwnd, CLEARTEXT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 033H
	PUSH	DWORD [EBP-04H]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
	JMP	SHORT	L_47
L_49:
;
; Line 98:	ax = findfirst(fspec, &ff, dirs ? FA_DIREC: 0);
;
	CMP	DWORD [EBP+010H],BYTE 00H
	JE	SHORT	L_50
	MOV	EAX,010H
	JMP	SHORT	L_51
L_50:
	MOV	EAX,00H
L_51:
	PUSH	EAX
	LEA	EAX,[EBP-0134H]
	PUSH	EAX
	PUSH	DWORD [EBP+0CH]
	CALL	_findfirst
	ADD	ESP,BYTE 0CH
	MOV	DWORD [EBP-013CH],EAX
;
; Line 99:	criterr = TestCriticalError();
;
	CALL	_TestCriticalError
	MOV	DWORD [EBP-0138H],EAX
L_47:
;
; Line 97:	while (criterr == 1)    {
;
	CMP	DWORD [EBP-0138H],BYTE 01H
	JE	SHORT	L_49
L_48:
;
; Line 101:	if (criterr)
;
	CMP	DWORD [EBP-0138H],BYTE 00H
	JE	SHORT	L_52
;
; Line 102:	return FALSE;
;
	MOV	EAX,00H
	JMP	NEAR	L_41
L_52:
	JMP	SHORT	L_54
L_56:
;
; Line 104:	if (!dirs || (ff.ff_attrib & FA_DIREC) && strcmp(ff.ff_name, "."))	{
;
	CMP	DWORD [EBP+010H],BYTE 00H
	JE	SHORT	L_59
	MOVZX	EAX,BYTE [EBP-011FH]
	AND	EAX,BYTE 010H
	JE	SHORT	L_57
	PUSH	DWORD L_40
	LEA	EAX,[EBP-0116H]
	PUSH	EAX
	CALL	_strcmp
	ADD	ESP,BYTE 08H
	TEST	EAX,EAX
	JE	SHORT	L_57
L_59:
;
; Line 105:	dirlist = DFrealloc(dirlist, sizeof(char *)*(i+1));
;
	MOV	EAX,EBX
	INC	EAX
	SHL	EAX,02H
	PUSH	EAX
	PUSH	ESI
	CALL	_DFrealloc
	ADD	ESP,BYTE 08H
	MOV	ESI,EAX
;
; Line 106:	dirlist[i] = DFmalloc(strlen(ff.ff_name)+1);
;
	LEA	EAX,[EBP-0116H]
	PUSH	EAX
	CALL	_strlen
	POP	ECX
	INC	EAX
	PUSH	EAX
	CALL	_DFmalloc
	POP	ECX
	MOV	DWORD [ESI+EBX*4+00H],EAX
;
; Line 107:	strcpy(dirlist[i++], ff.ff_name);
;
	LEA	EAX,[EBP-0116H]
	PUSH	EAX
	MOV	EAX,EBX
	INC	EBX
	PUSH	DWORD [ESI+EAX*4+00H]
	CALL	_strcpy
	ADD	ESP,BYTE 08H
L_57:
;
; Line 109:	ax = findnext(&ff);
;
	LEA	EAX,[EBP-0134H]
	PUSH	EAX
	CALL	_findnext
	POP	ECX
	MOV	DWORD [EBP-013CH],EAX
L_54:
;
; Line 103:	while (ax == 0)    {
;
	CMP	DWORD [EBP-013CH],BYTE 00H
	JE	NEAR	L_56
L_55:
;
; Line 111:	if (dirlist != NULL)    {
;
	TEST	ESI,ESI
	JE	SHORT	L_60
;
; Line 114:	qsort(dirlist, i, sizeof(void *), dircmp);
;
	PUSH	DWORD _dircmp
	PUSH	BYTE 04H
	PUSH	EBX
	PUSH	ESI
	CALL	_qsort
	ADD	ESP,BYTE 010H
	MOV	EDI,00H
	JMP	SHORT	L_64
L_62:
;
; Line 117:	SendMessage(lwnd,ADDTEXT,(PARAM)dirlist[j],0);
;
	PUSH	BYTE 00H
	PUSH	DWORD [ESI+EDI*4+00H]
	PUSH	BYTE 030H
	PUSH	DWORD [EBP-04H]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 118:	free(dirlist[j]);
;
	PUSH	DWORD [ESI+EDI*4+00H]
	CALL	_free
	POP	ECX
;
; Line 116:	for (j = 0; j < i; j++)    {
;
L_63:
	INC	EDI
L_64:
	CMP	EDI,EBX
	JL	SHORT	L_62
L_65:
;
; Line 120:	free(dirlist);
;
	PUSH	ESI
	CALL	_free
	POP	ECX
L_60:
;
; Line 122:	SendMessage(lwnd, SHOW_WINDOW, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 05H
	PUSH	DWORD [EBP-04H]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_45:
;
; Line 124:	return TRUE;
;
	MOV	EAX,01H
L_41:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
[GLOBAL	_BuildFileList]
;
; Line 127:	BOOL BuildFileList(WINDOW wnd, char *fspec)
;
_BuildFileList:
	PUSH	EBP
	MOV	EBP,ESP
L_67:
;
; Line 128:	{
;
;
; Line 129:	return BuildList(wnd, fspec, FALSE);
;
	PUSH	BYTE 00H
	PUSH	DWORD [EBP+0CH]
	PUSH	DWORD [EBP+08H]
	CALL	_BuildList
	ADD	ESP,BYTE 0CH
L_66:
	POP	EBP
	RET
[GLOBAL	_BuildDirectoryList]
;
; Line 132:	void BuildDirectoryList(WINDOW wnd)
;
_BuildDirectoryList:
	PUSH	EBP
	MOV	EBP,ESP
L_70:
;
; Line 133:	{
;
;
; Line 134:	BuildList(wnd, "*.*", TRUE);
;
	PUSH	BYTE 01H
	PUSH	DWORD L_68
	PUSH	DWORD [EBP+08H]
	CALL	_BuildList
	ADD	ESP,BYTE 0CH
;
; Line 135:	}
;
L_69:
	POP	EBP
	RET
[GLOBAL	_BuildDriveList]
;
; Line 137:	void BuildDriveList(WINDOW wnd)
;
_BuildDriveList:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 040H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	LEA	ESI,[EBP-03CH]
	LEA	EDI,[EBP-020H]
L_75:
;
; Line 138:	{
;
;
; Line 139:	CTLWINDOW *ct = FindCommand(wnd->extension, ID_DRIVE,LISTBOX);
;
	PUSH	BYTE 03H
	PUSH	BYTE 02DH
	MOV	EAX,DWORD [EBP+08H]
	PUSH	DWORD [EAX+06CH]
	CALL	_FindCommand
	ADD	ESP,BYTE 0CH
	MOV	DWORD [EBP-04H],EAX
;
; Line 140:	if (ct != NULL)    {
;
	CMP	DWORD [EBP-04H],BYTE 00H
	JE	NEAR	L_76
;
; Line 144:	WINDOW lwnd = ct->wnd;
;
	MOV	EAX,DWORD [EBP-04H]
	MOV	EAX,DWORD [EAX+02CH]
	MOV	DWORD [EBP-0CH],EAX
;
; Line 145:	SendMessage(lwnd, CLEARTEXT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 033H
	PUSH	DWORD [EBP-0CH]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 147:	cd = getdisk();
;
	CALL	_getdisk
	MOV	DWORD [EBP-010H],EAX
	MOV	EBX,00H
	JMP	NEAR	L_80
L_78:
;
; Line 150:	setdisk(dr);
;
	PUSH	EBX
	CALL	_setdisk
	POP	ECX
;
; Line 151:	ndr = getdisk();
;
	CALL	_getdisk
	MOV	DWORD [EBP-040H],EAX
;
; Line 152:	if (ndr == dr)    {
;
	CMP	DWORD [EBP-040H],EBX
	JNE	NEAR	L_82
;
; Line 154:	if (dr == 1)    {
;
	CMP	EBX,BYTE 01H
	JNE	SHORT	L_84
;
; Line 155:	regs.w.ax = 0x440e;  
;
	MOV	WORD [SS:ESI+00H],0440EH
;
; Line 156:	regs.h.bl = dr+1;
;
	MOV	EAX,EBX
	INC	EAX
	MOV	BYTE [SS:ESI+04H],AL
;
; Line 157:	_int386(DOS, &regs, &regs);
;
	PUSH	ESI
	PUSH	ESI
	PUSH	BYTE 021H
	CALL	__int386
	ADD	ESP,BYTE 0CH
;
; Line 158:	if (regs.h.al != 0)
;
	MOVZX	EAX,BYTE [SS:ESI+00H]
	TEST	EAX,EAX
	JNE	SHORT	L_79
;
; Line 159:	continue;
;
L_86:
L_84:
;
; Line 162:	sprintf(drname, "%c:", dr+'A');
;
	MOV	EAX,EBX
	ADD	EAX,BYTE 041H
	PUSH	EAX
	PUSH	DWORD L_71
	PUSH	EDI
	CALL	_sprintf
	ADD	ESP,BYTE 0CH
;
; Line 165:	regs.w.ax = 0x4409;      
;
	MOV	WORD [SS:ESI+00H],04409H
;
; Line 166:	regs.h.bl = dr+1;
;
	MOV	EAX,EBX
	INC	EAX
	MOV	BYTE [SS:ESI+04H],AL
;
; Line 167:	_int386(DOS, &regs, &regs);
;
	PUSH	ESI
	PUSH	ESI
	PUSH	BYTE 021H
	CALL	__int386
	ADD	ESP,BYTE 0CH
;
; Line 168:	if (!regs.w.cflag)    {
;
	CMP	DWORD [SS:ESI+018H],BYTE 00H
	JNE	SHORT	L_88
;
; Line 169:	if (regs.w.dx & 0x1000)
;
	MOVZX	EAX,WORD [SS:ESI+0CH]
	AND	EAX,01000H
	JE	SHORT	L_90
;
; Line 170:	strcat(drname, " (Net)");
;
	PUSH	DWORD L_72
	PUSH	EDI
	CALL	_strcat
	ADD	ESP,BYTE 08H
	JMP	SHORT	L_91
L_90:
;
; Line 171:	else if (regs.w.dx == 0x0800)
;
	MOVZX	EAX,WORD [SS:ESI+0CH]
	CMP	EAX,0800H
	JNE	SHORT	L_92
;
; Line 172:	strcat(drname, " (RAM)");
;
	PUSH	DWORD L_73
	PUSH	EDI
	CALL	_strcat
	ADD	ESP,BYTE 08H
L_92:
L_91:
L_88:
;
; Line 174:	SendMessage(lwnd,ADDTEXT,(PARAM)drname,0);
;
	PUSH	BYTE 00H
	PUSH	EDI
	PUSH	BYTE 030H
	PUSH	DWORD [EBP-0CH]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_82:
;
; Line 148:	for (dr = 0; dr < 26; dr++)    {
;
L_79:
	INC	EBX
L_80:
	CMP	EBX,BYTE 01AH
	JB	NEAR	L_78
L_81:
;
; Line 177:	SendMessage(lwnd, SHOW_WINDOW, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 05H
	PUSH	DWORD [EBP-0CH]
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 178:	setdisk(cd);
;
	PUSH	DWORD [EBP-010H]
	CALL	_setdisk
	POP	ECX
L_76:
;
; Line 180:	}
;
L_74:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
[GLOBAL	_BuildPathDisplay]
;
; Line 182:	void BuildPathDisplay(WINDOW wnd)
;
_BuildPathDisplay:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 08H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	EDI,DWORD _path
L_95:
;
; Line 183:	{
;
;
; Line 184:	CTLWINDOW *ct = FindCommand(wnd->extension, ID_PATH,TEXT);
;
	PUSH	BYTE 0DH
	PUSH	BYTE 02EH
	MOV	EAX,DWORD [EBP+08H]
	PUSH	DWORD [EAX+06CH]
	CALL	_FindCommand
	ADD	ESP,BYTE 0CH
	MOV	DWORD [EBP-04H],EAX
;
; Line 185:	if (ct != NULL)	{
;
	CMP	DWORD [EBP-04H],BYTE 00H
	JE	SHORT	L_96
;
; Line 187:	WINDOW lwnd = ct->wnd;
;
	MOV	EAX,DWORD [EBP-04H]
	MOV	EBX,DWORD [EAX+02CH]
;
; Line 188:	CreatePath(path, "*.*", FALSE, FALSE);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	DWORD L_68
	PUSH	EDI
	CALL	_CreatePath
	ADD	ESP,BYTE 010H
;
; Line 189:	len = strlen(path);
;
	PUSH	EDI
	CALL	_strlen
	POP	ECX
	MOV	ESI,EAX
;
; Line 190:	if (len > 3)
;
	CMP	ESI,BYTE 03H
	JLE	SHORT	L_98
;
; Line 191:	path[len-1] = '\0';
;
	MOV	EAX,ESI
	DEC	EAX
	MOV	BYTE [EDI+EAX+00H],00H
L_98:
;
; Line 192:	SendMessage(lwnd,SETTEXT,(PARAM)path,0);
;
	PUSH	BYTE 00H
	PUSH	EDI
	PUSH	BYTE 034H
	PUSH	EBX
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
;
; Line 193:	SendMessage(lwnd, PAINT, 0, 0);
;
	PUSH	BYTE 00H
	PUSH	BYTE 00H
	PUSH	BYTE 09H
	PUSH	EBX
	CALL	_SendMessage
	ADD	ESP,BYTE 010H
L_96:
;
; Line 195:	}
;
L_94:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
SECTION _STRING
L_73:
	DB	020H,028H,052H,041H,04DH,029H,00H
L_72:
	DB	020H,028H,04EH,065H,074H,029H,00H
L_71:
	DB	025H,063H,03AH,00H
L_68:
	DB	02AH,02EH,02AH,00H
L_40:
	DB	02EH,00H
L_3:
	DB	05CH,00H
L_2:
	DB	02EH,02AH,00H
L_1:
	DB	02AH,00H
SECTION _DATA

_drive	DB	020H,03AH,00H
SECTION _BSS

_path	RESB	0104H

_dir	RESB	0100H

_name	RESB	0100H

_ext	RESB	0100H
SECTION _CONST

SECTION _TEXT
[EXTERN	_sprintf]
[EXTERN	_stricmp]
[EXTERN	_DFrealloc]
[EXTERN	_getcwd]
[EXTERN	_chdir]
[EXTERN	_findfirst]
[EXTERN	_FindCommand]
[EXTERN	_fnmerge]
[EXTERN	_strlen]
[EXTERN	_setdisk]
[EXTERN	_fnsplit]
[EXTERN	_getdisk]
[EXTERN	_qsort]
[EXTERN	_memmove]
[EXTERN	_DFmalloc]
[EXTERN	_free]
[EXTERN	_findnext]
[EXTERN	_SendMessage]
[EXTERN	_strcat]
[EXTERN	_strchr]
[EXTERN	_strcmp]
[EXTERN	__int386]
[EXTERN	_TestCriticalError]
[EXTERN	_toupper]
[EXTERN	_strcpy]
