Function at 0x5ac630
Capabilities:
Get geographical location

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5d553a
mov eax, dword fs:[0]
push eax
sub esp, 0x24
push ebx
push esi
push edi
mov eax, dword [0x638fe4]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x20], ecx
push 0x60ab98
lea ecx, [ebp - 0x10]
mov dword [ebp - 0x30], 0
call fcn.00403280
mov dword [ebp - 4], 0
mov ebx, 1
mov eax, dword [ebp - 0x10]
mov edx, ebx
mov ecx, dword [eax - 8]
sub edx, dword [eax - 4]
sub ecx, 0x104
or ecx, edx
jge 0x5ac6a0
push 0x104
lea ecx, [ebp - 0x10]
call fcn.00402cf0
mov eax, dword [ebp - 0x10]
mov edi, dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
push 0x104
push eax
push 0x79
push 0x400
call edi
mov ecx, dword [ebp - 0x10]
mov esi, eax
push dword [ecx - 8]
push ecx
call fcn.0054c667
mov edx, eax
add esp, 8
test edx, edx
js 0x5acb2b
mov ecx, dword [ebp - 0x10]
cmp edx, dword [ecx - 8]
jg 0x5acb2b
mov dword [ecx - 0xc], edx
xor ecx, ecx
mov eax, dword [ebp - 0x10]
mov word [eax + edx*2], cx
test esi, esi
je 0x5ac776
mov eax, dword [ebp - 0x10]
add eax, 0xfffffff0
push eax
call fcn.004035b0
mov ebx, dword [ebp - 0x20]
add eax, 0x10
mov dword [ebp - 4], 0xffffffff
add esp, 4
mov ecx, dword [ebp - 0x10]
add ecx, 0xfffffff0
mov dword [ebx], eax
or eax, 0xffffffff
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x5ac762
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x5ac75e
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x5ac75e
push 0
push dword [edx + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov eax, ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, edx
call esi
mov eax, ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
call fcn.00418413
mov ecx, eax
test ecx, ecx
jne 0x5ac78b
push 0x80004005
call fcn.00402650
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x5ac7a0
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
jmp 0x5ac7a2
call edx
lea esi, [eax + 0x10]
mov dword [ebp - 0x14], esi
mov byte [ebp - 4], 1
mov ecx, ebx
mov eax, dword [esi - 8]
sub ecx, dword [esi - 4]
sub eax, 0x104
or eax, ecx
jge 0x5ac7cd
push 0x104
lea ecx, [ebp - 0x14]
call fcn.00402cf0
mov esi, dword [ebp - 0x14]
push 0x104
push esi
push 0x1003
push 0x400
call edi
push dword [esi - 8]
push esi
call fcn.0054c667
add esp, 8
test eax, eax
js 0x5acb2b
cmp eax, dword [esi - 8]
jg 0x5acb2b
xor ecx, ecx
mov dword [esi - 0xc], eax
mov word [esi + eax*2], cx
call fcn.00418413
mov ecx, eax
test ecx, ecx
jne 0x5ac81a
push 0x80004005
call fcn.00402650
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x5ac82f
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
jmp 0x5ac831
call edx
lea edi, [eax + 0x10]
mov dword [ebp - 0x24], edi
mov byte [ebp - 4], 2
mov eax, dword [edi - 8]
sub ebx, dword [edi - 4]
sub eax, 0x104
or eax, ebx
jge 0x5ac85a
push 0x104
lea ecx, [ebp - 0x24]
call fcn.00402cf0
mov edi, dword [ebp - 0x24]
push 0x104
push edi
push 0x1e
push 0x400
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
push dword [edi - 8]
push edi
call fcn.0054c667
add esp, 8
test eax, eax
js 0x5acb2b
cmp eax, dword [edi - 8]
jg 0x5acb2b
xor ecx, ecx
mov dword [edi - 0xc], eax
mov word [edi + eax*2], cx
mov ebx, dword [esi - 0xc]
mov dword [ebp - 0x18], ebx
xor ebx, ebx
cmp dword [ebp - 0x18], ecx
jle 0x5ac9c9
test ebx, ebx
js 0x5ac8c7
cmp ebx, dword [esi - 0xc]
jg 0x5ac8c7
lea eax, [esi + ebx*2]
push edi
push eax
call fcn.00546eba
add esp, 8
test eax, eax
je 0x5ac8c7
sub eax, esi
sar eax, 1
mov dword [ebp - 0x1c], eax
jns 0x5ac8cd
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x1c], eax
sub eax, ebx
lea ecx, [ebp - 0x14]
push eax
push ebx
lea eax, [ebp - 0x28]
push eax
call fcn.00405f50
mov byte [ebp - 4], 3
mov ebx, dword [ebp - 0x28]
push 0x610c20
push ebx
call fcn.0054dd33
add esp, 8
test eax, eax
je 0x5ac988
push 0x610c18
push ebx
call fcn.0054dd33
add esp, 8
test eax, eax
je 0x5ac988
mov eax, dword [ebp - 0x10]
cmp dword [eax - 0xc], 0
jle 0x5ac921
push dword [edi - 0xc]
lea ecx, [ebp - 0x10]
push edi
call fcn.00403780
push dword [ebx - 0xc]
lea ecx, [ebp - 0x10]
push ebx
call fcn.00403780
mov eax, dword [edi - 0xc]
add ebx, 0xfffffff0
add eax, dword [ebp - 0x1c]
mov dword [ebp - 0x2c], eax
or eax, 0xffffffff
mov byte [ebp - 4], 2
lock xadd dword [ebx + 0xc], eax
dec eax
test eax, eax
jg 0x5ac977
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x5ac975
mov ecx, dword [ecx + 4]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x5ac975
push 0
push dword [ecx + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
jmp 0x5ac977
call edx
mov ebx, dword [ebp - 0x18]
cmp dword [ebp - 0x1c], ebx
mov ebx, dword [ebp - 0x2c]
jl 0x5ac8a4
jmp 0x5ac9c9
mov byte [ebp - 4], 2
add ebx, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [ebx + 0xc], eax
dec eax
test eax, eax
jg 0x5ac9c9
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x5ac9c7
mov ecx, dword [ecx + 4]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x5ac9c7
push 0
push dword [ecx + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
jmp 0x5ac9c9
call edx
mov ebx, dword [ebp - 0x10]
add ebx, 0xfffffff0
mov ecx, dword [ebx]
mov eax, dword [ecx]
cmp eax, vtable.ATL::CAtlStringMgr.0
je 0x5ac9df
call dword [eax + 0x10]
mov ecx, eax
cmp dword [ebx + 0xc], 0
lea eax, [ebx + 0xc]
jl 0x5ac9f1
cmp ecx, dword [ebx]
jne 0x5ac9f1
lock inc dword [eax]
jmp 0x5aca32
mov eax, dword [ecx]
push 2
push dword [ebx + 4]
call dword [eax]
mov ecx, eax
mov dword [ebp - 0x2c], ecx
test ecx, ecx
jne 0x5aca08
call fcn.00402e60
mov eax, dword [ebx + 4]
mov dword [ecx + 4], eax
add ecx, 0x10
mov edx, dword [ebx + 4]
lea eax, [edx*2 + 2]
push eax
lea eax, [ebx + 0x10]
push eax
lea edx, [edx*2 + 2]
call fcn.0056c4f0
mov ebx, dword [ebp - 0x2c]
add esp, 8
mov ecx, dword [ebp - 0x20]
lea eax, [ebx + 0x10]
or ebx, 0xffffffff
mov byte [ebp - 4], 1
add edi, 0xfffffff0
mov dword [ecx], eax
mov eax, ebx
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x5aca7f
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x5aca7d
mov ecx, dword [ecx + 4]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x5aca7d
mov edi, dword [sym.imp.KERNEL32.dll_HeapFree]
push 0
push dword [ecx + 4]
call edi
jmp 0x5aca85
call edx
mov edi, dword [sym.imp.KERNEL32.dll_HeapFree]
mov byte [ebp - 4], 0
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x5acac1
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x5acabf
mov ecx, dword [ecx + 4]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x5acabf
push 0
push dword [ecx + 4]
call edi
jmp 0x5acac1
call edx
mov dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0x10]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x5acb16
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x5acb12
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x5acb12
push 0
push dword [edx + 4]
call edi
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, edx
call esi
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push 0x80070057
call fcn.00402650
int3