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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, dword [0x10187fc4]
sub esp, 0x21c
cmp byte [eax + 0x1756], 0
push ebx
push esi
push edi
mov ebx, ecx
je 0x1009fb26
mov eax, dword [0x10189648]
cmp dword [eax], 0
je 0x1009fb30
cmp dword [0x1026f7ac], 0
je 0x1009fb30
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 0x1009fb30
movsx eax, al
lea ecx, [ecx + 1]
xor eax, edx
imul edx, eax, 0x1000193
mov al, byte [ecx]
test al, al
jne 0x1009faf6
cmp edx, 0x78a2d0fe
je 0x1009ff2c
cmp edx, 0x8b8fcce8
je 0x1009fb37
cmp edx, 0xafcd8f60
jne 0x1009fb30
mov ecx, 0x1026f79c
call fcn.100a1fe0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [0x1026f7a4]
mov eax, dword [0x1026f7a0]
dec ecx
and ecx, dword [0x1026f7a8]
mov eax, dword [eax + ecx*4]
cmp byte [eax + 0xc], 0
jne 0x1009fb30
mov eax, dword [ebx]
mov ecx, ebx
push 0
push str.userid
mov eax, dword [eax + 0x18]
call eax
mov ecx, dword [0x10187fcc]
mov edi, eax
mov esi, dword [ecx + 0x10]
mov ecx, dword [0x10189648]
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 0x1009fb30
mov ecx, dword [0x1026f7a4]
xorps xmm1, xmm1
mov edx, dword [0x1026f7a8]
dec ecx
mov eax, dword [0x1026f7a0]
and ecx, edx
mov ecx, dword [eax + ecx*4]
movss xmm0, dword [ecx]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x1009fc00
movss xmm0, dword [ecx + 4]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x1009fc00
movss xmm0, dword [ecx + 8]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x1009fc00
add dword [0x1026f7ac], 0xffffffff
je 0x1009ffae
inc edx
mov dword [0x1026f7a8], 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 0x1016b8dc
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 0x1016b8e0
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 0x1016b8e4
call eax
mov ecx, dword [0x1026f7a4]
mov eax, dword [0x1026f7a0]
dec ecx
and ecx, dword [0x1026f7a8]
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 [0x1017703c]
fstp dword [esp + 0x10]
movss dword [esp + 0x28], xmm0
movss xmm0, dword [esp + 0x10]
mulss xmm0, dword [0x1017703c]
movss dword [esp + 0x2c], xmm0
call fcn.10077150
movq xmm0, qword [eax]
movq qword [esp + 0x34], xmm0
movss xmm1, dword [esp + 0x38]
movss xmm2, dword [esp + 0x34]
mulss xmm1, dword [0x10176da8]
mulss xmm2, dword [0x10176da8]
movaps xmm0, xmm1
movaps xmm1, xmm2
call fcn.10145410
movaps xmm3, xmm0
movaps xmm4, xmm3
shufps xmm4, xmm3, 0xe
movaps xmm2, xmm4
mov ecx, dword [0x1026f7a4]
lea edx, [esp + 0x40]
mov eax, dword [0x1026f7a0]
dec ecx
and ecx, dword [0x1026f7a8]
movss xmm1, dword [0x101770c0]
shufps xmm2, xmm4, 1
mulss xmm4, dword [0x1017724c]
mov eax, dword [eax + ecx*4]
push edx
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 [0x10187fc4]
mulss xmm3, xmm2
mov dword [esp + 0x74], str.sprites_purplelaser1.vmt
mulss xmm0, dword [0x10177144]
mov dword [esp + 0x70], 0xffffffff
mulss xmm3, dword [0x10177144]
mov dword [esp + 0x7c], 0
addss xmm0, dword [esp + 0x1c]
movss dword [esp + 0x6c], xmm4
addss xmm3, dword [esp + 0x20]
mov dword [esp + 0x78], 0xffffffff
movss dword [esp + 0x64], xmm0
movss dword [esp + 0x68], xmm3
movss xmm0, dword [eax + 0x1741]
mulss xmm0, xmm1
movss dword [esp + 0xa8], xmm0
movss xmm0, dword [eax + 0x1745]
mulss xmm0, xmm1
movss dword [esp + 0xac], xmm0
movss xmm0, dword [eax + 0x1749]
mulss xmm0, xmm1
movss dword [esp + 0xb0], xmm0
movss xmm0, dword [eax + 0x174d]
mov eax, dword [0x10187fc0]
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], 0x40600000
mov dword [esp + 0x8c], 0x40600000
mov dword [esp + 0xbc], 0x340
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 0x1009ff0c
and dword [eax + 0x34], 0xffffbfff
mov ecx, dword [0x10187fc0]
mov ecx, dword [ecx + 0x10]
movss xmm0, dword [ecx + 0x10]
addss xmm0, dword [0x10176f3c]
movss dword [eax + 0xc8], xmm0
mov ecx, dword [0x1026f7a4]
mov eax, dword [0x1026f7a0]
dec ecx
and ecx, dword [0x1026f7a8]
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 [0x10187fcc]
mov edi, eax
mov esi, dword [ecx + 0x10]
mov ecx, dword [0x10189648]
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 0x1009fb30
mov ecx, dword [0x1026f7a4]
mov edx, dword [0x1026f7a8]
dec ecx
mov eax, dword [0x1026f7a0]
and ecx, edx
mov eax, dword [eax + ecx*4]
cmp byte [eax + 0xc], 0
je 0x1009fb30
add dword [0x1026f7ac], 0xffffffff
jne 0x1009fbf2
pop edi
pop esi
mov dword [0x1026f7a8], 0
pop ebx
mov esp, ebp
pop ebp
ret