Function at 0x47f590
Capabilities:
Get geographical location

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x40
mov esi, ecx
mov eax, dword [0x542040]
xor eax, ebp
mov dword [esp + 0x38], eax
push 0x544050
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x47f7f1
mov eax, dword [esi + 0x300]
mov ecx, dword [esi + 0x304]
test ecx, ecx
je 0x47f5d2
mov dword [ecx + 0x300], eax
test eax, eax
je 0x47f5e2
mov ecx, dword [esi + 0x304]
mov dword [eax + 0x304], ecx
cmp dword [0x544054], esi
je 0x47f603
push 0x544050
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov byte [esi + 4], 0
mov edi, pe_nt_image_headers32
jmp 0x47f70f
mov eax, dword [esi + 0x300]
mov dword [0x544054], eax
jmp 0x47f5ea
mov edi, eax
bswap edi
test edi, 0x1fc000
je 0x47f79e
xor eax, dword [ebx + 4]
cmp eax, 0xffffffff
jne 0x47f79e
prefetcht0 byte [edi]
mov eax, dword [esi + 0x2f8]
mov ecx, ebx
and ecx, 0xffe00000
mov edx, ebx
shr edx, 9
and edx, 0x1fe0
or edx, ecx
mov ecx, edx
or ecx, 0x1000
or edx, 0x101e
movzx edx, byte [edx]
and edx, 0x3f
shl edx, 5
sub ecx, edx
mov edx, dword [ecx + 8]
mov edx, dword [edx + 0xc]
sub dword [eax + 0x117c], edx
mov eax, dword [ecx]
cmp eax, ebx
je 0x47f79b
bswap eax
mov dword [ebx], eax
not eax
mov dword [ebx + 4], eax
mov dword [ecx], ebx
mov eax, dword [ecx + 0xc]
mov edx, eax
and edx, 0xefffffff
mov dword [ecx + 0xc], edx
test eax, 0x3ffe
je 0x47f798
lea edx, [eax + 0x3ffe]
and edx, 0x3ffe
mov ebx, eax
and ebx, 0xefffc001
or ebx, edx
mov dword [ecx + 0xc], ebx
test al, 1
jne 0x47f6d5
test edx, edx
je 0x47f6d5
mov ebx, edi
test edi, edi
je 0x47f6de
mov eax, dword [ebx]
test eax, eax
jne 0x47f610
xor edi, edi
jmp 0x47f62f
push 1
call fcn.004801f0
jmp 0x47f6be
push dword [esp + 4]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov edi, dword [esp + 0xc]
mov dword [esi + edi], 0
mov byte [esi + edi + 4], 0
movzx eax, word [esi + edi + 6]
imul eax, dword [esp + 8]
sub dword [esi], eax
add edi, 8
cmp edi, 0x2f8
je 0x47f766
cmp byte [esi + edi + 4], 0
je 0x47f704
movzx eax, word [esi + edi + 6]
mov ecx, 0x5537b6
push eax
push dword [esi + edi]
call fcn.00480070
movzx eax, byte [esi + edi + 4]
mov dword [esp + 8], eax
movzx eax, word [esi + edi + 6]
mov dword [esp], eax
mov dword [esp + 0xc], edi
mov ebx, dword [esi + edi]
mov edi, dword [esi + 0x2f8]
add edi, 0x40
push edi
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x47f78f
mov dword [esp + 4], edi
test ebx, ebx
jne 0x47f6c4
jmp 0x47f6de
cmp byte [esi + 0x340], 1
jne 0x47f77c
add esi, 0x308
mov ecx, esi
call fcn.00445440
mov ecx, dword [esp + 0x38]
xor ecx, ebp
call fcn.0048e2e5
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, edi
call fcn.00480140
jmp 0x47f755
int3
int3
pcmpeqd xmm0, xmm0
lea esi, [esp + 0x20]
movdqa xmmword [esi], xmm0
xor edi, edi
mov ecx, esi
push edi
push dword [ebx]
push str.first
call fcn.004d8a30
push esi
call fcn.00411550
add esp, 4
lea esi, [esp + 0x10]
pcmpeqd xmm0, xmm0
movdqa xmmword [esi], xmm0
mov ecx, esi
push edi
push dword [ebx + 4]
push str.second
call fcn.004d8a30
push esi
call fcn.00411550
add esp, 4
push dword [esp]
call fcn.004e1d80
mov ecx, 0x544050
call fcn.00480140
jmp 0x47f5bc