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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
mov eax, dword [0x10190fc4]
sub esp, 0x224
cmp byte [eax + 0x16de], 0
push ebx
push esi
push edi
mov ebx, ecx
je 0x100a5c46
mov eax, dword [0x1019273c]
cmp dword [eax], 0
je 0x100a5c50
cmp dword [0x1027b54c], 0
je 0x100a5c50
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 0x100a5c50
movsx eax, al
lea ecx, [ecx + 1]
xor eax, edx
imul edx, eax, 0x1000193
mov al, byte [ecx]
test al, al
jne 0x100a5c16
cmp edx, 0x78a2d0fe
je 0x100a6068
cmp edx, 0x8b8fcce8
je 0x100a5c57
cmp edx, 0xafcd8f60
jne 0x100a5c50
mov ecx, 0x1027b53c
call fcn.100a8150
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [0x1027b544]
mov eax, dword [0x1027b540]
dec ecx
and ecx, dword [0x1027b548]
mov eax, dword [eax + ecx*4]
cmp byte [eax + 0xc], 0
jne 0x100a5c50
mov eax, dword [ebx]
mov ecx, ebx
push 0
push str.userid
mov eax, dword [eax + 0x18]
call eax
mov ecx, dword [0x10190fcc]
mov edi, eax
mov esi, dword [ecx + 0x10]
mov ecx, dword [0x1019273c]
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 0x100a5c50
mov ecx, dword [0x1027b544]
xorps xmm1, xmm1
mov edx, dword [0x1027b548]
dec ecx
mov eax, dword [0x1027b540]
and ecx, edx
mov ecx, dword [eax + ecx*4]
movss xmm0, dword [ecx]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x100a5d20
movss xmm0, dword [ecx + 4]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x100a5d20
movss xmm0, dword [ecx + 8]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x100a5d20
add dword [0x1027b54c], 0xffffffff
je 0x100a60e6
inc edx
mov dword [0x1027b548], 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 0x10174754
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 0x10174750
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 0x1017476c
call eax
mov ecx, dword [0x1027b544]
mov eax, dword [0x1027b540]
dec ecx
and ecx, dword [0x1027b548]
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 [0x1018031c]
fstp dword [esp + 0xc]
movss dword [esp + 0x30], xmm0
movss xmm0, dword [esp + 0xc]
mulss xmm0, dword [0x1018031c]
movss dword [esp + 0x34], xmm0
call fcn.10078680
movq xmm0, qword [eax]
movq qword [esp + 0x24], xmm0
movss xmm1, dword [esp + 0x28]
movss xmm2, dword [esp + 0x24]
mulss xmm1, dword [0x10180078]
mulss xmm2, dword [0x10180078]
movaps xmm0, xmm1
movaps xmm1, xmm2
call fcn.1014d430
movaps xmmword [esp + 0x30], xmm0
movss xmm0, dword [esp + 0x24]
mulss xmm0, dword [0x10180078]
call fcn.1014e70b
movaps xmm3, xmmword [esp + 0x30]
lea edx, [esp + 0x48]
mov ecx, dword [0x1027b544]
movaps xmm2, xmm0
mov eax, dword [0x1027b540]
movaps xmm0, xmm3
shufps xmm0, xmm3, 1
dec ecx
and ecx, dword [0x1027b548]
mulss xmm0, xmm2
push edx
mov eax, dword [eax + ecx*4]
mulss xmm0, dword [0x10180424]
movq xmm1, qword [eax]
addss xmm0, dword [esp + 0x18]
movq qword [esp + 0x60], xmm1
mov eax, dword [eax + 8]
movss xmm1, dword [0x101803a0]
mov dword [esp + 0x68], eax
mov eax, dword [0x10190fc4]
movss dword [esp + 0x6c], xmm0
movaps xmm0, xmm3
mulss xmm0, xmm2
mov dword [esp + 0x7c], str.sprites_purplelaser1.vmt
shufps xmm3, xmm3, 0xe
mulss xmm3, dword [0x1018052c]
mov dword [esp + 0x78], 0xffffffff
mulss xmm0, dword [0x10180424]
mov dword [esp + 0x84], 0
addss xmm3, dword [esp + 0x20]
mov dword [esp + 0x80], 0xffffffff
addss xmm0, dword [esp + 0x1c]
movss dword [esp + 0x74], xmm3
movss dword [esp + 0x70], xmm0
movss xmm0, dword [eax + 0x16c9]
mulss xmm0, xmm1
movss dword [esp + 0xb0], xmm0
movss xmm0, dword [eax + 0x16cd]
mulss xmm0, xmm1
movss dword [esp + 0xb4], xmm0
movss xmm0, dword [eax + 0x16d1]
mulss xmm0, xmm1
movss dword [esp + 0xb8], xmm0
movss xmm0, dword [eax + 0x16d5]
mov eax, dword [0x10190fc0]
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], 0x40600000
mov dword [esp + 0x94], 0x40600000
mov dword [esp + 0xc4], 0x340
mov dword [esp + 0x98], 0x41a00000
mov ecx, dword [eax + 0x60]
mov eax, dword [ecx]
mov eax, dword [eax + 0x30]
call eax
test eax, eax
je 0x100a6048
and dword [eax + 0x34], 0xffffbfff
mov ecx, dword [0x10190fc0]
mov ecx, dword [ecx + 0x10]
movss xmm0, dword [ecx + 0x10]
addss xmm0, dword [0x1018021c]
movss dword [eax + 0xc8], xmm0
mov ecx, dword [0x1027b544]
mov eax, dword [0x1027b540]
dec ecx
and ecx, dword [0x1027b548]
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 [0x10190fcc]
mov edi, eax
mov esi, dword [ecx + 0x10]
mov ecx, dword [0x1019273c]
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 0x100a5c50
mov ecx, dword [0x1027b544]
mov edx, dword [0x1027b548]
dec ecx
mov eax, dword [0x1027b540]
and ecx, edx
mov eax, dword [eax + ecx*4]
cmp byte [eax + 0xc], 0
je 0x100a5c50
add dword [0x1027b54c], 0xffffffff
jne 0x100a60f7
mov dword [0x1027b548], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
lea eax, [edx + 1]
pop esi
mov dword [0x1027b548], eax
pop ebx
mov esp, ebp
pop ebp
ret