Function at 0x4b7d40
Capabilities:
Get geographical location

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x4f59e4
push eax
mov dword fs:[0], esp
sub esp, 0x130
push ebx
push ebp
push esi
mov esi, dword [esp + 0x14c]
push edi
mov edi, dword [esp + 0x154]
push edi
push esi
call dword [sym.imp.USER32.dll_GetSubMenu]
mov ebp, eax
xor ebx, ebx
cmp ebp, ebx
je 0x4b8216
push 0x403
push edi
push esi
call dword [sym.imp.USER32.dll_EnableMenuItem]
mov dword [esp + 0x24], ebx
mov eax, dword [0x53d440]
mov ecx, 0x53d440
mov dword [esp + 0x148], ebx
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x34], ecx
call dword [eax + 4]
mov eax, dword [0x53716c]
mov byte [esp + 0x148], 1
cmp eax, ebx
jne 0x4b7e1d
cmp dword [0x537168], ebx
jne 0x4b7e1d
push 0x110
call sub.MFC42.DLL_operatornew
add esp, 4
mov dword [esp + 0x20], eax
cmp eax, ebx
mov byte [esp + 0x148], 2
je 0x4b7dee
push ebx
mov ecx, eax
call fcn.00404a60
jmp 0x4b7df0
xor eax, eax
mov ecx, dword [0x528b70]
mov byte [esp + 0x148], 1
push ecx
push 0x404a30
mov ecx, 0x53bea0
mov dword [0x537168], eax
call fcn.00402190
mov dword [0x53716c], 1
mov edx, dword [0x53d440]
mov esi, dword [0x537168]
mov ecx, 0x53d440
mov byte [esp + 0x148], bl
call dword [edx + 8]
lea eax, [esp + 0x24]
mov ecx, esi
push eax
call fcn.0043f5b0
test eax, eax
jl 0x4b7f47
mov eax, dword [esp + 0x24]
cmp eax, ebx
je 0x4b7f47
mov ecx, dword [eax]
push eax
call dword [ecx + 0xc]
cmp eax, ebx
mov dword [esp + 0x1c], eax
jle 0x4b7f47
mov edx, dword [esp + 0x150]
push 0x400
push edi
push edx
call dword [sym.imp.USER32.dll_EnableMenuItem]
mov edi, dword [sym.imp.USER32.dll_DeleteMenu]
push 0x400
push ebx
push ebp
call edi
test eax, eax
je 0x4b7e9e
push 0x400
push ebx
push ebp
call edi
test eax, eax
jne 0x4b7e91
mov eax, dword [esp + 0x1c]
xor esi, esi
cmp eax, ebx
mov dword [esp + 0x18], ebx
jle 0x4b7f27
lea ecx, [esp + 0x10]
call sub.MFC42.DLL_CString::CString_3
lea edi, [esi + 0xc80]
lea ecx, [esp + 0x10]
mov byte [esp + 0x148], 3
lea eax, [edi - 0xc7f]
push eax
push 0x53466c
push ecx
call sub.MFC42.DLL_CString::Format
mov eax, dword [esp + 0x30]
add esp, 0xc
lea ecx, [esp + 0x14]
mov dword [esp + 0x14], ebx
mov edx, dword [eax]
push ecx
push esi
push eax
call dword [edx + 0x10]
cmp dword [esp + 0x14], ebx
jne 0x4b7efa
mov dword [esp + 0x18], esi
mov edx, dword [esp + 0x10]
push edx
push edi
push ebx
push ebp
call dword [sym.imp.USER32.dll_AppendMenuA]
lea ecx, [esp + 0x10]
mov byte [esp + 0x148], bl
call sub.MFC42.DLL_CString::CString
mov eax, dword [esp + 0x1c]
inc esi
cmp esi, eax
jl 0x4b7eac
mov edi, dword [sym.imp.USER32.dll_DeleteMenu]
mov eax, dword [esp + 0x18]
push ebx
add eax, 0xc80
add esi, 0xc7f
push eax
push esi
push 0xc80
push ebp
call dword [sym.imp.USER32.dll_CheckMenuRadioItem]
jmp 0x4b7f4d
mov edi, dword [sym.imp.USER32.dll_DeleteMenu]
mov dword [esp + 0x28], ebx
mov dword [esp + 0x30], ebx
mov dword [esp + 0x2c], ebx
mov edx, dword [0x53d440]
mov ecx, 0x53d440
mov byte [esp + 0x148], 6
mov dword [esp + 0x34], ecx
call dword [edx + 4]
mov eax, dword [0x53716c]
mov byte [esp + 0x148], 7
cmp eax, ebx
jne 0x4b7fe1
cmp dword [0x537168], ebx
jne 0x4b7fe1
push 0x110
call sub.MFC42.DLL_operatornew
add esp, 4
mov dword [esp + 0x20], eax
cmp eax, ebx
mov byte [esp + 0x148], 8
je 0x4b7fb3
push ebx
mov ecx, eax
call fcn.00404a60
jmp 0x4b7fb5
xor eax, eax
mov dword [0x537168], eax
mov eax, dword [0x528b70]
push eax
push 0x404a30
mov ecx, 0x53bea0
mov byte [esp + 0x150], 7
call fcn.00402190
mov dword [0x53716c], 1
mov edx, dword [0x53d440]
mov esi, dword [0x537168]
mov ecx, 0x53d440
mov byte [esp + 0x148], 6
call dword [edx + 8]
lea eax, [esp + 0x2c]
mov ecx, esi
push eax
call fcn.0043f480
test eax, eax
jl 0x4b81bc
mov eax, dword [esp + 0x2c]
cmp eax, ebx
je 0x4b81bc
mov ecx, dword [eax]
lea edx, [esp + 0x30]
push edx
push 0x52da48
push eax
call dword [ecx + 0xc]
test eax, eax
jl 0x4b81bc
mov eax, dword [esp + 0x30]
cmp eax, ebx
je 0x4b81bc
mov ecx, dword [eax]
lea edx, [esp + 0x28]
push edx
push 0x533c38
push eax
call dword [ecx]
test eax, eax
jl 0x4b81bc
mov eax, dword [esp + 0x28]
cmp eax, ebx
je 0x4b81bc
lea edx, [esp + 0x10]
mov dword [esp + 0x10], ebx
mov ecx, dword [eax]
push edx
push eax
call dword [ecx + 0xc]
cmp dword [esp + 0x10], ebx
jle 0x4b81bc
mov eax, dword [esp + 0x1c]
cmp eax, ebx
jg 0x4b80bc
mov eax, dword [esp + 0x154]
mov ecx, dword [esp + 0x150]
push 0x400
push eax
push ecx
call dword [sym.imp.USER32.dll_EnableMenuItem]
push 0x400
push ebx
push ebp
call edi
test eax, eax
je 0x4b80d3
push 0x400
push ebx
push ebp
call edi
test eax, eax
jne 0x4b80ad
jmp 0x4b80d3
add eax, 0xc80
push 0x537100
push eax
push 0x800
push ebp
call dword [sym.imp.USER32.dll_AppendMenuA]
mov eax, dword [esp + 0x10]
xor esi, esi
cmp eax, ebx
mov dword [esp + 0x20], ebx
jle 0x4b8196
mov edx, dword [esp + 0x1c]
mov edi, dword [sym.imp.KERNEL32.dll_GetLocaleInfoA]
add edx, 0xc81
mov dword [esp + 0x14], edx
mov eax, dword [esp + 0x28]
lea edx, [esp + 0x34]
push edx
lea edx, [esp + 0x3c]
mov dword [esp + 0x3c], ebx
mov ecx, dword [eax]
push edx
push esi
push eax
call dword [ecx + 0x10]
mov ecx, dword [esp + 0x34]
lea eax, [esp + 0x3c]
push 0x104
push eax
push 2
push ecx
mov byte [esp + 0x4c], bl
call edi
lea edx, [esp + 0x3c]
lea ecx, [esp + 0x18]
push edx
call sub.MFC42.DLL_CString::CString_2
push 0x534660
push 0x534658
lea ecx, [esp + 0x20]
mov byte [esp + 0x150], 9
call sub.MFC42.DLL_CString::Replace
cmp dword [esp + 0x38], 1
jne 0x4b815d
mov dword [esp + 0x20], esi
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
push eax
push ecx
push ebx
push ebp
call dword [sym.imp.USER32.dll_AppendMenuA]
lea ecx, [esp + 0x18]
mov byte [esp + 0x148], 6
call sub.MFC42.DLL_CString::CString
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
inc esi
inc ecx
cmp esi, eax
mov dword [esp + 0x14], ecx
jl 0x4b80f9
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
push ebx
lea ecx, [edx + eax + 0xc81]
lea edx, [esi + eax + 0xc80]
push ecx
add eax, 0xc81
push edx
push eax
push ebp
call dword [sym.imp.USER32.dll_CheckMenuRadioItem]
mov eax, dword [esp + 0x2c]
mov byte [esp + 0x148], 5
cmp eax, ebx
je 0x4b81d2
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [esp + 0x30]
mov byte [esp + 0x148], 4
cmp eax, ebx
je 0x4b81e8
mov edx, dword [eax]
push eax
call dword [edx + 8]
mov eax, dword [esp + 0x28]
mov byte [esp + 0x148], bl
cmp eax, ebx
je 0x4b81fd
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [esp + 0x24]
mov dword [esp + 0x148], 0xffffffff
cmp eax, ebx
je 0x4b8216
mov edx, dword [eax]
push eax
call dword [edx + 8]
mov ecx, dword [esp + 0x140]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x13c
ret