Function at 0x101d6d50
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x70
mov edi, edx
mov edx, dword [ebp + 0x28]
mov eax, dword [0x1026f864]
mov ebx, dword [ebp + 0xc]
mov esi, dword [ebp + 8]
xor eax, ebp
cmp ebx, 1
mov dword [esp + 0x68], eax
mov dword [esp + 4], edi
mov dword [esp + 0x10], ecx
mov eax, dword [ecx]
mov dword [esp + 0x1c], eax
mov eax, dword [ecx + 0x1c]
mov dword [esp + 0xc], eax
jne 0x101d6ddd
cmp esi, 1
mov edi, 2
sbb edi, 0
xor eax, eax
inc eax
cmp edi, 1
cmovbe edi, eax
xor ebx, ebx
cmp dword [ecx + 0x20], 8
mov dword [esp], eax
jl 0x101d7073
cmp dword [esp + 0x1c], 0
je 0x101d705b
mov eax, dword [esp + 4]
xorps xmm0, xmm0
xor ebx, ebx
ucomiss xmm0, dword [eax]
seta bl
push 1
push ebx
push dword [esp + 0x14]
call fcn.101de100
add esp, 0xc
jmp 0x101d706b
mov dword [esp + 0x30], edx
lea edx, [esp + 0x48]
lea eax, [ebp + 0x28]
push eax
push 1
push dword [ebp + 0x1c]
mov eax, dword [ebp + 0x14]
push eax
push eax
lea eax, [ebp + 0x10]
push eax
push ebx
push esi
push edi
call fcn.101d7d50
add esp, 0x24
lea edx, [esp + 0x48]
movss xmm0, dword [0x1024eafc]
cmp ebx, 2
mov eax, dword [edx]
cvtsi2ss xmm1, dword [edx + 4]
cvtsi2ss xmm2, dword [edx + 8]
mov ecx, dword [edx + 0x10]
mov dword [esp + 0x34], eax
mov eax, dword [edx + 0x14]
lea edx, [ebp + 0x10]
mulss xmm1, xmm0
mulss xmm2, xmm0
mov dword [esp + 0x28], ecx
mov edx, dword [edx]
movss dword [esp + 0x20], xmm1
mov dword [esp + 8], eax
jne 0x101d6ee9
mov eax, ecx
xor ecx, ecx
mov dword [esp], edx
test eax, 0xffffbfff
mov eax, dword [esp + 8]
setne cl
lea edx, [ecx*8]
sub dword [esp], edx
lea eax, [eax + ecx*8]
mov ecx, dword [esp + 0x10]
sub dword [ecx + 0x20], eax
mov eax, edi
movss dword [esp + 0x24], xmm2
mov edx, dword [esp + 0x28]
cmp edx, 0x2000
cmovg eax, esi
mov dword [esp + 8], eax
mov eax, esi
cmovg eax, edi
test edx, 0xffffbfff
mov dword [esp + 0x2c], eax
je 0x101d710e
cmp dword [esp + 0x1c], 0
je 0x101d7112
mov ecx, dword [esp + 8]
movsd xmm1, qword [eax]
movsd xmm0, qword [ecx]
shufps xmm1, xmm1, 0xe1
xor ecx, ecx
mulps xmm1, xmm0
movaps xmm0, xmm1
shufps xmm0, xmm1, 0xe5
subss xmm1, xmm0
xorps xmm0, xmm0
ucomiss xmm0, xmm1
seta cl
push 1
push ecx
mov edi, ecx
push dword [esp + 0x14]
call fcn.101de100
mov eax, edi
add esp, 0xc
jmp 0x101d7120
mov ecx, edx
sub ecx, dword [esp + 0x54]
mov edi, ecx
shr edi, 0x1f
add edi, ecx
sar edi, 1
cmp edx, edi
cmovle edi, edx
xor ecx, ecx
test edi, edi
cmovs edi, ecx
mov ecx, dword [esp + 0x10]
sub edx, edi
mov dword [esp], edx
mov eax, dword [ecx + 0x20]
sub eax, dword [esp + 8]
cmp edi, edx
mov edx, ecx
mov dword [ecx + 0x20], eax
mov dword [esp + 0x1c], eax
mov eax, dword [ebp + 0x28]
mov dword [esp + 0xc], eax
jge 0x101d6fb2
mov ecx, dword [ebp + 0x14]
sar eax, cl
mov ecx, edx
mov edx, esi
movaps xmm0, xmm2
push eax
mov eax, 0
push eax
push eax
mov eax, dword [ebp + 0x1c]
push eax
mov eax, 0
push eax
push dword [ebp + 0x14]
push dword [esp + 0x18]
push ebx
call fcn.101d6600
add esp, 0x20
mov dword [esp + 8], eax
mov eax, dword [esp + 0x10]
mov edx, dword [esp]
movss xmm0, dword [0x10210930]
mov eax, dword [eax + 0x20]
sub eax, dword [esp + 0x1c]
lea ecx, [eax + edx]
lea eax, [eax + edx - 0x18]
cmp ecx, 0x18
mov ecx, 0
cmovle eax, ecx
cmp dword [esp + 0x28], 0x4000
cmove eax, ecx
mov ecx, dword [esp + 0x10]
add eax, edi
mov edi, dword [esp + 4]
mov edx, edi
push dword [esp + 0xc]
push dword [ebp + 0x24]
push dword [ebp + 0x20]
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
jmp 0x101d703e
mov ecx, edx
movss xmm0, dword [0x10210930]
mov edx, dword [esp + 4]
push eax
push dword [ebp + 0x24]
push dword [ebp + 0x20]
mov eax, dword [ebp + 0x1c]
push eax
push dword [ebp + 0x18]
mov eax, dword [ebp + 0x14]
push eax
push edi
push ebx
movss dword [esp + 0x44], xmm2
call fcn.101d6600
add esp, 0x20
mov dword [esp + 8], eax
mov eax, dword [esp + 0x10]
movss xmm0, dword [esp + 0x24]
mov edx, esi
mov eax, dword [eax + 0x20]
sub eax, dword [esp + 0x1c]
lea ecx, [eax + edi]
lea eax, [eax + edi - 0x18]
mov edi, dword [esp + 0xc]
cmp ecx, 0x18
mov ecx, 0
cmovle eax, ecx
mov ecx, dword [esp + 0x28]
test ecx, ecx
cmove eax, ecx
mov ecx, dword [ebp + 0x14]
sar edi, cl
mov ecx, dword [esp + 0x10]
add eax, dword [esp]
push edi
mov edi, 0
push edi
mov edi, 0
push edi
push dword [ebp + 0x1c]
mov edi, 0
push edi
mov edi, dword [esp + 0x18]
push dword [ebp + 0x14]
push eax
push ebx
call fcn.101d6600
mov ecx, dword [esp + 0x30]
add esp, 0x20
or eax, dword [esp + 8]
mov dword [esp], eax
jmp 0x101d7208
push 1
push dword [esp + 0x10]
call fcn.101d2d60
add esp, 8
mov ebx, eax
mov ecx, dword [esp + 0x10]
add dword [ecx + 0x20], 0xfffffff8
cmp dword [ecx + 4], 0
je 0x101d7091
xor eax, eax
test ebx, ebx
mov edx, dword [esp + 4]
sete al
movss xmm0, dword [eax*4 + 0x10254908]
movss dword [edx], xmm0
test esi, esi
je 0x101d70f6
dec edi
xor ebx, ebx
cmp dword [ecx + 0x20], 8
jl 0x101d70d9
cmp dword [esp + 0x1c], 0
je 0x101d70c1
xorps xmm0, xmm0
xor ebx, ebx
ucomiss xmm0, dword [esi]
seta bl
push 1
push ebx
push dword [esp + 0x14]
call fcn.101de100
add esp, 0xc
jmp 0x101d70d1
push 1
push dword [esp + 0x10]
call fcn.101d2d60
add esp, 8
mov ebx, eax
mov ecx, dword [esp + 0x10]
add dword [ecx + 0x20], 0xfffffff8
cmp dword [ecx + 4], 0
je 0x101d70f3
xor eax, eax
test ebx, ebx
sete al
movss xmm0, dword [eax*4 + 0x10254908]
movss dword [esi], xmm0
dec edi
jne 0x101d7096
mov ecx, dword [ebp + 0x20]
test ecx, ecx
je 0x101d7397
mov eax, dword [esp + 4]
mov eax, dword [eax]
mov dword [ecx], eax
jmp 0x101d7397
xor eax, eax
jmp 0x101d7124
push 1
push dword [esp + 0x10]
call fcn.101d2d60
add esp, 8
mov ecx, dword [esp + 0x10]
movss xmm0, dword [0x10210930]
mov edx, dword [esp + 8]
add eax, eax
xor edi, edi
inc edi
sub edi, eax
push dword [esp + 0x30]
push dword [ebp + 0x24]
push dword [ebp + 0x20]
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
push dword [ebp + 0x14]
push dword [esp + 0x18]
push 2
call fcn.101d6600
mov ecx, dword [esp + 0x30]
add esp, 0x20
mov edx, dword [esp + 8]
xorps xmm0, xmm0
cvtsi2ss xmm0, edi
neg edi
mov dword [esp], eax
mov eax, dword [esp + 0x2c]
xorps xmm1, xmm1
cvtsi2ss xmm1, edi
mulss xmm1, dword [edx + 4]
movss dword [eax], xmm1
mulss xmm0, dword [edx]
movss dword [eax + 4], xmm0
cmp dword [ecx + 4], 0
je 0x101d7204
mov edi, dword [esp + 4]
movss xmm1, dword [esp + 0x20]
movss xmm0, dword [edi]
mulss xmm0, xmm1
movss dword [edi], xmm0
movss xmm0, dword [edi + 4]
mulss xmm0, xmm1
movss xmm1, dword [esp + 0x24]
movss dword [edi + 4], xmm0
movss xmm0, dword [esi]
mulss xmm0, xmm1
movss dword [esi], xmm0
mulss xmm1, dword [esi + 4]
movss dword [esi + 4], xmm1
movss xmm1, dword [edi]
movaps xmm2, xmm1
subss xmm2, xmm0
movss dword [edi], xmm2
addss xmm1, dword [esi]
movss dword [esi], xmm1
movss xmm0, dword [edi + 4]
movaps xmm1, xmm0
subss xmm1, dword [esi + 4]
movss dword [edi + 4], xmm1
addss xmm0, dword [esi + 4]
movss dword [esi + 4], xmm0
jmp 0x101d7208
mov edi, dword [esp + 4]
cmp dword [ecx + 4], 0
je 0x101d7397
cmp ebx, 2
je 0x101d7374
mov ecx, edi
lea edx, [esp + 0x60]
xor eax, eax
lea edi, [esp + 0x64]
mov dword [edi], eax
mov dword [edx], eax
push edx
push edi
push ebx
push esi
push ecx
push esi
call fcn.101cd160
movss xmm5, dword [esp + 0x38]
add esp, 0x18
movss xmm1, dword [edi]
movaps xmm0, xmm5
lea eax, [esp + 0x60]
movss xmm2, dword [0x10254910]
mulss xmm0, xmm5
addss xmm0, dword [eax]
mulss xmm1, xmm5
movss dword [edi], xmm1
addss xmm1, xmm1
movaps xmm3, xmm1
addss xmm3, xmm0
ucomiss xmm2, xmm3
ja 0x101d7291
subss xmm0, xmm1
ucomiss xmm2, xmm0
ja 0x101d7291
cvtss2sd xmm0, xmm0
xorps xmm2, xmm2
ucomisd xmm0, xmm2
jb 0x101d72ab
xorps xmm1, xmm1
sqrtsd xmm1, xmm0
jmp 0x101d72da
lea eax, [ebx*4]
push eax
push dword [esp + 8]
push esi
call fcn.101e35e0
add esp, 0xc
jmp 0x101d7374
sub esp, 8
movsd qword [esp], xmm0
movss dword [esp + 0x18], xmm3
call fcn.101f2770
movss xmm3, dword [esp + 0x18]
movss xmm5, dword [esp + 0x28]
xorps xmm2, xmm2
add esp, 8
fstp qword [esp + 0x40]
movsd xmm1, qword [esp + 0x40]
mov edi, dword [esp + 4]
xorps xmm0, xmm0
cvtss2sd xmm0, xmm3
ucomisd xmm0, xmm2
jb 0x101d72f4
xorps xmm2, xmm2
sqrtsd xmm2, xmm0
jmp 0x101d7320
sub esp, 8
movsd qword [esp], xmm0
movsd qword [esp + 0x18], xmm1
call fcn.101f2770
movsd xmm1, qword [esp + 0x18]
movss xmm5, dword [esp + 0x28]
add esp, 8
fstp qword [esp + 0x38]
movsd xmm2, qword [esp + 0x38]
test ebx, ebx
jle 0x101d7374
movss xmm0, dword [0x10210930]
xorps xmm3, xmm3
cvtsd2ss xmm3, xmm1
cvtsd2ss xmm2, xmm2
xor eax, eax
movaps xmm1, xmm0
divss xmm0, xmm2
divss xmm1, xmm3
movss xmm2, dword [edi + eax*4]
movss xmm3, dword [esi + eax*4]
mulss xmm2, xmm5
movaps xmm4, xmm2
addss xmm2, xmm3
subss xmm4, xmm3
mulss xmm2, xmm0
mulss xmm4, xmm1
movss dword [edi + eax*4], xmm4
movss dword [esi + eax*4], xmm2
inc eax
cmp ebx, eax
jne 0x101d7344
cmp dword [esp + 0x34], 0
je 0x101d7397
test ebx, ebx
jle 0x101d7397
movaps xmm0, xmmword [0x10210920]
movss xmm1, dword [esi]
xorps xmm1, xmm0
movss dword [esi], xmm1
add esi, 4
dec ebx
jne 0x101d7386
mov ecx, dword [esp + 0x68]
xor ecx, ebp
call fcn.101e05ab
mov eax, dword [esp]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret