Function at 0x514540
Capabilities:
Get geographical location

Disassembly:
push 0xffffffffffffffff
push 0x867728
mov eax, dword fs:[0]
push eax
sub esp, 0x34
mov eax, dword [0x8ce6f4]
xor eax, esp
mov dword [esp + 0x30], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x8ce6f4]
xor eax, esp
push eax
lea eax, [esp + 0x48]
mov dword fs:[0], eax
mov ebx, ecx
mov eax, dword [ebx + 0x2d8]
lea edi, [ebx + 0x2d4]
push eax
mov dword [esp + 0x24], ebx
call dword [sym.imp.USER32.dll_IsMenu]
test eax, eax
jne 0x51459f
call dword [sym.imp.USER32.dll_CreatePopupMenu]
push eax
mov ecx, edi
call fcn.007d8636
jmp 0x5145b6
mov esi, dword [sym.imp.USER32.dll_RemoveMenu]
mov ecx, dword [edi + 4]
push 0x400
push 0
push ecx
call esi
test eax, eax
jne 0x5145a5
cmp dword [ebx + 0x2e8], 2
jne 0x51482d
mov eax, dword [ebx + 0x2bc]
cmp eax, 1
je 0x51481e
cmp eax, 3
jne 0x5145ec
call fcn.007c9a2f
mov eax, dword [eax + 4]
cmp dword [eax + 0x9b8], 1
je 0x51481e
cmp dword [ebx + 0x2bc], 2
jne 0x51482d
mov eax, dword [ebx + 0x144]
mov edx, dword [eax]
mov edx, dword [edx + 0x24]
lea ecx, [esp + 0x24]
push ecx
lea ecx, [esp + 0x2c]
push ecx
lea ecx, [esp + 0x24]
push ecx
push eax
call edx
test eax, eax
js 0x51482d
cmp dword [esp + 0x1c], 0
je 0x51482d
mov eax, dword [ebx + 0x144]
mov ecx, dword [eax]
lea edx, [esp + 0x30]
push edx
lea edx, [esp + 0x30]
push edx
push eax
mov eax, dword [ecx + 0x98]
call eax
test eax, eax
js 0x51482d
push 0x815d
lea ecx, [esp + 0x18]
call fcn.004a8f10
mov ecx, dword [esp + 0x24]
mov eax, dword [eax]
neg ecx
sbb ecx, ecx
push eax
and ecx, 0xfffffff8
add ecx, 8
push 0xa28
push ecx
mov ecx, edi
call fcn.004ec550
lea ecx, [esp + 0x14]
mov ebp, 0xa29
call fcn.004a8c20
mov edx, dword [edi + 4]
push 0
push 0
push 0x800
push edx
call dword [sym.imp.USER32.dll_AppendMenuW]
xor ebx, ebx
cmp dword [esp + 0x1c], ebx
jbe 0x51482d
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x144]
mov ecx, dword [eax]
lea edx, [esp + 0x18]
push edx
push ebx
push eax
mov eax, dword [ecx + 0x38]
call eax
test eax, eax
js 0x514811
mov ecx, dword [esp + 0x18]
xor esi, esi
cmp ecx, dword [esp + 0x2c]
jne 0x5146d6
mov esi, 0x1000
cmp ebx, dword [esp + 0x28]
jne 0x5146df
or esi, 8
lea ecx, [esp + 0x14]
call fcn.005345e0
cmp dword [esp + 0x18], 0
mov dword [esp + 0x50], 0
je 0x51474e
mov edx, dword [esp + 0x14]
mov eax, dword [edx - 8]
mov ecx, 1
sub ecx, dword [edx - 4]
sub eax, 0x100
or eax, ecx
jge 0x514721
push 0x100
lea ecx, [esp + 0x18]
call fcn.004a8a90
mov edx, dword [esp + 0x14]
push 0x100
push edx
mov edx, dword [esp + 0x20]
push 0x1001
push edx
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
dec eax
xor ecx, ecx
test eax, eax
setle cl
dec ecx
and eax, ecx
push eax
lea ecx, [esp + 0x18]
call fcn.004a8550
jmp 0x514764
lea edx, [ebx + 1]
push edx
lea eax, [esp + 0x18]
push 0x8159
push eax
call fcn.004b1ce0
add esp, 0xc
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx + 0x144]
mov edx, dword [eax]
mov edx, dword [edx + 0x50]
lea ecx, [esp + 0x34]
push ecx
push ebx
push eax
call edx
test eax, eax
js case.0x51478a.4
mov eax, dword [esp + 0x40]
dec eax
cmp eax, 0xe
ja case.0x51478a.4
jmp dword [eax*4 + 0x51484c]
push 0x402a88
jmp 0x5147d5
push 0x40d83c
jmp 0x5147d5
push 0x40d824
jmp 0x5147d5
push 0x40d818
jmp 0x5147d5
push 0x40d804
jmp 0x5147d5
push 0x40d7e4
jmp 0x5147d5
push 0x40d7d0
jmp 0x5147d5
push 0x40d7a4
jmp 0x5147d5
push 0x40d770
jmp 0x5147d5
push 0x40d730
lea ecx, [esp + 0x18]
call fcn.004aaf10
push 0x40d4a4
push 0x4022f8
lea ecx, [esp + 0x1c]
call fcn.004aa070
mov eax, dword [esp + 0x14]
push eax
push ebp
push esi
mov ecx, edi
call fcn.004ec550
lea ecx, [esp + 0x14]
inc ebp
mov dword [esp + 0x50], 0xffffffff
call fcn.004a8c20
inc ebx
cmp ebx, dword [esp + 0x1c]
jb 0x5146a5
jmp 0x51482d
push 2
push 0xa28
push edi
mov ecx, ebx
call fcn.005073f0
mov ecx, dword [esp + 0x48]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x30]
xor ecx, esp
call fcn.0080262b
add esp, 0x40
ret