Function at 0x408760
Capabilities:
Get system information on windows
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x456036
mov eax, dword fs:[0]
push eax
sub esp, 0x3d8
mov eax, dword [0x470050]
xor eax, esp
mov dword [esp + 0x3d0], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x470050]
xor eax, esp
push eax
lea eax, [esp + 0x3ec]
mov dword fs:[0], eax
mov eax, dword [esp + 0x3fc]
xor ebp, ebp
mov ebx, ecx
mov dword [esp + 0x20], ebx
cmp eax, ebp
je 0x408b62
mov dword [0x4726bc], eax
cmp dword [0x4726c0], ebp
jne 0x408fc0
mov dword [esp + 0x24], str.LogMessage
mov dword [esp + 0x28], 0x409750
mov dword [esp + 0x2c], str.FlushLogMessage
mov dword [esp + 0x30], 0x409830
mov dword [esp + 0x34], str.YesNoMessageBox
mov dword [esp + 0x38], 0x409880
mov dword [esp + 0x3c], str.OKMessageBox
mov dword [esp + 0x40], 0x409a90
mov dword [esp + 0x44], str.RetryCancelMessageBox
mov dword [esp + 0x48], 0x409c90
mov dword [esp + 0x4c], 0x45c544
mov dword [esp + 0x50], 0x409ea0
mov dword [esp + 0x54], str.GetSpecialFolderName
mov dword [esp + 0x58], 0x409ee0
mov dword [esp + 0x5c], str.CreateFolder
mov dword [esp + 0x60], 0x40a390
mov dword [esp + 0x64], str.CopyFile
mov dword [esp + 0x68], 0x40a4c0
mov dword [esp + 0x6c], str.IsFileExists
mov dword [esp + 0x70], 0x40a770
mov dword [esp + 0x74], str.IsWindowsXP
mov dword [esp + 0x78], 0x40a800
mov dword [esp + 0x7c], str.IsGameRunning
mov dword [esp + 0x80], 0x40a890
mov dword [esp + 0x84], str.UpdateConfigStudioName
mov dword [esp + 0x88], 0x40aae0
mov dword [esp + 0x8c], str.UpdateConfigDefaultGameName
mov dword [esp + 0x90], 0x40ab80
mov dword [esp + 0x94], str.UpdateConfigDisplayGameName
mov dword [esp + 0x98], 0x40ac10
mov dword [esp + 0x9c], str.UpdateConfigLocale
mov dword [esp + 0xa0], 0x40aca0
mov dword [esp + 0xa4], str.UpdateConfigInstallLocation
mov dword [esp + 0xa8], 0x40ad30
mov dword [esp + 0xac], str.IsRegKeyStringExist
mov dword [esp + 0xb0], 0x40adc0
mov dword [esp + 0xb4], str.GetRegKeyString
mov dword [esp + 0xb8], 0x40b030
mov dword [esp + 0xbc], str.SetRegKeyString
mov dword [esp + 0xc0], 0x40b350
mov dword [esp + 0xc4], str.GetRegKeyInt
mov dword [esp + 0xc8], 0x40b530
mov dword [esp + 0xcc], str.SetRegKeyInt
mov dword [esp + 0xd0], 0x40b6c0
mov dword [esp + 0xd4], str.DelRegTree
mov dword [esp + 0xd8], 0x40b860
mov dword [esp + 0xdc], str.DelRegKeyIfEmpty
mov dword [esp + 0xe0], 0x40b900
mov dword [esp + 0xe4], str.Progress
mov dword [esp + 0xe8], 0x40ba20
mov dword [esp + 0xec], str.IsMsiProductInstalled
mov dword [esp + 0xf0], 0x40ba50
mov dword [esp + 0xf4], str.IsOSMatched
mov dword [esp + 0xf8], 0x40bae0
mov dword [esp + 0xfc], 0x45c6d0
mov dword [esp + 0x100], 0x40beb0
mov dword [esp + 0x104], str.RunAbsoluteExePath
mov dword [esp + 0x108], 0x40c210
mov dword [esp + 0x10c], str.RunExePathWithWUSA
mov dword [esp + 0x110], 0x40c680
mov dword [esp + 0x114], str.DelSpecialPath
mov dword [esp + 0x118], 0x40c970
mov dword [esp + 0x11c], str.DelDirTree
mov dword [esp + 0x120], 0x40d1c0
mov dword [esp + 0x124], str.DelFromManifest
mov dword [esp + 0x128], 0x40d2a0
mov dword [esp + 0x12c], str.InstallGDF
mov dword [esp + 0x130], 0x40d910
mov dword [esp + 0x134], str.InstallGDF2
mov dword [esp + 0x138], 0x40d990
mov dword [esp + 0x13c], str.UninstallGDF
mov dword [esp + 0x140], 0x40da20
mov dword [esp + 0x144], str.AddFirewallException
mov dword [esp + 0x148], 0x40e090
mov dword [esp + 0x14c], str.RemoveFirewallException
mov dword [esp + 0x150], 0x40e1c0
mov dword [esp + 0x154], str.CreateShortcut
mov dword [esp + 0x158], 0x40e900
mov dword [esp + 0x15c], str.CreateShortcutWithArgument
mov dword [esp + 0x160], 0x40e9c0
mov dword [esp + 0x164], str.CreateUrlShortcut
xor ecx, ecx
mov eax, 0x2b
mov edx, 8
mul edx
seto cl
mov dword [esp + 0x168], 0x40ea90
mov dword [esp + 0x16c], str.RemoveShortcut
mov dword [esp + 0x170], 0x40eef0
mov dword [esp + 0x174], ebp
mov dword [esp + 0x178], ebp
neg ecx
or ecx, eax
push ecx
call fcn.0042c1de
add esp, 4
mov dword [0x4726c4], eax
cmp eax, ebp
jne 0x408b69
mov eax, dword [0x4726bc]
push str.ERROR:_Unable_to_initialize_data_reader_
push eax
call fcn.00408010
add esp, 8
xor al, al
jmp 0x408fc2
mov edi, eax
mov ecx, 0x56
lea esi, [esp + 0x24]
rep movsd dword es:[edi], dword [esi]
call fcn.004117b0
cmp eax, ebp
je 0x408b89
mov ecx, dword [eax + 0x10]
mov dword [ecx + 0x58], 0x4112d0
mov dword [0x4726c0], eax
cmp eax, ebp
jne 0x408bc4
mov edx, dword [0x4726bc]
push str.ERROR:_Unable_to_open_data_reader_
push edx
call fcn.00408010
mov eax, dword [0x4726c4]
push eax
call fcn.0042cd84
add esp, 0xc
mov dword [0x4726c4], ebp
mov dword [0x4726c0], ebp
xor al, al
jmp 0x408fc2
call fcn.00411330
mov eax, dword [0x4726c4]
mov edx, dword [0x4726c0]
mov ecx, str.inst
call fcn.00410770
mov ecx, dword [0x4726bc]
push str.Data_reader_initialized.
push ecx
call fcn.00408010
add esp, 8
cmp ebx, ebp
je 0x408dea
mov eax, dword [ebx + 0x14]
mov ebx, dword [ebx]
mov ebp, dword [eax]
mov dword [esp + 0x18], ebx
mov eax, dword [esp + 0x20]
mov esi, dword [eax + 0x14]
mov eax, dword [eax]
mov dword [esp + 0x1c], ebp
test ebx, ebx
je 0x408c1a
cmp ebx, eax
je 0x408c1f
call fcn.0042c4d4
cmp ebp, esi
je 0x408de8
test ebx, ebx
jne 0x408c4b
call fcn.0042c4d4
xor eax, eax
cmp ebp, dword [eax + 0x14]
jne 0x408c3c
call fcn.0042c4d4
mov esi, 8
cmp dword [ebp + 0x20], esi
jb 0x408c4f
mov eax, dword [ebp + 0xc]
jmp 0x408c52
mov eax, dword [ebx]
jmp 0x408c32
lea eax, [ebp + 0xc]
push eax
lea edi, [esp + 0x1c4]
call fcn.00404a30
add esp, 4
mov dword [esp + 0x3f4], 0
test ebx, ebx
jne 0x408c8c
call fcn.0042c4d4
xor eax, eax
cmp ebp, dword [eax + 0x14]
jne 0x408c82
call fcn.0042c4d4
cmp dword [ebp + 0x3c], esi
jb 0x408c90
mov eax, dword [ebp + 0x28]
jmp 0x408c93
mov eax, dword [ebx]
jmp 0x408c78
lea eax, [ebp + 0x28]
push eax
lea edi, [esp + 0x1a8]
call fcn.00404a30
add esp, 4
mov byte [esp + 0x3f4], 1
cmp dword [0x4726bc], 0
je 0x408cfb
lea esi, [esp + 0x18]
call fcn.004085e0
add eax, 0x1c
cmp dword [eax + 0x18], 8
jb 0x408ccb
mov edi, dword [eax + 4]
jmp 0x408cce
lea edi, [eax + 4]
lea esi, [esp + 0x18]
call fcn.004085e0
cmp dword [eax + 0x18], 8
jb 0x408ce2
mov eax, dword [eax + 4]
jmp 0x408ce5
add eax, 4
mov edx, dword [0x4726bc]
push edi
push eax
push str.Data_reader_config:__s___s
push edx
call fcn.00408010
add esp, 0x10
mov eax, dword [esp + 0x1a8]
mov esi, 0x10
cmp dword [esp + 0x1bc], esi
jae 0x408d17
lea eax, [esp + 0x1a8]
mov ecx, dword [esp + 0x1b8]
dec ecx
push ecx
push eax
mov eax, dword [0x4726c0]
call fcn.0040f780
mov edi, dword [esp + 0x1cc]
add esp, 8
cmp dword [esp + 0x1d8], esi
jae 0x408d45
lea edi, [esp + 0x1c4]
mov esi, dword [0x4726c0]
mov eax, 0xffffd8ee
call fcn.0040f9f0
cmp dword [esp + 0x1bc], 0x10
jb 0x408d6f
mov edx, dword [esp + 0x1a8]
push edx
call fcn.0042c62b
add esp, 4
xor esi, esi
mov edi, 0xf
mov dword [esp + 0x3f4], 0xffffffff
cmp dword [esp + 0x1d8], 0x10
mov dword [esp + 0x1bc], edi
mov dword [esp + 0x1b8], esi
mov byte [esp + 0x1a8], 0
jb 0x408db1
mov eax, dword [esp + 0x1c4]
push eax
call fcn.0042c62b
add esp, 4
mov dword [esp + 0x1d8], edi
mov dword [esp + 0x1d4], esi
mov byte [esp + 0x1c4], 0
cmp ebx, esi
jne 0x408de4
call fcn.0042c4d4
xor eax, eax
cmp ebp, dword [eax + 0x14]
jne 0x408ddc
call fcn.0042c4d4
mov ebp, dword [ebp]
jmp 0x408c05
mov eax, dword [ebx]
jmp 0x408dd2
xor ebp, ebp
lea ecx, [esp + 0x180]
push ecx
call dword [sym.imp.KERNEL32.dll_GetNativeSystemInfo]
cmp word [esp + 0x180], 9
mov esi, dword [0x4726c0]
mov eax, dword [esi + 8]
mov edi, str.OS_IS_32BIT
jne 0x408e82
mov dword [eax], ebp
mov ebx, 1
mov dword [eax + 8], ebx
mov ebp, 0x10
add dword [esi + 8], ebp
mov eax, 0xffffd8ee
call fcn.0040f9f0
mov esi, dword [0x4726c0]
mov eax, dword [esi + 8]
mov dword [eax], ebx
mov dword [eax + 8], ebx
add dword [esi + 8], ebp
mov edi, str.OS_IS_64BIT
mov eax, 0xffffd8ee
call fcn.0040f9f0
mov eax, dword [0x4726bc]
xor esi, esi
cmp eax, esi
je 0x408ef0
push str.Data_reader_config:_32BIT__0
push eax
call fcn.00408010
mov edx, dword [0x4726bc]
push str.Data_reader_config:_64BIT__1
push edx
call fcn.00408010
mov eax, dword [0x4726bc]
add esp, 0x10
jmp 0x408ef0
mov ebp, 1
mov dword [eax], ebp
mov dword [eax + 8], ebp
mov ebx, 0x10
add dword [esi + 8], ebx
mov eax, 0xffffd8ee
call fcn.0040f9f0
mov esi, dword [0x4726c0]
mov eax, dword [esi + 8]
mov dword [eax], 0
mov dword [eax + 8], ebp
add dword [esi + 8], ebx
mov edi, str.OS_IS_64BIT
mov eax, 0xffffd8ee
call fcn.0040f9f0
mov eax, dword [0x4726bc]
test eax, eax
je 0x408eee
push str.Data_reader_config:_32BIT__1
push eax
call fcn.00408010
mov eax, dword [0x4726bc]
push str.Data_reader_config:_64BIT__0
push eax
call fcn.00408010
mov eax, dword [0x4726bc]
add esp, 0x10
xor esi, esi
push str.Cleanup.dat
push eax
push 0x45c9ec
lea ecx, [esp + 0x1e8]
push 0x104
push ecx
call fcn.004012c0
lea edx, [esp + 0x1f0]
add esp, 0x14
push edx
call fcn.004093d0
add esp, 4
test al, al
jne 0x408f83
mov ecx, dword [0x4726bc]
lea eax, [esp + 0x1dc]
push eax
push str.ERROR:_Unable_to_properly_load_data:__s
push ecx
call fcn.00408010
mov eax, dword [0x4726bc]
add esp, 0xc
cmp byte [eax + 0xc70], 0
je 0x408f5f
mov eax, dword [eax + 0xe7c]
cmp eax, esi
je 0x408f5f
push eax
call dword [sym.imp.KERNEL32.dll_FlushFileBuffers]
call fcn.00411900
mov edx, dword [0x4726c4]
push edx
mov dword [0x4726c0], esi
call fcn.0042cd84
add esp, 4
mov dword [0x4726c4], esi
xor al, al
jmp 0x408fc2
push str.UpdateConfigWithProjectInfo
call fcn.004092b0
add esp, 4
test eax, eax
je 0x408fc0
mov eax, dword [0x4726bc]
push str.ERROR:_Unable_to_finish_config_initialization_from_data_file.
push eax
call fcn.00408010
mov ecx, dword [0x4726bc]
add esp, 8
call fcn.00408180
call fcn.00411900
mov ecx, dword [0x4726c4]
push ecx
jmp 0x408f6b
mov al, 1
mov ecx, dword [esp + 0x3ec]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x3d0]
xor ecx, esp
call fcn.0042c1e9
add esp, 0x3e4
ret