Function at 0x100f915e
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x80
mov edi, dword [ebp + 0x28]
mov eax, dword [ebp + 0x10]
mov esi, dword [0x1018fc64]
xor esi, ebp
mov dword [esp + 0x78], esi
xor esi, esi
dec esi
mov dword [esp + 0x64], esi
mov dword [esp + 0x60], esi
pcmpeqd xmm0, xmm0
movdqa xmmword [esp + 0x50], xmm0
cmp dword [ebp + 0xc], 1
jne 0x100f91b1
push dword [ebp + 0x20]
push eax
push dword [ebp + 8]
call fcn.100f96e6
add esp, 0xc
xor esi, esi
inc esi
jmp 0x100f96d1
mov dword [esp + 0xc], edi
mov eax, dword [ebp + 0x14]
mov edi, dword [ecx]
mov dword [esp + 0x28], edi
mov edi, dword [ecx + 0x1c]
mov dword [esp + 0x10], edi
lea ebx, [esp + 0x50]
mov dword [esp + 0x18], ecx
mov esi, edx
mov edx, ebx
lea edi, [ebp + 0x28]
push edi
push 1
push dword [ebp + 0x1c]
push eax
push eax
lea eax, [ebp + 0x10]
push eax
mov eax, dword [ebp + 0xc]
push eax
push dword [ebp + 8]
push esi
call fcn.100f9f9c
add esp, 0x24
mov eax, dword [ebx]
mov dword [esp + 0x3c], eax
mov edx, dword [ebx + 0x10]
cvtsi2ss xmm1, dword [ebx + 4]
mov eax, dword [ebx + 0x14]
cvtsi2ss xmm2, dword [ebx + 8]
movss xmm0, dword [0x1016e9a8]
mulss xmm1, xmm0
movss dword [esp + 0x20], xmm1
mulss xmm2, xmm0
cmp dword [ebp + 0xc], 2
mov dword [esp + 0x14], esi
jne 0x100f92c2
mov edi, dword [ebp + 0x10]
xor ecx, ecx
test edx, 0xffffbfff
setne cl
lea eax, [eax + ecx*8]
lea ecx, [ecx*8]
mov ebx, edx
mov edx, dword [esp + 0x18]
sub dword [edx + 0x20], eax
sub edi, ecx
mov dword [esp + 0x38], edi
cmp ebx, 0x2000
mov eax, esi
mov ecx, dword [ebp + 8]
cmovg eax, ecx
mov edi, ecx
cmovg ecx, esi
test ebx, 0xffffbfff
movss dword [esp + 0x24], xmm2
mov dword [esp + 0x34], ecx
mov dword [esp + 0x30], eax
je 0x100f9438
cmp dword [esp + 0x28], 0
je 0x100f943c
movsd xmm0, qword [eax]
movsd xmm1, qword [ecx]
shufps xmm1, xmm1, 0xe1
mulps xmm1, xmm0
movaps xmm0, xmm1
shufps xmm0, xmm1, 0x55
subss xmm1, xmm0
xorps xmm0, xmm0
xor ebx, ebx
ucomiss xmm0, xmm1
seta bl
push 1
push ebx
push dword [esp + 0x18]
call fcn.100ffd3d
add esp, 0xc
jmp 0x100f944c
mov ebx, dword [ebp + 0x10]
mov ecx, ebx
sub ecx, dword [esp + 0x5c]
mov edi, ecx
shr edi, 0x1f
add edi, ecx
sar edi, 1
cmp ebx, edi
cmovl edi, ebx
xor ecx, ecx
test edi, edi
cmovs edi, ecx
sub ebx, edi
mov ecx, dword [esp + 0x18]
mov esi, dword [ecx + 0x20]
sub esi, eax
mov dword [ecx + 0x20], esi
mov eax, dword [ebp + 0x28]
cmp edi, ebx
mov dword [esp + 0xc], eax
mov dword [esp + 0x2c], edx
mov dword [esp + 0x10], esi
jge 0x100f9397
mov ecx, dword [ebp + 0x14]
sar eax, cl
mov ecx, dword [esp + 0x18]
mov esi, dword [ebp + 8]
mov edx, esi
movaps xmm0, xmm2
push eax
xor eax, eax
push eax
push eax
mov eax, dword [ebp + 0x1c]
push eax
xor eax, eax
push eax
push dword [ebp + 0x14]
push ebx
mov eax, dword [ebp + 0xc]
push eax
call fcn.100f8dcc
add esp, 0x20
mov dword [esp + 0x28], eax
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + 0x20]
sub eax, dword [esp + 0x10]
lea edx, [eax + ebx]
cmp edx, 0x18
lea eax, [eax + ebx - 0x18]
mov edx, 0
cmovle eax, edx
cmp dword [esp + 0x2c], 0x4000
cmove eax, edx
add eax, edi
mov edi, dword [ebp + 0xc]
movss xmm0, dword [0x101349c0]
mov ebx, ecx
mov edx, dword [esp + 0x14]
push dword [esp + 0xc]
push dword [ebp + 0x24]
push dword [ebp + 0x20]
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
push dword [ebp + 0x14]
push eax
push edi
call fcn.100f8dcc
add esp, 0x20
or eax, dword [esp + 0x28]
jmp 0x100f942f
movss xmm0, dword [0x101349c0]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
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
mov eax, dword [ebp + 0xc]
push eax
movss dword [esp + 0x44], xmm2
call fcn.100f8dcc
add esp, 0x20
mov esi, dword [esp + 0x18]
mov ecx, dword [esi + 0x20]
sub ecx, dword [esp + 0x10]
lea edx, [ecx + edi]
cmp edx, 0x18
lea edi, [ecx + edi - 0x18]
mov ecx, 0
cmovle edi, ecx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x2c]
test eax, eax
cmove edi, eax
add edi, ebx
mov ecx, dword [ebp + 0x14]
mov eax, dword [esp + 0xc]
sar eax, cl
mov ebx, esi
mov ecx, esi
mov esi, dword [ebp + 8]
mov edx, esi
movss xmm0, dword [esp + 0x24]
push eax
xor eax, eax
push eax
push eax
xor eax, eax
push dword [ebp + 0x1c]
push eax
push dword [ebp + 0x14]
push edi
mov edi, dword [ebp + 0xc]
push edi
call fcn.100f8dcc
add esp, 0x20
or eax, dword [esp + 0x10]
mov dword [esp + 0xc], eax
jmp 0x100f9532
xor ebx, ebx
jmp 0x100f944c
push 1
push dword [esp + 0x14]
call fcn.100f5715
add esp, 8
mov ebx, eax
mov esi, edi
add ebx, ebx
xor edi, edi
inc edi
sub edi, ebx
movss xmm0, dword [0x101349c0]
mov ecx, dword [esp + 0x18]
mov ebx, dword [esp + 0x30]
mov edx, ebx
push dword [esp + 0xc]
push dword [ebp + 0x24]
push dword [ebp + 0x20]
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
push dword [ebp + 0x14]
push dword [esp + 0x50]
push 2
call fcn.100f8dcc
add esp, 0x20
xorps xmm0, xmm0
cvtsi2ss xmm0, edi
neg edi
xorps xmm1, xmm1
cvtsi2ss xmm1, edi
mulss xmm1, dword [ebx + 4]
mov ecx, dword [esp + 0x34]
movss dword [ecx], xmm1
mulss xmm0, dword [ebx]
mov dword [esp + 0xc], eax
movss dword [ecx + 4], xmm0
mov ebx, dword [esp + 0x18]
cmp dword [ebx + 4], 0
je 0x100f952f
mov eax, dword [esp + 0x14]
movss xmm0, dword [eax]
movss xmm1, dword [esp + 0x20]
mulss xmm0, xmm1
movss dword [eax], xmm0
movss xmm0, dword [eax + 4]
mulss xmm0, xmm1
movss dword [eax + 4], xmm0
movss xmm0, dword [esi]
movss xmm1, dword [esp + 0x24]
mulss xmm0, xmm1
movss dword [esi], xmm0
mulss xmm1, dword [esi + 4]
movss dword [esi + 4], xmm1
movss xmm1, dword [eax]
movaps xmm2, xmm1
subss xmm2, xmm0
movss dword [eax], xmm2
addss xmm1, dword [esi]
movss dword [esi], xmm1
movss xmm0, dword [eax + 4]
movaps xmm1, xmm0
subss xmm1, dword [esi + 4]
movss dword [eax + 4], xmm1
addss xmm0, dword [esi + 4]
movss dword [esi + 4], xmm0
mov edi, dword [ebp + 0xc]
cmp dword [ebx + 4], 0
je 0x100f96cd
cmp edi, 2
je 0x100f96a7
xor eax, eax
mov ecx, edi
lea edi, [esp + 0x74]
mov dword [edi], eax
lea ebx, [esp + 0x70]
mov dword [ebx], eax
push ebx
push edi
push ecx
push esi
push dword [esp + 0x24]
push esi
call fcn.100f0311
movss xmm5, dword [esp + 0x38]
add esp, 0x18
movss xmm1, dword [edi]
mulss xmm1, xmm5
movss dword [edi], xmm1
movaps xmm0, xmm5
mulss xmm0, xmm5
addss xmm0, dword [ebx]
addss xmm1, xmm1
movaps xmm3, xmm1
addss xmm3, xmm0
movss xmm2, dword [0x10174624]
ucomiss xmm2, xmm3
ja 0x100f95ba
subss xmm0, xmm1
ucomiss xmm2, xmm0
ja 0x100f95ba
cvtss2sd xmm0, xmm0
xorps xmm2, xmm2
ucomisd xmm0, xmm2
jb 0x100f95d7
xorps xmm1, xmm1
sqrtsd xmm1, xmm0
jmp 0x100f9606
mov edi, dword [ebp + 0xc]
lea eax, [edi*4]
push eax
push dword [esp + 0x18]
push esi
call fcn.101053c0
add esp, 0xc
jmp 0x100f96a7
sub esp, 8
movsd qword [esp], xmm0
movss dword [esp + 0x20], xmm3
call fcn.101151b0
xorps xmm2, xmm2
movss xmm3, dword [esp + 0x20]
movss xmm5, dword [esp + 0x28]
add esp, 8
fstp qword [esp + 0x48]
movsd xmm1, qword [esp + 0x48]
mov edi, dword [ebp + 0xc]
xorps xmm0, xmm0
cvtss2sd xmm0, xmm3
ucomisd xmm0, xmm2
mov ecx, dword [esp + 0x14]
jb 0x100f9623
xorps xmm2, xmm2
sqrtsd xmm2, xmm0
jmp 0x100f9653
sub esp, 8
movsd qword [esp], xmm0
movsd qword [esp + 0x20], xmm1
call fcn.101151b0
movsd xmm1, qword [esp + 0x20]
movss xmm5, dword [esp + 0x28]
mov ecx, dword [esp + 0x1c]
add esp, 8
fstp qword [esp + 0x40]
movsd xmm2, qword [esp + 0x40]
test edi, edi
jle 0x100f96a7
xorps xmm3, xmm3
cvtsd2ss xmm3, xmm1
movss xmm0, dword [0x101349c0]
movaps xmm1, xmm0
divss xmm1, xmm3
cvtsd2ss xmm2, xmm2
divss xmm0, xmm2
xor eax, eax
movss xmm2, dword [ecx + eax*4]
mulss xmm2, xmm5
movss xmm3, dword [esi + eax*4]
movaps xmm4, xmm2
subss xmm4, xmm3
mulss xmm4, xmm1
movss dword [ecx + eax*4], xmm4
addss xmm2, xmm3
mulss xmm2, xmm0
movss dword [esi + eax*4], xmm2
inc eax
cmp edi, eax
jne 0x100f9677
cmp dword [esp + 0x3c], 0
je 0x100f96cd
test edi, edi
jle 0x100f96cd
xor eax, eax
movaps xmm0, xmmword [0x101349b0]
movss xmm1, dword [esi + eax*4]
xorps xmm1, xmm0
movss dword [esi + eax*4], xmm1
inc eax
cmp edi, eax
jne 0x100f96bb
mov esi, dword [esp + 0xc]
mov ecx, dword [esp + 0x78]
xor ecx, ebp
call fcn.10102288
mov eax, esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret