Function at 0x474b50
Capabilities:
Get common file path

Disassembly:
sub esp, 0x450
push ebp
push esi
mov esi, ecx
push edi
mov dword [esp + 0xc], esi
call fcn.004794c0
mov ecx, 0xc
xor eax, eax
lea edi, [esp + 0x14]
xor ebp, ebp
rep stosd dword es:[edi], eax
mov eax, dword [0x73ff2c]
push 0x7f00
push ebp
mov dword [esp + 0x1c], 0x30
mov dword [esp + 0x28], ebp
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x30], eax
call dword [sym.imp.USER32.dll_LoadCursorW]
lea ecx, [esp + 0x14]
mov dword [esp + 0x30], eax
push ecx
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x38], ebp
mov dword [esp + 0x1c], 0x2008
mov dword [esp + 0x30], ebp
mov dword [esp + 0x44], ebp
mov dword [esp + 0x40], str.TheWorld_PopUp
mov dword [esp + 0x20], 0x4747f0
call dword [sym.imp.USER32.dll_RegisterClassExW]
test ax, ax
je 0x474e60
lea edx, [esi + 0x8a0]
push ebx
push edx
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
mov ecx, 0x81
xor eax, eax
lea edi, [esp + 0x5a]
mov word [esp + 0x58], bp
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea eax, [esp + 0x58]
push 0x103
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
lea ecx, [esp + 0x58]
lea ebx, [esi + 0x8dc]
test ecx, ecx
je 0x474c25
lea edx, [esp + 0x58]
push edx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov ebp, eax
mov eax, dword [ebx]
cmp dword [eax - 0xc], 1
jg 0x474c32
cmp ebp, dword [eax - 4]
jle 0x474c45
mov ecx, ebx
call fcn.00406610
push ebp
mov ecx, ebx
call fcn.00406580
test eax, eax
je 0x474c70
mov edi, dword [ebx]
lea eax, [ebp + ebp]
mov ecx, eax
lea esi, [esp + 0x58]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebx]
mov esi, dword [esp + 0x10]
mov dword [ecx - 8], ebp
mov edx, dword [ebx]
mov word [edx + eax], 0
lea eax, [esp + 0x58]
push 0x103
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryW]
lea ecx, [esp + 0x58]
lea ebx, [esi + 0x8e0]
test ecx, ecx
jne 0x474c92
xor ebp, ebp
jmp 0x474c9f
lea edx, [esp + 0x58]
push edx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov ebp, eax
mov eax, dword [ebx]
cmp dword [eax - 0xc], 1
jg 0x474cac
cmp ebp, dword [eax - 4]
jle 0x474cbf
mov ecx, ebx
call fcn.00406610
push ebp
mov ecx, ebx
call fcn.00406580
test eax, eax
je 0x474ce6
mov edi, dword [ebx]
lea eax, [ebp + ebp]
mov ecx, eax
lea esi, [esp + 0x58]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebx]
mov dword [ecx - 8], ebp
mov edx, dword [ebx]
mov word [eax + edx], 0
lea eax, [esp + 0x48]
push eax
call dword [sym.imp.ole32.dll_CoCreateGuid]
lea ecx, [esp + 0x14]
lea edx, [esp + 0x48]
push ecx
push edx
mov dword [esp + 0x1c], 0
call dword [sym.imp.ole32.dll_StringFromCLSID]
mov ebx, dword [esp + 0x10]
push 0
push 0
push 0x490f50
lea eax, [ebx + 0x878]
push 0x490fb0
push eax
push 0
lea ecx, [ebx + 4]
call fcn.004b2ff0
mov eax, dword [esp + 0x14]
test eax, eax
je 0x474e3e
mov ecx, dword [0x4ed0fc]
mov edx, eax
shr edx, 0x10
mov esi, eax
mov dword [esp + 0x10], ecx
jne 0x474dd4
and eax, 0xffff
push 0x100
mov edi, eax
lea eax, [esp + 0x264]
push eax
push edi
call fcn.0040f710
mov ecx, 0x100
sub ecx, eax
cmp ecx, 1
jle 0x474d88
lea edx, [esp + 0x260]
lea ecx, [esp + 0x10]
push edx
call fcn.0040f830
jmp 0x474e04
push 0x1ff
lea ecx, [esp + 0x14]
mov esi, 0x200
call fcn.0040f940
test eax, eax
je 0x474dc7
push esi
push eax
push edi
call fcn.0040f710
mov ecx, esi
sub ecx, eax
cmp ecx, 1
jg 0x474dc7
add esi, 0x100
lea ecx, [esp + 0x10]
lea edx, [esi - 1]
push edx
call fcn.0040f940
test eax, eax
jne 0x474d9f
push 0xffffffffffffffff
lea ecx, [esp + 0x14]
call fcn.0040f9d0
jmp 0x474e04
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov edi, eax
test edi, edi
je 0x474e04
push edi
lea ecx, [esp + 0x14]
call fcn.00406580
test eax, eax
je 0x474e04
lea ecx, [edi + edi]
mov edi, dword [esp + 0x10]
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x14]
push ecx
call dword [sym.imp.ole32.dll_CoTaskMemFree]
mov eax, dword [esp + 0x10]
mov ecx, dword [0x4ed100]
lea edx, [eax - 0xc]
cmp edx, ecx
je 0x474e3e
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x474e3e
mov eax, dword [esp + 0x10]
add eax, 0xfffffff4
push eax
call fcn.004d4cc1
add esp, 4
push str.Plugin
mov ecx, ebx
call fcn.00474e70
mov ecx, ebx
call fcn.00476330
mov ecx, ebx
call fcn.00476d20
mov ecx, ebx
call fcn.004770b0
pop ebx
pop edi
pop esi
pop ebp
add esp, 0x450
ret