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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
mov eax, dword [0x10192950]
sub esp, 0x224
cmp byte [eax + 0x1697], 0
push ebx
push esi
push edi
mov ebx, ecx
je 0x1009e076
mov eax, dword [0x10194314]
cmp dword [eax], 0
je 0x1009e080
cmp dword [0x1027ce24], 0
je 0x1009e080
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 0x1009e080
movsx eax, al
lea ecx, [ecx + 1]
xor eax, edx
imul edx, eax, 0x1000193
mov al, byte [ecx]
test al, al
jne 0x1009e046
cmp edx, 0x78a2d0fe
je 0x1009e4c3
cmp edx, 0x8b8fcce8
je 0x1009e087
cmp edx, 0xafcd8f60
jne 0x1009e080
mov ecx, 0x1027ce14
call fcn.1009f670
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [0x1027ce1c]
mov eax, dword [0x1027ce18]
dec ecx
and ecx, dword [0x1027ce20]
mov eax, dword [eax + ecx*4]
cmp byte [eax + 0xc], 0
jne 0x1009e080
mov eax, dword [ebx]
mov ecx, ebx
push 0
push str.userid
mov eax, dword [eax + 0x18]
call eax
mov ecx, dword [0x10192958]
mov edi, eax
mov esi, dword [ecx + 0x10]
mov ecx, dword [0x10194314]
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 + 0xd8]
push ecx
push eax
mov ecx, esi
mov edx, dword [edx + 0x20]
call edx
or ecx, 0xffffffff
test al, al
cmovne ecx, dword [esp + 0x168]
cmp edi, ecx
jne 0x1009e080
mov ecx, dword [0x1027ce1c]
xorps xmm1, xmm1
mov edx, dword [0x1027ce20]
dec ecx
mov eax, dword [0x1027ce18]
and ecx, edx
mov ecx, dword [eax + ecx*4]
movss xmm0, dword [ecx]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x1009e150
movss xmm0, dword [ecx + 4]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x1009e150
movss xmm0, dword [ecx + 8]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x1009e150
add dword [0x1027ce24], 0xffffffff
je 0x1009e541
inc edx
mov dword [0x1027ce20], 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 0x10177d0c
mov eax, dword [eax + 0x20]
call eax
mov eax, dword [ebx]
push ecx
mov dword [esp], 0
mov ecx, ebx
fstp dword [esp + 0x18]
mov eax, dword [eax + 0x20]
push 0x10177d20
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 0x10177d1c
call eax
mov ecx, dword [0x1027ce1c]
mov eax, dword [0x1027ce18]
dec ecx
and ecx, dword [0x1027ce20]
movss xmm0, dword [esp + 0x18]
fstp dword [esp + 0x1c]
mov dword [esp + 0x38], 0
mov eax, dword [eax + ecx*4]
lea ecx, [esp + 0x30]
subss xmm0, dword [eax + 4]
movss dword [esp + 0xc], xmm0
movss xmm0, dword [esp + 0x14]
subss xmm0, dword [eax]
movss dword [esp + 0x10], xmm0
movss xmm0, dword [eax + 8]
subss xmm0, dword [esp + 0x1c]
movss dword [esp + 0x20], xmm0
fld dword [esp + 0x20]
fld dword [esp + 0x10]
fst dword [esp + 0x10]
fld dword [esp + 0xc]
movss xmm1, dword [esp + 0x10]
fst dword [esp + 0xc]
movss xmm0, dword [esp + 0xc]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm1, xmm0
xorps xmm0, xmm0
sqrtss xmm0, xmm1
movss dword [esp + 0xc], xmm0
fld dword [esp + 0xc]
fxch st(1)
fxch st(3)
fxch st(1)
fpatan
fstp dword [esp + 0xc]
movss xmm0, dword [esp + 0xc]
fpatan
mulss xmm0, dword [0x10183920]
fstp dword [esp + 0xc]
movss dword [esp + 0x30], xmm0
movss xmm0, dword [esp + 0xc]
mulss xmm0, dword [0x10183920]
movss dword [esp + 0x34], xmm0
call fcn.10075960
movq xmm0, qword [eax]
movq qword [esp + 0x24], xmm0
movss xmm1, dword [esp + 0x28]
movss xmm2, dword [esp + 0x24]
mulss xmm1, dword [0x101836a8]
mulss xmm2, dword [0x101836a8]
movaps xmm0, xmm1
movaps xmm1, xmm2
call fcn.101482d0
movaps xmmword [esp + 0x30], xmm0
movss xmm0, dword [esp + 0x24]
mulss xmm0, dword [0x101836a8]
call fcn.10149582
movaps xmm3, xmmword [esp + 0x30]
movaps xmm2, xmm0
mov ecx, dword [0x1027ce1c]
movaps xmm0, xmm3
mov eax, dword [0x1027ce18]
dec ecx
and ecx, dword [0x1027ce20]
shufps xmm0, xmm3, 1
mulss xmm0, xmm2
push str.modelprecache
mov eax, dword [eax + ecx*4]
mulss xmm0, dword [0x10183a08]
movq xmm1, qword [eax]
movq qword [esp + 0x60], xmm1
addss xmm0, dword [esp + 0x18]
mov eax, dword [eax + 8]
mov dword [esp + 0x68], eax
mov eax, dword [0x10192958]
mov dword [esp + 0x7c], str.sprites_laserbeam.vmt
movss dword [esp + 0x6c], xmm0
movaps xmm0, xmm3
mulss xmm0, xmm2
shufps xmm3, xmm3, 0xe
mulss xmm3, dword [0x10183aec]
mulss xmm0, dword [0x10183a08]
addss xmm3, dword [esp + 0x20]
addss xmm0, dword [esp + 0x1c]
movss dword [esp + 0x74], xmm3
movss dword [esp + 0x70], xmm0
mov ecx, dword [eax + 0x44]
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
mov ecx, eax
test ecx, ecx
je 0x1009e36c
mov eax, dword [ecx]
push 0
push 0xffffffffffffffff
push dword [esp + 0x80]
mov eax, dword [eax + 0x20]
push 0
call eax
mov eax, dword [0x10192950]
lea edx, [esp + 0x48]
movss xmm1, dword [0x10183998]
mov dword [esp + 0x74], 0xffffffff
mov dword [esp + 0x80], 0
mov dword [esp + 0x7c], 0xffffffff
movss xmm0, dword [eax + 0x1682]
mulss xmm0, xmm1
push edx
movss dword [esp + 0xb0], xmm0
movss xmm0, dword [eax + 0x1686]
mulss xmm0, xmm1
movss dword [esp + 0xb4], xmm0
movss xmm0, dword [eax + 0x168a]
mulss xmm0, xmm1
movss dword [esp + 0xb8], xmm0
movss xmm0, dword [eax + 0x168e]
mov eax, dword [0x1019294c]
mulss xmm0, xmm1
mov dword [esp + 0x4c], 0
mov dword [esp + 0x8c], 0
mov dword [esp + 0x9c], 0
movss dword [esp + 0xa0], xmm0
mov dword [esp + 0xc0], 0xffffffff
mov byte [esp + 0xbc], 1
mov dword [esp + 0xa4], 0x3e4ccccd
mov dword [esp + 0xa8], 0
mov dword [esp + 0xac], 0
mov dword [esp + 0x90], 0x3f800000
mov dword [esp + 0x94], 0x3f800000
mov dword [esp + 0xc4], 0x40
mov dword [esp + 0x98], 0x41a00000
mov ecx, dword [eax + 0x74]
mov eax, dword [ecx]
mov eax, dword [eax + 0x30]
call eax
test eax, eax
je 0x1009e4a3
and dword [eax + 0x34], 0xffffbfff
mov ecx, dword [0x1019294c]
mov ecx, dword [ecx + 0x10]
movss xmm0, dword [ecx + 0x10]
addss xmm0, dword [0x10183824]
movss dword [eax + 0xc8], xmm0
mov ecx, dword [0x1027ce1c]
mov eax, dword [0x1027ce18]
dec ecx
and ecx, dword [0x1027ce20]
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 [0x10192958]
mov edi, eax
mov esi, dword [ecx + 0x10]
mov ecx, dword [0x10194314]
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 + 0xd8]
push ecx
push eax
mov ecx, esi
mov edx, dword [edx + 0x20]
call edx
or ecx, 0xffffffff
test al, al
cmovne ecx, dword [esp + 0x168]
cmp edi, ecx
jne 0x1009e080
mov ecx, dword [0x1027ce1c]
mov edx, dword [0x1027ce20]
dec ecx
mov eax, dword [0x1027ce18]
and ecx, edx
mov eax, dword [eax + ecx*4]
cmp byte [eax + 0xc], 0
je 0x1009e080
add dword [0x1027ce24], 0xffffffff
jne 0x1009e552
mov dword [0x1027ce20], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
lea eax, [edx + 1]
pop esi
mov dword [0x1027ce20], eax
pop ebx
mov esp, ebp
pop ebp
ret