Function at 0x4777b1
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x638
push ebx
push esi
xor ebx, ebx
push edi
lea esi, [ebp - 5]
mov dword [ebp - 0x4c], ebx
call fcn.00447312
lea eax, [ebp - 0xc]
push eax
push 0x5e0f24
push 1
push ebx
push 0x5e0f34
mov dword [ebp - 0xc], ebx
call dword [sym.imp.ole32.dll_CoCreateInstance]
cmp dword [ebp - 0xc], ebx
je 0x477d13
lea eax, [ebp - 0x634]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
cmp eax, ebx
je 0x47781c
lea eax, [ebp + eax*2 - 0x636]
cmp word [eax], 0x5c
jne 0x477813
mov word [eax], bx
lea eax, [ebp - 0x634]
mov dword [ebp - 0x4c], eax
mov eax, dword [ebp - 0xc]
push dword [ebp + 0x10]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x44]
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax]
push 0x5b07d8
push eax
call dword [ecx + 0x58]
mov eax, dword [ebp + 0x14]
cmp word [eax], bx
je 0x4778b6
push 0x218
call fcn.004a8f86
cmp eax, ebx
pop ecx
je 0x477859
mov edx, dword [ebp + 0x14]
mov edi, eax
call fcn.00476c21
jmp 0x47785b
xor eax, eax
push 1
push dword [eax]
mov dword [ebp - 0x3c], eax
call dword [sym.imp.KERNEL32.dll_InterlockedExchange]
lea eax, [ebp - 0x3c]
call fcn.00477f63
mov eax, dword [ebp - 0x3c]
cmp eax, ebx
je 0x4778ae
lea ecx, [ebp - 0x2c]
push ecx
mov dword [ebp - 0x2c], ebx
push dword [eax + 0x214]
push ebx
push ebx
call dword [sym.imp.SHELL32.dll_SHCreateShellItem]
test eax, eax
jl 0x4778a1
cmp dword [ebp - 0x2c], ebx
je 0x4778ae
mov eax, dword [ebp - 0xc]
push dword [ebp - 0x2c]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x30]
mov eax, dword [ebp - 0x2c]
cmp eax, ebx
je 0x4778ae
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
lea edi, [ebp - 0x3c]
call fcn.0055efe6
push 0x1d
mov dword [ebp - 0x30], ebx
mov dword [ebp - 0x38], ebx
mov byte [ebp + 0x13], 1
mov byte [ebp - 0x50], 0x7f
mov dword [ebp - 0x54], 0x241
call fcn.004a8f86
mov edi, eax
cmp edi, ebx
pop ecx
je 0x47790e
lea eax, [ebp - 0x54]
mov dword [edi], 0x60b41c
mov dword [edi + 4], 0x60b474
mov dword [edi + 8], eax
lea esi, [edi + 0x11]
mov dword [edi + 0xc], 1
mov byte [edi + 0x10], 1
mov dword [edi], 0x60b448
mov dword [edi + 4], 0x60b474
call fcn.005615dc
jmp 0x477910
xor edi, edi
mov eax, dword [edi]
lea ecx, [ebp - 0x30]
push ecx
push 0x5e0f14
push edi
call dword [eax]
mov esi, eax
mov eax, dword [edi]
push edi
call dword [eax + 8]
cmp esi, ebx
jl 0x47793c
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax]
lea edx, [ebp - 0x38]
push edx
push dword [ebp - 0x30]
push eax
call dword [ecx + 0x1c]
jmp 0x47793f
mov byte [ebp + 0x13], bl
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax]
lea edx, [ebp - 0x34]
push edx
push eax
call dword [ecx + 0x28]
or dword [ebp - 0x34], 0x1a00
mov eax, dword [ebp - 0xc]
push dword [ebp - 0x34]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x24]
lea eax, [ebp - 0x10]
push eax
mov eax, dword [ebp + 0x18]
mov dword [ebp - 0x10], ebx
call fcn.00477077
push dword [ebp - 0x10]
mov esi, eax
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax]
push esi
push eax
mov dword [ebp + 0x18], esi
call dword [ecx + 0x10]
mov eax, dword [ebp - 0xc]
push dword [ebp + 8]
mov ecx, dword [eax]
push eax
call dword [ecx + 0xc]
test eax, eax
jge 0x4779ad
cmp byte [ebp + 0x13], bl
je 0x477cfd
mov eax, dword [ebp - 0xc]
push dword [ebp - 0x38]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x20]
mov eax, dword [ebp - 0x30]
jmp 0x477cf7
cmp esi, ebx
mov dword [ebp - 0x14], ebx
jbe 0x4779d6
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax]
lea edx, [ebp - 0x14]
push edx
push eax
call dword [ecx + 0x18]
test eax, eax
jl 0x4779d6
cmp dword [ebp - 0x14], ebx
jbe 0x4779cd
dec dword [ebp - 0x14]
cmp esi, dword [ebp - 0x14]
ja 0x4779d6
dec esi
mov dword [ebp - 0x14], esi
cmp byte [ebp + 0x13], bl
je 0x477b27
lea esi, [ebp - 0x60]
call fcn.005615dc
add edi, 0x11
call fcn.0055965e
lea esi, [ebp - 0x98]
call fcn.005615dc
cmp dword [ebp + 0x18], ebx
jbe 0x477a73
cmp dword [ebp - 0x5c], ebx
je 0x477a73
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x10]
mov eax, dword [ecx + eax*8 + 4]
mov dword [ebp - 0x40], eax
jmp 0x477a61
push 0x2e
lea eax, [ebp - 0x40]
call fcn.0055b3de
lea eax, [ebp - 0x42c]
push eax
push 0x3b
lea edi, [ebp - 0x40]
call fcn.0055b45f
cmp word [ebp - 0x42c], bx
je 0x477a5e
mov ecx, 0x5e0f80
lea eax, [ebp - 0x42c]
call fcn.0040106a
test eax, eax
je 0x477a68
lea eax, [ebp - 0x42c]
push eax
lea eax, [ebp - 0x98]
push eax
call fcn.00435066
mov eax, dword [ebp - 0x40]
cmp word [eax], bx
jne 0x477a13
jmp 0x477a73
lea esi, [ebp - 0x98]
call fcn.004350e3
mov edi, dword [ebp + 8]
push 0x5c1cbc
lea eax, [ebp - 0x224]
call fcn.00404863
cmp dword [ebp - 0x5c], ebx
mov dword [ebp - 0x44], ebx
jbe 0x477b09
mov ecx, dword [ebp - 0x44]
mov eax, dword [ebp - 0x60]
mov eax, dword [eax + ecx*4]
mov dword [ebp - 0x8c], eax
lea eax, [ebp - 0x98]
lea esi, [ebp - 0x83]
mov dword [ebp - 0x88], eax
mov byte [ebp - 0x84], bl
call fcn.005615dc
lea eax, [ebp - 0x8c]
push eax
lea edx, [ebp - 0x136]
lea ecx, [ebp - 0xa0]
call fcn.004a3b89
cmp dword [eax], 1
je 0x477afe
cmp dword [ebp - 0x7f], ebx
je 0x477ae6
mov edi, esi
mov esi, dword [ebp + 0xc]
call fcn.0055965e
lea esi, [ebp - 0x83]
call fcn.00435043
inc dword [ebp - 0x44]
mov eax, dword [ebp - 0x44]
cmp eax, dword [ebp - 0x5c]
jb 0x477a8e
jmp 0x477b09
lea esi, [ebp - 0x83]
call fcn.00435043
lea eax, [ebp - 0x224]
call fcn.00404912
lea esi, [ebp - 0x98]
call fcn.00435043
lea esi, [ebp - 0x60]
call fcn.00435043
mov eax, dword [ebp - 0xc]
lea edx, [ebp - 0x18]
push edx
mov dword [ebp - 0x18], ebx
mov ecx, dword [eax]
push eax
call dword [ecx + 0x6c]
cmp byte [ebp + 0x13], bl
mov esi, eax
je 0x477b53
mov eax, dword [ebp - 0xc]
push dword [ebp - 0x38]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x20]
mov eax, dword [ebp - 0x30]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
cmp esi, ebx
mov eax, dword [ebp - 0x18]
jl 0x477cbc
cmp eax, ebx
je 0x477cbc
lea edx, [ebp - 0x28]
push edx
mov dword [ebp - 0x28], ebx
mov ecx, dword [eax]
push eax
call dword [ecx + 0x1c]
test eax, eax
jge 0x477b85
mov eax, dword [ebp + 0xc]
cmp dword [eax + 4], ebx
mov eax, dword [ebp - 0x18]
jmp 0x477cc2
mov esi, dword [ebp - 0x28]
lea eax, [ebp - 0x24]
push eax
mov dword [ebp - 0x24], ebx
mov dword [ebp - 0x20], ebx
call fcn.0055e235
mov eax, dword [ebp - 0x28]
cmp eax, ebx
mov dword [ebp - 0x20], eax
mov byte [ebp + 0x13], 1
mov dword [ebp + 0x18], ebx
jbe 0x477c19
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp + 0x18]
mov edi, dword [ebp - 0x18]
lea esi, [eax + ecx*4]
mov eax, dword [esi]
cmp eax, ebx
je 0x477bc2
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov dword [esi], ebx
mov eax, dword [edi]
push esi
push dword [ebp + 0x18]
push edi
call dword [eax + 0x20]
cmp byte [ebp + 0x13], bl
je 0x477c0e
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp + 0x18]
lea eax, [eax + ecx*4]
cmp dword [eax], ebx
je 0x477c0e
lea edx, [ebp - 0x1c]
push edx
mov dword [ebp - 0x1c], ebx
mov eax, dword [eax]
mov ecx, dword [eax]
push 0x80058000
push eax
call dword [ecx + 0x14]
cmp dword [ebp - 0x1c], ebx
je 0x477c0b
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ebp + 0x14]
call fcn.0040162b
push dword [ebp - 0x1c]
call dword [sym.imp.ole32.dll_CoTaskMemFree]
mov byte [ebp + 0x13], bl
inc dword [ebp + 0x18]
mov eax, dword [ebp + 0x18]
cmp eax, dword [ebp - 0x28]
jb 0x477ba8
lea eax, [ebp - 0x24]
mov dword [ebp - 0x74], eax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x70], eax
mov eax, dword [ebp - 0x4c]
lea esi, [ebp - 0x24]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x68], ebx
mov dword [ebp - 0x64], ebx
call fcn.00476fa3
mov dword [ebp - 0x68], eax
or eax, edx
lea eax, [ebp - 0x74]
mov dword [ebp - 0x64], edx
push eax
jne 0x477caa
lea eax, [ebp - 0x44]
push eax
lea eax, [ebp - 0xa4]
push eax
mov dword [ebp - 0x44], 0x5c8654
call fcn.00477149
cmp dword [eax], ebx
mov dword [ebp - 0x44], 0x608e7c
mov eax, dword [ebp - 0x24]
sete byte [ebp + 0xf]
cmp eax, ebx
je 0x477c77
call fcn.00571b9f
mov eax, dword [ebp - 0x18]
cmp eax, ebx
je 0x477c84
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
push dword [ebp - 0x10]
call fcn.0058f8c9
mov eax, dword [ebp - 0xc]
cmp eax, ebx
pop ecx
je 0x477c9a
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
cmp byte [ebp - 5], bl
je 0x477ca5
call dword [sym.imp.ole32.dll_CoUninitialize]
mov al, byte [ebp + 0xf]
jmp 0x477d20
push dword [ebp + 8]
lea esi, [ebp - 0x9c]
call fcn.0055f01c
cmp dword [eax], ebx
jmp 0x477c67
mov ecx, dword [ebp + 0xc]
cmp dword [ecx + 4], ebx
je 0x477cf3
cmp eax, ebx
je 0x477cce
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
push dword [ebp - 0x10]
call fcn.0058f8c9
mov eax, dword [ebp - 0xc]
cmp eax, ebx
pop ecx
je 0x477ce4
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
cmp byte [ebp - 5], bl
je 0x477cef
call dword [sym.imp.ole32.dll_CoUninitialize]
mov al, 1
jmp 0x477d20
cmp eax, ebx
je 0x477cfd
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
push dword [ebp - 0x10]
call fcn.0058f8c9
mov eax, dword [ebp - 0xc]
cmp eax, ebx
pop ecx
je 0x477d13
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
cmp byte [ebp - 5], bl
je 0x477d1e
call dword [sym.imp.ole32.dll_CoUninitialize]
xor al, al
pop edi
pop esi
pop ebx
leave
ret 0x14