Function at 0x1004a8ac
Capabilities:
Hash data using fnv

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x100b46c0
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x120
mov eax, dword [0x100cf360]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov dword [ebp - 0x108], edi
cmp byte [0x100d7fd0], 0
je 0x1004a85d
mov eax, dword [edi + 0x48]
mov ecx, dword [edi + 0x44]
sub eax, ecx
sar eax, 4
cmp eax, 1
jbe 0x1004a85d
mov eax, dword [0x101ccc5c]
movss xmm0, dword [eax + 0x10]
comiss xmm0, dword [edi + 0x2c]
jae 0x1004a85d
mov eax, dword [0x101ccde0]
add eax, 0xffffffda
xor eax, 0x533929c3
add eax, dword [0x100cf3d0]
movss xmm1, dword [eax]
movss xmm0, dword [eax + 4]
subss xmm0, dword [edi + 0xc]
subss xmm1, dword [edi + 8]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm0, xmm1
call fcn.1001e500
mulss xmm0, dword [0x100c4370]
lea edx, [ebp - 0xf0]
cvttss2si eax, xmm0
mov dword [ebp - 0x114], eax
call fcn.10097f30
mov edx, dword [edi + 0x48]
mov esi, 1
mov ecx, edx
mov byte [ebp - 0xf2], al
sub ecx, dword [edi + 0x44]
sar ecx, 4
cmp ecx, esi
jbe 0x10049fdf
mov ecx, dword [edi + 0x44]
mov eax, 0x10
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x1c], 0
sub edx, ecx
sar edx, 4
cmp edx, esi
jbe 0x1004a87d
add ecx, eax
lea edx, [ebp - 0xf0]
call fcn.10097f30
cmp byte [ebp - 0xf2], 0
mov byte [ebp - 0xf1], al
je 0x10049f96
test al, al
je 0x10049f96
cmp byte [0x100d7f48], 0
je 0x10049f96
mov ax, word [0x100d8076]
mov edx, dword [edi + 0x48]
sub edx, dword [edi + 0x44]
movzx eax, ah
mov dword [ebp - 0x10c], eax
mov eax, dword [0x100d8074]
mov ecx, eax
shr ecx, 8
sar edx, 4
mov dword [ebp - 0x100], ecx
cmp edx, esi
jbe 0x1004a87d
lea ecx, [esi - 1]
cmp edx, ecx
jbe 0x1004a87d
mov edx, dword [edi + 0x44]
mov ecx, dword [ebp - 0x18]
movzx eax, al
mov dword [ebp - 0x6c], 0
mov dword [ebp - 0x68], 0
movq xmm0, qword [edx + ecx]
mov ecx, dword [edx + ecx + 8]
movq qword [ebp - 0x4c], xmm0
mov dword [ebp - 0x44], ecx
mov ecx, dword [ebp - 0x1c]
mov dword [ebp - 0x64], 0
mov dword [ebp - 0xb0], 0
mov dword [ebp - 0xb4], 0xffffffff
movq xmm0, qword [edx + ecx]
movq qword [ebp - 0x28], xmm0
movd xmm0, eax
mov eax, dword [ebp - 0x100]
cvtdq2ps xmm0, xmm0
movzx eax, al
mov ecx, dword [edx + ecx + 8]
lea edx, [ebp - 0xe8]
mov dword [ebp - 0x20], ecx
mov ecx, dword [0x101ccc8c]
mov dword [ebp - 0xe8], 0
movss dword [ebp - 0x84], xmm0
movd xmm0, eax
mov ax, word [0x100d8076]
cvtdq2ps xmm0, xmm0
movzx eax, al
mov dword [ebp - 0xbc], 0xffffffff
mov dword [ebp - 0xac], 0
mov dword [ebp - 0xa8], 0x3ca3d70a
mov dword [ebp - 0x9c], 0x41200000
movss dword [ebp - 0x80], xmm0
movd xmm0, eax
cvtdq2ps xmm0, xmm0
mov dword [ebp - 0xa4], 0x40000000
mov dword [ebp - 0xa0], 0x40000000
mov dword [ebp - 0xb8], str.sprites_purplelaser1.vmt
mov dword [ebp - 0x98], 0
mov dword [ebp - 0x90], 0x3c23d70a
movss dword [ebp - 0x7c], xmm0
movd xmm0, dword [ebp - 0x10c]
cvtdq2ps xmm0, xmm0
mov dword [ebp - 0x8c], 0
mov dword [ebp - 0x88], 0
mov dword [ebp - 0x74], 2
mov byte [ebp - 0x78], 1
mov dword [ebp - 0x70], 0
movss dword [ebp - 0x94], xmm0
movss xmm0, dword [ebp - 0x28]
movss dword [ebp - 0xd4], xmm0
movss xmm0, dword [ebp - 0x24]
movss dword [ebp - 0xd0], xmm0
movss xmm0, dword [ebp - 0x20]
movss dword [ebp - 0xcc], xmm0
movss xmm0, dword [ebp - 0x4c]
movss dword [ebp - 0xc8], xmm0
movss xmm0, dword [ebp - 0x48]
movss dword [ebp - 0xc4], xmm0
movss xmm0, dword [ebp - 0x44]
movss dword [ebp - 0xc0], xmm0
mov eax, dword [ecx]
push edx
mov eax, dword [eax + 0x30]
call eax
test eax, eax
je 0x10049f90
mov ecx, dword [0x101ccc8c]
push eax
mov edx, dword [ecx]
mov edx, dword [edx + 0x10]
call edx
mov al, byte [ebp - 0xf1]
mov edx, dword [edi + 0x48]
inc esi
mov ecx, dword [edi + 0x44]
add dword [ebp - 0x18], 0x10
movss xmm5, dword [ebp - 0xf0]
movss xmm6, dword [ebp - 0xec]
add dword [ebp - 0x1c], 0x10
mov byte [ebp - 0xf2], al
mov eax, edx
sub eax, ecx
movss dword [ebp - 0xf8], xmm5
sar eax, 4
cmp esi, eax
movss dword [ebp - 0xfc], xmm6
mov eax, dword [ebp - 0x18]
jb 0x10049d72
jmp 0x10049fff
movss xmm6, dword [ebp - 0xec]
movss xmm5, dword [ebp - 0xf0]
movss dword [ebp - 0xfc], xmm6
movss dword [ebp - 0xf8], xmm5
movd xmm0, dword [edi + 0x34]
mov eax, dword [0x101ccc5c]
movss xmm1, dword [edi + 0x2c]
cvtdq2ps xmm0, xmm0
subss xmm1, dword [eax + 0x10]
mulss xmm0, dword [eax + 0x20]
mov eax, dword [0x100bf3bc]
mov dword [ebp - 0x1c], eax
mov eax, dword [0x101ccde0]
divss xmm1, xmm0
add eax, 0xffffffda
mov byte [ebp - 0x19], 0xb4
xor eax, 0x533929c3
add eax, dword [0x100cf3d0]
movss xmm0, dword [eax + 4]
subss xmm0, dword [edi + 0xc]
movss dword [ebp - 0x10c], xmm1
movss xmm1, dword [eax]
subss xmm1, dword [edi + 8]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm0, xmm1
call fcn.1001e500
movaps xmm7, xmm0
comiss xmm7, dword [0x100c4610]
jbe 0x1004a17d
subss xmm7, dword [0x100c462c]
movss xmm3, dword [0x100c4660]
lea ecx, [ebp - 0x18]
movaps xmm0, xmm3
mov dword [ebp - 0x110], 0x3f800000
xorps xmm1, xmm1
mov dword [ebp - 0x100], 0
lea edx, [ebp - 0x100]
mov dword [ebp - 0x104], 0x3f800000
subss xmm0, xmm7
subss xmm3, xmm7
mulss xmm0, dword [0x100c4320]
mulss xmm3, dword [0x100c4320]
comiss xmm1, xmm0
movss dword [ebp - 0x18], xmm0
seta al
test al, al
cmove edx, ecx
lea ecx, [ebp - 0x110]
comiss xmm0, dword [0x100c440c]
seta al
test al, al
cmove ecx, edx
lea edx, [ebp - 0x110]
movss xmm0, dword [ecx]
lea ecx, [ebp - 0x100]
mulss xmm0, dword [0x100c4624]
mov dword [ebp - 0x110], 0
movss dword [ebp - 0x100], xmm3
cvttss2si eax, xmm0
xorps xmm0, xmm0
comiss xmm0, xmm3
mov dword [ebp - 0xec], eax
mov byte [ebp - 0x19], al
mov eax, dword [0x100bf390]
mov dword [ebp - 0x18], eax
mov byte [ebp - 0x15], 0xb4
seta al
test al, al
cmove edx, ecx
lea ecx, [ebp - 0x104]
comiss xmm3, dword [0x100c440c]
seta al
test al, al
mov eax, dword [ebp - 0xec]
cmove ecx, edx
movss xmm0, dword [ecx]
mulss xmm0, dword [0x100c4624]
cvttss2si edx, xmm0
mov dword [ebp - 0x100], edx
mov cl, dl
mov byte [ebp - 0x15], dl
jmp 0x1004a192
mov eax, dword [0x100bf390]
mov dword [ebp - 0x18], eax
mov al, 0xb4
mov dword [ebp - 0x100], eax
mov cl, al
mov byte [ebp - 0x15], al
mov edx, dword [ebp - 0x114]
mov edi, dword [ebp - 0x18]
cmp edx, 0x19
jge 0x1004a309
movaps xmm0, xmm6
mov byte [ebp - 0x15], al
subss xmm0, dword [0x100c455c]
cvttss2si eax, xmm5
mov word [ebp - 0x18], 0xf0f
mov byte [ebp - 0x16], 0xf
push dword [ebp - 0x18]
cvttss2si ecx, xmm0
push 0x2d0
push 0x14
mov dword [ebp - 0x104], eax
mov dword [ebp - 0xec], ecx
mov edx, ecx
mov ecx, eax
call fcn.10098530
movss xmm0, dword [ebp - 0x10c]
add esp, 0xc
mulss xmm0, dword [0x100c465c]
mov esi, dword [ebp - 0x1c]
mov edx, dword [ebp - 0xec]
push esi
cvttss2si eax, xmm0
push ecx
mov ecx, dword [ebp - 0x104]
push eax
sub esp, 8
call fcn.10049b00
mov eax, dword [ebp - 0x108]
add esp, 0x14
mov eax, dword [eax + 0x30]
add eax, 0xffffffd4
cmp eax, 4
ja case.0x1004a228.47
jmp dword [eax*4 + 0x1004a884]
mov edx, 0x100c0178
jmp 0x1004a251
mov edx, 0x100c0174
jmp 0x1004a251
mov edx, 0x100c0188
jmp 0x1004a251
mov edx, 0x100be650
jmp 0x1004a251
mov edx, dword [ebp - 0xec]
mov ecx, edx
mov dword [ebp - 0x30], 0
xorps xmm0, xmm0
mov dword [ebp - 0x2c], 0
movups xmmword [ebp - 0x40], xmm0
lea eax, [ecx + 1]
mov dword [ebp - 0xec], eax
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1004a271
sub ecx, dword [ebp - 0xec]
push ecx
push edx
lea ecx, [ebp - 0x40]
call fcn.10026a40
push 0
lea eax, [ebp - 0x40]
mov dword [ebp - 4], 0
push eax
push esi
movss xmm0, dword [ebp - 0xfc]
mov ecx, 0x101ccdd4
subss xmm0, dword [0x100c4578]
cvttss2si eax, xmm0
movss xmm0, dword [ebp - 0xf8]
subss xmm0, dword [0x100c4548]
push eax
cvttss2si eax, xmm0
push eax
call fcn.10098880
mov dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0x2c]
cmp ecx, 0x10
jb 0x1004a400
mov edx, dword [ebp - 0x40]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x1004a3f6
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x1004a3f6
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
cmp edx, 0x96
jge 0x1004a400
movaps xmm0, xmm6
mov byte [ebp - 0x15], cl
subss xmm0, dword [0x100c455c]
cvttss2si esi, xmm5
mov word [ebp - 0x18], 0xf0f
mov byte [ebp - 0x16], 0xf
push dword [ebp - 0x18]
cvttss2si eax, xmm0
push 0x2d0
push 0x14
mov ecx, esi
mov edx, eax
mov dword [ebp - 0xec], eax
call fcn.10098530
movss xmm0, dword [ebp - 0x10c]
add esp, 0xc
mulss xmm0, dword [0x100c465c]
mov edx, dword [ebp - 0xec]
push edi
cvttss2si eax, xmm0
push ecx
mov ecx, esi
push eax
sub esp, 8
call fcn.10049b00
mov eax, dword [ebp - 0x108]
add esp, 0x14
mov eax, dword [eax + 0x30]
add eax, 0xffffffd4
cmp eax, 4
ja case.0x1004a38c.47
jmp dword [eax*4 + 0x1004a898]
mov edx, 0x100c0178
jmp 0x1004a3b5
mov edx, 0x100c0174
jmp 0x1004a3b5
mov edx, 0x100c0188
jmp 0x1004a3b5
mov edx, 0x100be650
jmp 0x1004a3b5
mov edx, dword [ebp - 0xec]
mov ecx, edx
mov dword [ebp - 0x30], 0
xorps xmm0, xmm0
mov dword [ebp - 0x2c], 0
movups xmmword [ebp - 0x40], xmm0
lea esi, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1004a3d0
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x40]
call fcn.10026a40
push 0
lea eax, [ebp - 0x40]
mov dword [ebp - 4], 1
push eax
push edi
jmp 0x1004a296
push ecx
push edx
call fcn.100af9f8
add esp, 8
mov eax, dword [ebp - 0x108]
mov ecx, dword [0x100cf3d0]
movq xmm0, qword [eax + 8]
mov esi, dword [eax + 0x10]
mov eax, dword [ecx]
movq qword [ebp - 0xf0], xmm0
movq qword [ebp - 0x4c], xmm0
mov dword [ebp - 0x44], esi
mov eax, dword [eax + 0x28]
call eax
mov ecx, dword [0x101cce24]
add ecx, 0xffffffc9
xor ecx, 0x533929d4
movq xmm0, qword [eax]
mov eax, dword [eax + 8]
mov dword [ebp - 0x20], eax
mov eax, dword [0x100cf3d0]
movq qword [ebp - 0x28], xmm0
cmp dword [ecx + eax], 0
je 0x1004a492
mov eax, dword [0x101ccc60]
movss xmm0, dword [eax + 0xa8]
movss dword [ebp - 0xf8], xmm0
movss dword [ebp - 0x28], xmm0
movss xmm0, dword [eax + 0xac]
movss dword [ebp - 0xfc], xmm0
movss dword [ebp - 0x24], xmm0
movss xmm0, dword [eax + 0xb0]
movss dword [ebp - 0x20], xmm0
jmp 0x1004a4ac
movss xmm0, dword [ebp - 0x24]
movss dword [ebp - 0xfc], xmm0
movss xmm0, dword [ebp - 0x28]
movss dword [ebp - 0xf8], xmm0
movq xmm0, qword [ebp - 0xf0]
lea edx, [ebp - 0xf0]
lea ecx, [ebp - 0x34]
movq qword [ebp - 0x34], xmm0
mov dword [ebp - 0x2c], esi
call fcn.10097f30
mov ecx, dword [0x100cfadc]
test al, al
mov eax, dword [0x100cfad8]
je 0x1004a512
movss xmm1, dword [ebp - 0xf0]
xorps xmm2, xmm2
comiss xmm1, xmm2
jbe 0x1004a512
movd xmm0, eax
cvtdq2ps xmm0, xmm0
comiss xmm0, xmm1
jbe 0x1004a512
movss xmm1, dword [ebp - 0xec]
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
comiss xmm0, xmm1
jbe 0x1004a512
comiss xmm1, xmm2
ja 0x1004a859
cdq
sub eax, edx
mov esi, eax
mov eax, ecx
cdq
sub eax, edx
sar esi, 1
sar eax, 1
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x108]
mov ecx, dword [eax + 0x48]
sub ecx, dword [eax + 0x44]
sar ecx, 4
lea eax, [ecx - 1]
cmp ecx, eax
jbe 0x1004a87d
mov ecx, dword [0x101ccc00]
lea edx, [ebp - 0x58]
mov dword [ebp - 0x58], 0
mov dword [ebp - 0x54], 0
mov dword [ebp - 0x50], 0
mov eax, dword [ecx]
push edx
mov eax, dword [eax + 0x48]
call eax
movss xmm0, dword [ebp - 0x54]
xorps xmm1, xmm1
comiss xmm1, xmm0
jbe 0x1004a578
addss xmm0, dword [0x100c4650]
mulss xmm0, dword [0x100c4344]
lea eax, [ebp - 0x4c]
push eax
lea edx, [ebp - 0x28]
lea ecx, [ebp - 0x34]
movss dword [ebp - 0xec], xmm0
call fcn.1008f320
movss xmm3, dword [ebp - 0x30]
add esp, 4
movss xmm1, dword [ebp - 0x34]
movaps xmm0, xmm3
mulss xmm0, xmm3
mulss xmm1, xmm1
addss xmm0, xmm1
movss xmm1, dword [ebp - 0x2c]
mulss xmm1, xmm1
addss xmm0, xmm1
call fcn.1001e500
addss xmm0, dword [0x100c4310]
divss xmm3, xmm0
xorps xmm0, xmm0
comiss xmm0, xmm3
jbe 0x1004a5e1
addss xmm3, dword [0x100c4650]
movd xmm0, dword [ebp - 0x1c]
movss xmm4, dword [ebp - 0xf8]
subss xmm4, dword [ebp - 0x4c]
mulss xmm3, dword [0x100c4344]
movss xmm1, dword [0x100c4654]
cvtdq2ps xmm2, xmm0
movss xmm0, dword [ebp - 0xfc]
subss xmm0, dword [ebp - 0x48]
subss xmm3, dword [ebp - 0xec]
subss xmm2, dword [0x100c45a4]
mulss xmm4, xmm4
mov dword [ebp - 0xec], 0x43c80000
mulss xmm0, xmm0
movss dword [ebp - 0x18], xmm3
movss dword [ebp - 0x110], xmm2
addss xmm0, xmm4
call fcn.1001e500
comiss xmm1, xmm0
lea ecx, [ebp - 0x104]
lea edx, [ebp - 0xec]
movd xmm1, esi
cvtdq2ps xmm1, xmm1
seta al
test al, al
cmove edx, ecx
lea ecx, [ebp - 0x110]
movss dword [ebp - 0x104], xmm0
comiss xmm0, xmm2
movaps xmm0, xmm1
seta al
test al, al
cmove ecx, edx
subss xmm0, dword [ecx]
subss xmm0, xmm1
movss dword [ebp - 0xfc], xmm0
movaps xmm0, xmm3
call fcn.1001e4c0
mulss xmm0, dword [ebp - 0xfc]
movss dword [ebp - 0xf8], xmm0
movss xmm0, dword [ebp - 0x18]
call fcn.1001e4f0
cmp dword [ebp - 0x114], 0x2d
movaps xmm1, xmm0
movd xmm2, dword [ebp - 0x1c]
mulss xmm1, dword [ebp - 0xfc]
movd xmm0, esi
cvtdq2ps xmm0, xmm0
cvtdq2ps xmm2, xmm2
addss xmm1, xmm0
movss xmm0, dword [ebp - 0xf8]
addss xmm0, xmm2
movss dword [ebp - 0x104], xmm1
movss dword [ebp - 0xf8], xmm0
jge 0x1004a859
subss xmm0, dword [0x100c455c]
mov eax, dword [ebp - 0x100]
mov byte [ebp - 0x15], al
cvttss2si esi, xmm1
mov word [ebp - 0x18], 0xf0f
mov byte [ebp - 0x16], 0xf
push dword [ebp - 0x18]
cvttss2si eax, xmm0
push 0x2d0
push 0x14
mov ecx, esi
mov edx, eax
mov dword [ebp - 0xec], eax
call fcn.10098530
movss xmm0, dword [ebp - 0x10c]
add esp, 0xc
mulss xmm0, dword [0x100c465c]
mov edx, dword [ebp - 0xec]
push edi
cvttss2si eax, xmm0
push ecx
mov ecx, esi
push eax
sub esp, 8
call fcn.10049b00
mov eax, dword [ebp - 0x108]
add esp, 0x14
mov eax, dword [eax + 0x30]
add eax, 0xffffffd4
cmp eax, 4
ja case.0x1004a778.47
jmp dword [eax*4 + 0x1004a8ac]
mov edx, 0x100c0178
jmp 0x1004a7a1
mov edx, 0x100c0174
jmp 0x1004a7a1
mov edx, 0x100c0188
jmp 0x1004a7a1
mov edx, 0x100be650
jmp 0x1004a7a1
mov edx, dword [ebp - 0xec]
mov ecx, edx
mov dword [ebp - 0x11c], 0
xorps xmm0, xmm0
mov dword [ebp - 0x118], 0
movups xmmword [ebp - 0x12c], xmm0
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1004a7c4
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x12c]
call fcn.10026a40
mov dword [ebp - 4], 2
lea eax, [ebp - 0x12c]
movss xmm0, dword [ebp - 0xf8]
mov ecx, 0x101ccdd4
subss xmm0, dword [0x100c4578]
push 0
push eax
push edi
cvttss2si eax, xmm0
movss xmm0, dword [ebp - 0x104]
subss xmm0, dword [0x100c4548]
push eax
cvttss2si eax, xmm0
push eax
call fcn.10098880
mov ecx, dword [ebp - 0x118]
cmp ecx, 0x10
jb 0x1004a859
mov edx, dword [ebp - 0x12c]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x1004a84f
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1004a303
push ecx
push edx
call fcn.100af9f8
add esp, 8
mov al, 1
jmp 0x1004a85f
xor al, al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.100af496
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
call fcn.1004aec0
nop
mov byte ss:[0xa22f1004], al
add al, 16
cmp eax, 0x4b1004a2
mov byte [2722369540], al
add al, 0x10
lcall 0x4a3, 0x931004a3
adc byte [ecx - 1357904733], ah
mov dword [0xa3a81004], eax
add al, 0x10
xchg byte [edi - 0x5880effc], ah
add al, 16
lea esp, [edi - 0x5864effc]
add al, 16
xchg esp, eax
cmpsd dword [esi], dword es:[edi]
add al, 0x10