Function at 0x412220
Capabilities:
Check if file exists
Get common file path
Get file attributes
Set current directory

Disassembly:
push 0xffffffffffffffff
push 0x4d1ad9
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x358
mov eax, dword [0x4f83ec]
push ebx
mov ebx, ecx
push ebp
mov ecx, dword fs:[0x2c]
push esi
push edi
mov ebp, 1
mov eax, dword [ecx + eax*4]
mov dword [esp + 0x30], eax
mov cl, byte [eax + 0x226]
test cl, cl
jne 0x41226a
mov ebp, dword [esp + 0x378]
mov edx, dword [ebx + 0xd4]
mov esi, dword [sym.imp.USER32.dll_SendMessageA]
push 0
push 8
push 0x110a
push edx
call esi
test eax, eax
jne 0x412297
push eax
mov eax, dword [ebx + 0xd4]
push 9
push 0x110a
push eax
call esi
lea ecx, [ebx + 0x2548]
push eax
call fcn.00436b40
mov esi, eax
test esi, esi
je 0x4125bc
mov edx, dword [esi + 4]
lea ecx, [esp + 0x54]
push ecx
push edx
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListA]
test eax, eax
je 0x4125bc
lea eax, [esp + 0x54]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov byte [esp + eax + 0x55], 0
mov ecx, 7
xor eax, eax
lea edi, [esp + 0x34]
rep stosd dword es:[edi], eax
mov ecx, dword [ebx + 0xcc]
lea edx, [esp + 0x54]
stosw word es:[edi], ax
mov eax, dword [esp + 0x37c]
mov dword [esp + 0x34], ecx
test eax, eax
mov dword [esp + 0x38], 3
mov dword [esp + 0x3c], edx
mov word [esp + 0x44], 4
je 0x412316
mov word [esp + 0x44], 0x44
test ebp, ebp
jne 0x41231f
or byte [esp + 0x44], 0x10
lea eax, [esp + 0x264]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
mov edi, dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
push 0x4ed924
call edi
lea ecx, [esp + 0x34]
push ecx
call dword [sym.imp.SHELL32.dll_SHFileOperationA]
lea edx, [esp + 0x264]
mov ebp, eax
push edx
call edi
test ebp, ebp
jne 0x4125bc
lea eax, [esp + 0x54]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
jne 0x4125bc
push 0x4e20
mov dword [esp + 0x14], vtable.HashTable_struct_DescEntry_.0
mov dword [esp + 0x1c], 0x1388
call fcn.004bd49b
mov ecx, dword [esp + 0x1c]
mov edi, eax
xor eax, eax
mov dword [esp + 0x18], edi
rep stosd dword es:[edi], eax
add esp, 4
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x24], ebp
mov dword [esp + 0x28], ebp
mov dword [esp + 0x10], vtable.DescTable.0
mov edx, dword [esi + 4]
lea ecx, [esp + 0x15c]
push ecx
push edx
mov dword [esp + 0x378], ebp
mov dword [esp + 0x28], 1
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListA]
test eax, eax
je 0x41251f
lea eax, [esp + 0x15c]
push eax
call fcn.00471a00
mov edi, eax
add esp, 4
cmp edi, ebp
je 0x41251f
push 0x14
call fcn.004bd49b
add esp, 4
mov dword [esp + 0x2c], eax
cmp eax, ebp
mov byte [esp + 0x370], 1
je 0x41241f
push 0x4f55a8
push edi
mov ecx, eax
call fcn.00423c00
mov esi, eax
jmp 0x412421
xor esi, esi
push 0x4d6f00
push edi
mov byte [esp + 0x378], 0
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov edx, dword [esp + 0x30]
xor ecx, ecx
lea eax, [esp + 0x15c]
mov cl, byte [edx + 0x21f]
push ecx
push eax
lea ecx, [esp + 0x18]
call fcn.00423f30
cmp esi, ebp
je 0x41251f
mov ecx, dword [esp + 0x18]
push ecx
mov ecx, esi
call fcn.00423cf0
mov edx, dword [esp + 0x14]
mov edi, dword [edx + eax*4]
cmp edi, ebp
je 0x412485
push esi
mov ecx, edi
call fcn.00423cb0
test eax, eax
jne 0x412485
mov edi, dword [edi + 4]
cmp edi, ebp
jne 0x412472
mov eax, dword [esi]
push 1
mov ecx, esi
call dword [eax]
cmp edi, ebp
je 0x41251f
mov ecx, dword [esp + 0x18]
push ecx
mov ecx, edi
call fcn.00423cf0
mov edx, dword [esp + 0x14]
mov dword [esp + 0x2c], eax
mov esi, dword [edx + eax*4]
test esi, esi
je 0x4124f6
push edi
mov ecx, esi
call fcn.00423cb0
test eax, eax
jne 0x4124c7
mov ebp, esi
mov esi, dword [esi + 4]
test esi, esi
jne 0x4124b0
jmp 0x4124f6
test esi, esi
je 0x4124f6
mov eax, dword [esi + 4]
test ebp, ebp
je 0x4124d7
mov dword [ebp + 4], eax
jmp 0x4124e2
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x2c]
mov dword [ecx + edx*4], eax
mov eax, dword [esp + 0x20]
test eax, eax
je 0x4124f2
mov eax, dword [esi]
push 1
mov ecx, esi
call dword [eax]
dec dword [esp + 0x1c]
mov eax, dword [esp + 0x30]
xor ecx, ecx
xor edx, edx
mov cl, byte [eax + 0x21f]
mov dl, byte [eax + 0x21e]
push ecx
lea eax, [esp + 0x160]
push edx
push eax
lea ecx, [esp + 0x1c]
call fcn.00424140
xor ebp, ebp
mov ecx, dword [ebx + 0xd4]
mov edi, dword [sym.imp.USER32.dll_SendMessageA]
push ebp
push ebp
push 0xb
push ecx
call edi
lea esi, [ebx + 0x2548]
push 1
push ebp
mov ecx, esi
call fcn.00434c10
mov ecx, esi
call fcn.00434880
push ebp
lea ecx, [ebx + 0x1b88]
call fcn.0042efe0
mov edx, dword [ebx + 0xd4]
push ebp
push 1
push 0xb
push edx
call edi
mov eax, dword [esp + 0x20]
mov dword [esp + 0x370], 0xffffffff
cmp eax, ebp
mov dword [esp + 0x10], vtable.HashTable_struct_DescEntry_.0
je 0x4125af
mov eax, dword [esp + 0x18]
xor edi, edi
cmp eax, ebp
jle 0x4125af
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + edi*4]
cmp ecx, ebp
je 0x4125a6
mov esi, dword [ecx + 4]
cmp ecx, ebp
je 0x4125a0
mov edx, dword [ecx]
push 1
call dword [edx]
cmp esi, ebp
mov ecx, esi
jne 0x412593
mov eax, dword [esp + 0x18]
inc edi
cmp edi, eax
jl 0x412588
mov eax, dword [esp + 0x14]
push eax
call fcn.004bd4c4
add esp, 4
mov ecx, dword [esp + 0x368]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x364
ret 8