Function at 0x3f9c3e77
Capabilities:
Get geographical location

Disassembly:
mov eax, 0x3fadec81
call fcn.3f9ec288
sub esp, 0x990
mov eax, dword [0x3faeae94]
mov dword [ebp - 0x10], eax
push ebx
push esi
mov esi, dword [ebp + 8]
mov ebx, dword [esi]
mov eax, dword [ebx + 4]
cmp eax, 1
push edi
mov edi, ecx
jne 0x3f9c481a
mov ecx, dword [ebx + 0x80]
push 0x96
call fcn.3f9f5d74
mov ecx, 0x3fae9140
cmp dword [eax], ecx
je 0x3f9c4107
mov dword [ebp + 8], ecx
mov ecx, dword [ebx + 0x80]
push 0x96
call fcn.3f9f5d74
push 0x3f83c724
push eax
mov ecx, edi
call fcn.3f9f5d74
test al, al
jne 0x3f9c406a
mov ecx, dword [ebx + 0x80]
push 0x96
call fcn.3f9f5d74
push 0x3f83c714
push eax
mov ecx, edi
call fcn.3f9f5d74
test al, al
jne 0x3f9c406a
mov ecx, dword [ebx + 0x80]
push 0x96
call fcn.3f9f5d74
push 0x3f83c708
push eax
mov ecx, edi
call fcn.3f9f5d74
test al, al
jne 0x3f9c406a
mov ecx, dword [ebx + 0x80]
push 0x96
call fcn.3f9f5d74
push 0x3f83c6f8
push eax
mov ecx, edi
call fcn.3f9f5d74
test al, al
je 0x3f9c3f61
push 0
push 0x3f83c58c
jmp 0x3f9c4071
mov ecx, dword [ebx + 0x80]
push 0x96
call fcn.3f9f5d74
push 0x3f83c6ec
push eax
mov ecx, edi
call fcn.3f9f5d74
test al, al
je 0x3f9c3f8e
push 0
push 0x3f83c6c8
jmp 0x3f9c4071
mov ecx, dword [ebx + 0x80]
push 0x96
call fcn.3f9f5d74
push 0x3f83c6bc
push eax
mov ecx, edi
call fcn.3f9f5d74
test al, al
je 0x3f9c3fbb
push 0
push 0x3f83c6a8
jmp 0x3f9c4071
mov ecx, dword [ebx + 0x80]
push 0x96
call fcn.3f9f5d74
push 0x3f83c69c
push eax
mov ecx, edi
call fcn.3f9f5d74
test al, al
je 0x3f9c3fe8
push 0
push 0x3f83c680
jmp 0x3f9c4071
mov ecx, dword [ebx + 0x80]
push 0x96
call fcn.3f9f5d74
push 0x3f83c674
push eax
mov ecx, edi
call fcn.3f9f5d74
test al, al
je 0x3f9c4012
push 0
push 0x3f83c654
jmp 0x3f9c4071
mov ecx, dword [ebx + 0x80]
push 0x96
call fcn.3f9f5d74
push 0x3f83c634
push eax
mov ecx, edi
call fcn.3f9f5d74
test al, al
je 0x3f9c403c
push 0
push 0x3f83c60c
jmp 0x3f9c4071
mov ecx, dword [ebx + 0x80]
push 0x96
call fcn.3f9f5d74
push 0x3f83c5fc
push eax
mov ecx, edi
call fcn.3f9f5d74
test al, al
je 0x3f9c481a
push 0
push 0x3f83c5dc
jmp 0x3f9c4071
push 0
push 0x3f83c5b4
lea eax, [ebp - 0x97c]
push eax
mov ecx, edi
call fcn.3f9f5d74
mov eax, dword [eax]
cmp eax, 0x3fae9140
mov dword [ebp + 8], eax
je 0x3f9c481a
mov eax, dword [ebp + 0x10]
mov ebx, dword [eax]
lea ecx, [ebx + 1]
mov dword [eax], ecx
lea eax, [ebp + 8]
push eax
push ecx
mov ecx, dword [esi]
mov eax, esp
mov dword [eax], ecx
lea eax, [ebp + 0x10]
mov dword [ebp - 0x97c], esp
push eax
mov ecx, edi
call fcn.3f9c39a1
push eax
push ecx
mov ecx, dword [0x3fae915c]
mov eax, esp
mov dword [eax], ecx
mov dword [ebp - 0x97c], esp
push ecx
mov ecx, dword [0x3fae915c]
mov eax, esp
mov dword [eax], ecx
mov dword [ebp - 0x97c], esp
push ecx
mov ecx, dword [ebp + 8]
mov eax, esp
mov dword [ebp - 0x97c], esp
mov dword [eax], ecx
push ebx
push ecx
mov ecx, dword [esi]
mov eax, esp
mov dword [eax], ecx
lea eax, [ebp - 0x988]
mov dword [ebp - 0x97c], esp
push eax
mov ecx, edi
call fcn.3f9f5d74
jmp 0x3f9c480e
mov eax, dword [ebx + 0xc0]
xor ebx, ebx
push ebx
mov dword [ebp - 0x98c], eax
push 0x3f83c560
lea eax, [ebp + 8]
push eax
mov ecx, edi
call fcn.3f9f5d74
push eax
mov eax, dword [ebp - 0x98c]
add eax, 0x10
push eax
lea eax, [ebp - 0x994]
push eax
mov ecx, edi
call fcn.3f9f5d74
push esi
call fcn.3f9f5d74
test al, al
jne 0x3f9c417f
mov eax, dword [esi]
mov ecx, dword [eax + 0x7c]
push 0x97
call fcn.3f9f5d74
mov eax, dword [eax]
add eax, 4
push eax
call fcn.3f9f5d74
test al, al
jne 0x3f9c417f
push esi
call fcn.3f9f5d74
test al, al
jne 0x3f9c417f
push esi
call fcn.3f9f5d74
test al, al
je 0x3f9c43ed
push ebx
push 0x3f83c58c
lea eax, [ebp - 0x97c]
push eax
mov ecx, edi
call fcn.3f9f5d74
push esi
call fcn.3f9f5d74
test al, al
jne 0x3f9c41bf
mov eax, dword [esi]
mov ecx, dword [eax + 0x7c]
push 0x97
call fcn.3f9f5d74
mov eax, dword [eax]
add eax, 4
push eax
call fcn.3f9f5d74
test al, al
je 0x3f9c43ed
push ebx
push 0x3f83c578
lea eax, [ebp - 0x990]
push eax
mov ecx, edi
call fcn.3f9f5d74
push 1
lea eax, [ebp - 0x978]
push eax
push ecx
mov ecx, dword [esi]
mov eax, esp
mov dword [eax], ecx
mov ecx, edi
mov dword [ebp - 0x988], esp
call fcn.3f9f5d74
push eax
lea eax, [ebp - 0x99c]
push eax
mov ecx, edi
call fcn.3f9f5d74
call fcn.3f9c3351
mov ecx, eax
call fcn.3f9f5d74
mov dword [ebp - 0x984], eax
mov dword [ebp - 4], ebx
cmp eax, ebx
je 0x3f9c4293
mov eax, dword [esi]
mov ecx, dword [eax + 0xc]
mov edx, dword [eax + 8]
mov eax, dword [eax + 8]
push ebx
mov dword [ebp + 8], edx
mov edx, ecx
push ecx
mov ecx, edi
mov dword [ebp - 0x98c], edx
mov dword [ebp - 0x998], eax
call fcn.3f9f5d74
movsx eax, ax
push eax
mov eax, dword [ebp + 8]
push ebx
neg eax
push eax
mov ecx, edi
call fcn.3f9f5d74
movsx eax, ax
push eax
push dword [ebp - 0x98c]
push dword [ebp - 0x998]
push ecx
mov eax, esp
mov dword [ebp - 0x988], esp
lea ecx, [ebp - 0x99c]
push ecx
push eax
call fcn.3f9f5d74
push ecx
mov ecx, dword [ebp - 0x990]
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebp - 0x984]
mov dword [ebp - 0x988], esp
call fcn.3f9f5d74
jmp 0x3f9c4295
xor eax, eax
or dword [ebp - 4], 0xffffffff
push eax
lea ecx, [ebp - 0x988]
call fcn.3f9f5d74
call fcn.3f9c3351
mov ecx, eax
call fcn.3f9f5d74
mov dword [ebp - 0x98c], eax
mov dword [ebp - 4], 1
cmp eax, ebx
je 0x3f9c436d
mov eax, dword [esi]
mov ecx, dword [eax + 0xc]
mov edx, dword [eax + 8]
mov eax, dword [eax + 8]
push ebx
mov dword [ebp + 8], edx
mov edx, ecx
push ecx
mov ecx, edi
mov dword [ebp - 0x984], edx
mov dword [ebp - 0x998], eax
call fcn.3f9f5d74
movsx eax, ax
push eax
mov eax, dword [ebp + 8]
push ebx
neg eax
push eax
mov ecx, edi
call fcn.3f9f5d74
movsx eax, ax
push eax
push dword [ebp - 0x984]
lea eax, [ebp - 0x4c4]
push dword [ebp - 0x998]
push 1
push eax
push ecx
mov ecx, dword [esi]
mov eax, esp
mov dword [eax], ecx
mov ecx, edi
mov dword [ebp - 0x984], esp
call fcn.3f9f5d74
push eax
lea eax, [ebp - 0x980]
push eax
mov ecx, edi
call fcn.3f9f5d74
push ecx
mov ecx, esp
mov dword [ebp - 0x984], esp
push eax
push ecx
call fcn.3f9f5d74
push ecx
mov eax, esp
mov dword [ebp - 0x984], esp
push ebx
push 0x3f83b880
push eax
mov ecx, edi
call fcn.3f9f5d74
mov ecx, dword [ebp - 0x98c]
call fcn.3f9f5d74
jmp 0x3f9c436f
xor eax, eax
or dword [ebp - 4], 0xffffffff
push eax
lea ecx, [ebp - 0x984]
call fcn.3f9f5d74
mov ecx, dword [ebp + 0x10]
mov eax, dword [ecx]
mov dword [ebp + 8], eax
inc eax
mov dword [ecx], eax
lea eax, [ebp - 0x984]
push eax
lea eax, [ebp - 0x988]
push eax
lea eax, [ebp - 0x980]
push eax
call fcn.3f9f5d74
push eax
push ecx
mov ecx, dword [0x3fae915c]
mov eax, esp
mov dword [ebp - 0x988], esp
push ecx
mov dword [eax], ecx
mov ecx, dword [0x3fae915c]
mov eax, esp
mov dword [ebp - 0x988], esp
push ecx
mov dword [eax], ecx
mov ecx, dword [ebp - 0x97c]
mov eax, esp
mov dword [ebp - 0x988], esp
push dword [ebp + 8]
mov dword [eax], ecx
lea eax, [ebp - 0x994]
push eax
push dword [ebp + 0xc]
mov ecx, edi
push esi
call fcn.3f9c3d3f
push esi
call fcn.3f9f5d74
test al, al
jne 0x3f9c4417
mov eax, dword [esi]
mov ecx, dword [eax + 0xc0]
test byte [ecx + 0xc0], 2
jne 0x3f9c4417
mov eax, ecx
test byte [eax + 0xc0], 1
je 0x3f9c481a
push ebx
push 0x3f83c5b4
lea eax, [ebp - 0x98c]
push eax
mov ecx, edi
call fcn.3f9f5d74
push esi
call fcn.3f9f5d74
test al, al
je 0x3f9c457a
call fcn.3f9c3351
mov ecx, eax
call fcn.3f9f5d74
mov dword [ebp - 0x984], eax
mov dword [ebp - 4], 2
cmp eax, ebx
je 0x3f9c4501
mov eax, dword [esi]
mov ecx, dword [eax + 0xc]
mov edx, dword [eax + 8]
mov eax, dword [eax + 8]
push ebx
mov dword [ebp + 8], edx
mov edx, ecx
push ecx
mov ecx, edi
mov dword [ebp - 0x97c], edx
mov dword [ebp - 0x988], eax
call fcn.3f9f5d74
movsx eax, ax
push eax
mov eax, dword [ebp + 8]
push ebx
neg eax
push eax
mov ecx, edi
call fcn.3f9f5d74
movsx eax, ax
push eax
push dword [ebp - 0x97c]
lea eax, [ebp - 0x4c4]
push dword [ebp - 0x988]
push 1
push eax
push ecx
mov ecx, dword [esi]
mov eax, esp
mov dword [eax], ecx
mov ecx, edi
mov dword [ebp - 0x980], esp
call fcn.3f9f5d74
push eax
lea eax, [ebp - 0x990]
push eax
mov ecx, edi
call fcn.3f9f5d74
push ecx
mov ecx, esp
mov dword [ebp - 0x980], esp
push eax
push ecx
call fcn.3f9f5d74
push ecx
mov eax, esp
mov dword [ebp - 0x980], esp
push ebx
push 0x3f83b978
push eax
mov ecx, edi
call fcn.3f9f5d74
mov ecx, dword [ebp - 0x984]
call fcn.3f9f5d74
jmp 0x3f9c4503
xor eax, eax
or dword [ebp - 4], 0xffffffff
push eax
lea ecx, [ebp - 0x97c]
call fcn.3f9f5d74
mov ecx, dword [ebp + 0x10]
mov eax, dword [ecx]
mov dword [ebp + 8], eax
inc eax
mov dword [ecx], eax
lea eax, [ebp - 0x97c]
push eax
lea eax, [ebp - 0x980]
push eax
call fcn.3f9f5d74
push eax
push ecx
mov ecx, dword [0x3fae915c]
mov eax, esp
mov dword [ebp - 0x97c], esp
push ecx
mov dword [eax], ecx
mov ecx, dword [0x3fae915c]
mov eax, esp
mov dword [ebp - 0x97c], esp
push ecx
mov dword [eax], ecx
mov ecx, dword [ebp - 0x98c]
mov eax, esp
mov dword [ebp - 0x97c], esp
push dword [ebp + 8]
mov dword [eax], ecx
lea eax, [ebp - 0x994]
push eax
push dword [ebp + 0xc]
mov ecx, edi
push esi
call fcn.3f9c3d3f
mov eax, dword [esi]
mov eax, dword [eax + 0xc0]
test byte [eax + 0xc0], 2
je 0x3f9c46d0
call fcn.3f9c3351
mov ecx, eax
call fcn.3f9f5d74
mov dword [ebp - 0x984], eax
mov dword [ebp - 4], 3
cmp eax, ebx
je 0x3f9c4657
mov eax, dword [esi]
mov ecx, dword [eax + 0xc]
mov edx, dword [eax + 8]
mov eax, dword [eax + 8]
push ebx
mov dword [ebp + 8], edx
mov edx, ecx
push ecx
mov ecx, edi
mov dword [ebp - 0x97c], edx
mov dword [ebp - 0x988], eax
call fcn.3f9f5d74
movsx eax, ax
push eax
mov eax, dword [ebp + 8]
push ebx
neg eax
push eax
mov ecx, edi
call fcn.3f9f5d74
movsx eax, ax
push eax
push dword [ebp - 0x97c]
lea eax, [ebp - 0x4c4]
push dword [ebp - 0x988]
push 1
push eax
push ecx
mov ecx, dword [esi]
mov eax, esp
mov dword [eax], ecx
mov ecx, edi
mov dword [ebp - 0x980], esp
call fcn.3f9f5d74
push eax
lea eax, [ebp - 0x990]
push eax
mov ecx, edi
call fcn.3f9f5d74
push ecx
mov ecx, esp
mov dword [ebp - 0x980], esp
push eax
push ecx
call fcn.3f9f5d74
push ecx
mov eax, esp
mov dword [ebp - 0x980], esp
push ebx
push 0x3f83b540
push eax
mov ecx, edi
call fcn.3f9f5d74
mov ecx, dword [ebp - 0x984]
call fcn.3f9f5d74
jmp 0x3f9c4659
xor eax, eax
or dword [ebp - 4], 0xffffffff
push eax
lea ecx, [ebp - 0x97c]
call fcn.3f9f5d74
mov ecx, dword [ebp + 0x10]
mov eax, dword [ecx]
mov dword [ebp + 8], eax
inc eax
mov dword [ecx], eax
lea eax, [ebp - 0x97c]
push eax
lea eax, [ebp - 0x980]
push eax
call fcn.3f9f5d74
push eax
push ecx
mov ecx, dword [0x3fae915c]
mov eax, esp
mov dword [ebp - 0x97c], esp
push ecx
mov dword [eax], ecx
mov ecx, dword [0x3fae915c]
mov eax, esp
mov dword [ebp - 0x97c], esp
push ecx
mov dword [eax], ecx
mov ecx, dword [ebp - 0x98c]
mov eax, esp
mov dword [ebp - 0x97c], esp
push dword [ebp + 8]
mov dword [eax], ecx
lea eax, [ebp - 0x994]
push eax
push dword [ebp + 0xc]
mov ecx, edi
push esi
call fcn.3f9c3d3f
mov eax, dword [esi]
mov eax, dword [eax + 0xc0]
test byte [eax + 0xc0], 1
je 0x3f9c481a
call fcn.3f9c3351
mov ecx, eax
call fcn.3f9f5d74
mov dword [ebp - 0x984], eax
mov dword [ebp - 4], 4
cmp eax, ebx
je 0x3f9c47ad
mov eax, dword [esi]
mov ecx, dword [eax + 0xc]
mov edx, dword [eax + 8]
mov eax, dword [eax + 8]
push ebx
mov dword [ebp + 8], edx
mov edx, ecx
push ecx
mov ecx, edi
mov dword [ebp - 0x97c], edx
mov dword [ebp - 0x988], eax
call fcn.3f9f5d74
movsx eax, ax
push eax
mov eax, dword [ebp + 8]
push ebx
neg eax
push eax
mov ecx, edi
call fcn.3f9f5d74
movsx eax, ax
push eax
push dword [ebp - 0x97c]
lea eax, [ebp - 0x4c4]
push dword [ebp - 0x988]
push 1
push eax
push ecx
mov ecx, dword [esi]
mov eax, esp
mov dword [eax], ecx
mov ecx, edi
mov dword [ebp - 0x980], esp
call fcn.3f9f5d74
push eax
lea eax, [ebp - 0x990]
push eax
mov ecx, edi
call fcn.3f9f5d74
push ecx
mov ecx, esp
mov dword [ebp - 0x980], esp
push eax
push ecx
call fcn.3f9f5d74
push ecx
mov eax, esp
mov dword [ebp - 0x980], esp
push ebx
push 0x3f83ba04
push eax
mov ecx, edi
call fcn.3f9f5d74
mov ecx, dword [ebp - 0x984]
call fcn.3f9f5d74
jmp 0x3f9c47af
xor eax, eax
or dword [ebp - 4], 0xffffffff
push eax
lea ecx, [ebp + 8]
call fcn.3f9f5d74
mov eax, dword [ebp + 0x10]
mov ebx, dword [eax]
lea ecx, [ebx + 1]
mov dword [eax], ecx
lea eax, [ebp + 8]
push eax
lea eax, [ebp + 0x10]
push eax
call fcn.3f9f5d74
push eax
push ecx
mov ecx, dword [0x3fae915c]
mov eax, esp
mov dword [eax], ecx
mov dword [ebp - 0x980], esp
push ecx
mov ecx, dword [0x3fae915c]
mov eax, esp
mov dword [ebp - 0x980], esp
push ecx
mov dword [eax], ecx
mov ecx, dword [ebp - 0x98c]
mov eax, esp
mov dword [ebp - 0x980], esp
mov dword [eax], ecx
push ebx
lea eax, [ebp - 0x994]
push eax
push dword [ebp + 0xc]
mov ecx, edi
push esi
call fcn.3f9c3d3f
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov ecx, dword [ebp - 0x10]
call fcn.3f9fd9de
pop edi
pop esi
pop ebx
leave
ret 0xc