Function at 0x100047e0
Capabilities:
Check os version
Get geographical location
Get system information on windows
Identify system language via api
Print debug messages

Disassembly:
push ebp
mov ebp, esp
push 0xfffffffffffffffe
push 0x1008fb00
push 0x1005aa50
mov eax, dword fs:[0]
push eax
sub esp, 0x14c
mov eax, dword [0x1009cbc0]
xor dword [ebp - 8], eax
xor eax, ebp
mov dword [ebp - 0x1c], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0x10]
mov dword fs:[0], eax
mov dword [ebp - 0x18], esp
mov dword [ebp - 0x138], 0
push 0x118
push 0
lea eax, [ebp - 0x134]
push eax
call fcn.10055aa0
add esp, 0xc
mov dword [ebp - 0x15c], 0
xor eax, eax
mov dword [ebp - 0x158], eax
mov dword [ebp - 0x154], eax
mov dword [ebp - 0x150], eax
mov dword [ebp - 0x14c], eax
mov dword [ebp - 0x148], eax
mov dword [ebp - 0x144], eax
mov dword [ebp - 0x140], eax
mov dword [ebp - 0x13c], eax
mov dword [ebp - 4], eax
mov dword [ebp - 4], 1
mov dword [ebp - 0x15c], eax
mov dword [ebp - 0x158], eax
mov dword [ebp - 0x154], eax
mov dword [ebp - 0x150], eax
mov dword [ebp - 0x14c], eax
mov dword [ebp - 0x148], eax
mov dword [ebp - 0x144], eax
mov dword [ebp - 0x140], eax
mov dword [ebp - 0x13c], eax
push 0x11c
push eax
lea eax, [ebp - 0x138]
push eax
call fcn.10055aa0
add esp, 0xc
mov dword [ebp - 0x138], 0x11c
lea eax, [ebp - 0x138]
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
test eax, eax
jne 0x1000499c
mov esi, dword [sym.imp.KERNEL32.dll_GetLastError]
call esi
mov ebx, eax
call esi
lea edi, [eax + 0x1e]
push 0x1000a
call fcn.1005218a
add esp, 4
mov esi, eax
test esi, esi
jne 0x10004925
push str.Memory_allocation_error_in_log_file_n
call fcn.10052604
add esp, 4
push str.Memory_allocation_error_in_log_file_n
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
jmp 0x10004981
push 0x100865c0
push 0xffff
push esi
call fcn.10052136
add esp, 0xc
push edi
test eax, eax
jle 0x10004960
mov byte [esi + 0xffff], 0
push esi
push str.MbaeGetOSInfo
push 1
mov edx, 0x4eb
mov ecx, str.....mbae_commonMbaeLog.cpp
call fcn.10001cf0
add esp, 0x10
jmp 0x10004978
push str.Error__d_in_swprintf_s_n
call fcn.10052604
add esp, 8
push str.Error_in_swprintf_s_n
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
push esi
call fcn.10052152
add esp, 4
push 0xfffffffffffffffe
lea eax, [ebp - 0x10]
push eax
push 0x1009cbc0
call fcn.10062b20
add esp, 0xc
lea eax, [ebx + 0x1e]
jmp 0x10004ea1
lea edx, [ebp - 0x130]
lea ecx, [ebp - 0x134]
call fcn.100045b0
mov eax, dword [ebp - 0x134]
mov dword [0x100e22bc], eax
mov eax, dword [ebp - 0x130]
mov dword [0x100e22b8], eax
push str.GetNativeSystemInfo
push 0x10085a60
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
jne 0x100049ed
lea eax, [ebp - 0x15c]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
jmp 0x100049f6
lea ecx, [ebp - 0x15c]
push ecx
call eax
cmp dword [ebp - 0x128], 2
jne 0x10004d96
cmp dword [ebp - 0x134], 5
jb 0x10004d96
cmp word [ebp - 0x15c], 9
mov eax, 0x10086bf0
je 0x10004a24
mov eax, 0x10086bf8
mov dword [0x1009dca4], eax
lea eax, [ebp - 0x124]
push eax
push 0x80
push 0x100e21b8
call fcn.10053320
add esp, 0xc
push 0x7f
push 0x100e22f8
push 0x1001
call dword [sym.imp.KERNEL32.dll_GetSystemDefaultUILanguage]
movzx eax, ax
push eax
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
test eax, eax
jne 0x10004aca
mov esi, dword [sym.imp.KERNEL32.dll_GetLastError]
call esi
mov ebx, eax
call esi
lea edi, [eax + 0x1e]
push 0x1000a
call fcn.1005218a
add esp, 4
mov esi, eax
test esi, esi
je 0x1000490b
push 0x100865c0
push 0xffff
push esi
call fcn.10052136
add esp, 0xc
push edi
test eax, eax
jle 0x10004960
mov byte [esi + 0xffff], 0
push esi
push str.MbaeGetOSInfo
push 1
mov edx, 0x502
mov ecx, str.....mbae_commonMbaeLog.cpp
call fcn.10001cf0
add esp, 0x10
jmp 0x10004978
mov eax, dword [ebp - 0x134]
sub eax, 5
je 0x10004b76
dec eax
je 0x10004b1c
sub eax, 4
jne 0x10004b8f
cmp dword [ebp - 0x130], eax
jne case.default.0x10004b27
cmp byte [ebp - 0x1e], 1
mov eax, str.Windows_10
je 0x10004afd
mov eax, str.Windows_Server_10
mov dword [str.Unknown], eax
push 0xfffffffffffffffe
lea eax, [ebp - 0x10]
push eax
push 0x1009cbc0
call fcn.10062b20
add esp, 0xc
xor eax, eax
jmp 0x10004ea1
mov eax, dword [ebp - 0x130]
cmp eax, 3
ja case.default.0x10004b27
jmp dword [eax*4 + 0x10004ec0]
cmp byte [ebp - 0x1e], 1
mov eax, str.Windows_Vista
je 0x10004afd
mov eax, str.Windows_Server_2008
jmp 0x10004afd
cmp byte [ebp - 0x1e], 1
mov eax, str.Windows_7
je 0x10004afd
mov eax, str.Windows_Server_2008_R2
jmp 0x10004afd
cmp byte [ebp - 0x1e], 1
mov eax, str.Windows_8.0
je 0x10004afd
mov eax, str.Windows_Server_2012
jmp 0x10004afd
cmp byte [ebp - 0x1e], 1
mov eax, str.Windows_8.1
je 0x10004afd
mov eax, str.Windows_Server_2012_R2
jmp 0x10004afd
mov eax, dword [ebp - 0x130]
sub eax, 0
je 0x10004d2a
dec eax
je 0x10004d04
dec eax
je 0x10004ba9
mov dword [ebp - 4], 0
call fcn.10004dfe
mov dword [ebp - 4], 0xfffffffe
xor eax, eax
jmp 0x10004ea1
push 0x59
call dword [sym.imp.USER32.dll_GetSystemMetrics]
test eax, eax
je 0x10004bc4
mov dword [str.Unknown], 0x10086d4c
jmp case.default.0x10004b27
mov eax, dword [ebp - 0x20]
test eax, 0x2000
je 0x10004bdd
mov dword [str.Unknown], 0x10086d7c
jmp case.default.0x10004b27
test eax, 0x8000
je 0x10004bf3
mov dword [str.Unknown], 0x10086db4
jmp case.default.0x10004b27
cmp byte [ebp - 0x1e], 1
jne 0x10004c20
cmp word [ebp - 0x15c], 9
mov dword [str.Unknown], 0x10086ddc
je case.default.0x10004b27
mov dword [str.Unknown], 0x10086e14
jmp case.default.0x10004b27
movzx ecx, word [ebp - 0x15c]
cmp ecx, 6
je 0x10004ced
cmp ecx, 9
je 0x10004cb9
test eax, 0x4000
je 0x10004c4f
mov dword [str.Unknown], 0x10087068
jmp case.default.0x10004b27
test al, al
jns 0x10004c62
mov dword [str.Unknown], 0x100870c0
jmp case.default.0x10004b27
test al, 2
je 0x10004c75
mov dword [str.Unknown], 0x10087110
jmp case.default.0x10004b27
push 0xfffffffffffffffe
test eax, 0x400
lea eax, [ebp - 0x10]
push eax
push 0x1009cbc0
je 0x10004ca0
mov dword [str.Unknown], 0x10087160
call fcn.10062b20
add esp, 0xc
xor eax, eax
jmp 0x10004ea1
mov dword [str.Unknown], 0x100871a0
call fcn.10062b20
add esp, 0xc
xor eax, eax
jmp 0x10004ea1
test al, al
jns 0x10004ccc
mov dword [str.Unknown], 0x10086f50
jmp case.default.0x10004b27
test al, 2
mov dword [str.Unknown], 0x10086fb0
jne case.default.0x10004b27
mov dword [str.Unknown], 0x10087010
jmp case.default.0x10004b27
test al, al
mov eax, str.Windows_Server_2003_Datacenter_Edition_for_Itanium_based_Systems
js 0x10004afd
mov eax, str.Windows_Server_2003_Enterprise_Edition_for_Itanium_based_Systems
jmp 0x10004afd
test dword [ebp - 0x20], 0x200
mov dword [str.Unknown], 0x100871ec
jne case.default.0x10004b27
mov dword [str.Unknown], 0x10087220
jmp case.default.0x10004b27
cmp byte [ebp - 0x1e], 1
jne 0x10004d3f
mov dword [str.Unknown], 0x10087260
jmp case.default.0x10004b27
mov eax, dword [ebp - 0x20]
test al, al
jns 0x10004d55
mov dword [str.Unknown], 0x10087294
jmp case.default.0x10004b27
push 0xfffffffffffffffe
test al, 2
lea eax, [ebp - 0x10]
push eax
push 0x1009cbc0
je 0x10004d7d
mov dword [str.Unknown], 0x100872d4
call fcn.10062b20
add esp, 0xc
xor eax, eax
jmp 0x10004ea1
mov dword [str.Unknown], 0x10087310
call fcn.10062b20
add esp, 0xc
xor eax, eax
jmp 0x10004ea1
mov esi, dword [sym.imp.KERNEL32.dll_GetLastError]
call esi
mov ebx, eax
call esi
lea edi, [eax + 0x1e]
push 0x1000a
call fcn.1005218a
add esp, 4
mov esi, eax
test esi, esi
je 0x1000490b
push 0x100865c0
push 0xffff
push esi
call fcn.10052136
add esp, 0xc
push edi
test eax, eax
jle 0x10004960
mov byte [esi + 0xffff], 0
push esi
push str.MbaeGetOSInfo
push 1
mov edx, 0x4fa
mov ecx, str.....mbae_commonMbaeLog.cpp
call fcn.10001cf0
add esp, 0x10
jmp 0x10004978
mov ecx, dword [ebp - 0x10]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x1c]
xor ecx, ebp
call fcn.1005132c
mov esp, ebp
pop ebp
ret