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

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff0
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x101a922b
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x1e8
mov eax, dword [0x104cdec0]
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 - 0x1a8], edi
xor eax, eax
lea ecx, [ebp - 0x1a0]
mov dword [ebp - 0x178], eax
xorps xmm0, xmm0
push 0x14
push 0x101bdde0
mov dword [ebp - 0x170], eax
movups xmmword [ebp - 0x1a0], xmm0
mov dword [ebp - 0x190], eax
mov dword [ebp - 0x18c], eax
call fcn.10018360
lea eax, [ebp - 0x1a0]
mov dword [ebp - 4], 0
push eax
lea eax, [ebp - 0x24]
mov ecx, 0x105daf00
push eax
call fcn.100196a0
mov ecx, dword [ebp - 0x18c]
mov dword [ebp - 4], 0xffffffff
mov eax, dword [eax]
mov al, byte [eax + 0x20]
mov byte [ebp - 0x172], al
cmp ecx, 0xf
jbe 0x1004b10f
mov edx, dword [ebp - 0x1a0]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x1004b0ff
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x1004b0ff
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push ecx
push edx
call fcn.101a3a33
mov al, byte [ebp - 0x172]
add esp, 8
test al, al
je 0x1004c262
mov eax, dword [edi + 0x48]
lea ecx, [edi + 0x44]
sub eax, dword [ecx]
sar eax, 4
mov dword [ebp - 0x184], ecx
cmp eax, 1
jbe 0x1004c262
mov eax, dword [0x105d9d44]
movss xmm0, dword [eax + 0x10]
comiss xmm0, dword [edi + 0x2c]
jae 0x1004c262
mov edx, dword [edi + 4]
test edx, edx
je 0x1004c262
mov ecx, dword [0x105d9fb0]
add ecx, 0xffffffd9
xor ecx, 0x58f652d5
mov eax, dword [ecx + edx]
mov edx, dword [0x102f2748]
cmp eax, dword [ecx + edx]
je 0x1004b171
mov cl, 1
jmp 0x1004b189
mov ecx, dword [0x105d9df4]
mov eax, dword [ecx]
mov eax, dword [eax + 0x34]
call eax
mov edx, dword [0x102f2748]
test eax, eax
setne cl
cmp dword [edi + 4], edx
mov byte [ebp - 0x171], cl
sete byte [ebp - 0x179]
je 0x1004b20b
test cl, cl
je 0x1004b20b
push 0x14
xorps xmm0, xmm0
mov dword [ebp - 0x190], 0
push 0x101bdde0
lea ecx, [ebp - 0x1a0]
mov dword [ebp - 0x18c], 0
movups xmmword [ebp - 0x1a0], xmm0
call fcn.10018360
mov eax, 1
mov dword [ebp - 4], 1
mov dword [ebp - 0x170], eax
mov ecx, 0x105daf00
mov dword [ebp - 0x178], eax
lea eax, [ebp - 0x1a0]
push eax
lea eax, [ebp - 0x24]
push eax
call fcn.100196a0
mov byte [ebp - 0x169], 1
mov eax, dword [eax]
cmp byte [eax + 0x20], 0
je 0x1004b212
mov byte [ebp - 0x169], 0
mov eax, dword [ebp - 0x170]
mov dword [ebp - 4], 0xffffffff
test al, 1
je 0x1004b237
and eax, 0xfffffffe
lea ecx, [ebp - 0x1a0]
mov dword [ebp - 0x170], eax
call fcn.1001ae90
cmp byte [ebp - 0x169], 0
jne 0x1004c262
cmp byte [ebp - 0x179], 0
jne 0x1004b2c6
cmp byte [ebp - 0x171], 0
jne 0x1004b2c6
push 0x18
xorps xmm0, xmm0
mov dword [ebp - 0x190], 0
push str.grenadeWarning_teammates
lea ecx, [ebp - 0x1a0]
mov dword [ebp - 0x18c], 0
movups xmmword [ebp - 0x1a0], xmm0
call fcn.10018360
mov eax, dword [ebp - 0x170]
mov ecx, 0x105daf00
or eax, 2
mov dword [ebp - 4], 2
mov dword [ebp - 0x170], eax
mov dword [ebp - 0x178], eax
lea eax, [ebp - 0x1a0]
push eax
lea eax, [ebp - 0x24]
push eax
call fcn.100196a0
mov byte [ebp - 0x169], 1
mov eax, dword [eax]
cmp byte [eax + 0x20], 0
je 0x1004b2cd
mov byte [ebp - 0x169], 0
mov eax, dword [ebp - 0x170]
mov dword [ebp - 4], 0xffffffff
test al, 2
je 0x1004b2f2
and eax, 0xfffffffd
lea ecx, [ebp - 0x1a0]
mov dword [ebp - 0x170], eax
call fcn.1001ae90
cmp byte [ebp - 0x169], 0
jne 0x1004c262
cmp byte [ebp - 0x179], 0
je 0x1004b378
push 0x14
xorps xmm0, xmm0
mov dword [ebp - 0x190], 0
push str.grenadeWarning_local
lea ecx, [ebp - 0x1a0]
mov dword [ebp - 0x18c], 0
movups xmmword [ebp - 0x1a0], xmm0
call fcn.10018360
mov eax, dword [ebp - 0x170]
mov ecx, 0x105daf00
or eax, 4
mov dword [ebp - 4], 3
mov dword [ebp - 0x170], eax
mov dword [ebp - 0x178], eax
lea eax, [ebp - 0x1a0]
push eax
lea eax, [ebp - 0x24]
push eax
call fcn.100196a0
mov byte [ebp - 0x169], 1
mov eax, dword [eax]
cmp byte [eax + 0x20], 0
je 0x1004b37f
mov byte [ebp - 0x169], 0
mov eax, dword [ebp - 0x170]
mov dword [ebp - 4], 0xffffffff
test al, 4
je 0x1004b39b
lea ecx, [ebp - 0x1a0]
call fcn.1001ae90
cmp byte [ebp - 0x169], 0
jne 0x1004c262
mov eax, dword [0x105d7530]
test al, 1
jne 0x1004b44c
or eax, 1
mov dword [0x105d7530], eax
mov eax, dword [0x105d9ce4]
mov dword [ebp - 4], 4
mov eax, dword [eax + 0x30]
mov dword [ebp - 0x178], eax
test eax, eax
je 0x1004b422
mov edi, dword [eax + 0xc]
mov esi, 0x811c9dc5
xor ecx, ecx
inc ecx
cmp byte [ecx + edi], 0
jne 0x1004b3e0
xor edx, edx
test ecx, ecx
je 0x1004b40f
nop dword [eax]
movsx eax, byte [edx + edi]
inc edx
xor eax, esi
imul esi, eax, 0x1000193
cmp edx, ecx
jb 0x1004b3f0
cmp esi, 0x20f3b1c2
je 0x1004b43e
mov eax, dword [ebp - 0x178]
mov eax, dword [eax + 4]
mov dword [ebp - 0x178], eax
test eax, eax
jne 0x1004b3d6
mov edi, dword [ebp - 0x1a8]
xor ecx, ecx
mov eax, dword [ecx]
mov eax, dword [eax + 0x34]
call eax
test eax, eax
mov dword [ebp - 4], 0xffffffff
setne al
mov byte [0x105d752c], al
jmp 0x1004b451
mov ecx, dword [ebp - 0x178]
mov edi, dword [ebp - 0x1a8]
jmp 0x1004b424
mov al, byte [0x105d752c]
cmp byte [ebp - 0x179], 0
mov dword [ebp - 0x170], 0
mov byte [ebp - 0x172], 1
je 0x1004b4a7
push 0x1a
xorps xmm0, xmm0
mov dword [ebp - 0x190], 0
push str.grenadeWarning_local_color
lea ecx, [ebp - 0x1a0]
mov dword [ebp - 0x18c], 0
movups xmmword [ebp - 0x1a0], xmm0
call fcn.10018360
mov dword [ebp - 4], 5
jmp 0x1004b579
cmp byte [ebp - 0x171], 0
jne 0x1004b542
test al, al
jne 0x1004b542
push 0x1e
xorps xmm0, xmm0
mov dword [ebp - 0x190], 0
push str.grenadeWarning_teammates_color
lea ecx, [ebp - 0x1a0]
mov dword [ebp - 0x18c], 0
movups xmmword [ebp - 0x1a0], xmm0
call fcn.10018360
lea eax, [ebp - 0x1a0]
mov dword [ebp - 4], 6
push eax
lea eax, [ebp - 0x24]
mov ecx, 0x105daf60
push eax
call fcn.10018f80
mov ecx, 0x105da310
mov eax, dword [eax]
add eax, 0x20
push eax
lea eax, [ebp - 0x1b0]
push eax
call fcn.10109700
lea ecx, [ebp - 0x1a0]
mov dword [ebp - 4], 0xffffffff
mov eax, dword [eax]
mov dword [ebp - 0x170], eax
call fcn.1001ae90
mov byte [ebp - 0x172], 0
jmp 0x1004b5bf
push 0x1a
xorps xmm0, xmm0
mov dword [ebp - 0x190], 0
push str.grenadeWarning_enemy_color
lea ecx, [ebp - 0x1a0]
mov dword [ebp - 0x18c], 0
movups xmmword [ebp - 0x1a0], xmm0
call fcn.10018360
mov dword [ebp - 4], 7
lea eax, [ebp - 0x1a0]
mov ecx, 0x105daf60
push eax
lea eax, [ebp - 0x24]
push eax
call fcn.10018f80
mov ecx, 0x105da310
mov eax, dword [eax]
add eax, 0x20
push eax
lea eax, [ebp - 0x1b0]
push eax
call fcn.10109700
lea ecx, [ebp - 0x1a0]
mov dword [ebp - 4], 0xffffffff
mov eax, dword [eax]
mov dword [ebp - 0x170], eax
call fcn.1001ae90
lea eax, [ebp - 0x30]
push eax
push dword [edi + 0x44]
call fcn.1012e2a0
movd xmm0, dword [edi + 0x34]
mov esi, 1
mov ecx, dword [0x105d9d44]
add esp, 8
movss xmm1, dword [edi + 0x2c]
cvtdq2ps xmm0, xmm0
mov edx, dword [edi + 0x44]
mov byte [ebp - 0x171], al
mov eax, dword [edi + 0x48]
sub eax, edx
subss xmm1, dword [ecx + 0x10]
mulss xmm0, dword [ecx + 0x20]
sar eax, 4
divss xmm1, xmm0
movss dword [ebp - 0x1b4], xmm1
cmp eax, esi
jbe 0x1004b8dc
mov ecx, 0x10
mov dword [ebp - 0x1a4], 0
mov dword [ebp - 0x178], ecx
nop word [eax + eax]
lea eax, [ebp - 0x38]
push eax
lea eax, [edx + ecx]
push eax
call fcn.1012e2a0
add esp, 8
mov byte [ebp - 0x169], al
cmp byte [ebp - 0x171], 0
je 0x1004b898
test al, al
je 0x1004b898
movzx ecx, byte [ebp - 0x16d]
mov edx, dword [edi + 0x48]
sub edx, dword [edi + 0x44]
sar edx, 4
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
mulss xmm0, dword [ebp - 0x1b4]
cvttss2si eax, xmm0
movzx ecx, al
movzx eax, byte [ebp - 0x16e]
shl ecx, 8
or ecx, eax
movzx eax, byte [ebp - 0x16f]
shl ecx, 8
or ecx, eax
mov eax, dword [ebp - 0x170]
shl ecx, 8
movzx eax, al
or ecx, eax
cmp edx, esi
jbe 0x1004c282
lea eax, [esi - 1]
cmp edx, eax
jbe 0x1004c282
mov edx, dword [edi + 0x44]
mov eax, dword [ebp - 0x178]
mov dword [ebp - 0x94], 0
mov dword [ebp - 0x90], 0
mov dword [ebp - 0x8c], 0
movq xmm0, qword [edx + eax]
mov eax, dword [edx + eax + 8]
mov dword [ebp - 0x1c0], eax
mov eax, dword [ebp - 0x1a4]
movq qword [ebp - 0x1c8], xmm0
mov dword [ebp - 0xd8], 0
mov dword [ebp - 0xdc], 0xffffffff
movq xmm0, qword [edx + eax]
mov eax, dword [edx + eax + 8]
lea edx, [ebp - 0x110]
mov dword [ebp - 0x18c], eax
movq qword [ebp - 0x194], xmm0
movzx eax, cl
mov dword [ebp - 0x110], 0
mov dword [ebp - 0xe4], 0xffffffff
mov dword [ebp - 0xd4], 0
movd xmm0, eax
mov eax, ecx
cvtdq2ps xmm0, xmm0
shr eax, 8
movzx eax, al
mov dword [ebp - 0xc4], 0x3f800000
mov dword [ebp - 0xcc], 0x40200000
mov dword [ebp - 0xc8], 0x40200000
movss dword [ebp - 0xac], xmm0
movd xmm0, eax
mov eax, ecx
cvtdq2ps xmm0, xmm0
shr eax, 0x10
movzx eax, al
shr ecx, 0x18
mov dword [ebp - 0xe0], str.sprites_purplelaser1.vmt
mov dword [ebp - 0xc0], 0x40133333
movss dword [ebp - 0xa8], xmm0
movd xmm0, eax
cvtdq2ps xmm0, xmm0
mov dword [ebp - 0xb8], 0x3e4ccccd
mov dword [ebp - 0xb4], 0
mov dword [ebp - 0xb0], 0
mov dword [ebp - 0x9c], 2
mov byte [ebp - 0xa0], 1
movss dword [ebp - 0xa4], xmm0
movd xmm0, ecx
mov ecx, dword [0x105d9d74]
cvtdq2ps xmm0, xmm0
mov dword [ebp - 0xd0], 0x3cf5c28f
mov dword [ebp - 0x98], 0x8300
push edx
movss dword [ebp - 0xbc], xmm0
movss xmm0, dword [ebp - 0x194]
movss dword [ebp - 0xfc], xmm0
movss xmm0, dword [ebp - 0x190]
movss dword [ebp - 0xf8], xmm0
movss xmm0, dword [ebp - 0x18c]
movss dword [ebp - 0xf4], xmm0
movss xmm0, dword [ebp - 0x1c8]
movss dword [ebp - 0xf0], xmm0
movss xmm0, dword [ebp - 0x1c4]
movss dword [ebp - 0xec], xmm0
movss xmm0, dword [ebp - 0x1c0]
movss dword [ebp - 0xe8], xmm0
mov eax, dword [ecx]
mov eax, dword [eax + 0x30]
call eax
test eax, eax
je 0x1004b892
mov ecx, dword [0x105d9d74]
push eax
mov edx, dword [ecx]
call dword [edx + 0x10]
mov al, byte [ebp - 0x169]
movss xmm0, dword [ebp - 0x38]
inc esi
mov edx, dword [edi + 0x44]
mov ecx, dword [ebp - 0x178]
add dword [ebp - 0x1a4], 0x10
add ecx, 0x10
mov byte [ebp - 0x171], al
mov eax, dword [edi + 0x48]
sub eax, edx
movss dword [ebp - 0x30], xmm0
movss xmm0, dword [ebp - 0x34]
sar eax, 4
movss dword [ebp - 0x2c], xmm0
mov dword [ebp - 0x178], ecx
cmp esi, eax
jb 0x1004b630
mov eax, dword [0x105d7530]
test al, 2
jne 0x1004b915
or eax, 2
mov dword [0x105d7530], eax
mov eax, dword [0x105d9f20]
mov dword [0x105d7534], eax
mov dword [0x105d7538], 0
mov dword [0x105d753c], 0
mov dword [0x105d7540], 0
push 0x54
lea eax, [ebp - 0x168]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
lea ecx, [ebp - 0x168]
call fcn.1001a8f0
mov ecx, dword [0x102f2748]
xor eax, eax
mov dword [ebp - 0x178], eax
mov eax, dword [ecx]
mov eax, dword [eax + 0x138]
call eax
movss xmm3, dword [edi + 0x10]
addss xmm3, dword [0x101bc1ec]
movss xmm4, dword [edi + 0xc]
movq xmm0, qword [eax]
mov eax, dword [eax + 8]
movss xmm5, dword [edi + 8]
movq qword [ebp - 0x28], xmm0
movss xmm2, dword [ebp - 0x28]
movss xmm1, dword [ebp - 0x24]
subss xmm2, xmm5
subss xmm1, xmm4
mov dword [ebp - 0x20], eax
movss xmm0, dword [ebp - 0x20]
subss xmm0, xmm3
mov dword [ebp - 0x54], 0
mov byte [ebp - 0x8b], 1
movss dword [ebp - 0x60], xmm2
movss dword [ebp - 0x5c], xmm1
movss dword [ebp - 0x58], xmm0
movaps xmm2, xmmword [ebp - 0x60]
movaps xmm1, xmm2
movaps xmmword [ebp - 0xc0], xmm2
shufps xmm1, xmm2, 0x55
movaps xmm0, xmm2
mulss xmm0, xmm2
mulss xmm1, xmm1
shufps xmm2, xmm2, 0xaa
mulss xmm2, xmm2
addss xmm1, xmm0
addss xmm1, xmm2
ucomiss xmm1, dword [0x101bc190]
lahf
test ah, 0x44
jp 0x1004b9ea
mov byte [ebp - 0x8b], 0
mov ecx, dword [0x105d9d04]
lea edx, [ebp - 0x168]
push edx
mov dword [ebp - 0x90], 0
lea edx, [ebp - 0xd0]
mov byte [ebp - 0x8c], 1
movss dword [ebp - 0xd0], xmm5
movss dword [ebp - 0xcc], xmm4
movss dword [ebp - 0xc8], xmm3
mov dword [ebp - 0xc4], 0
mov dword [ebp - 0xa8], 0
mov dword [ebp - 0xac], 0
mov dword [ebp - 0xb0], 0
mov dword [ebp - 0x98], 0
mov dword [ebp - 0x9c], 0
mov dword [ebp - 0xa0], 0
mov eax, dword [ecx]
push 0x105d7534
push 0x200400b
push edx
mov eax, dword [eax + 0x14]
call eax
mov eax, dword [0x105d9f98]
mov esi, dword [0x102f2748]
add eax, 0xffffffdf
xor eax, 0x58f652cf
movss xmm1, dword [eax + esi]
movss xmm0, dword [eax + esi + 4]
subss xmm0, dword [edi + 0xc]
subss xmm1, dword [edi + 8]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm0, xmm1
xorps xmm1, xmm1
cvtps2pd xmm0, xmm0
ucomisd xmm1, xmm0
ja 0x1004bac4
sqrtsd xmm0, xmm0
jmp 0x1004bac9
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sqrt_precise
cvtsd2ss xmm0, xmm0
divss xmm0, dword [0x101bdeb0]
cvttss2si ecx, xmm0
mov dword [ebp - 0x1b0], ecx
cmp dword [ebp - 0x11c], esi
jne 0x1004bb46
mov eax, dword [edi + 0x30]
cmp eax, 0x2c
jne 0x1004bafd
cmp ecx, 0x14
jg 0x1004bb4e
mov eax, 0x66666667
imul ecx
jmp 0x1004bb27
cmp eax, 0x2e
je 0x1004bb19
mov dword [ebp - 0x178], 0
cmp eax, 0x30
jne 0x1004bb4e
xor eax, eax
mov dword [ebp - 0x178], eax
cmp ecx, 0xf
jg 0x1004bb4e
mov eax, 0x88888889
imul ecx
add edx, ecx
sar edx, 3
mov ecx, 0x32
mov eax, edx
shr eax, 0x1f
add eax, edx
imul eax, eax, 0xff
sub ecx, eax
mov dword [ebp - 0x178], ecx
jmp 0x1004bb4e
xor eax, eax
mov dword [ebp - 0x178], eax
cmp dword [edi + 0x30], 0x2c
mov eax, dword [0x105d9d44]
movss xmm1, dword [edi + 0x2c]
movzx edx, byte [ebp - 0x16d]
subss xmm1, dword [eax + 0x10]
movd xmm2, edx
cvtdq2ps xmm2, xmm2
movaps xmm0, xmm1
divss xmm0, dword [0x101bc1ec]
mulss xmm0, xmm2
cvttss2si ecx, xmm0
jne 0x1004bb94
mulss xmm1, dword [0x101bc1a8]
mulss xmm1, xmm2
cvttss2si ecx, xmm1
movss xmm0, dword [ebp - 0x2c]
xor eax, eax
subss xmm0, dword [0x101bc1f4]
test ecx, ecx
mov word [ebp - 0x170], 0
mov byte [ebp - 0x16e], 0
cmovns eax, ecx
cmp eax, edx
cmovg eax, edx
mov byte [ebp - 0x16d], al
push dword [ebp - 0x170]
mov dword [ebp - 0x180], eax
cvttss2si eax, xmm0
push 0x168
push 0x14
push eax
cvttss2si eax, dword [ebp - 0x30]
push eax
call fcn.1012e6c0
mov ecx, dword [ebp - 0x180]
add esp, 0x14
mov eax, dword [ebp - 0x178]
add cl, 0x32
mov word [ebp - 0x170], 0xffff
mov byte [ebp - 0x16e], 0xff
mov byte [ebp - 0x16d], cl
test eax, eax
jle 0x1004bc20
movzx esi, al
shl esi, 0x18
or esi, 0xff
jmp 0x1004bc2c
movzx esi, cl
shl esi, 0x18
or esi, 0xffffff
movss xmm0, dword [ebp - 0x2c]
mov ecx, 0x14
subss xmm0, dword [0x101bc1f4]
cvttss2si edi, dword [ebp - 0x30]
mov dword [ebp - 0x180], ecx
xorps xmm2, xmm2
cvttss2si edx, xmm0
mov dword [ebp - 0x1ac], edi
movss xmm0, dword [ebp - 0x1b4]
mulss xmm0, dword [0x101bdec0]
mov dword [ebp - 0x1a4], edx
cvttss2si eax, xmm0
movd xmm1, eax
cvtdq2pd xmm1, xmm1
mulsd xmm1, qword [0x101bde98]
movsd qword [ebp - 0x28], xmm1
nop word [eax + eax]
comisd xmm1, xmm2
movaps xmm0, xmm2
movsd qword [ebp - 0x38], xmm0
jbe 0x1004bdd9
mov edi, dword [ebp - 0x180]
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_cos_precise
mov eax, dword [ebp - 0x1ac]
xorps xmm1, xmm1
cvtsi2sd xmm1, edi
sub esp, 8
mulsd xmm0, xmm1
xorps xmm1, xmm1
cvtsi2sd xmm1, eax
addsd xmm0, xmm1
movsd qword [esp], xmm0
call dword [sym.imp.api_ms_win_crt_math_l1_1_0.dll_round]
movsd xmm0, qword [ebp - 0x38]
fstp qword [ebp - 0x190]
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sin_precise
mov eax, dword [ebp - 0x1a4]
xorps xmm1, xmm1
cvtsi2sd xmm1, edi
mulsd xmm0, xmm1
xorps xmm1, xmm1
cvtsi2sd xmm1, eax
addsd xmm0, xmm1
movsd qword [esp], xmm0
call dword [sym.imp.api_ms_win_crt_math_l1_1_0.dll_round]
movsd xmm0, qword [ebp - 0x38]
addsd xmm0, qword [0x101bdea0]
fstp qword [ebp - 0x1c8]
movsd qword [ebp - 0x38], xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_cos_precise
mov eax, dword [ebp - 0x1ac]
xorps xmm1, xmm1
cvtsi2sd xmm1, edi
mulsd xmm0, xmm1
xorps xmm1, xmm1
cvtsi2sd xmm1, eax
addsd xmm0, xmm1
movsd qword [esp], xmm0
call dword [sym.imp.api_ms_win_crt_math_l1_1_0.dll_round]
movsd xmm0, qword [ebp - 0x38]
fstp qword [ebp - 0x1d8]
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sin_precise
mov eax, dword [ebp - 0x1a4]
xorps xmm1, xmm1
cvtsi2sd xmm1, edi
mulsd xmm0, xmm1
xorps xmm1, xmm1
cvtsi2sd xmm1, eax
addsd xmm0, xmm1
movsd qword [esp], xmm0
call dword [sym.imp.api_ms_win_crt_math_l1_1_0.dll_round]
fstp qword [ebp - 0x1d0]
cvttsd2si eax, qword [ebp - 0x1d0]
push esi
push eax
cvttsd2si eax, qword [ebp - 0x1d8]
push eax
cvttsd2si eax, qword [ebp - 0x1c8]
push eax
cvttsd2si eax, qword [ebp - 0x190]
push eax
call fcn.101301a0
movsd xmm0, qword [ebp - 0x38]
add esp, 0x1c
movsd xmm1, qword [ebp - 0x28]
comisd xmm1, xmm0
ja 0x1004bca8
mov ecx, dword [ebp - 0x180]
xorps xmm2, xmm2
dec ecx
mov dword [ebp - 0x180], ecx
cmp ecx, 0x12
jg 0x1004bc90
mov edi, dword [ebp - 0x1a8]
push dword [edi + 0x30]
call fcn.1004c290
add esp, 4
lea ecx, [ebp - 0x1a0]
push eax
call fcn.10019d80
cmp byte [ebp - 0x172], 0
mov dword [ebp - 4], 8
je 0x1004be2d
mov eax, dword [ebp - 0x178]
test eax, eax
jle 0x1004be2d
movzx eax, al
shl eax, 0x18
or eax, 0xff
jmp 0x1004be33
mov eax, dword [ebp - 0x170]
movss xmm0, dword [ebp - 0x2c]
lea ecx, [ebp - 0x1a0]
subss xmm0, dword [0x101bdebc]
push 0
push ecx
push eax
mov ecx, 0x105dd37c
cvttss2si eax, xmm0
movss xmm0, dword [ebp - 0x30]
subss xmm0, dword [0x101bd41c]
push eax
cvttss2si eax, xmm0
push eax
call fcn.10131340
lea ecx, [ebp - 0x1a0]
mov dword [ebp - 4], 0xffffffff
call fcn.1001ae90
mov ecx, dword [0x102f2748]
movq xmm0, qword [edi + 8]
mov eax, dword [edi + 0x10]
movq qword [ebp - 0x6c], xmm0
mov dword [ebp - 0x64], eax
mov eax, dword [ecx]
mov eax, dword [eax + 0x28]
call eax
mov ecx, dword [0x105d9fdc]
add ecx, 0xffffffce
xor ecx, 0x58f652e0
movq xmm0, qword [eax]
movq qword [ebp - 0x44], xmm0
mov eax, dword [eax + 8]
mov dword [ebp - 0x3c], eax
mov eax, dword [0x102f2748]
cmp dword [ecx + eax], 0
je 0x1004beef
mov eax, dword [0x105d9d48]
movss xmm0, dword [eax + 0xa8]
movss dword [ebp - 0x44], xmm0
movss xmm0, dword [eax + 0xac]
movss dword [ebp - 0x40], xmm0
movss xmm0, dword [eax + 0xb0]
movss dword [ebp - 0x3c], xmm0
movq xmm0, qword [ebp - 0x6c]
lea eax, [ebp - 0x74]
push eax
mov eax, dword [ebp - 0x64]
sub esp, 0xc
mov ecx, esp
movq qword [ecx], xmm0
mov dword [ecx + 8], eax
lea ecx, [ebp - 0x172]
call fcn.1004aa70
test al, al
jne 0x1004c25e
mov eax, dword [0x102f54e4]
mov ecx, dword [ebp - 0x1a8]
cdq
sub eax, edx
mov esi, eax
mov eax, dword [0x102f54e8]
cdq
sub eax, edx
sar esi, 1
mov edi, eax
mov eax, dword [ecx + 0x48]
sub eax, dword [ecx + 0x44]
mov ecx, dword [ebp - 0x184]
sar eax, 4
dec eax
sar edi, 1
push eax
call fcn.1004aff0
mov ecx, dword [0x105d9ce8]
lea edx, [ebp - 0x5c]
mov dword [ebp - 0x5c], 0
mov dword [ebp - 0x58], 0
mov dword [ebp - 0x54], 0
mov eax, dword [ecx]
push edx
mov eax, dword [eax + 0x48]
call eax
movss xmm0, dword [ebp - 0x58]
xorps xmm1, xmm1
comiss xmm1, xmm0
jbe 0x1004bf89
addss xmm0, dword [0x101bdec0]
mulss xmm0, dword [0x101bc19c]
lea eax, [ebp - 0x6c]
push eax
lea eax, [ebp - 0x44]
push eax
lea eax, [ebp - 0x28]
movss dword [ebp - 0x184], xmm0
push eax
call fcn.10124840
movss xmm0, dword [ebp - 0x24]
add esp, 0xc
movaps xmm1, xmm0
movss dword [ebp - 0x170], xmm0
mulss xmm1, xmm0
movss xmm0, dword [ebp - 0x28]
mulss xmm0, xmm0
addss xmm1, xmm0
movss xmm0, dword [ebp - 0x20]
mulss xmm0, xmm0
addss xmm1, xmm0
cvtps2pd xmm0, xmm1
xorps xmm1, xmm1
ucomisd xmm1, xmm0
ja 0x1004bfed
sqrtsd xmm0, xmm0
jmp 0x1004bff2
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sqrt_precise
movss xmm1, dword [ebp - 0x28]
cvtsd2ss xmm0, xmm0
movss xmm2, dword [ebp - 0x170]
addss xmm0, dword [0x101bc194]
divss xmm1, xmm0
divss xmm2, xmm0
movss dword [ebp - 0x28], xmm1
movss xmm1, dword [ebp - 0x20]
divss xmm1, xmm0
xorps xmm0, xmm0
comiss xmm0, xmm2
movss dword [ebp - 0x20], xmm1
jbe 0x1004c036
addss xmm2, dword [0x101bdec0]
mulss xmm2, dword [0x101bc19c]
xorps xmm0, xmm0
movss xmm1, dword [ebp - 0x44]
subss xmm1, dword [ebp - 0x6c]
subss xmm2, dword [ebp - 0x184]
cvtsi2ss xmm0, edi
mulss xmm1, xmm1
subss xmm0, dword [0x101bc2f0]
movss dword [ebp - 0x170], xmm2
movss dword [ebp - 0x24], xmm2
movss dword [ebp - 0x184], xmm0
movss xmm0, dword [ebp - 0x40]
subss xmm0, dword [ebp - 0x68]
mulss xmm0, xmm0
addss xmm0, xmm1
xorps xmm1, xmm1
cvtps2pd xmm0, xmm0
ucomisd xmm1, xmm0
ja 0x1004c09c
sqrtsd xmm0, xmm0
jmp 0x1004c0a1
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sqrt_precise
xorps xmm1, xmm1
cvtsd2ss xmm1, xmm0
movss xmm0, dword [0x101bdec4]
comiss xmm0, xmm1
ja 0x1004c0c1
movss xmm0, dword [ebp - 0x184]
minss xmm0, xmm1
xorps xmm1, xmm1
cvtsi2ss xmm1, esi
addss xmm0, xmm1
subss xmm0, xmm1
xorps xmm1, xmm1
cvtsi2ss xmm1, edi
movss dword [ebp - 0x1ac], xmm0
movaps xmm0, xmm1
subss xmm0, xmm1
movss dword [ebp - 0x184], xmm0
movss xmm0, dword [ebp - 0x170]
cvtps2pd xmm0, xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sin_precise
movss xmm1, dword [ebp - 0x170]
cvtsd2ss xmm0, xmm0
movss dword [ebp - 0x180], xmm0
cvtps2pd xmm0, xmm1
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_cos_precise
cmp dword [ebp - 0x1b0], 0x32
xorps xmm1, xmm1
movss xmm4, dword [ebp - 0x180]
movss xmm2, dword [ebp - 0x184]
movaps xmm5, xmm4
mulss xmm4, dword [ebp - 0x1ac]
cvtsd2ss xmm1, xmm0
movss xmm0, dword [ebp - 0x1ac]
mulss xmm0, xmm1
mulss xmm5, xmm2
mulss xmm2, xmm1
addss xmm5, xmm0
xorps xmm0, xmm0
cvtsi2ss xmm0, esi
subss xmm4, xmm2
addss xmm4, xmm0
xorps xmm0, xmm0
cvtsi2ss xmm0, edi
movss dword [ebp - 0x180], xmm4
addss xmm5, xmm0
movss dword [ebp - 0x184], xmm5
jge 0x1004c25e
cvttss2si edi, xmm5
mov dword [ebp - 0x170], 0xb4000000
push dword [ebp - 0x170]
cvttss2si esi, xmm4
push 0x1e
push 0x18
push edi
push esi
call fcn.1012e6c0
mov eax, dword [ebp - 0x178]
mov byte [ebp - 0x16d], al
mov word [ebp - 0x170], 0xff
mov byte [ebp - 0x16e], 0
push dword [ebp - 0x170]
push 0x1e
push 0x14
push edi
push esi
call fcn.1012e6c0
mov eax, dword [ebp - 0x1a8]
push dword [eax + 0x30]
call fcn.1004c290
add esp, 0x2c
lea ecx, [ebp - 0x1f0]
push eax
call fcn.10019d80
movss xmm0, dword [ebp - 0x1b4]
lea eax, [ebp - 0x1f0]
push ecx
movss dword [esp], xmm0
movss xmm0, dword [ebp - 0x184]
subss xmm0, dword [0x101bdeb4]
push 0
push eax
push ecx
mov eax, esp
mov dword [ebp - 4], 9
mov ecx, 0x105dd37c
mov dword [eax], 0xffffffff
cvttss2si eax, xmm0
movss xmm0, dword [ebp - 0x180]
subss xmm0, dword [0x101bc1f0]
push eax
cvttss2si eax, xmm0
push eax
call fcn.10130b70
lea ecx, [ebp - 0x1f0]
call fcn.1001ae90
mov al, 1
jmp 0x1004c264
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.101a3d69
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
call fcn.10043790
int3