Function at 0x4224a8
Capabilities:
Get geographical location

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffea4
push ebx
push esi
push edi
xor edx, edx
mov dword [ebp - 0x15c], edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x422a9a
push dword fs:[eax]
mov dword fs:[eax], esp
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.004219bc
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
jne 0x4224ec
mov byte [0x472478], 0
jmp 0x422a81
call fcn.0042c4c0
push eax
call dword [0x46f5f0]
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], 0
jne 0x42250d
mov byte [0x472478], 0
jmp 0x422a81
xor eax, eax
mov dword [ebp - 0x10], eax
xor eax, eax
mov dword [ebp - 0x14], eax
xor eax, eax
mov dword [ebp - 0x18], eax
xor eax, eax
mov dword [ebp - 0x1c], eax
xor ebx, ebx
xor eax, eax
mov dword [ebp - 0x20], eax
cmp dword [0x46f624], 0
je 0x4225c2
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x24]
push eax
xor ecx, ecx
xor edx, edx
mov eax, dword [ebp - 0xc]
call dword [0x46f624]
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 0
je 0x4225ac
mov eax, dword [ebp - 0x10]
add eax, eax
push eax
push 0
call sub.kernel32.dll_GetProcessHeap
push eax
call sub.kernel32.dll_HeapAlloc
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x1c], eax
cmp dword [ebp - 0x18], 0
jne 0x42258e
mov eax, dword [ebp - 0xc]
push eax
call fcn.0042c4c0
push eax
call dword [0x46f5f4]
jmp 0x422a81
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x24]
push eax
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 0xc]
call dword [0x46f624]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x28]
cmp eax, 1
sbb eax, eax
neg eax
mov byte [0x472479], al
mov bl, 1
jmp 0x422826
mov eax, dword [ebp - 0xc]
push eax
call dword [0x46f5d4]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 8]
cmp eax, 0x4040404
jg 0x422604
je 0x422631
sub eax, 0x4010804
je 0x422728
sub eax, 0xfc00
je 0x422631
sub eax, 0x400
je 0x4227a8
sub eax, 0xfc00
je 0x422631
jmp 0x422826
sub eax, 0x5000404
je 0x42267d
sub eax, 0x10000
je 0x4226d4
sub eax, 0x10000
je 0x4226d4
sub eax, 0x10400
je 0x4226d4
jmp 0x422826
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x124]
push eax
call dword [0x46f5dc]
add eax, 0x18
mov esi, dword [eax]
test esi, esi
je 0x422826
mov eax, esi
mov edx, eax
add edx, 0x1c
add edx, 0x80
mov edx, dword [edx]
mov dword [ebp - 0x10], edx
mov edx, eax
add edx, 0x20
add edx, 0x80
mov edx, dword [edx]
mov dword [ebp - 0x14], edx
add eax, 0x38
mov dword [ebp - 0x1c], eax
mov bl, 1
jmp 0x422826
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x124]
push eax
call dword [0x46f5dc]
add eax, 0xc
mov esi, dword [eax]
test esi, esi
je 0x422826
add esi, 4
add esi, 0x14
add esi, 8
mov esi, dword [esi]
test esi, esi
je 0x422826
mov edx, esi
add edx, 4
add edx, 0x28
add edx, 0x14
mov eax, edx
add eax, 0x10
mov ecx, dword [eax]
mov dword [ebp - 0x10], ecx
add eax, 4
mov eax, dword [eax]
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x1c], edx
xor ebx, ebx
jmp 0x422826
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x124]
push eax
call dword [0x46f5dc]
add eax, 4
mov esi, dword [eax]
test esi, esi
je 0x422826
add esi, 4
add esi, 0x14
mov esi, dword [esi]
test esi, esi
je 0x422826
mov edx, esi
add edx, 4
add edx, 0x28
add edx, 0x14
mov eax, edx
add eax, 0x20
mov ecx, dword [eax]
mov dword [ebp - 0x10], ecx
add eax, 4
mov eax, dword [eax]
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x1c], edx
mov bl, 1
jmp 0x422826
mov edx, 1
mov eax, dword [ebp - 4]
call fcn.004219bc
cmp eax, 2
setae al
mov ecx, 7
mov edx, 8
call fcn.00414664
mov esi, eax
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x124]
push eax
call dword [0x46f5dc]
mov edx, esi
shl edx, 2
add eax, edx
mov esi, dword [eax]
test esi, esi
je 0x422826
mov ebx, esi
mov eax, ebx
add eax, 0x1c
add eax, 0x80
mov eax, dword [eax]
mov dword [ebp - 0x10], eax
mov eax, ebx
add eax, 0x20
add eax, 0x80
mov eax, dword [eax]
mov dword [ebp - 0x14], eax
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x14]
call fcn.0041457c
mov dword [ebp - 0x14], eax
add ebx, 0x18
add ebx, 0x20
mov dword [ebp - 0x1c], ebx
mov bl, 1
jmp 0x422826
mov dword [ebp - 0x148], 0x114
lea eax, [ebp - 0x148]
push eax
call sub.kernel32.dll_GetVersionExW
cmp dword [ebp - 0x138], 2
sete al
mov ecx, 1
mov edx, 2
call fcn.00414664
mov edi, eax
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x124]
push eax
call dword [0x46f5dc]
add eax, 4
add eax, 4
add eax, 0x18
mov esi, dword [eax]
test esi, esi
je 0x422826
mov edx, esi
add edx, 4
add edx, 0x28
add edx, 0x14
mov eax, edx
mov ecx, edi
shl ecx, 4
add eax, ecx
mov ecx, dword [eax]
mov dword [ebp - 0x10], ecx
add eax, 4
mov eax, dword [eax]
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x1c], edx
cmp dword [ebp - 0x138], 2
sete bl
mov word [0x471048], 0
mov word [0x471248], 0
mov word [0x471448], 0
mov word [0x471648], 0
mov eax, dword [ebp - 0x10]
mov dword [0x472454], eax
mov dword [0x472458], 0xffffffff
test bl, bl
je 0x4228b3
mov edi, dword [ebp - 0x10]
dec edi
test edi, edi
jl 0x42289e
inc edi
xor esi, esi
mov ebx, 0x471048
cmp esi, dword [ebp - 0x14]
jl 0x422884
cmp dword [0x472458], 0xffffffff
jne 0x422884
mov dword [0x472458], esi
mov eax, dword [ebp - 0x1c]
mov ax, word [eax + esi*2]
mov word [ebx], ax
mov word [ebx + 2], 0
inc esi
add ebx, 0x200
dec edi
jne 0x422870
mov eax, dword [ebp - 0x10]
shl eax, 6
mov word [eax*8 + 0x471048], 0
jmp 0x4229b2
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x2c], eax
xor esi, esi
mov edi, dword [ebp - 0x10]
dec edi
test edi, edi
jb 0x42299a
inc edi
mov dword [ebp - 0x30], 0
mov ebx, 0x471048
cmp esi, dword [ebp - 0x14]
jl 0x4228ea
cmp dword [0x472458], 0xffffffff
jne 0x4228ea
mov eax, dword [ebp - 0x30]
mov dword [0x472458], eax
xor eax, eax
mov dword [ebp - 0x34], eax
push 8
lea eax, [ebp - 0x158]
push eax
push 0x1004
mov eax, dword [ebp - 4]
call fcn.004251c4
xor edx, edx
call fcn.004219ac
push eax
call sub.kernel32.dll_GetLocaleInfoW
test eax, eax
je 0x42293a
lea eax, [ebp - 0x15c]
lea edx, [ebp - 0x158]
mov ecx, 8
call fcn.00404028
mov eax, dword [ebp - 0x15c]
call fcn.004075d0
mov dword [ebp - 0x34], eax
push 1
push ebx
mov eax, dword [ebp - 0x2c]
mov al, byte [eax + esi]
push eax
mov eax, dword [ebp - 0x34]
push eax
call sub.kernel32.dll_IsDBCSLeadByteEx
cmp eax, 1
sbb eax, eax
inc eax
mov ecx, 1
mov edx, 2
call fcn.00414664
push eax
mov eax, dword [ebp - 0x2c]
add eax, esi
push eax
push 0
mov eax, dword [ebp - 0x34]
push eax
call sub.kernel32.dll_MultiByteToWideChar_1
mov eax, dword [ebp - 0x2c]
mov al, byte [eax + esi]
push eax
mov eax, dword [ebp - 0x34]
push eax
call sub.kernel32.dll_IsDBCSLeadByteEx
test eax, eax
je 0x422989
inc esi
inc esi
inc dword [ebp - 0x30]
add ebx, 0x200
dec edi
jne 0x4228d4
mov eax, dword [ebp - 0x10]
shl eax, 6
mov word [eax*8 + 0x471048], 0
mov eax, dword [ebp - 0x10]
mov dword [0x472454], eax
cmp dword [0x46f624], 0
jne 0x4229e0
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x124]
push eax
call dword [0x46f5e0]
mov eax, dword [ebp - 0xc]
push eax
call dword [0x46f5d8]
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.004222bc
mov eax, dword [ebp - 0xc]
push eax
call fcn.0042c4c0
push eax
call dword [0x46f5f4]
cmp dword [ebp - 0x18], 0
je 0x422a07
mov eax, dword [ebp - 0x18]
push eax
push 0
call sub.kernel32.dll_GetProcessHeap
push eax
call sub.kernel32.dll_HeapFree
cmp dword [0x472454], 0
seta byte [0x472478]
cmp byte [0x472479], 0
je 0x422a77
mov dword [0x472460], 0xffffffff
mov word [0x471008], 0
mov edi, dword [0x472454]
dec edi
test edi, edi
jl 0x422a77
inc edi
xor esi, esi
mov ebx, 0x471048
mov eax, dword [0x472458]
cmp eax, esi
jne 0x422a5c
push 0x471008
call sub.kernel32.dll_lstrlenW
mov dword [0x472460], eax
mov ecx, ebx
mov eax, 0x471008
mov edx, 0x20
call fcn.00414220
inc esi
add ebx, 0x200
dec edi
jne 0x422a44
mov dword [0x47245c], 0xa
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x422aa1
lea eax, [ebp - 0x15c]
call fcn.00403da0
ret