Function at 0x10293640
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 [0x10305014]
xor eax, ebp
mov dword [esi + 0x58], eax
lea ebx, [ecx*4 + 0xc]
mov eax, ebx
call fcn.101308a0
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.10132b90
add esp, 0xc
mov eax, ebx
mov ecx, ebx
mov dword [esi + 0x40], ebx
call fcn.101308a0
mov ebx, esp
and ebx, 0xfffffff0
mov esp, ebx
mov eax, ecx
call fcn.101308a0
mov eax, esp
and eax, 0xfffffff0
mov esp, eax
push ecx
push edi
mov dword [esi + 0x1c], eax
push eax
call fcn.10132b90
add esp, 0xc
mov ecx, dword [ebp + 0x14]
lea eax, [ecx*4]
mov dword [esi + 0x20], eax
xor edi, edi
cmp dword [esi + 0x40], eax
mov eax, 0xc
cmovbe eax, edi
lea ecx, [ebx + ecx*4]
mov dword [esi + 0x40], ecx
push eax
mov eax, 0xff
push eax
push ecx
call fcn.10132b90
add esp, 0xc
push dword [esi + 0x20]
push dword [ebp + 8]
push ebx
call fcn.10132610
mov eax, dword [esi + 0x10]
mov edx, dword [ebp + 0x14]
add esp, 0xc
mov ecx, dword [esi + 0x40]
mov dword [ecx + 8], edi
mov dword [ecx + 4], edi
mov dword [ecx], edi
test edx, edx
jle 0x1029376a
lea ecx, [edx*4 - 4]
and ecx, 0xfffffff0
add ecx, 0x10
mov dword [esi + 0x20], ecx
push ecx
push edi
push eax
call fcn.10132b90
add esp, 0xc
push dword [esi + 0x20]
push edi
push dword [ebp + 0xc]
call fcn.10132b90
mov edx, dword [ebp + 0x14]
add esp, 0xc
xorps xmm1, xmm1
movaps xmm2, xmmword [0x102d7c20]
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 0x10293748
jmp 0x1029376d
xorps xmm0, xmm0
lea edi, [edx + 3]
mov eax, edx
sar eax, 1
xorps xmm5, xmm5
mov ecx, dword [ebp + 0x10]
cmp eax, ecx
mov dword [esi + 0x20], edi
jge 0x102937aa
movaps xmm1, xmm0
shufps xmm1, xmm0, 0x4e
addps xmm1, xmm0
haddps xmm1, xmm1
ucomiss xmm1, dword [0x102fa4f8]
jbe 0x102937b8
movss xmm0, dword [0x102d7d54]
ucomiss xmm0, xmm1
jbe 0x102937b8
unpcklps xmm1, xmm1
jmp 0x102937ed
xorps xmm3, xmm3
mov edi, dword [ebp + 0xc]
mov dword [esi + 0xc], ecx
jmp 0x1029389e
mov dword [ebx], 0x3f800000
lea eax, [ebx + 4]
cmp edx, 3
mov ecx, 2
cmovge ecx, edx
lea ecx, [ecx*4 - 4]
push ecx
push 0
push eax
mov edi, edx
call fcn.10132b90
mov ecx, dword [ebp + 0x10]
mov edx, edi
add esp, 0xc
movaps xmm1, xmmword [0x102fbf80]
mov edi, dword [ebp + 0xc]
test edx, edx
jle 0x1029385b
rcpps xmm0, xmm1
xorps xmm1, xmm1
cvtsi2sd xmm1, ecx
addsd xmm1, qword [0x102fbf90]
xorps xmm3, xmm3
cvtsd2ss xmm3, xmm1
shufps xmm3, xmm3, 0
mulps xmm3, xmm0
xorps xmm2, xmm2
xorps xmm1, xmm1
xor eax, eax
xorps xmm0, xmm0
mov ecx, dword [esi + 0x10]
movaps xmm4, xmmword [ebx + eax*4]
movaps xmm5, xmm3
mulps xmm5, xmm4
cvttps2dq xmm5, xmm5
paddd xmm1, xmm5
movdqu xmmword [edi + eax*4], xmm5
cvtdq2ps xmm5, xmm5
mulps xmm4, xmm5
addps xmm0, xmm4
movaps xmm4, xmm5
mulps xmm4, xmm5
addps xmm2, xmm4
addps xmm5, xmm5
movaps xmmword [ecx + eax*4], xmm5
add eax, 4
cmp eax, edx
jl 0x10293822
jmp 0x10293864
xorps xmm1, xmm1
xorps xmm0, xmm0
xorps xmm2, xmm2
pshufd xmm3, xmm1, 0x4e
paddd xmm3, xmm1
pshufd xmm1, xmm3, 0x55
paddd xmm1, xmm3
movaps xmm5, xmm0
unpckhpd xmm5, xmm0
addps xmm5, xmm0
haddps xmm5, xmm5
movd eax, xmm1
mov ecx, dword [ebp + 0x10]
sub ecx, eax
mov dword [esi + 0xc], ecx
movaps xmm3, xmm2
unpckhpd xmm3, xmm2
addps xmm3, xmm2
haddps xmm3, xmm3
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 0x1029392e
xorps xmm0, xmm0
cvtsi2ss xmm0, ecx
movaps xmm1, xmm0
mulss xmm1, xmm0
addss xmm3, xmm1
mulss xmm0, dword [eax]
addss xmm3, xmm0
add dword [edi], ecx
test edx, edx
mov ecx, dword [esi + 0x1c]
jle 0x1029390e
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 0x102938f0
movss dword [esi + 0x3c], xmm3
fld dword [esi + 0x3c]
fstp xword [esi + 0x10]
mov ecx, dword [esi + 0x58]
xor ecx, ebp
call fcn.10130483
fld xword [esi + 0x10]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
test ecx, ecx
jle 0x102938e7
xor eax, eax
movdqa xmm4, xmmword [0x102fbfb0]
addss xmm3, dword [0x10299218]
test edx, edx
jle 0x10293a14
movaps xmmword [esi + 0x40], xmm5
movaps xmm1, xmm5
shufps xmm1, xmm5, 0
movaps xmmword [esi + 0x20], xmm3
movaps xmm0, xmm3
shufps xmm0, xmm3, 0
xorps xmm7, xmm7
pxor xmm6, xmm6
xor ecx, ecx
movaps xmm2, xmmword [0x102fbfa0]
mov edi, dword [esi + 0x10]
movaps xmm3, xmmword [ebx + ecx*4]
addps xmm3, xmm1
movaps xmm5, xmmword [edi + ecx*4]
addps xmm5, xmm0
rsqrtps xmm5, xmm5
mulps xmm5, xmm3
movaps xmm3, xmm7
cmpltps xmm3, xmm5
andps xmm3, xmm2
pmaxsw xmm6, xmm3
maxps xmm7, xmm5
paddd xmm2, xmm4
add ecx, 4
cmp ecx, edx
jl 0x10293975
movaps xmm3, xmmword [esi + 0x20]
movaps xmm5, xmmword [esi + 0x40]
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 xmm5, dword [ebx + ecx*4]
mov edi, dword [esi + 0x10]
movss xmm0, dword [edi + ecx*4]
addss xmm3, xmm0
addss xmm0, dword [0x102c44f8]
movss dword [edi + ecx*4], xmm0
mov edi, dword [ebp + 0xc]
inc dword [edi + ecx*4]
inc eax
cmp eax, dword [esi + 0xc]
jne 0x1029393c
jmp 0x102938e7
pxor xmm6, xmm6
xorps xmm7, xmm7
jmp 0x102939ad