Function at 0x402010
Capabilities:
Get geographical location

Disassembly:
push edi
lea edi, [esp + 8]
and esp, 0xfffffff8
push dword [edi - 4]
push ebp
mov ebp, esp
push edi
push esi
mov esi, eax
push ebx
mov ebx, edx
sub esp, 0x144
mov eax, dword [edx + 4]
mov dword [ebp - 0x128], ecx
mov dword [ebp - 0x124], 0
test eax, eax
je 0x402178
mov dword [esp], eax
call dword [sym.imp.oleaut32.dll_SysAllocString]
sub esp, 4
mov edi, eax
test eax, eax
je 0x402167
mov eax, dword [esi]
lea edx, [ebp - 0x124]
mov dword [esp], esi
mov dword [esp + 0x10], edx
mov dword [esp + 0x14], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], edi
call dword [eax + 0x18]
sub esp, 0x18
mov esi, eax
mov dword [esp], edi
call dword [sym.imp.oleaut32.dll_SysFreeString]
sub esp, 4
test esi, esi
js 0x402167
mov eax, dword [ebp - 0x124]
lea esi, [ebp - 0x120]
mov edx, dword [eax]
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], esi
mov dword [esp + 8], 0
mov ecx, dword [ebx + 8]
mov dword [esp], eax
mov dword [esp + 4], ecx
call dword [edx + 0x10]
sub esp, 0x18
test eax, eax
js 0x402200
mov eax, dword [ebx + 0x10]
mov edx, dword [ebp - 0x118]
cmp eax, 2
je 0x402220
cmp eax, 3
je 0x402470
cmp eax, 1
je 0x402318
mov eax, dword [ebx]
mov dword [ebp - 0x130], edx
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_wcslen]
mov edi, dword [ebp - 0x128]
mov ebx, dword [ebx]
mov dword [esp], 1
sub edi, eax
call dword [sym.imp.ucrtbase.dll___acrt_iob_func]
mov edx, dword [ebp - 0x130]
mov dword [esp + 0xc], edi
mov dword [esp + 0x10], 0x405074
mov dword [esp + 0x14], edx
mov dword [esp + 8], ebx
mov dword [esp + 4], str._s:_s__s_n
mov dword [esp], eax
call sym._fwprintf
mov dword [esp], esi
call dword [sym.imp.oleaut32.dll_VariantClear]
sub esp, 4
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
lea esp, [edi - 8]
pop edi
ret
mov edi, dword [edx + 8]
test edi, edi
je 0x4021d8
mov eax, dword [edx]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_wcslen]
mov esi, dword [ebp - 0x128]
mov ebx, dword [ebx]
mov dword [esp], 1
sub esi, eax
call dword [sym.imp.ucrtbase.dll___acrt_iob_func]
mov dword [esp + 0x14], edi
mov dword [esp + 0xc], esi
mov dword [esp + 8], ebx
mov dword [esp + 0x10], 0x405074
mov dword [esp + 4], str._s:_s__s_n
mov dword [esp], eax
call sym._fwprintf
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
lea esp, [edi - 8]
pop edi
ret
mov eax, dword [ebp - 0x128]
mov dword [esp + 8], eax
mov eax, dword [edx + 0x10]
mov dword [esp], esi
mov dword [esp + 4], eax
call dword [edx + 0xc]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
lea esp, [edi - 8]
pop edi
ret
mov eax, dword [ebp - 0x124]
mov edx, dword [eax]
mov dword [esp], eax
call dword [edx + 8]
sub esp, 4
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
lea esp, [edi - 8]
pop edi
ret
xor eax, eax
lea edi, [ebp - 0x100]
mov ecx, 0x10
rep stosd dword es:[edi], eax
lea edi, [ebp - 0xc0]
mov ecx, 0x2a
rep stosd dword es:[edi], eax
xor eax, eax
mov word [edi], ax
lea eax, [ebp - 0x110]
lea edi, [ebp - 0x100]
mov dword [esp], edx
mov dword [esp + 8], eax
mov dword [esp + 4], 0x405528
call sym._swscanf
mov eax, dword [ebp - 0x110]
mov dword [esp + 4], edi
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0x20
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_LCIDToLocaleName]
mov eax, dword [ebp - 0x110]
lea edx, [ebp - 0xc0]
sub esp, 0x10
mov dword [esp + 8], edx
mov dword [esp + 0xc], 0x55
mov dword [esp + 4], 0x72
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_GetLocaleInfoW]
mov eax, dword [ebx]
sub esp, 0x10
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_wcslen]
mov ecx, dword [ebp - 0x128]
mov ebx, dword [ebx]
mov dword [esp], 1
sub ecx, eax
mov dword [ebp - 0x128], ecx
call dword [sym.imp.ucrtbase.dll___acrt_iob_func]
mov ecx, dword [ebp - 0x128]
lea edx, [ebp - 0xc0]
mov dword [esp + 0x14], edi
mov dword [esp + 0x18], edx
mov dword [esp + 0x10], 0x405074
mov dword [esp + 0xc], ecx
mov dword [esp + 8], ebx
mov dword [esp + 4], str._s:_s__s__s_n
mov dword [esp], eax
call sym._fwprintf
jmp 0x40215b
xor eax, eax
lea edi, [ebp - 0x100]
mov ecx, 0x10
mov dword [ebp - 0x110], 0
rep stosd dword es:[edi], eax
lea edi, [ebp - 0xc0]
mov ecx, 0x10
mov dword [ebp - 0x10c], 0
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x104]
mov dword [esp], edx
lea edi, [ebp - 0x110]
mov dword [esp + 0x1c], eax
lea eax, [ebp - 0x106]
mov dword [esp + 0x18], eax
lea eax, [ebp - 0x108]
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x10a]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x10e]
mov dword [esp + 8], edi
mov dword [esp + 0xc], eax
mov dword [esp + 4], str._04u_02u_02u_02u_02u_02u
mov dword [ebp - 0x108], 0
mov dword [ebp - 0x104], 0
call sym._swscanf
lea ecx, [ebp - 0x100]
mov dword [esp + 8], edi
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], 0x20
mov dword [esp + 0xc], 0
mov dword [esp + 4], 0
mov dword [esp], 0x800
call dword [sym.imp.kernel32.dll_GetDateFormatW]
lea edx, [ebp - 0xc0]
sub esp, 0x18
mov dword [esp + 0x10], edx
mov dword [esp + 8], edi
mov dword [esp + 0x14], 0x20
mov dword [esp + 0xc], 0
mov dword [esp + 4], 0
mov dword [esp], 0x800
call dword [sym.imp.kernel32.dll_GetTimeFormatW]
mov eax, dword [ebx]
sub esp, 0x18
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_wcslen]
mov edi, dword [ebp - 0x128]
mov ebx, dword [ebx]
mov dword [esp], 1
sub edi, eax
call dword [sym.imp.ucrtbase.dll___acrt_iob_func]
lea edx, [ebp - 0xc0]
lea ecx, [ebp - 0x100]
mov dword [esp + 0x10], 0x405074
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ecx
mov dword [esp + 0xc], edi
mov dword [esp + 8], ebx
mov dword [esp + 4], str._s:_s__s___s_n
mov dword [esp], eax
call sym._fwprintf
jmp 0x40215b
lea eax, [ebp - 0xc0]
mov dword [esp], edx
mov dword [esp + 8], eax
mov dword [esp + 4], str._I64u
mov dword [ebp - 0xc0], 0
mov dword [ebp - 0xbc], 0
call sym._swscanf
mov edx, dword [ebp - 0xbc]
mov eax, dword [ebp - 0xc0]
shrd eax, edx, 0xa
shr edx, 0xa
mov dword [ebp - 0x130], eax
mov eax, dword [ebx]
mov dword [ebp - 0x12c], edx
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_wcslen]
mov edi, dword [ebp - 0x128]
mov ebx, dword [ebx]
mov dword [esp], 1
sub edi, eax
call dword [sym.imp.ucrtbase.dll___acrt_iob_func]
mov edx, dword [ebp - 0x130]
mov ecx, dword [ebp - 0x12c]
mov dword [esp + 0x10], 0x405074
mov dword [esp + 0xc], edi
mov dword [esp + 0x14], edx
mov dword [esp + 0x18], ecx
mov dword [esp + 8], ebx
mov dword [esp + 4], str._s:_s__I64u_MB_n
mov dword [esp], eax
call sym._fwprintf
jmp 0x40215b