Function at 0x404390
Capabilities:
Get common file path

Disassembly:
sub esp, 0x608
mov eax, dword [0x4527b8]
mov ecx, dword [esp + 0x610]
push ebx
push ebp
push esi
mov dword [esp + 0x610], eax
push edi
lea eax, [esp + 0x10]
push eax
mov ebx, 1
push ecx
mov dword [0x46cb0c], ebx
call fcn.0040ad90
mov ebp, eax
xor edi, edi
add esp, 8
cmp ebp, edi
mov dword [0x459f0c], ebp
jle 0x404fb7
xor eax, eax
cmp ebp, edi
mov dword [esp + 0x14], eax
jle 0x404fb7
jmp 0x4043f0
mov edx, dword [str._auto]
mov cx, word [0x43f13c]
mov dword [esp + 0x34], edx
mov word [esp + 0x38], cx
mov cx, word [0x43f134]
xor edx, edx
mov dword [esp + 0x3a], edx
mov word [esp + 0x44], cx
mov dword [esp + 0x3e], edx
xor ecx, ecx
mov word [esp + 0x42], dx
mov dl, byte [0x43f136]
mov dword [esp + 0x47], ecx
mov byte [esp + 0x4b], cl
mov cx, word [0x43f130]
mov byte [esp + 0x46], dl
mov edx, dword [str._beep]
mov word [esp + 0x50], cx
mov cx, word [0x43f128]
mov dword [esp + 0x4c], edx
xor edx, edx
mov word [esp + 0x5c], cx
xor ecx, ecx
mov dword [esp + 0x52], edx
mov dword [esp + 0x56], edx
mov dword [esp + 0x5f], ecx
mov word [esp + 0x5a], dx
mov dl, byte [0x43f12a]
mov byte [esp + 0x63], cl
mov cx, word [0x43f124]
mov byte [esp + 0x5e], dl
mov edx, dword [str._cache]
mov word [esp + 0x68], cx
xor ecx, ecx
mov dword [esp + 0x64], edx
mov dl, byte [0x43f126]
mov dword [esp + 0x6b], ecx
mov dword [esp + 0x6f], ecx
mov byte [esp + 0x6a], dl
mov dx, word [0x43f11c]
mov byte [esp + 0x73], cl
mov cl, byte [0x43f11e]
mov word [esp + 0x74], dx
mov byte [esp + 0x76], cl
mov ecx, dword [str._dismount]
xor edx, edx
mov dword [esp + 0x77], edx
mov dword [esp + 0x7c], ecx
mov cx, word [0x43f118]
mov byte [esp + 0x7b], dl
mov edx, dword [0x43f114]
mov word [esp + 0x84], cx
mov cx, word [0x43f10c]
mov dword [esp + 0x80], edx
xor edx, edx
mov word [esp + 0x8c], cx
mov dword [esp + 0x86], edx
xor ecx, ecx
mov word [esp + 0x8a], dx
mov dl, byte [0x43f10e]
mov dword [esp + 0x8f], ecx
mov byte [esp + 0x93], cl
mov ecx, dword [0x43f104]
mov byte [esp + 0x8e], dl
mov edx, dword [str._explore]
mov dword [esp + 0x98], ecx
mov dword [esp + 0x94], edx
mov dl, byte [0x43f108]
xor ecx, ecx
mov byte [esp + 0x9c], dl
mov dx, word [0x43f0fc]
mov dword [esp + 0x9d], ecx
mov word [esp + 0xa1], cx
mov word [esp + 0xa4], dx
mov byte [esp + 0xa3], cl
mov cl, byte [0x43f0fe]
xor edx, edx
mov dword [esp + 0xa7], edx
mov byte [esp + 0xa6], cl
mov ecx, dword [str._force]
mov byte [esp + 0xab], dl
mov dx, word [0x43f0f8]
mov word [esp + 0xb0], dx
xor edx, edx
mov dword [esp + 0xb3], edx
mov dword [esp + 0xac], ecx
mov cl, byte [0x43f0fa]
mov dword [esp + 0xb7], edx
mov byte [esp + 0xb2], cl
mov cx, word [0x43f0f0]
mov byte [esp + 0xbb], dl
mov dl, byte [0x43f0f2]
mov word [esp + 0xbc], cx
mov byte [esp + 0xbe], dl
mov edx, dword [str._help]
xor ecx, ecx
mov dword [esp + 0xbf], ecx
mov dword [esp + 0xc4], edx
xor edx, edx
mov byte [esp + 0xc3], cl
mov cx, word [0x43f0ec]
mov dword [esp + 0xca], edx
mov word [esp + 0xc8], cx
mov cx, word [0x43f0e4]
mov dword [esp + 0xce], edx
mov word [esp + 0xd2], dx
mov dl, byte [0x43f0e6]
mov word [esp + 0xd4], cx
xor ecx, ecx
mov byte [esp + 0xd6], dl
mov edx, dword [str._history]
mov dword [esp + 0xd7], ecx
mov byte [esp + 0xdb], cl
mov ecx, dword [0x43f0dc]
mov dword [esp + 0xdc], edx
mov dl, byte [0x43f0e0]
mov dword [esp + 0xe0], ecx
mov byte [esp + 0xe4], dl
mov dx, word [0x43f0d4]
xor ecx, ecx
mov word [esp + 0xec], dx
mov dword [esp + 0xe5], ecx
xor edx, edx
mov word [esp + 0xe9], cx
mov dword [esp + 0xef], edx
mov byte [esp + 0xeb], cl
mov cl, byte [0x43f0d6]
mov byte [esp + 0xf3], dl
mov edx, dword [0x43f0cc]
mov byte [esp + 0xee], cl
mov ecx, dword [str._keyfile]
mov dword [esp + 0xf8], edx
xor edx, edx
mov dword [esp + 0xf4], ecx
mov cl, byte [0x43f0d0]
mov dword [esp + 0xfd], edx
mov byte [esp + 0xfc], cl
mov cx, word [0x43f0c4]
mov word [esp + 0x101], dx
mov byte [esp + 0x103], dl
mov dl, byte [0x43f0c6]
mov word [esp + 0x104], cx
xor ecx, ecx
mov byte [esp + 0x106], dl
mov edx, dword [str._letter]
mov dword [esp + 0x107], ecx
mov byte [esp + 0x10b], cl
mov ecx, dword [0x43f0c0]
mov dword [esp + 0x10c], edx
xor edx, edx
mov dword [esp + 0x110], ecx
mov cx, word [0x43f0b8]
mov dword [esp + 0x114], edx
mov dword [esp + 0x118], edx
mov dl, byte [0x43f0ba]
mov word [esp + 0x11c], cx
xor ecx, ecx
mov byte [esp + 0x11e], dl
mov edx, dword [str._mountoption]
mov dword [esp + 0x11f], ecx
mov byte [esp + 0x123], cl
mov dword [esp + 0x124], edx
mov ecx, dword [0x43f0ac]
mov edx, dword [0x43f0b0]
mov dword [esp + 0x128], ecx
mov cl, byte [0x43f0b4]
mov byte [esp + 0x130], cl
mov cx, word [0x43f0a4]
mov dword [esp + 0x12c], edx
mov word [esp + 0x134], cx
xor edx, edx
xor ecx, ecx
mov word [esp + 0x131], dx
mov dword [esp + 0x137], ecx
mov byte [esp + 0x133], dl
mov dl, byte [0x43f0a6]
mov byte [esp + 0x13b], cl
mov ecx, dword [0x43f09c]
mov byte [esp + 0x136], dl
mov edx, dword [str._password]
mov dword [esp + 0x140], ecx
xor ecx, ecx
mov dword [esp + 0x13c], edx
mov dx, word [0x43f0a0]
mov dword [esp + 0x146], ecx
mov word [esp + 0x144], dx
mov dx, word [0x43f094]
mov word [esp + 0x14a], cx
mov cl, byte [0x43f096]
mov word [esp + 0x14c], dx
mov byte [esp + 0x14e], cl
mov ecx, dword [str._quit]
xor edx, edx
mov dword [esp + 0x14f], edx
mov dword [esp + 0x154], ecx
xor ecx, ecx
mov byte [esp + 0x153], dl
mov dx, word [0x43f090]
mov dword [esp + 0x15a], ecx
mov word [esp + 0x158], dx
mov dx, word [0x43f088]
mov dword [esp + 0x15e], ecx
mov word [esp + 0x162], cx
mov cl, byte [0x43f08a]
mov word [esp + 0x164], dx
xor edx, edx
mov byte [esp + 0x166], cl
mov ecx, dword [str._silent]
mov dword [esp + 0x167], edx
mov byte [esp + 0x16b], dl
mov edx, dword [0x43f084]
mov dword [esp + 0x16c], ecx
xor ecx, ecx
mov dword [esp + 0x170], edx
mov dx, word [0x43f07c]
mov dword [esp + 0x174], ecx
mov dword [esp + 0x178], ecx
mov cl, byte [0x43f07e]
mov word [esp + 0x17c], dx
xor edx, edx
mov byte [esp + 0x17e], cl
mov ecx, dword [str._volume]
mov dword [esp + 0x17f], edx
mov byte [esp + 0x183], dl
mov edx, dword [0x43f078]
mov dword [esp + 0x184], ecx
xor ecx, ecx
mov dword [esp + 0x188], edx
mov dx, word [0x43f070]
mov dword [esp + 0x18c], ecx
mov dword [esp + 0x190], ecx
mov cl, byte [0x43f072]
mov word [esp + 0x194], dx
xor edx, edx
mov byte [esp + 0x196], cl
mov ecx, dword [str._wipecache]
mov dword [esp + 0x197], edx
mov byte [esp + 0x19b], dl
mov edx, dword [0x43f068]
mov dword [esp + 0x19c], ecx
mov cx, word [0x43f06c]
mov dword [esp + 0x1a0], edx
mov word [esp + 0x1a4], cx
mov dl, byte [0x43f06e]
mov byte [esp + 0x1a6], dl
mov dx, word [0x43f060]
xor ecx, ecx
mov dword [esp + 0x1a7], ecx
mov byte [esp + 0x1ab], cl
mov cl, byte [0x43f062]
mov word [esp + 0x1ac], dx
xor edx, edx
mov byte [esp + 0x1ae], cl
mov dword [esp + 0x1af], edx
mov byte [esp + 0x1b3], dl
lea ecx, [esp + 0x34]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x10]
lea edx, [esp + 0x18]
push edx
mov dword [esp + 0x24], 0x10
mov edx, dword [ecx + eax*4]
push edx
lea eax, [esp + 0x24]
push eax
call fcn.0040af70
add eax, 0xffffffc1
add esp, 0xc
cmp eax, 0x38
ja case.0x404a20.64
movzx ecx, byte [eax + 0x405058]
jmp dword [ecx*4 + 0x405014]
mov ecx, dword [esp + 0x18]
push 0x20
lea edx, [esp + 0x1c8]
push edx
mov edx, dword [esp + 0x18]
push ebp
lea eax, [esp + 0x20]
push eax
push ecx
push edx
mov dword [0x45a344], ebx
call fcn.0040b1c0
add esp, 0x18
cmp eax, ebx
jne 0x404fa6
lea eax, [esp + 0x1c4]
push str.devices
push eax
call fcn.0041dc48
add esp, 8
test eax, eax
jne 0x404a7b
mov dword [0x45a348], ebx
jmp 0x404fa6
lea ecx, [esp + 0x1c4]
push str.favorites
push ecx
call fcn.0041dc48
add esp, 8
test eax, eax
jne 0x404fa6
mov dword [0x45a34c], ebx
jmp 0x404fa6
mov dword [0x45a30c], ebx
jmp 0x404fa6
mov ecx, dword [esp + 0x18]
push 8
lea edx, [esp + 0x1c0]
push edx
mov edx, dword [esp + 0x18]
push ebp
lea eax, [esp + 0x20]
push eax
push ecx
push edx
mov dword [0x45a314], ebx
call fcn.0040b1c0
lea eax, [esp + 0x1d4]
push 0x43f048
push eax
call fcn.0041dc48
add esp, 0x20
test eax, eax
je 0x404b09
lea ecx, [esp + 0x1bc]
push 0x43f044
push ecx
call fcn.0041dc48
add esp, 8
test eax, eax
jne 0x404fa6
mov dword [0x45a314], edi
jmp 0x404fa6
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
push 3
push 0x46cba4
push ebp
lea edx, [esp + 0x20]
push edx
push eax
push ecx
call fcn.0040b1c0
add esp, 0x18
cmp eax, ebx
jne 0x404b54
movsx edx, byte [0x46cba4]
push edx
call fcn.0041dc26
add esp, 4
sub eax, 0x41
mov dword [0x45a35c], eax
jmp 0x404fa6
mov dword [0x45a35c], 0xffffffff
jmp 0x404fa6
mov dword [0x45a308], ebx
jmp 0x404fa6
mov dword [0x45a338], ebx
mov dword [0x45a33c], ebx
jmp 0x404fa6
mov edx, dword [esp + 0x18]
push 0x208
lea eax, [esp + 0x410]
push eax
mov eax, dword [esp + 0x18]
push ebp
lea ecx, [esp + 0x20]
push ecx
push edx
push eax
call fcn.0040b1c0
add esp, 0x18
cmp eax, ebx
jne 0x404fa6
lea ecx, [esp + 0x40c]
push ecx
call fcn.00410d50
push 0x108
call fcn.0041db4b
push 0x104
lea edx, [esp + 0x418]
mov esi, eax
push edx
push esi
call fcn.0041d980
mov eax, dword [0x46cae0]
push esi
push eax
call fcn.00416f30
add esp, 0x1c
mov dword [0x46cae0], eax
jmp 0x404fa6
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x10]
push 3
push 0x46cba4
push ebp
lea ecx, [esp + 0x20]
push ecx
push edx
push eax
call fcn.0040b1c0
movsx ecx, byte [0x46cba4]
push ecx
call fcn.0041dc26
add esp, 0x1c
mov byte [0x46cba4], al
mov byte [0x45a310], al
jmp 0x404fa6
mov ecx, dword [esp + 0x18]
push 8
lea edx, [esp + 0x1b8]
push edx
mov edx, dword [esp + 0x18]
push ebp
lea eax, [esp + 0x20]
push eax
push ecx
push edx
mov dword [0x45a318], ebx
mov dword [0x466b80], ebx
call fcn.0040b1c0
lea eax, [esp + 0x1cc]
push 0x43f048
push eax
call fcn.0041dc48
add esp, 0x20
test eax, eax
je 0x404c8d
lea ecx, [esp + 0x1b4]
push 0x43f044
push ecx
call fcn.0041dc48
add esp, 8
test eax, eax
jne 0x404fa6
mov dword [0x466b80], edi
jmp 0x404fa6
mov ecx, dword [esp + 0x18]
push 0x10
lea edx, [esp + 0x28]
push edx
mov edx, dword [esp + 0x18]
push ebp
lea eax, [esp + 0x20]
push eax
push ecx
push edx
call fcn.0040b1c0
add esp, 0x18
cmp eax, ebx
jne 0x404fa6
lea eax, [esp + 0x24]
push 0x43f040
push eax
call fcn.0041dc48
add esp, 8
test eax, eax
je 0x404ceb
lea ecx, [esp + 0x24]
push str.readonly
push ecx
call fcn.0041dc48
add esp, 8
test eax, eax
jne 0x404cf1
mov dword [0x46cb00], ebx
lea edx, [esp + 0x24]
push 0x43f030
push edx
call fcn.0041dc48
add esp, 8
test eax, eax
je 0x404d1d
lea eax, [esp + 0x24]
push str.removable
push eax
call fcn.0041dc48
add esp, 8
test eax, eax
jne 0x404d23
mov dword [0x46cb04], ebx
lea ecx, [esp + 0x24]
push 0x43f020
push ecx
call fcn.0041dc48
add esp, 8
test eax, eax
je 0x404d4f
lea edx, [esp + 0x24]
push str.timestamp
push edx
call fcn.0041dc48
add esp, 8
test eax, eax
jne 0x404d55
mov dword [0x46cb0c], edi
lea eax, [esp + 0x24]
push str.system
push eax
call fcn.0041dc48
add esp, 8
test eax, eax
jne 0x404d71
mov dword [0x46cb10], ebx
lea ecx, [esp + 0x24]
push str.persistent
push ecx
call fcn.0041dc48
add esp, 8
test eax, eax
jne 0x404fa6
mov dword [0x46cb14], ebx
jmp 0x404fa6
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
push 0x41
push 0x46ca24
push ebp
lea edx, [esp + 0x20]
push edx
push eax
push ecx
call fcn.0040b1c0
mov eax, 0x46ca24
add esp, 0x18
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x404dc0
sub eax, edx
mov dword [0x46ca20], eax
mov dword [0x46cae4], ebx
jmp 0x404fa6
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
push 0x105
push 0x46c8a0
push ebp
lea edx, [esp + 0x20]
push edx
push eax
push ecx
call fcn.0040b1c0
add esp, 0x18
cmp eax, ebx
jne 0x404fa6
push 0x46c8a0
call fcn.00410d50
mov edx, dword [0x466b80]
mov eax, dword [esp + 0x620]
add esp, 4
push edx
push 0x46c8a0
push 0x409
push eax
call dword [sym.imp.USER32.dll_GetDlgItem]
push eax
call fcn.0040b250
mov dword [0x456890], ebx
jmp 0x404fa3
mov eax, dword [esp + 0x18]
push 0x20
lea ecx, [esp + 0x1e8]
push ecx
mov ecx, dword [esp + 0x18]
push ebp
lea edx, [esp + 0x20]
push edx
push eax
push ecx
mov dword [0x45a354], ebx
mov dword [0x450058], edi
call fcn.0040b1c0
add esp, 0x18
cmp eax, ebx
jne 0x404fa6
lea edx, [esp + 0x1e4]
push str.preferences
push edx
call fcn.0041dc48
add esp, 8
test eax, eax
jne 0x404fa6
mov dword [0x450058], ebx
jmp 0x404fa6
mov dword [0x466b7c], ebx
jmp 0x404fa6
mov dword [0x45a340], ebx
jmp 0x404fa6
mov eax, dword [esp + 0x10]
mov ecx, dword [eax]
push 0x103
push ecx
push 0x46c8a0
call fcn.0041d980
mov al, byte [0x46c8a0]
add esp, 0xc
cmp al, 0x5c
je 0x404f74
push 0x3a
push 0x46c8a0
call fcn.0041d680
add esp, 8
test eax, eax
jne 0x404f74
lea edx, [esp + 0x204]
push edx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
lea edi, [esp + 0x204]
dec edi
lea esp, [esp]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x404f10
mov ax, word [0x43eff0]
mov word [edi], ax
mov eax, 0x46c8a0
mov edx, eax
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x404f28
lea edi, [esp + 0x204]
sub eax, edx
dec edi
lea esp, [esp]
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x404f40
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
push 0x103
lea ecx, [esp + 0x208]
push ecx
push 0x46c8a0
call fcn.0041d980
add esp, 0xc
xor edi, edi
cmp ebp, ebx
jne 0x404f7e
mov dword [0x456890], ebx
mov edx, dword [0x466b80]
mov eax, dword [esp + 0x61c]
push edx
push 0x46c8a0
push 0x409
push eax
call dword [sym.imp.USER32.dll_GetDlgItem]
push eax
call fcn.0040b250
add esp, 0xc
mov eax, dword [esp + 0x14]
inc eax
cmp eax, ebp
mov dword [esp + 0x14], eax
jl 0x4043f0
dec ebp
js 0x404fd3
lea ebx, [ebx]
mov ecx, dword [esp + 0x10]
mov edx, dword [ecx + ebp*4]
push edx
call fcn.0041d905
add esp, 4
dec ebp
jns 0x404fc0
mov ecx, dword [esp + 0x614]
pop edi
pop esi
pop ebp
pop ebx
call fcn.0041d4a3
add esp, 0x608
ret
mov edx, dword [esp + 0x61c]
mov eax, dword [0x466ba0]
lea ecx, [esp + 0x1c]
push ecx
push 0x40ac20
push edx
push 0x1fd
push eax
call dword [sym.imp.USER32.dll_DialogBoxParamW]
push edi
call fcn.0041d8c5
nop
ljmp 0x404a