Function at 0x1005709c
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 0x100c3a48
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x108
mov eax, dword [0x100e1040]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
mov dword [ebp - 0xe8], esi
cmp byte [0x100f3138], 0
je 0x10057063
mov eax, dword [esi + 0x48]
mov ecx, dword [esi + 0x44]
sub eax, ecx
sar eax, 4
cmp eax, 1
jbe 0x10057063
mov eax, dword [0x102bc19c]
movss xmm0, dword [eax + 0x10]
comiss xmm0, dword [esi + 0x2c]
jae 0x10057063
mov eax, dword [0x102bc360]
add eax, 0xffffffdb
xor eax, 0x754feb90
add eax, dword [0x100e1590]
movss xmm1, dword [eax]
movss xmm0, dword [eax + 4]
subss xmm0, dword [esi + 0xc]
subss xmm1, dword [esi + 8]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm0, xmm1
call fcn.100276a0
mulss xmm0, dword [0x100d55ac]
lea edx, [ebp - 0xe0]
cvttss2si eax, xmm0
mov dword [ebp - 0xfc], eax
call fcn.100a9ca0
mov edx, dword [esi + 0x48]
mov edi, 1
mov ecx, edx
mov byte [ebp - 0xd6], al
sub ecx, dword [esi + 0x44]
sar ecx, 4
cmp ecx, edi
jbe 0x100569ca
mov ecx, dword [esi + 0x44]
mov eax, 0x10
mov dword [ebp - 0xcc], eax
mov dword [ebp - 0xd0], 0
sub edx, ecx
sar edx, 4
cmp edx, edi
jbe 0x10057083
add ecx, eax
lea edx, [ebp - 0xe0]
call fcn.100a9ca0
cmp byte [ebp - 0xd6], 0
mov byte [ebp - 0xd5], al
je 0x10056978
test al, al
je 0x10056978
cmp byte [0x100f30b0], 0
je 0x10056978
mov ecx, dword [esi + 0x48]
mov edx, dword [esi + 0x44]
sub ecx, edx
sar ecx, 4
cmp ecx, edi
jbe 0x10057083
lea eax, [edi - 1]
cmp ecx, eax
jbe 0x10057083
mov eax, dword [ebp - 0xcc]
mov ecx, dword [0x102bc1cc]
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x48], 0
movq xmm0, qword [edx + eax]
mov eax, dword [edx + eax + 8]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0xd0]
movq qword [ebp - 0x20], xmm0
mov dword [ebp - 0x44], 0
mov dword [ebp - 0xc8], 0
movq xmm0, qword [edx + eax]
mov eax, dword [edx + eax + 8]
lea edx, [ebp - 0xc8]
movq qword [ebp - 0xf8], xmm0
movss xmm0, dword [ebp - 0xf8]
movss dword [ebp - 0xb4], xmm0
movss xmm0, dword [ebp - 0xf4]
movss dword [ebp - 0xb0], xmm0
mov dword [ebp - 0xf0], eax
movss xmm0, dword [ebp - 0xf0]
movss dword [ebp - 0xac], xmm0
movss xmm0, dword [ebp - 0x20]
movss dword [ebp - 0xa8], xmm0
movss xmm0, dword [ebp - 0x1c]
movss dword [ebp - 0xa4], xmm0
movss xmm0, dword [ebp - 0x18]
movss dword [ebp - 0xa0], xmm0
movaps xmm0, xmmword [0x100d5950]
movups xmmword [ebp - 0x84], xmm0
mov dword [ebp - 0x9c], 0xffffffff
movaps xmm0, xmmword [0x100d5990]
mov dword [ebp - 0x94], 0xffffffff
mov dword [ebp - 0x50], 0
mov dword [ebp - 0x98], str.sprites_purplelaser1.vmt
mov dword [ebp - 0x90], str.sprites_purplelaser1.vmt
mov dword [ebp - 0x8c], 0
mov dword [ebp - 0x74], 0x437f0000
mov dword [ebp - 0x70], 0x3e4ccccd
mov dword [ebp - 0x6c], 0
movups xmmword [ebp - 0x68], xmm0
mov dword [ebp - 0x54], 2
mov byte [ebp - 0x58], 1
mov dword [ebp - 0x88], 0x3cf5c28f
mov eax, dword [ecx]
push edx
mov eax, dword [eax + 0x30]
call eax
test eax, eax
je 0x10056972
mov ecx, dword [0x102bc1cc]
push eax
mov edx, dword [ecx]
call dword [edx + 0x10]
mov al, byte [ebp - 0xd5]
mov edx, dword [esi + 0x48]
inc edi
mov ecx, dword [esi + 0x44]
add dword [ebp - 0xcc], 0x10
movss xmm1, dword [ebp - 0xe0]
movss xmm2, dword [ebp - 0xdc]
add dword [ebp - 0xd0], 0x10
mov byte [ebp - 0xd6], al
mov eax, edx
sub eax, ecx
movss dword [ebp - 0xd4], xmm1
sar eax, 4
cmp edi, eax
movss dword [ebp - 0xe4], xmm2
mov eax, dword [ebp - 0xcc]
jb 0x100567c8
jmp 0x100569ea
movss xmm2, dword [ebp - 0xdc]
movss xmm1, dword [ebp - 0xe0]
movss dword [ebp - 0xe4], xmm2
movss dword [ebp - 0xd4], xmm1
cmp dword [ebp - 0xfc], 0x2d
movd xmm0, dword [esi + 0x34]
mov eax, dword [0x102bc19c]
movss xmm3, dword [esi + 0x2c]
cvtdq2ps xmm0, xmm0
subss xmm3, dword [eax + 0x10]
mulss xmm0, dword [eax + 0x20]
divss xmm3, xmm0
movss dword [ebp - 0xec], xmm3
jge 0x10056b7a
movaps xmm0, xmm2
mov dword [ebp - 0xcc], 0xc81e1a1a
subss xmm0, dword [0x100d5770]
push dword [ebp - 0xcc]
cvttss2si esi, xmm1
sub esp, 8
cvttss2si edi, xmm0
mov ecx, esi
mov edx, edi
call fcn.100aa310
movss xmm0, dword [ebp - 0xec]
add esp, 0xc
mulss xmm0, dword [0x100d5860]
mov edx, edi
mov dword [ebp - 0xcc], 0xe10000ff
push dword [ebp - 0xcc]
cvttss2si eax, xmm0
push ecx
mov ecx, esi
push eax
sub esp, 8
call fcn.10056520
mov esi, dword [ebp - 0xe8]
add esp, 0x14
mov eax, dword [esi + 0x30]
add eax, 0xffffffd4
cmp eax, 4
ja case.0x10056a97.47
jmp dword [eax*4 + 0x10057088]
mov edx, 0x100d0718
jmp 0x10056ac0
mov edx, str.jknl
jmp 0x10056ac0
mov edx, 0x100d0720
jmp 0x10056ac0
mov edx, 0x100d071c
jmp 0x10056ac0
mov edx, dword [ebp - 0xdc]
mov ecx, edx
mov dword [ebp - 0x1c], 0
xorps xmm0, xmm0
mov dword [ebp - 0x18], 0
movups xmmword [ebp - 0x2c], xmm0
lea edi, [ecx + 1]
nop word [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10056ae0
sub ecx, edi
push ecx
push edx
lea ecx, [ebp - 0x2c]
call fcn.1002ff60
push 0
mov dword [ebp - 4], 0
lea eax, [ebp - 0x2c]
movss xmm0, dword [ebp - 0xe4]
subss xmm0, dword [0x100d578c]
push eax
push ecx
mov eax, esp
mov ecx, 0x102beb04
mov dword [eax], 0xffffffff
cvttss2si eax, xmm0
movss xmm0, dword [ebp - 0xd4]
subss xmm0, dword [0x100d5758]
push eax
cvttss2si eax, xmm0
push eax
call fcn.100aab70
mov dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0x18]
cmp ecx, 0xf
jbe 0x10056b7a
mov edx, dword [ebp - 0x2c]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x10056b70
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x10056b70
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push ecx
push edx
call fcn.100be7ba
add esp, 8
mov ecx, dword [0x100e1590]
movq xmm0, qword [esi + 8]
mov esi, dword [esi + 0x10]
movq qword [ebp - 0xe0], xmm0
mov eax, dword [ecx]
movq qword [ebp - 0xf8], xmm0
mov dword [ebp - 0xf0], esi
mov eax, dword [eax + 0x28]
call eax
mov ecx, dword [0x102bc3a0]
add ecx, 0xffffffcb
xor ecx, 0x754feba0
movq xmm0, qword [eax]
mov eax, dword [eax + 8]
mov dword [ebp - 0x18], eax
mov eax, dword [0x100e1590]
movq qword [ebp - 0x20], xmm0
cmp dword [ecx + eax], 0
je 0x10056c05
mov eax, dword [0x102bc1a0]
movss xmm0, dword [eax + 0xa8]
movss dword [ebp - 0xcc], xmm0
movss xmm0, dword [eax + 0xac]
movss dword [ebp - 0xd0], xmm0
movss xmm0, dword [eax + 0xb0]
movss dword [ebp - 0xd4], xmm0
jmp 0x10056c2c
movss xmm0, dword [ebp - 0x18]
movss dword [ebp - 0xd4], xmm0
movss xmm0, dword [ebp - 0x1c]
movss dword [ebp - 0xd0], xmm0
movss xmm0, dword [ebp - 0x20]
movss dword [ebp - 0xcc], xmm0
movq xmm0, qword [ebp - 0xe0]
lea edx, [ebp - 0xe0]
lea ecx, [ebp - 0x20]
movq qword [ebp - 0x20], xmm0
mov dword [ebp - 0x18], esi
call fcn.100a9ca0
mov ecx, dword [0x100e4c64]
test al, al
mov eax, dword [0x100e4c60]
je 0x10056c92
movss xmm1, dword [ebp - 0xe0]
xorps xmm2, xmm2
comiss xmm1, xmm2
jbe 0x10056c92
movd xmm0, eax
cvtdq2ps xmm0, xmm0
comiss xmm0, xmm1
jbe 0x10056c92
movss xmm1, dword [ebp - 0xdc]
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
comiss xmm0, xmm1
jbe 0x10056c92
comiss xmm1, xmm2
ja 0x1005705f
cdq
sub eax, edx
mov esi, eax
mov eax, ecx
cdq
sub eax, edx
sar esi, 1
mov edi, eax
mov eax, dword [ebp - 0xe8]
sar edi, 1
mov ecx, dword [eax + 0x48]
sub ecx, dword [eax + 0x44]
sar ecx, 4
lea eax, [ecx - 1]
cmp ecx, eax
jbe 0x10057083
mov ecx, dword [0x102bc13c]
lea edx, [ebp - 0x38]
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x34], 0
mov dword [ebp - 0x30], 0
mov eax, dword [ecx]
push edx
mov eax, dword [eax + 0x48]
call eax
movss xmm0, dword [ebp - 0x34]
xorps xmm1, xmm1
comiss xmm1, xmm0
jbe 0x10056cf7
addss xmm0, dword [0x100d5860]
movss xmm1, dword [ebp - 0xd0]
mulss xmm0, dword [0x100d5578]
subss xmm1, dword [ebp - 0xf4]
movss xmm2, dword [ebp - 0xcc]
subss xmm2, dword [ebp - 0xf8]
movss xmm3, dword [ebp - 0xd4]
subss xmm3, dword [ebp - 0xf0]
movss dword [ebp - 0xe4], xmm0
movaps xmm0, xmm1
mulss xmm0, xmm1
movss dword [ebp - 0xd0], xmm1
movaps xmm1, xmm2
mulss xmm1, xmm2
movss dword [ebp - 0xcc], xmm2
addss xmm0, xmm1
call fcn.100276a0
xorps xmm2, xmm2
movss dword [ebp - 0xdc], xmm0
cvtss2sd xmm2, xmm0
cvtps2pd xmm1, xmm3
divsd xmm1, xmm2
cvtpd2ps xmm0, xmm1
call sub.api_ms_win_crt_math_l1_1_0.dll___libm_sse2_atanf
movss dword [ebp - 0xd4], xmm0
movss xmm0, dword [ebp - 0xd0]
divss xmm0, dword [ebp - 0xcc]
call sub.api_ms_win_crt_math_l1_1_0.dll___libm_sse2_atanf
movaps xmm2, xmm0
xorps xmm3, xmm3
movss xmm0, dword [ebp - 0xcc]
comiss xmm0, xmm3
mulss xmm2, dword [0x100d57cc]
jb 0x10056dbd
addss xmm2, dword [0x100d5830]
movss xmm0, dword [ebp - 0xd4]
movaps xmm1, xmm2
mulss xmm0, xmm0
mulss xmm1, xmm2
mulss xmm0, dword [0x100d5880]
addss xmm0, xmm1
call fcn.100276a0
addss xmm0, dword [0x100d5544]
divss xmm2, xmm0
comiss xmm3, xmm2
jbe 0x10056dfa
addss xmm2, dword [0x100d5860]
movss xmm3, dword [ebp - 0xdc]
lea ecx, [ebp - 0xdc]
mulss xmm2, dword [0x100d5578]
lea edx, [ebp - 0xd4]
mov dword [ebp - 0xd4], 0x43c80000
movd xmm0, edi
cvtdq2ps xmm1, xmm0
movss xmm0, dword [0x100d5864]
subss xmm1, dword [0x100d57b4]
subss xmm2, dword [ebp - 0xe4]
comiss xmm0, xmm3
movss dword [ebp - 0xe4], xmm1
movss dword [ebp - 0xdc], xmm3
seta al
movss dword [ebp - 0xd0], xmm2
test al, al
cmove edx, ecx
lea ecx, [ebp - 0xe4]
comiss xmm3, xmm1
movd xmm1, esi
cvtdq2ps xmm1, xmm1
seta al
test al, al
cmove ecx, edx
movaps xmm0, xmm1
subss xmm0, dword [ecx]
subss xmm0, xmm1
movss dword [ebp - 0xd4], xmm0
movaps xmm0, xmm2
call fcn.10027660
mulss xmm0, dword [ebp - 0xd4]
movss dword [ebp - 0xcc], xmm0
movss xmm0, dword [ebp - 0xd0]
call fcn.10027690
cmp dword [ebp - 0xfc], 0x2d
movaps xmm1, xmm0
mulss xmm1, dword [ebp - 0xd4]
movd xmm0, esi
cvtdq2ps xmm0, xmm0
movd xmm2, edi
cvtdq2ps xmm2, xmm2
addss xmm1, xmm0
movss xmm0, dword [ebp - 0xcc]
addss xmm0, xmm2
movss dword [ebp - 0xdc], xmm1
movss dword [ebp - 0xcc], xmm0
jge 0x1005705f
subss xmm0, dword [0x100d5770]
cvttss2si esi, xmm1
mov dword [ebp - 0xd0], 0xc81e1a1a
push dword [ebp - 0xd0]
cvttss2si edi, xmm0
sub esp, 8
mov ecx, esi
mov edx, edi
call fcn.100aa310
movss xmm0, dword [ebp - 0xec]
add esp, 0xc
mulss xmm0, dword [0x100d5860]
mov edx, edi
mov dword [ebp - 0xd0], 0xe10000ff
push dword [ebp - 0xd0]
cvttss2si eax, xmm0
push ecx
mov ecx, esi
push eax
sub esp, 8
call fcn.10056520
mov eax, dword [ebp - 0xe8]
add esp, 0x14
mov eax, dword [eax + 0x30]
add eax, 0xffffffd4
cmp eax, 4
ja case.0x10056f6d.47
jmp dword [eax*4 + 0x1005709c]
mov edx, 0x100d0718
jmp 0x10056f96
mov edx, str.jknl
jmp 0x10056f96
mov edx, 0x100d0720
jmp 0x10056f96
mov edx, 0x100d071c
jmp 0x10056f96
mov edx, dword [ebp - 0xdc]
mov ecx, edx
mov dword [ebp - 0x104], 0
xorps xmm0, xmm0
mov dword [ebp - 0x100], 0
movups xmmword [ebp - 0x114], xmm0
lea esi, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10056fc0
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x114]
call fcn.1002ff60
push 0
mov dword [ebp - 4], 1
lea eax, [ebp - 0x114]
movss xmm0, dword [ebp - 0xcc]
subss xmm0, dword [0x100d578c]
push eax
push ecx
mov eax, esp
mov ecx, 0x102beb04
mov dword [eax], 0xffffffff
cvttss2si eax, xmm0
movss xmm0, dword [ebp - 0xdc]
subss xmm0, dword [0x100d5758]
push eax
cvttss2si eax, xmm0
push eax
call fcn.100aab70
mov ecx, dword [ebp - 0x100]
cmp ecx, 0xf
jbe 0x1005705f
mov edx, dword [ebp - 0x114]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x10057055
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x10057055
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push ecx
push edx
call fcn.100be7ba
add esp, 8
mov al, 1
jmp 0x10057065
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.100be28c
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
call fcn.10057420
movsd dword es:[edi], dword [esi]
push 5
adc byte [esi - 0x53effa96], bl
push 5
adc byte [edx - 0x4ceffa96], bh
push 5
adc byte [ebx + 0x6f], bh
add eax, 0x56f7410
adc byte [edx - 0x6feffa91], al
outsd dx, dword [esi]
add eax, 0x56f8910
adc byte [ebp - 0x75], dl
push ebp
mov ebp, esp