Function at 0x52cb50
Capabilities:
Get geographical location

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x57759e
mov eax, dword fs:[0]
push eax
sub esp, 0x18
push ebx
push esi
push edi
mov eax, dword [0x5d52e0]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
xor edi, edi
push 0x5a95c8
lea ecx, [ebp - 0x10]
mov dword [ebp - 0x24], edi
call fcn.00401210
mov dword [ebp - 4], edi
mov edx, dword [ebp - 0x10]
mov eax, dword [edx - 8]
mov ecx, 1
sub ecx, dword [edx - 4]
sub eax, 0x104
or eax, ecx
jge 0x52cbb4
push 0x104
lea ecx, [ebp - 0x10]
call fcn.004019b0
mov edx, dword [ebp - 0x10]
mov ebx, dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
push 0x104
push edx
push 0x79
push 0x400
call ebx
mov esi, eax
mov eax, dword [ebp - 0x10]
mov ecx, dword [eax - 8]
push ecx
push eax
call fcn.004ff818
add esp, 8
cmp eax, edi
jl 0x52cee5
mov ecx, dword [ebp - 0x10]
cmp eax, dword [ecx - 8]
jg 0x52cee5
mov dword [ecx - 0xc], eax
mov edx, dword [ebp - 0x10]
xor ecx, ecx
mov word [edx + eax*2], cx
cmp esi, edi
je 0x52cc50
mov eax, dword [ebp - 0x10]
add eax, 0xfffffff0
push eax
call fcn.00401a10
mov esi, dword [ebp + 8]
add eax, 0x10
mov dword [esi], eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x10]
add eax, 0xfffffff0
add esp, 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x52cc3c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, esi
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.0040c84f
xor ecx, ecx
cmp eax, edi
setne cl
cmp ecx, edi
jne 0x52cc6a
push 0x80004005
call fcn.004010a0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea esi, [eax + 0x10]
mov dword [ebp - 0x14], esi
mov byte [ebp - 4], 1
mov eax, dword [esi - 8]
mov ecx, 1
sub ecx, dword [esi - 4]
sub eax, 0x104
or eax, ecx
jge 0x52cca1
push 0x104
lea ecx, [ebp - 0x14]
call fcn.004019b0
mov esi, dword [ebp - 0x14]
push 0x104
push esi
push 0x1003
push 0x400
call ebx
mov eax, dword [esi - 8]
push eax
push esi
call fcn.004ff818
add esp, 8
cmp eax, edi
jl 0x52cee5
cmp eax, dword [esi - 8]
jg 0x52cee5
xor ecx, ecx
mov dword [esi - 0xc], eax
mov word [esi + eax*2], cx
call fcn.0040c84f
xor ecx, ecx
cmp eax, edi
setne cl
cmp ecx, edi
jne 0x52ccf4
push 0x80004005
call fcn.004010a0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea edi, [eax + 0x10]
mov dword [ebp - 0x1c], edi
mov byte [ebp - 4], 2
mov eax, dword [edi - 8]
mov ecx, 1
sub ecx, dword [edi - 4]
sub eax, 0x104
or eax, ecx
jge 0x52cd2b
push 0x104
lea ecx, [ebp - 0x1c]
call fcn.004019b0
mov edi, dword [ebp - 0x1c]
push 0x104
push edi
push 0x1e
push 0x400
call ebx
mov eax, dword [edi - 8]
push eax
push edi
call fcn.004ff818
add esp, 8
test eax, eax
js 0x52cee5
cmp eax, dword [edi - 8]
jg 0x52cee5
xor ecx, ecx
mov dword [edi - 0xc], eax
mov word [edi + eax*2], cx
mov eax, dword [esi - 0xc]
xor ebx, ebx
mov dword [ebp - 0x20], eax
test eax, eax
jle 0x52ce54
mov eax, dword [esi - 0xc]
test ebx, ebx
js 0x52cd96
cmp ebx, eax
jg 0x52cd96
lea edx, [esi + ebx*2]
push edi
push edx
call fcn.004fffd1
add esp, 8
test eax, eax
je 0x52cd96
sub eax, esi
sar eax, 1
mov dword [ebp - 0x18], eax
jns 0x52cd9c
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x18], eax
sub eax, ebx
push eax
push ebx
lea ecx, [ebp - 0x24]
push ecx
lea ecx, [ebp - 0x14]
call fcn.00402fb0
mov byte [ebp - 4], 3
mov esi, dword [ebp - 0x24]
push 0x5ad1a4
push esi
call fcn.0050056c
add esp, 8
test eax, eax
je 0x52ce31
push 0x5ad1a8
push esi
call fcn.0050056c
add esp, 8
test eax, eax
je 0x52ce31
mov edx, dword [ebp - 0x10]
cmp dword [edx - 0xc], 0
jle 0x52cded
mov eax, dword [edi - 0xc]
push eax
push edi
lea ecx, [ebp - 0x10]
call fcn.00401790
mov eax, dword [esi - 0xc]
push eax
push esi
lea ecx, [ebp - 0x10]
call fcn.00401790
mov ebx, dword [edi - 0xc]
add ebx, dword [ebp - 0x18]
add esi, 0xfffffff0
mov byte [ebp - 4], 2
lea ecx, [esi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x52ce20
mov ecx, dword [esi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push esi
call edx
mov eax, dword [ebp - 0x18]
mov esi, dword [ebp - 0x14]
cmp eax, dword [ebp - 0x20]
jl 0x52cd71
jmp 0x52ce54
add esi, 0xfffffff0
mov byte [ebp - 4], 2
lea ecx, [esi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x52ce51
mov ecx, dword [esi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push esi
call edx
mov esi, dword [ebp - 0x14]
mov eax, dword [ebp - 0x10]
add eax, 0xfffffff0
push eax
call fcn.00401a10
mov ebx, dword [ebp + 8]
add eax, 0x10
add edi, 0xfffffff0
mov dword [ebx], eax
add esp, 4
mov byte [ebp - 4], 1
lea eax, [edi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x52ce8b
mov ecx, dword [edi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push edi
call eax
lea eax, [esi - 0x10]
mov byte [ebp - 4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x52ceab
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x10]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x52ced1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
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
push 0x80070057
call fcn.004010a0
int3