Function at 0x5849a0
Capabilities:
Get geographical location
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x70
push ebx
mov ebx, dword [esp + 0x78]
mov eax, 0x66666667
push ebp
mov ecx, dword [ebx + 0x10]
push esi
imul ecx
sar edx, 2
mov eax, edx
push edi
shr eax, 0x1f
add edx, eax
mov eax, 0x66666667
mov esi, edx
imul ecx
sar edx, 3
mov ecx, edx
mov eax, esi
shr ecx, 0x1f
add edx, ecx
sub eax, edx
inc eax
xor edi, edi
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], edi
fild qword [esp + 0x34]
mov dword [esp + 0x34], edx
mov dword [esp + 0x38], edi
fstp qword [esp + 0x54]
fild qword [esp + 0x34]
fstp qword [esp + 0x4c]
mov ecx, 0xa581b8
call fcn.0062fc90
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], edi
fild qword [esp + 0x34]
fmul qword [esp + 0x54]
fmul qword [0x790db8]
fadd qword [esp + 0x4c]
call fcn.0076a6b0
cmp eax, esi
ja 0x5849f9
shr eax, 1
mov ebp, eax
push edi
push edi
lea ecx, [esp + 0x70]
mov dword [esp + 0x34], ebp
mov dword [esp + 0x20], edi
mov dword [esp + 0x24], edi
call fcn.004911c0
mov eax, dword [esp + 0x70]
mov ecx, 0xa
mov dword [esp + 0x68], vtable.DynamicVectorClass_char__.0
mov dword [esp + 0x7c], ecx
mov dword [esp + 0x78], edi
mov esi, 0x7cb6b0
jmp 0x584a65
mov ecx, dword [esp + 0x7c]
cmp dword [esp + 0x78], eax
jl 0x584a8e
mov dl, byte [esp + 0x75]
test dl, dl
jne 0x584a77
cmp eax, edi
jne 0x584aa6
cmp ecx, edi
jle 0x584aa6
mov edx, dword [esp + 0x68]
add eax, ecx
push edi
push eax
lea ecx, [esp + 0x70]
call dword [edx + 8]
test al, al
je 0x584aa2
mov ecx, dword [esp + 0x78]
mov edx, dword [esp + 0x6c]
mov eax, ecx
inc ecx
mov dword [esp + 0x78], ecx
mov ecx, dword [esi]
mov dword [edx + eax*4], ecx
mov eax, dword [esp + 0x70]
add esi, 4
cmp esi, 0x7cb6f8
jl 0x584a61
mov ecx, str.Neutral
call fcn.004f8880
mov ecx, eax
call fcn.004ecb10
cmp ebp, edi
mov dword [esp + 0x30], eax
jle 0x584d7a
jmp 0x584ad4
mov ebp, dword [esp + 0x2c]
mov ecx, dword [esp + 0x18]
lea eax, [ebp + ebp]
cmp ecx, eax
jge 0x584d7a
mov esi, dword [esp + 0x78]
cmp esi, 1
jle 0x584d7a
dec esi
mov dword [esp + 0x40], edi
lea eax, [esi + 1]
mov dword [esp + 0x3c], eax
fild qword [esp + 0x3c]
fstp qword [esp + 0x34]
mov ecx, 0xa581b8
call fcn.0062fc90
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], edi
fild qword [esp + 0x44]
fmul qword [esp + 0x34]
fmul qword [0x790db8]
call fcn.0076a6b0
cmp eax, esi
mov dword [esp + 0x28], eax
ja 0x584b05
mov ecx, dword [esp + 0x6c]
mov edx, eax
mov ecx, dword [ecx + edx*4]
call fcn.00458050
push 0x5e0
mov esi, eax
call fcn.0076d5a7
add esp, 4
cmp eax, edi
je 0x584b76
mov ecx, dword [esp + 0x30]
mov edx, dword [0xa1dfec]
push ecx
mov ecx, dword [edx + esi*4]
push ecx
mov ecx, eax
call fcn.00438b60
mov ebp, eax
mov dword [esp + 0x14], edi
mov byte [esp + 0x13], 0
jmp 0x584b85
xor ebp, ebp
mov dword [esp + 0x14], edi
mov byte [esp + 0x13], 0
jmp 0x584b85
xor edi, edi
cmp dword [esp + 0x14], 0x3c
jge 0x584d4b
mov esi, dword [ebx + 0x10]
mov dword [esp + 0x50], edi
dec esi
lea edx, [esi + 1]
mov dword [esp + 0x4c], edx
fild qword [esp + 0x4c]
fstp qword [esp + 0x34]
mov ecx, 0xa581b8
call fcn.0062fc90
mov dword [esp + 0x54], eax
mov dword [esp + 0x58], edi
fild qword [esp + 0x54]
fmul qword [esp + 0x34]
fmul qword [0x790db8]
call fcn.0076a6b0
cmp eax, esi
ja 0x584ba7
mov ecx, dword [ebx + 4]
push 1
mov ebx, dword [ecx + eax*4]
mov ecx, dword [ebp + 0x418]
mov dword [esp + 0x28], ebx
mov edx, dword [ecx]
call dword [edx + 0x90]
mov edi, eax
mov byte [esp + 0x12], 1
mov ax, word [edi]
cmp ax, 0x7fff
jne 0x584c04
cmp word [edi + 2], ax
je 0x584c85
add eax, ebx
lea edx, [esp + 0x34]
mov word [esp + 0x20], ax
mov ax, word [edi + 2]
add ax, word [esp + 0x26]
push edx
mov word [esp + 0x26], ax
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x38], ecx
mov ecx, 0x81a800
call fcn.005453b0
mov esi, eax
mov ecx, esi
call fcn.0047b480
test al, al
jne 0x584c48
mov ecx, esi
call fcn.0047b460
test al, al
je 0x584c6c
mov eax, dword [esi + 0xe4]
test eax, eax
jne 0x584c6c
cmp dword [esi + 0xec], 3
je 0x584c6c
push 1
push esi
mov ecx, 0x81a800
call fcn.005573e0
test al, al
jne 0x584c71
mov byte [esp + 0x12], 0
mov al, byte [esp + 0x12]
add edi, 4
test al, al
je 0x584d2b
jmp 0x584bf1
mov al, byte [esp + 0x12]
test al, al
je 0x584d2b
movsx ecx, word [esp + 0x26]
movsx eax, bx
mov edx, dword [ebp]
push 0
shl eax, 8
add eax, 0x80
mov dword [esp + 0x68], 0
shl ecx, 8
mov dword [esp + 0x60], eax
add ecx, 0x80
lea eax, [esp + 0x60]
mov dword [esp + 0x64], ecx
push eax
mov ecx, ebp
call dword [edx + 0xd4]
test al, al
je 0x584d2b
mov ecx, dword [ebp + 0x418]
mov edx, dword [ebp]
push 2
mov eax, dword [ecx + 0xa0]
mov ecx, ebp
mov dword [ebp + 0x6c], eax
mov dword [ebp + 0x70], eax
call dword [edx + 0x11c]
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x28]
inc edx
cmp eax, 0x11
mov byte [esp + 0x13], 1
mov dword [esp + 0x1c], edx
jle 0x584d2b
mov ecx, dword [esp + 0x78]
cmp eax, ecx
jge 0x584d2b
dec ecx
cmp eax, ecx
mov dword [esp + 0x78], ecx
jge 0x584d2b
mov ecx, dword [esp + 0x6c]
inc eax
mov edx, dword [ecx + eax*4]
mov dword [ecx + eax*4 - 4], edx
mov ecx, dword [esp + 0x78]
cmp eax, ecx
jl 0x584d17
mov ecx, dword [esp + 0x14]
mov al, byte [esp + 0x13]
mov ebx, dword [esp + 0x84]
inc ecx
test al, al
mov dword [esp + 0x14], ecx
je 0x584b83
xor edi, edi
jmp 0x584d61
mov al, byte [esp + 0x13]
test al, al
jne 0x584d61
cmp ebp, edi
je 0x584d61
mov eax, dword [ebp]
push 1
mov ecx, ebp
call dword [eax + 0x20]
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
inc ecx
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x2c]
cmp eax, ecx
jl 0x584ad0
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x68], vtable.VectorClass_char__.0
cmp eax, edi
pop edi
pop esi
pop ebp
pop ebx
je 0x584d9f
mov cl, byte [esp + 0x65]
test cl, cl
je 0x584d9f
push eax
call fcn.0076d2d5
add esp, 4
add esp, 0x70
ret 4