Function at 0x41ca40
Capabilities:
Get geographical location

Disassembly:
push 0xffffffffffffffff
mov eax, dword fs:[0]
push 0x4eca58
push eax
mov dword fs:[0], esp
sub esp, 0x44
push ebx
push ebp
push esi
mov esi, ecx
mov eax, dword [esi + 0x234]
lea ebx, [esi + 0x230]
push edi
push eax
call dword [sym.imp.USER32.dll_IsMenu]
test eax, eax
jne 0x41ca85
call dword [sym.imp.USER32.dll_CreatePopupMenu]
push eax
mov ecx, ebx
call fcn.004d50a5
jmp 0x41caa1
mov edi, dword [sym.imp.USER32.dll_RemoveMenu]
jmp 0x41ca90
mov ecx, dword [ebx + 4]
push 0x400
push 0
push ecx
call edi
test eax, eax
jne 0x41ca90
cmp dword [esi + 0x2d0], 2
jne 0x41cc71
mov eax, dword [esi + 0x2c4]
cmp eax, 1
mov dword [esp + 0x14], 0x82dc
jne 0x41caf2
push ecx
mov ecx, esp
mov dword [esp + 0x18], esp
push 0x4fb8f4
call fcn.00403260
push 0x82dc
push ebx
mov ecx, esi
call fcn.0041af00
mov ecx, dword [esp + 0x54]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x50
ret
cmp eax, 2
jne 0x41cc71
mov eax, dword [esi + 0x148]
mov edx, dword [eax]
lea ecx, [esp + 0x24]
push ecx
lea ecx, [esp + 0x20]
push ecx
push eax
call dword [edx + 0x20]
test eax, eax
jl 0x41cc71
mov eax, dword [esi + 0x148]
mov edx, dword [eax]
lea ecx, [esp + 0x28]
push ecx
lea ecx, [esp + 0x24]
push ecx
push eax
call dword [edx + 0x94]
test eax, eax
jl 0x41cc71
mov eax, dword [esp + 0x1c]
xor edi, edi
test eax, eax
jbe 0x41cc71
mov ebp, dword [sym.imp.KERNEL32.DLL_GetLocaleInfoW]
mov edi, edi
mov eax, dword [esi + 0x148]
mov edx, dword [eax]
lea ecx, [esp + 0x18]
push ecx
push edi
push eax
call dword [edx + 0x34]
test eax, eax
jl 0x41cc64
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x20]
xor ebx, ebx
cmp edx, eax
jne 0x41cb7d
mov ebx, 0x1000
cmp edi, dword [esp + 0x24]
jne 0x41cb86
or ebx, 8
call fcn.004d4318
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
add eax, 0x10
mov dword [esp + 0x10], eax
push 0x40
push 0x40
lea ecx, [esp + 0x18]
mov dword [esp + 0x64], 0
call fcn.004030b0
push eax
mov eax, dword [esp + 0x20]
push 0x1001
push eax
call ebp
dec eax
xor ecx, ecx
test eax, eax
setle cl
dec ecx
and eax, ecx
mov ecx, dword [esp + 0x10]
mov dword [ecx - 0xc], eax
mov word [ecx + eax*2], 0
mov eax, dword [esi + 0x148]
mov edx, dword [eax]
lea ecx, [esp + 0x2c]
push ecx
push edi
push eax
call dword [edx + 0x48]
test eax, eax
jl case.default.0x41cbf3
mov eax, dword [esp + 0x3c]
dec eax
cmp eax, 3
ja case.default.0x41cbf3
jmp dword [eax*4 + 0x41cc84]
push str.__Captions_
jmp 0x41cc14
push str.__Visually_Impaired_
jmp 0x41cc14
push str.__Director_Comments_1_
jmp 0x41cc14
push str.__Director_Comments_2_
lea ecx, [esp + 0x14]
call fcn.00415410
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
mov ecx, dword [esi + 0x234]
push edx
push eax
push ebx
push ecx
call dword [sym.imp.USER32.dll_AppendMenuW]
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
inc ebx
add eax, 0xfffffff0
mov dword [esp + 0x14], ebx
mov dword [esp + 0x5c], 0xffffffff
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x41cc64
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x1c]
inc edi
cmp edi, eax
jb 0x41cb50
mov ecx, dword [esp + 0x54]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0x50
ret