Function at 0x100fffec
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x60
mov esi, esp
mov ecx, dword [ebp + 0x14]
mov eax, dword [0x1018fc64]
xor eax, ebp
mov dword [esi + 0x58], eax
lea ebx, [ecx*4 + 0xc]
mov eax, ebx
call fcn.101027c0
mov eax, esp
and eax, 0xfffffff0
mov dword [esi + 0x10], eax
mov esp, eax
mov ecx, 0xff
push ebx
push ecx
mov edi, 0xff
push eax
call fcn.10105ec0
add esp, 0xc
mov eax, ebx
mov ecx, ebx
mov dword [esi + 0x20], ebx
call fcn.101027c0
mov ebx, esp
and ebx, 0xfffffff0
mov esp, ebx
mov eax, ecx
call fcn.101027c0
mov eax, esp
and eax, 0xfffffff0
mov esp, eax
push ecx
push edi
mov dword [esi + 0x1c], eax
push eax
call fcn.10105ec0
add esp, 0xc
mov ecx, dword [ebp + 0x14]
lea edx, [ecx*4]
mov dword [esi + 0x40], edx
xor edi, edi
cmp dword [esi + 0x20], edx
mov eax, 0xc
cmovbe eax, edi
lea ecx, [ebx + ecx*4]
mov dword [esi + 0xc], ecx
push eax
mov eax, 0xff
push eax
push ecx
call fcn.10105ec0
add esp, 0xc
push dword [esi + 0x40]
push dword [ebp + 8]
push ebx
call fcn.101053c0
mov eax, dword [esi + 0x10]
mov edx, dword [ebp + 0x14]
add esp, 0xc
mov ecx, dword [esi + 0xc]
mov dword [ecx + 8], edi
mov dword [ecx + 4], edi
mov dword [ecx], edi
test edx, edx
jle 0x1010010f
mov ecx, dword [esi + 0x20]
and ecx, 0xfffffff0
mov dword [esi + 0x20], ecx
push ecx
push edi
push eax
call fcn.10105ec0
add esp, 0xc
push dword [esi + 0x20]
push edi
push dword [ebp + 0xc]
call fcn.10105ec0
mov edx, dword [ebp + 0x14]
add esp, 0xc
xorps xmm1, xmm1
movaps xmm2, xmmword [0x101658e0]
xorps xmm0, xmm0
mov eax, dword [esi + 0x1c]
movaps xmm3, xmmword [ebx + edi*4]
movaps xmm4, xmm3
cmpltps xmm4, xmm1
andps xmm3, xmm2
addps xmm0, xmm3
movaps xmmword [ebx + edi*4], xmm3
movaps xmmword [eax + edi*4], xmm4
add edi, 4
cmp edi, edx
jl 0x101000ed
jmp 0x10100112
xorps xmm0, xmm0
lea eax, [edx + 3]
mov dword [esi + 0x20], eax
mov eax, edx
sar eax, 1
xorps xmm3, xmm3
mov ecx, dword [ebp + 0x10]
cmp eax, ecx
jge 0x101001fb
movaps xmm1, xmm0
shufps xmm1, xmm0, 0x4e
addps xmm1, xmm0
movaps xmm0, xmm1
shufps xmm0, xmm1, 0xb1
addps xmm0, xmm1
ucomiss xmm0, dword [0x10174638]
mov edi, dword [ebp + 0xc]
jbe 0x10100157
movss xmm1, dword [0x1017479c]
ucomiss xmm1, xmm0
ja 0x1010018f
mov dword [ebx], 0x3f800000
cmp edx, 2
mov eax, 2
cmovg eax, edx
lea ecx, [ebx + 4]
lea eax, [eax*4 - 4]
push eax
push 0
push ecx
mov edi, edx
call fcn.10105ec0
mov ecx, dword [ebp + 0x10]
mov edx, edi
mov edi, dword [ebp + 0xc]
add esp, 0xc
movaps xmm0, xmmword [0x101403f0]
test edx, edx
jle 0x10100206
rcpps xmm0, xmm0
xorps xmm1, xmm1
cvtsi2sd xmm1, ecx
addsd xmm1, qword [0x101760b8]
xorps xmm3, xmm3
cvtsd2ss xmm3, xmm1
shufps xmm3, xmm3, 0
mulps xmm3, xmm0
xorps xmm0, xmm0
xorps xmm2, xmm2
xor eax, eax
xorpd xmm1, xmm1
mov ecx, dword [esi + 0x10]
movaps xmm4, xmmword [ebx + eax*4]
movaps xmm5, xmm3
mulps xmm5, xmm4
cvttps2dq xmm5, xmm5
paddd xmm2, xmm5
movdqu xmmword [edi + eax*4], xmm5
cvtdq2ps xmm5, xmm5
mulps xmm4, xmm5
addps xmm1, xmm4
movaps xmm4, xmm5
mulps xmm4, xmm5
addps xmm0, xmm4
addps xmm5, xmm5
movaps xmmword [ecx + eax*4], xmm5
add eax, 4
cmp eax, edx
jl 0x101001c2
jmp 0x1010020f
xorps xmm2, xmm2
mov edi, dword [ebp + 0xc]
mov dword [esi + 0xc], ecx
jmp 0x10100257
xorps xmm2, xmm2
xorps xmm1, xmm1
xorps xmm0, xmm0
pshufd xmm3, xmm2, 0x4e
paddd xmm3, xmm2
pshufd xmm2, xmm3, 0x55
paddd xmm2, xmm3
movd eax, xmm2
mov ecx, dword [ebp + 0x10]
sub ecx, eax
mov dword [esi + 0xc], ecx
movaps xmm2, xmm1
unpckhpd xmm2, xmm1
addps xmm2, xmm1
movaps xmm3, xmm2
shufps xmm3, xmm2, 0x55
addss xmm3, xmm2
movaps xmm1, xmm0
unpckhpd xmm1, xmm0
addps xmm1, xmm0
movaps xmm2, xmm1
shufps xmm2, xmm1, 0x55
addss xmm2, xmm1
mov eax, 0xc2c80000
mov dword [ebx + edx*4 + 8], eax
mov dword [ebx + edx*4 + 4], eax
mov dword [ebx + edx*4], eax
mov eax, 0x42c80000
mov ecx, dword [esi + 0x10]
mov dword [ecx + edx*4 + 8], eax
mov dword [ecx + edx*4 + 4], eax
mov dword [ecx + edx*4], eax
mov eax, ecx
mov ecx, dword [esi + 0xc]
cmp ecx, dword [esi + 0x20]
jle 0x101002a5
xorps xmm0, xmm0
cvtsi2ss xmm0, ecx
movaps xmm1, xmm0
mulss xmm1, xmm0
addss xmm2, xmm1
mulss xmm0, dword [eax]
addss xmm2, xmm0
add dword [edi], ecx
jmp 0x1010038f
test ecx, ecx
jle 0x1010038f
xor eax, eax
movdqa xmm4, xmmword [0x1013ffd0]
addss xmm2, dword [0x101349c0]
test edx, edx
jle 0x10100326
movaps xmmword [esi + 0x40], xmm3
movaps xmm1, xmm3
shufps xmm1, xmm3, 0
movaps xmmword [esi + 0x20], xmm2
movaps xmm0, xmm2
shufps xmm0, xmm2, 0
xorps xmm7, xmm7
pxor xmm6, xmm6
xor ecx, ecx
movaps xmm5, xmmword [0x1013ffa0]
mov edi, dword [esi + 0x10]
movaps xmm3, xmmword [ebx + ecx*4]
addps xmm3, xmm1
movaps xmm2, xmmword [edi + ecx*4]
addps xmm2, xmm0
rsqrtps xmm2, xmm2
mulps xmm2, xmm3
movaps xmm3, xmm7
cmpltps xmm3, xmm2
andps xmm3, xmm5
pmaxsw xmm6, xmm3
maxps xmm7, xmm2
paddd xmm5, xmm4
add ecx, 4
cmp ecx, edx
jl 0x101002ec
movaps xmm2, xmmword [esi + 0x20]
movaps xmm3, xmmword [esi + 0x40]
jmp 0x1010032d
pxor xmm6, xmm6
xorps xmm7, xmm7
movaps xmm0, xmm7
shufps xmm0, xmm7, 0x4e
movaps xmm1, xmm7
maxps xmm1, xmm0
movaps xmm0, xmm1
shufps xmm0, xmm1, 0xb1
maxps xmm1, xmm0
cmpeqps xmm1, xmm7
andps xmm1, xmm6
pshufd xmm0, xmm1, 0xee
pmaxsw xmm0, xmm1
pshufd xmm1, xmm0, 0xe1
pmaxsw xmm1, xmm0
movd ecx, xmm1
addss xmm3, dword [ebx + ecx*4]
mov edi, dword [esi + 0x10]
movss xmm0, dword [edi + ecx*4]
addss xmm2, xmm0
addss xmm0, dword [0x10149f54]
movss dword [edi + ecx*4], xmm0
mov edi, dword [ebp + 0xc]
inc dword [edi + ecx*4]
inc eax
cmp eax, dword [esi + 0xc]
jne 0x101002b7
test edx, edx
mov ecx, dword [esi + 0x1c]
jle 0x101003b6
xor eax, eax
movdqu xmm0, xmmword [edi + eax*4]
movdqa xmm1, xmmword [ecx + eax*4]
paddd xmm0, xmm1
pxor xmm0, xmm1
movdqu xmmword [edi + eax*4], xmm0
add eax, 4
cmp eax, edx
jl 0x10100398
movss dword [esi + 0x3c], xmm2
fld dword [esi + 0x3c]
fstp xword [esi + 0x10]
mov ecx, dword [esi + 0x58]
xor ecx, ebp
call fcn.10102288
fld xword [esi + 0x10]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret