Function at 0x41a070
Capabilities:
Get geographical location
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x46e3e7
mov eax, dword fs:[0]
push eax
sub esp, 0x20
push esi
push edi
mov eax, dword [0x495580]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], edx
mov edi, ecx
mov dword [ebp - 0x2c], edi
mov dword [ebp - 0x20], 0
mov eax, dword fs:[0x2c]
mov esi, dword [eax]
mov eax, dword [0x58ed40]
cmp eax, dword [esi + 4]
jg 0x41a2cc
mov dword [ebp - 4], 2
call fcn.004363ea
mov ecx, eax
mov byte [ebp - 4], 1
test ecx, ecx
je 0x41a302
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [edi], eax
lea eax, [ebp - 0x24]
mov dword [ebp - 4], 0
push eax
lea eax, [ebp - 0x1c]
mov dword [ebp - 0x20], 1
push eax
push dword [ebp - 0x10]
mov ecx, 0x58a200
call fcn.0041b090
test eax, eax
je 0x41a12a
add eax, 4
mov ecx, edi
push eax
call fcn.0040ef40
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x10]
movzx eax, al
xor eax, 0x811c9dc5
imul ecx, eax, 0x1000193
movzx eax, byte [ebp - 0xf]
xor ecx, eax
imul eax, ecx, 0x1000193
push eax
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x28]
push eax
call fcn.0041b2c0
mov edx, dword [0x58ed04]
mov eax, dword [eax + 4]
test eax, eax
cmovne edx, eax
cmp edx, dword [0x58ed04]
je 0x41a18d
mov edx, dword [edx + 0xc]
test edx, edx
je 0x41a18d
mov ecx, edx
lea esi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x41a177
sub ecx, esi
sar ecx, 1
push ecx
push edx
jmp 0x41a274
mov eax, dword [ebp - 0x10]
movzx eax, ax
mov dword [ebp - 0x14], eax
mov dword [ebp - 4], 5
call fcn.004363ea
mov ecx, eax
mov byte [ebp - 4], 4
test ecx, ecx
je 0x41a30c
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
push 0
push 0
push 2
push dword [ebp - 0x14]
lea esi, [eax + 0x10]
mov byte [ebp - 4], 3
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x20], 3
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
mov edx, eax
mov dword [ebp - 0x18], edx
test edx, edx
je 0x41a237
js 0x41a316
mov eax, dword [ebp - 0x24]
mov ecx, 1
push edx
sub ecx, dword [eax + 0xc]
mov eax, dword [eax + 8]
sub eax, edx
or eax, ecx
jge 0x41a20c
lea ecx, [ebp - 0x1c]
call fcn.004041a0
push dword [ebp - 0x18]
mov esi, dword [ebp - 0x1c]
mov eax, dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
push esi
push 2
push dword [ebp - 0x14]
call eax
mov eax, dword [ebp - 0x18]
dec eax
test eax, eax
js 0x41a316
cmp eax, dword [esi - 8]
jg 0x41a316
xor ecx, ecx
mov dword [esi - 0xc], eax
mov word [esi + eax*2], cx
lea eax, [ebp - 0x1c]
mov ecx, edi
push eax
call fcn.0040ef40
mov dword [ebp - 0x20], 1
add esi, 0xfffffff0
mov byte [ebp - 4], 0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x41a265
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [edi]
cmp dword [eax - 0xc], 0
jne 0x41a27b
push 0x12
push str._Unknown_language_
mov ecx, edi
call fcn.00403e20
push dword [ebp - 0x10]
mov esi, dword [edi]
mov ecx, 0x58a200
call fcn.0041af30
mov edx, eax
test esi, esi
jne 0x41a294
xor ecx, ecx
jmp 0x41a2b0
mov ecx, esi
lea eax, [ecx + 2]
mov dword [ebp - 0x24], eax
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x41a2a0
sub ecx, dword [ebp - 0x24]
sar ecx, 1
push ecx
push esi
mov ecx, edx
call fcn.00403e20
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
push 0x58ed40
call fcn.0044b11e
add esp, 4
cmp dword [0x58ed40], 0xffffffff
jne 0x41a0bf
push 0x470bf0
call fcn.0044b0b8
push 0x58ed40
call fcn.0044b0cd
add esp, 8
jmp 0x41a0bf
push 0x80004005
call fcn.00404410
push 0x80004005
call fcn.00404410
push 0x80070057
call fcn.00404410
int3