Function at 0x403c20
Capabilities:
Get geographical location
Link many functions at runtime

Disassembly:
sub esp, 8
push ebp
push esi
call dword [sym.imp.kernel32.dll_GetVersion]
mov ebp, dword [sym.imp.kernel32.dll_GetModuleHandleA]
mov esi, dword [sym.imp.kernel32.dll_GetProcAddress]
shr eax, 0x1f
not al
and al, 1
mov byte [0x422c92], al
je 0x403e9e
push edi
push str.version
call ebp
mov edi, eax
push str.GetFileVersionInfoSizeW
push edi
call esi
push str.GetFileVersionInfoW
push edi
mov dword [0x422d04], eax
call esi
push str.gdi32
mov dword [0x422cf4], eax
call ebp
mov edi, eax
push str.CreateDCW
push edi
call esi
push str.StartDocW
push edi
mov dword [0x422cf0], eax
call esi
push str.user32
mov dword [0x422d00], eax
call ebp
mov edi, eax
push str.CreateDialogParamW
push edi
call esi
push str.CreateWindowExW
push edi
mov dword [0x422d58], eax
call esi
push str.RegisterClassW
push edi
mov dword [0x422cd8], eax
call esi
push str.DefWindowProcW
push edi
mov dword [0x422cdc], eax
call esi
push str.SendMessageW
push edi
mov dword [0x422d30], eax
call esi
push str.DialogBoxParamW
push edi
mov dword [0x422d40], eax
call esi
push str.DrawTextW
push edi
mov dword [0x422cd0], eax
call esi
push str.CharLowerBuffW
push edi
mov dword [0x422cf8], eax
call esi
push str.AppendMenuW
push edi
mov dword [0x422d44], eax
call esi
push str.ModifyMenuW
push edi
mov dword [0x422ce0], eax
call esi
push str.kernel32
mov dword [0x422cbc], eax
call ebp
mov edi, eax
push str.GetDiskFreeSpaceW
push edi
call esi
push str.GetFileAttributesW
push edi
mov dword [0x422d48], eax
call esi
push str.CreateFileW
push edi
mov dword [0x422cc8], eax
call esi
mov dword [0x422d28], eax
push str.GetModuleFileNameW
push edi
call esi
push str.FindFirstFileW
push edi
mov dword [0x422d0c], eax
call esi
push str.FindNextFileW
push edi
mov dword [0x422d18], eax
call esi
push str.GetWindowsDirectoryW
push edi
mov dword [0x422d20], eax
call esi
push str.CreateDirectoryW
push edi
mov dword [0x422d68], eax
call esi
push str.DeleteFileW
push edi
mov dword [0x422cd4], eax
call esi
push str.RemoveDirectoryW
push edi
mov dword [0x422d14], eax
call esi
push str.MoveFileW
push edi
mov dword [0x422d3c], eax
call esi
push str.GetDateFormatW
push edi
mov dword [0x422d50], eax
call esi
push str.GetTimeFormatW
push edi
mov dword [0x422d4c], eax
call esi
push str.GetFullPathNameW
push edi
mov dword [0x422cfc], eax
call esi
push str.CreateProcessW
push edi
mov dword [0x422d6c], eax
call esi
push str.GetLocaleInfoW
push edi
mov dword [0x422cc0], eax
call esi
push str.FormatMessageW
push edi
mov dword [0x422d10], eax
call esi
push str.CopyFileW
push edi
mov dword [0x422d5c], eax
call esi
push str.GetShortPathNameW
push edi
mov dword [0x422d54], eax
call esi
push str.GetLongPathNameW
push edi
mov dword [0x422ce4], eax
call esi
push str.GetTempFileNameW
push edi
mov dword [0x422ccc], eax
call esi
push str.GetTempPathW
push edi
mov dword [0x422d38], eax
call esi
push str.LoadLibraryW
push edi
mov dword [0x422d64], eax
call esi
mov dword [0x422d08], eax
push str.SetFileAttributesW
push edi
call esi
push str.GetSystemDirectoryW
push edi
mov dword [0x422ce8], eax
call esi
push str.WritePrivateProfileStringW
push edi
mov dword [0x422d2c], eax
call esi
push str.SetCurrentDirectoryW
push edi
mov dword [0x422cec], eax
call esi
push str.ExpandEnvironmentStringsW
push edi
mov dword [0x422d24], eax
call esi
push str.GetComputerNameW
push edi
mov dword [0x422cc4], eax
call esi
mov dword [0x422d60], eax
pop edi
push ebx
call dword [sym.imp.kernel32.dll_GetUserDefaultLCID]
push 8
lea ecx, [esp + 0x10]
push ecx
push 0x1004
push eax
mov dword [0x422d1c], eax
call dword [sym.imp.kernel32.dll_GetLocaleInfoA]
mov cl, byte [esp + 0xc]
xor bl, bl
cmp cl, 0x2d
lea eax, [esp + 0xc]
jne 0x403ed3
sub eax, 1
mov bl, 1
jmp 0x403ee1
cmp cl, 0x2b
jne 0x403ee1
lea eax, [esp + 0xc]
sub eax, 1
xor bl, bl
movsx ecx, byte [eax]
xor edx, edx
add eax, 1
cmp ecx, 0x30
jl 0x403f07
mov edi, edi
cmp ecx, 0x39
jg 0x403f07
lea edx, [edx + edx*4]
lea edx, [ecx + edx*2 - 0x30]
movsx ecx, byte [eax]
add eax, 1
cmp ecx, 0x30
jge 0x403ef0
test bl, bl
pop ebx
je 0x403f0e
neg edx
mov eax, dword [0x422d1c]
push eax
mov dword [0x422d34], edx
call dword [sym.imp.kernel32.dll_SetThreadLocale]
push str.InitMUILanguage
push str.comctl32
call ebp
push eax
call esi
test eax, eax
pop esi
pop ebp
je 0x403f3f
movzx ecx, word [0x422d1c]
push ecx
call eax
add esp, 8
ret