Function at 0x1009e280
Capabilities:
Encode data using xor
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, dword [0x101939c0]
sub esp, 0x21c
cmp byte [eax + 0x1697], 0
push ebx
push esi
push edi
mov ebx, ecx
je 0x1009e2f6
mov eax, dword [0x10195304]
cmp dword [eax], 0
je 0x1009e300
cmp dword [0x1027de14], 0
je 0x1009e300
mov eax, dword [ebx]
mov eax, dword [eax + 4]
call eax
mov ecx, eax
mov edx, 0x811c9dc5
mov al, byte [ecx]
test al, al
je 0x1009e300
movsx eax, al
lea ecx, [ecx + 1]
xor eax, edx
imul edx, eax, 0x1000193
mov al, byte [ecx]
test al, al
jne 0x1009e2c6
cmp edx, 0x78a2d0fe
je 0x1009e727
cmp edx, 0x8b8fcce8
je 0x1009e307
cmp edx, 0xafcd8f60
jne 0x1009e300
mov ecx, 0x1027de04
call fcn.1009f8d0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [0x1027de0c]
mov eax, dword [0x1027de08]
dec ecx
and ecx, dword [0x1027de10]
mov eax, dword [eax + ecx*4]
cmp byte [eax + 0xc], 0
jne 0x1009e300
mov eax, dword [ebx]
mov ecx, ebx
push 0
push str.userid
mov eax, dword [eax + 0x18]
call eax
mov ecx, dword [0x101939c8]
mov edi, eax
mov esi, dword [ecx + 0x10]
mov ecx, dword [0x10195304]
mov ecx, dword [ecx]
add ecx, 8
mov edx, dword [ecx]
mov edx, dword [edx + 0x28]
call edx
mov edx, dword [esi]
lea ecx, [esp + 0xd0]
push ecx
push eax
mov ecx, esi
mov edx, dword [edx + 0x20]
call edx
or ecx, 0xffffffff
test al, al
cmovne ecx, dword [esp + 0x160]
cmp edi, ecx
jne 0x1009e300
mov ecx, dword [0x1027de0c]
xorps xmm1, xmm1
mov edx, dword [0x1027de10]
dec ecx
mov eax, dword [0x1027de08]
and ecx, edx
mov ecx, dword [eax + ecx*4]
movss xmm0, dword [ecx]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x1009e3d0
movss xmm0, dword [ecx + 4]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x1009e3d0
movss xmm0, dword [ecx + 8]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x1009e3d0
add dword [0x1027de14], 0xffffffff
je 0x1009e7a9
inc edx
mov dword [0x1027de10], edx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebx]
push ecx
mov dword [esp], 0
mov ecx, ebx
push 0x10178cec
mov eax, dword [eax + 0x20]
call eax
mov eax, dword [ebx]
push ecx
mov dword [esp], 0
mov ecx, ebx
fstp dword [esp + 0x1c]
mov eax, dword [eax + 0x20]
push 0x10178d00
call eax
mov eax, dword [ebx]
push ecx
mov dword [esp], 0
mov ecx, ebx
fstp dword [esp + 0x20]
mov eax, dword [eax + 0x20]
push 0x10178cfc
call eax
mov ecx, dword [0x1027de0c]
mov eax, dword [0x1027de08]
dec ecx
and ecx, dword [0x1027de10]
movss xmm0, dword [esp + 0x1c]
fstp dword [esp + 0x20]
mov dword [esp + 0x30], 0
mov eax, dword [eax + ecx*4]
lea ecx, [esp + 0x28]
subss xmm0, dword [eax + 4]
movss dword [esp + 0x10], xmm0
movss xmm0, dword [esp + 0x18]
subss xmm0, dword [eax]
movss dword [esp + 0x14], xmm0
movss xmm0, dword [eax + 8]
subss xmm0, dword [esp + 0x20]
movss dword [esp + 0x24], xmm0
fld dword [esp + 0x24]
fld dword [esp + 0x14]
fst dword [esp + 0x14]
fld dword [esp + 0x10]
movss xmm1, dword [esp + 0x14]
fst dword [esp + 0x10]
movss xmm0, dword [esp + 0x10]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm1, xmm0
xorps xmm0, xmm0
sqrtss xmm0, xmm1
movss dword [esp + 0x10], xmm0
fld dword [esp + 0x10]
fxch st(1)
fxch st(3)
fxch st(1)
fpatan
fstp dword [esp + 0x10]
movss xmm0, dword [esp + 0x10]
fpatan
mulss xmm0, dword [0x10184940]
fstp dword [esp + 0x10]
movss dword [esp + 0x28], xmm0
movss xmm0, dword [esp + 0x10]
mulss xmm0, dword [0x10184940]
movss dword [esp + 0x2c], xmm0
call fcn.10075f10
movq xmm0, qword [eax]
movq qword [esp + 0x34], xmm0
movss xmm1, dword [esp + 0x38]
movss xmm2, dword [esp + 0x34]
mulss xmm1, dword [0x101846c0]
mulss xmm2, dword [0x101846c0]
movaps xmm0, xmm1
movaps xmm1, xmm2
call fcn.10148620
movaps xmm3, xmm0
movaps xmm4, xmm3
shufps xmm4, xmm3, 0xe
movaps xmm2, xmm4
mov ecx, dword [0x1027de0c]
mov eax, dword [0x1027de08]
dec ecx
and ecx, dword [0x1027de10]
shufps xmm2, xmm4, 1
mulss xmm4, dword [0x10184b0c]
push str.modelprecache
mov eax, dword [eax + ecx*4]
addss xmm4, dword [esp + 0x24]
movq xmm0, qword [eax]
movq qword [esp + 0x58], xmm0
movaps xmm0, xmm3
mov eax, dword [eax + 8]
shufps xmm0, xmm3, 1
mulss xmm0, xmm2
mov dword [esp + 0x60], eax
mov eax, dword [0x101939c8]
mulss xmm3, xmm2
mov dword [esp + 0x74], str.sprites_laserbeam.vmt
mulss xmm0, dword [0x10184a28]
mulss xmm3, dword [0x10184a28]
addss xmm0, dword [esp + 0x1c]
movss dword [esp + 0x6c], xmm4
addss xmm3, dword [esp + 0x20]
movss dword [esp + 0x64], xmm0
movss dword [esp + 0x68], xmm3
mov ecx, dword [eax + 0x44]
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
mov ecx, eax
test ecx, ecx
je 0x1009e5d3
mov eax, dword [ecx]
push 0
push 0xffffffffffffffff
push dword [esp + 0x78]
mov eax, dword [eax + 0x20]
push 0
call eax
mov eax, dword [0x101939c0]
lea edx, [esp + 0x40]
movss xmm1, dword [0x101849b8]
mov dword [esp + 0x6c], 0xffffffff
mov dword [esp + 0x78], 0
mov dword [esp + 0x74], 0xffffffff
movss xmm0, dword [eax + 0x1682]
mulss xmm0, xmm1
push edx
movss dword [esp + 0xa8], xmm0
movss xmm0, dword [eax + 0x1686]
mulss xmm0, xmm1
movss dword [esp + 0xac], xmm0
movss xmm0, dword [eax + 0x168a]
mulss xmm0, xmm1
movss dword [esp + 0xb0], xmm0
movss xmm0, dword [eax + 0x168e]
mov eax, dword [0x101939bc]
mulss xmm0, xmm1
mov dword [esp + 0x44], 0
mov dword [esp + 0x84], 0
mov dword [esp + 0x94], 0
movss dword [esp + 0x98], xmm0
mov dword [esp + 0xb8], 0xffffffff
mov byte [esp + 0xb4], 1
mov dword [esp + 0x9c], 0x3e4ccccd
mov dword [esp + 0xa0], 0
mov dword [esp + 0xa4], 0
mov dword [esp + 0x88], 0x3f800000
mov dword [esp + 0x8c], 0x3f800000
mov dword [esp + 0xbc], 0x40
mov dword [esp + 0x90], 0x41a00000
mov ecx, dword [eax + 0x70]
mov eax, dword [ecx]
mov eax, dword [eax + 0x30]
call eax
test eax, eax
je 0x1009e707
and dword [eax + 0x34], 0xffffbfff
mov ecx, dword [0x101939bc]
mov ecx, dword [ecx + 0xc]
movss xmm0, dword [ecx + 0x10]
addss xmm0, dword [0x1018483c]
movss dword [eax + 0xc8], xmm0
mov ecx, dword [0x1027de0c]
mov eax, dword [0x1027de08]
dec ecx
and ecx, dword [0x1027de10]
mov eax, dword [eax + ecx*4]
mov byte [eax + 0xc], 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebx]
mov ecx, ebx
push 0
push str.userid
mov eax, dword [eax + 0x18]
call eax
mov ecx, dword [0x101939c8]
mov edi, eax
mov esi, dword [ecx + 0x10]
mov ecx, dword [0x10195304]
mov ecx, dword [ecx]
add ecx, 8
mov edx, dword [ecx]
mov edx, dword [edx + 0x28]
call edx
mov edx, dword [esi]
lea ecx, [esp + 0xd0]
push ecx
push eax
mov ecx, esi
mov edx, dword [edx + 0x20]
call edx
or ecx, 0xffffffff
test al, al
cmovne ecx, dword [esp + 0x160]
cmp edi, ecx
jne 0x1009e300
mov ecx, dword [0x1027de0c]
mov edx, dword [0x1027de10]
dec ecx
mov eax, dword [0x1027de08]
and ecx, edx
mov eax, dword [eax + ecx*4]
cmp byte [eax + 0xc], 0
je 0x1009e300
add dword [0x1027de14], 0xffffffff
jne 0x1009e3c2
pop edi
pop esi
mov dword [0x1027de10], 0
pop ebx
mov esp, ebp
pop ebp
ret