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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, dword [0x10189818]
sub esp, 0x21c
cmp byte [eax + 0x196a], 0
push ebx
push esi
push edi
mov ebx, ecx
je 0x1009c5d6
mov eax, dword [0x1018ae24]
cmp dword [eax], 0
je 0x1009c5e0
cmp dword [0x1034e358], 0
je 0x1009c5e0
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 0x1009c5e0
movsx eax, al
lea ecx, [ecx + 1]
xor eax, edx
imul edx, eax, 0x1000193
mov al, byte [ecx]
test al, al
jne 0x1009c5a6
cmp edx, 0x78a2d0fe
je 0x1009c9df
cmp edx, 0x8b8fcce8
je 0x1009c5e7
cmp edx, 0xafcd8f60
jne 0x1009c5e0
mov ecx, 0x1034e348
call fcn.1009ea40
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [0x1034e350]
mov eax, dword [0x1034e34c]
dec ecx
and ecx, dword [0x1034e354]
mov eax, dword [eax + ecx*4]
cmp byte [eax + 0xc], 0
jne 0x1009c5e0
mov eax, dword [ebx]
mov ecx, ebx
push 0
push str.userid
mov eax, dword [eax + 0x18]
call eax
mov ecx, dword [0x10189820]
mov edi, eax
mov esi, dword [ecx + 0x10]
mov ecx, dword [0x1018ae24]
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 0x1009c5e0
mov ecx, dword [0x1034e350]
xorps xmm1, xmm1
mov edx, dword [0x1034e354]
dec ecx
mov eax, dword [0x1034e34c]
and ecx, edx
mov ecx, dword [eax + ecx*4]
movss xmm0, dword [ecx]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x1009c6b0
movss xmm0, dword [ecx + 4]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x1009c6b0
movss xmm0, dword [ecx + 8]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x1009c6b0
sub dword [0x1034e358], 1
je 0x1009ca61
inc edx
mov dword [0x1034e354], 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 0x1016d558
mov eax, dword [eax + 0x20]
mov dword [esp + 0x1c], eax
call dword [esp + 0x1c]
mov eax, dword [ebx]
push ecx
mov dword [esp], 0
mov ecx, ebx
fstp dword [esp + 0x20]
mov eax, dword [eax + 0x20]
mov dword [esp + 0x18], eax
push 0x1016d554
call dword [esp + 0x1c]
mov eax, dword [ebx]
push ecx
mov dword [esp], 0
mov ecx, ebx
fstp dword [esp + 0x24]
mov eax, dword [eax + 0x20]
mov dword [esp + 0x18], eax
push 0x1016d570
call dword [esp + 0x1c]
mov ecx, dword [0x1034e350]
mov eax, dword [0x1034e34c]
dec ecx
and ecx, dword [0x1034e354]
movss xmm0, dword [esp + 0x1c]
fstp dword [esp + 0x14]
mov dword [esp + 0x30], 0
mov eax, dword [eax + ecx*4]
lea ecx, [esp + 0x28]
subss xmm0, dword [eax]
movss dword [esp + 0x18], xmm0
movss xmm0, dword [esp + 0x20]
subss xmm0, dword [eax + 4]
movss dword [esp + 0x10], xmm0
movss xmm0, dword [esp + 0x14]
subss xmm0, dword [eax + 8]
xorps xmm0, xmmword [0x10179810]
movss dword [esp + 0x24], xmm0
fld dword [esp + 0x24]
fld dword [esp + 0x18]
fst dword [esp + 0x18]
fld dword [esp + 0x10]
movss xmm1, dword [esp + 0x18]
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 [0x10179074]
fstp dword [esp + 0x10]
movss dword [esp + 0x28], xmm0
movss xmm0, dword [esp + 0x10]
mulss xmm0, dword [0x10179074]
movss dword [esp + 0x2c], xmm0
call fcn.10071300
movq xmm0, qword [eax]
movq qword [esp + 0x34], xmm0
movss xmm1, dword [esp + 0x38]
movss xmm2, dword [esp + 0x34]
mulss xmm1, dword [0x10178dac]
mulss xmm2, dword [0x10178dac]
movaps xmm0, xmm1
movaps xmm1, xmm2
call fcn.10142a10
mov ecx, dword [0x1034e350]
lea edx, [esp + 0x40]
mov eax, dword [0x1034e34c]
movaps xmm3, xmm0
dec ecx
movss xmm1, dword [0x10179104]
and ecx, dword [0x1034e354]
movaps xmm4, xmm3
shufps xmm4, xmm3, 0xe
movaps xmm2, xmm4
shufps xmm2, xmm4, 1
mov eax, dword [eax + ecx*4]
mulss xmm4, dword [0x1017928c]
push edx
movq xmm0, qword [eax]
addss xmm4, dword [esp + 0x18]
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 [0x10189818]
mulss xmm3, xmm2
mov dword [esp + 0x74], str.sprites_purplelaser1.vmt
mulss xmm0, dword [0x10179188]
mov dword [esp + 0x70], 0xffffffff
mulss xmm3, dword [0x10179188]
mov dword [esp + 0x7c], 0
addss xmm0, dword [esp + 0x20]
movss dword [esp + 0x6c], xmm4
addss xmm3, dword [esp + 0x24]
mov dword [esp + 0x78], 0xffffffff
movss dword [esp + 0x64], xmm0
movss dword [esp + 0x68], xmm3
movss xmm0, dword [eax + 0x1955]
mulss xmm0, xmm1
movss dword [esp + 0xa8], xmm0
movss xmm0, dword [eax + 0x1959]
mulss xmm0, xmm1
movss dword [esp + 0xac], xmm0
movss xmm0, dword [eax + 0x195d]
mulss xmm0, xmm1
movss dword [esp + 0xb0], xmm0
movss xmm0, dword [eax + 0x1961]
mov eax, dword [0x10189814]
mulss xmm0, xmm1
mov dword [esp + 0x44], 0
mov dword [esp + 0x94], 0
mov dword [esp + 0xb8], 0xffffffff
movss dword [esp + 0x98], xmm0
mov byte [esp + 0xb4], 1
mov dword [esp + 0x9c], 0
mov dword [esp + 0xa0], 0
mov dword [esp + 0xa4], 0
mov dword [esp + 0x88], 0x40000000
mov dword [esp + 0x8c], 0x40000000
mov dword [esp + 0x90], 0x41a00000
mov ecx, dword [eax + 0x60]
mov eax, dword [ecx]
mov eax, dword [eax + 0x30]
call eax
test eax, eax
je 0x1009c9bf
mov dword [eax + 0x34], 0x8008
mov ecx, dword [0x10189814]
mov ecx, dword [ecx + 0x10]
movss xmm0, dword [ecx + 0x10]
addss xmm0, dword [0x10178f6c]
movss dword [eax + 0xc8], xmm0
mov ecx, dword [0x1034e350]
mov eax, dword [0x1034e34c]
dec ecx
and ecx, dword [0x1034e354]
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 [0x10189820]
mov edi, eax
mov esi, dword [ecx + 0x10]
mov ecx, dword [0x1018ae24]
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 0x1009c5e0
mov ecx, dword [0x1034e350]
mov edx, dword [0x1034e354]
dec ecx
mov eax, dword [0x1034e34c]
and ecx, edx
mov eax, dword [eax + ecx*4]
cmp byte [eax + 0xc], 0
je 0x1009c5e0
sub dword [0x1034e358], 1
jne 0x1009c6a2
pop edi
pop esi
mov dword [0x1034e354], 0
pop ebx
mov esp, ebp
pop ebp
ret