Function at 0x4a25bc
Capabilities:
Get geographical location

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffae8
push ebx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 0x510], ebx
mov dword [ebp - 0x50c], ebx
test dl, dl
je 0x4a25e2
add esp, 0xfffffff0
call fcn.004037bc
mov edi, ecx
mov byte [ebp - 1], dl
mov ebx, eax
mov esi, dword [ebp + 8]
xor eax, eax
push ebp
push 0x4a2a41
push dword fs:[eax]
mov dword fs:[eax], esp
xor edx, edx
mov eax, ebx
call fcn.00403468
lea eax, [ebx + 0x8c]
mov edx, edi
mov ecx, dword [0x4a2088]
call fcn.00404f90
mov dword [ebx + 4], esi
mov byte [ebx + 8], 1
mov byte [ebx + 9], 0
mov byte [ebx + 0xa], 0
mov dword [ebx + 0x10], 0xffffffff
mov dword [ebx + 0x14], 0xffffffff
lea eax, [ebx + 0xfc]
call fcn.00404994
lea eax, [ebx + 0x100]
call fcn.00404994
push 0
lea eax, [ebx + 0x104]
mov ecx, 1
mov edx, dword [0x4a2048]
call fcn.004053ac
add esp, 4
lea eax, [ebx + 0x108]
call fcn.00404994
mov dl, 1
mov eax, dword [0x412dd0]
call fcn.00403468
mov dword [ebx + 0x10c], eax
xor eax, eax
mov dword [ebx + 0x110], eax
lea eax, [ebx + 0x4c]
xor ecx, ecx
mov edx, 0x40
call fcn.00402dfc
xor eax, eax
mov dword [ebx + 0x114], eax
xor eax, eax
mov dword [ebx + 0x118], eax
push 0
lea eax, [ebx + 0x11c]
mov ecx, 1
mov edx, dword [0x4a2150]
call fcn.004053ac
add esp, 4
xor eax, eax
mov dword [ebx + 0x120], eax
xor eax, eax
mov dword [ebx + 0x124], eax
xor eax, eax
mov dword [ebx + 0x128], eax
xor eax, eax
mov dword [ebx + 0x12c], eax
mov word [ebx + 0x130], 0
mov word [ebx + 0x132], 0
mov word [ebx + 0x134], 0
mov eax, dword [esi + 0x50]
mov dword [ebx + 0x138], eax
mov eax, dword [esi + 0x54]
mov dword [ebx + 0x13c], eax
push 0
push 0
push 3
push 0
push 3
push 0xc0000000
mov eax, dword [ebx + 0x90]
call fcn.00404748
push eax
call sub.kernel32.dll_CreateFileA
mov esi, eax
mov dword [ebx + 0xc], esi
cmp esi, 0xffffffff
jne 0x4a275a
push 0
push 0
push 3
push 0
push 3
push 0
mov eax, dword [ebx + 0x90]
call fcn.00404748
push eax
call sub.kernel32.dll_CreateFileA
mov dword [ebx + 0xc], eax
cmp dword [ebx + 0xc], 0xffffffff
je 0x4a2a1c
mov dword [ebx + 0x40], 0xc
lea eax, [ebx + 0x110]
push eax
mov eax, dword [ebx + 0xc]
push eax
mov eax, dword [0x51e8d0]
mov eax, dword [eax]
call eax
lea eax, [ebx + 0x40]
push eax
mov eax, dword [ebx + 0xc]
push eax
mov eax, dword [0x51ea4c]
mov eax, dword [eax]
call eax
lea eax, [ebx + 0x4c]
push eax
mov eax, dword [ebx + 0x110]
push eax
mov eax, dword [0x51e04c]
mov eax, dword [eax]
call eax
lea eax, [ebp - 0x408]
mov ecx, 0xff
mov edx, 0x1fc
call fcn.00402dfc
xor eax, eax
mov dword [ebp - 8], eax
push 0x1fc
lea eax, [ebp - 0x408]
push eax
push 0
mov eax, dword [ebx + 0xc]
push eax
mov eax, dword [0x51e8c4]
mov eax, dword [eax]
call eax
test eax, eax
je 0x4a2800
mov esi, 0xfd
lea eax, [ebp - 0x20e]
cmp word [eax], 0xffff
je 0x4a27f7
lea eax, [esi + 1]
mov dword [ebp - 8], eax
jmp 0x4a2800
dec esi
sub eax, 2
cmp esi, 0xffffffff
jne 0x4a27e8
mov eax, dword [ebp - 8]
dec eax
test eax, eax
jl 0x4a28a7
inc eax
mov dword [ebp - 0x10], eax
lea esi, [ebp - 0x408]
mov byte [ebp - 0x508], 0
push 0x100
lea eax, [ebp - 0x508]
push eax
push 2
movzx eax, word [esi]
push eax
call sub.kernel32.dll_GetLocaleInfoA_1
test eax, eax
je 0x4a2861
lea eax, [ebp - 0x50c]
lea edx, [ebp - 0x508]
mov ecx, 0x100
call fcn.004044dc
mov edx, dword [ebp - 0x50c]
mov eax, dword [ebx + 0x10c]
mov ecx, dword [eax]
call dword [ecx + 0x38]
jmp 0x4a289b
lea eax, [ebp - 0x510]
push eax
movzx eax, word [esi]
mov dword [ebp - 0x518], eax
mov byte [ebp - 0x514], 0
lea edx, [ebp - 0x518]
xor ecx, ecx
mov eax, 0x4a2a74
call fcn.004098a8
mov edx, dword [ebp - 0x510]
mov eax, dword [ebx + 0x10c]
mov ecx, dword [eax]
call dword [ecx + 0x38]
add esi, 2
dec dword [ebp - 0x10]
jne 0x4a2816
push 0x1fc
lea eax, [ebp - 0x20c]
push eax
mov eax, dword [ebx + 0xc]
push eax
mov eax, dword [0x51e2d4]
mov eax, dword [eax]
call eax
test eax, eax
je 0x4a28da
lea eax, [ebx + 0xfc]
lea edx, [ebp - 0x20c]
mov ecx, 0xfe
call fcn.00404ae0
push 0x1fc
lea eax, [ebp - 0x20c]
push eax
mov eax, dword [ebx + 0xc]
push eax
mov eax, dword [0x51e5b4]
mov eax, dword [eax]
call eax
test eax, eax
je 0x4a290d
lea eax, [ebx + 0x100]
lea edx, [ebp - 0x20c]
mov ecx, 0xfe
call fcn.00404ae0
xor esi, esi
push 0x800
lea eax, [ebx + 0x104]
mov ecx, 1
mov edx, dword [0x4a2048]
call fcn.004053ac
add esp, 4
jmp 0x4a2946
inc esi
cmp esi, 0x800
jg 0x4a2942
call sub.kernel32.dll_GetLastError_1
cmp eax, 0x7a
je 0x4a2946
xor esi, esi
jmp 0x4a2963
mov eax, esi
add eax, eax
push eax
mov eax, dword [ebx + 0x104]
push eax
mov eax, dword [ebx + 0xc]
push eax
mov eax, dword [0x51eb88]
mov eax, dword [eax]
call eax
test eax, eax
je 0x4a292f
push esi
lea eax, [ebx + 0x104]
mov ecx, 1
mov edx, dword [0x4a2048]
call fcn.004053ac
add esp, 4
push 0x1fc
lea eax, [ebp - 0x20c]
push eax
mov eax, dword [ebx + 0xc]
push eax
mov eax, dword [0x51e498]
mov eax, dword [eax]
call eax
test eax, eax
je 0x4a29dd
mov eax, dword [ebp - 8]
dec eax
test eax, eax
jl 0x4a29dd
inc eax
mov dword [ebp - 0x10], eax
lea eax, [ebp - 0x408]
lea edx, [ebp - 0x20c]
mov cx, word [eax]
cmp cx, word [edx]
je 0x4a29d2
lea eax, [ebx + 0x108]
lea edx, [ebp - 0x20c]
mov ecx, 0xfe
call fcn.00404ae0
jmp 0x4a29dd
add edx, 2
add eax, 2
dec dword [ebp - 0x10]
jne 0x4a29b2
movzx eax, word [ebx + 0x78]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
push eax
lea eax, [ebx + 0x11c]
mov ecx, 1
mov edx, dword [0x4a2150]
call fcn.004053ac
add esp, 4
mov eax, dword [ebx + 0x110]
push eax
lea eax, [ebp - 0xc]
push eax
mov eax, dword [ebx + 0x11c]
push eax
mov eax, dword [0x51e0bc]
mov eax, dword [eax]
call eax
mov eax, ebx
call fcn.004a2ea0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4a2a48
lea eax, [ebp - 0x510]
mov edx, 2
call fcn.00404290
ret