Function at 0x412600
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x418c4b
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x350
push ebx
push esi
push edi
lea edi, [ebp - 0x35c]
mov ecx, 0xd4
mov eax, 0xcccccccc
rep stosd dword es:[edi], eax
mov dword [ebp - 0x32c], 0
lea ecx, [ebp - 0x14]
call fcn.0040fbb0
mov dword [ebp - 4], 1
mov word [ebp - 0x224], 0
mov ecx, 0x81
xor eax, eax
lea edi, [ebp - 0x222]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov dword [ebp - 0x230], 0x208
mov byte [ebp - 0x239], 0
push 0x20019
push str.SOFTWAREMicrosoftWindowsCurrentVersion
push 0x80000002
lea ecx, [ebp - 0x14]
call fcn.00412d80
test eax, eax
jne 0x4127d9
lea eax, [ebp - 0x230]
push eax
lea ecx, [ebp - 0x224]
push ecx
push str.CommonFilesDir
lea ecx, [ebp - 0x14]
call fcn.00412e30
test eax, eax
jne 0x4127d9
mov esi, esp
lea eax, [ebp - 0x224]
push eax
call dword [sym.imp.MSVCR71.dll_wcslen]
add esp, 4
cmp esi, esp
call fcn.0041558c
test eax, eax
jbe 0x4127d9
mov esi, esp
lea eax, [ebp - 0x224]
push eax
lea ecx, [ebp - 0x260]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_wchar_t_const__]
cmp esi, esp
call fcn.0041558c
mov byte [ebp - 4], 2
push 0x20
lea eax, [ebp - 0x260]
push eax
lea ecx, [ebp - 0x350]
push ecx
call fcn.004130a0
add esp, 0xc
mov dword [ebp - 0x358], eax
mov edx, dword [ebp - 0x358]
mov dword [ebp - 0x35c], edx
mov byte [ebp - 4], 3
mov esi, esp
mov eax, dword [ebp - 0x35c]
push eax
lea ecx, [ebp - 0x260]
call dword [0x41a198]
cmp esi, esp
call fcn.0041558c
mov byte [ebp - 4], 2
mov esi, esp
lea ecx, [ebp - 0x350]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
cmp esi, esp
call fcn.0041558c
mov esi, esp
lea ecx, [ebp - 0x260]
call dword [sym.imp.MSVCP71.dll_public:_wchar_t_const____thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::c_str_void_const]
cmp esi, esp
call fcn.0041558c
push eax
call fcn.0040c544
add esp, 4
movzx eax, al
test eax, eax
je 0x4127b8
mov esi, esp
lea ecx, [ebp - 0x260]
call dword [sym.imp.MSVCP71.dll_public:_wchar_t_const____thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::c_str_void_const]
cmp esi, esp
call fcn.0041558c
mov esi, esp
push eax
lea eax, [ebp - 0x224]
push eax
call dword [sym.imp.MSVCR71.dll_wcscpy]
add esp, 8
cmp esi, esp
call fcn.0041558c
mov byte [ebp - 0x239], 1
lea ecx, [ebp - 0x14]
call fcn.0040fc30
mov byte [ebp - 4], 1
mov esi, esp
lea ecx, [ebp - 0x260]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
cmp esi, esp
call fcn.0041558c
movzx eax, byte [ebp - 0x239]
test eax, eax
jne 0x412862
mov esi, esp
push 0x104
lea eax, [ebp - 0x224]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
cmp esi, esp
call fcn.0041558c
test eax, eax
je 0x412826
mov esi, esp
push 0x41b978
call dword [sym.imp.MSVCR71.dll_wcslen]
add esp, 4
cmp esi, esp
call fcn.0041558c
mov word [ebp + eax*2 - 0x224], 0
jmp 0x412844
mov esi, esp
push 0x41b978
lea eax, [ebp - 0x224]
push eax
call dword [sym.imp.MSVCR71.dll_wcscpy]
add esp, 8
cmp esi, esp
call fcn.0041558c
mov esi, esp
push str.Program_FilesCommon_Files
lea eax, [ebp - 0x224]
push eax
call dword [sym.imp.MSVCR71.dll_wcscat]
add esp, 8
cmp esi, esp
call fcn.0041558c
mov esi, esp
lea eax, [ebp - 0x224]
push eax
call dword [sym.imp.MSVCR71.dll_wcslen]
add esp, 4
cmp esi, esp
call fcn.0041558c
movzx ecx, word [ebp + eax*2 - 0x226]
cmp ecx, 0x5c
je 0x4128ce
mov esi, esp
lea eax, [ebp - 0x224]
push eax
call dword [sym.imp.MSVCR71.dll_wcslen]
add esp, 4
cmp esi, esp
call fcn.0041558c
movzx ecx, word [ebp + eax*2 - 0x226]
cmp ecx, 0x2f
je 0x4128ce
mov esi, esp
push str.Thunder_NetworkTP_
lea eax, [ebp - 0x224]
push eax
call dword [sym.imp.MSVCR71.dll_wcscat]
add esp, 8
cmp esi, esp
call fcn.0041558c
jmp 0x4128ec
mov esi, esp
push 0x41b8ec
lea eax, [ebp - 0x224]
push eax
call dword [sym.imp.MSVCR71.dll_wcscat]
add esp, 8
cmp esi, esp
call fcn.0041558c
mov esi, esp
mov ecx, 0x423810
call dword [sym.imp.MSVCP71.dll_public:_wchar_t_const____thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::c_str_void_const]
cmp esi, esp
call fcn.0041558c
mov esi, esp
push eax
lea eax, [ebp - 0x224]
push eax
call dword [sym.imp.MSVCR71.dll_wcscat]
add esp, 8
cmp esi, esp
call fcn.0041558c
mov esi, esp
push 0x41a974
lea eax, [ebp - 0x224]
push eax
call dword [sym.imp.MSVCR71.dll_wcscat]
add esp, 8
cmp esi, esp
call fcn.0041558c
mov esi, esp
lea eax, [ebp - 0x224]
push eax
mov ecx, dword [ebp + 8]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_wchar_t_const__]
cmp esi, esp
call fcn.0041558c
mov ecx, dword [ebp - 0x32c]
or ecx, 1
mov dword [ebp - 0x32c], ecx
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x14]
call fcn.0040fbf0
mov eax, dword [ebp + 8]
push edx
mov ecx, ebp
push eax
lea edx, [0x4129a0]
call fcn.004155af
pop eax
pop edx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
add esp, 0x35c
cmp ebp, esp
call fcn.0041558c
mov esp, ebp
pop ebp
ret