Function at 0x40c754
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x9c
mov edx, dword [ebp + 0x14]
mov ebx, dword [ebp + 0x10]
mov edi, dword [edx]
lea eax, [edi*4]
cmp eax, dword [ebp + 8]
jl 0x40cb14
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 4]
mov dword [ebp - 0x20], eax
shl eax, 2
cmp eax, dword [ebp + 8]
jge 0x40c7b4
mov edx, dword [ebp + 8]
mov esi, dword [ebp + 0x14]
mov eax, dword [ebp + 0x18]
sar edx, 2
mov dword [ebp - 0x20], edx
lea ecx, [eax + edi*4]
mov dword [esi + 4], edx
dec edx
jg 0x40c7fc
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [ebp + 0xc]
test ecx, ecx
js 0x40c8e4
cmp dword [ebp + 8], 4
jg 0x40cb3c
je 0x40cd43
movss xmm6, dword [ebx]
movss xmm3, dword [ebx + 4]
movaps xmm2, xmm6
subss xmm2, xmm3
movss dword [ebx + 4], xmm2
addss xmm6, xmm3
movss dword [ebx], xmm6
add esp, 0x9c
pop ebx
pop esi
pop edi
pop ebp
ret
mov edx, dword [ebp + 8]
mov eax, 1
sar edx, 3
mov dword [ebp - 0x90], edx
cmp eax, edx
fild dword [ebp - 0x90]
fdivr qword [0x7d5400]
fstp dword [ebp - 0x1c]
movss xmm1, dword [ebp - 0x1c]
fild dword [ebp - 0x90]
movss dword [ebp - 0x8c], xmm1
fld dword [ebp - 0x8c]
fmulp st(1)
fcos
fstp dword [ebp - 0x1c]
movss xmm0, dword [ebp - 0x1c]
movss dword [ecx], xmm0
mulss xmm0, dword [0x7d5408]
movss dword [ecx + edx*4], xmm0
jge 0x40c7b4
fld dword [0x7d5408]
prefetcht0 byte [ecx + 4]
prefetcht0 byte [ecx + 0x24]
mov esi, dword [ebp - 0x20]
prefetcht0 byte [ecx + 0x44]
prefetcht0 byte [ecx + 0x64]
prefetcht0 byte [ecx + 0x84]
prefetcht0 byte [ecx + 0xa4]
lea edx, [ecx + esi*4 - 4]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
push eax
prefetcht0 byte [ecx + eax*4 + 0xc0]
fild dword [esp]
add esp, 4
movss dword [ebp - 0x8c], xmm1
fld dword [ebp - 0x8c]
fmulp st(1)
fld st(0)
fcos
fxch st(1)
fsin
fxch st(1)
fmul st(2)
fxch st(1)
fmul st(2)
fxch st(1)
fstp dword [ecx + eax*4]
inc eax
fstp dword [edx]
sub edx, 4
cmp eax, dword [ebp - 0x90]
jl 0x40c894
fstp st(0)
mov ecx, dword [ebp + 0xc]
test ecx, ecx
jns 0x40c7bf
nop
movss xmm7, dword [ebx]
movss xmm6, dword [0x7d5408]
cmp dword [ebp + 8], 4
movaps xmm1, xmm7
subss xmm1, dword [ebx + 4]
mulss xmm1, xmm6
subss xmm7, xmm1
movss dword [ebx], xmm7
jle 0x40cd24
movss xmm5, dword [0x7d5410]
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp + 0x18]
mov esi, dword [ebp + 8]
add ecx, ecx
xorps xmm1, xmm5
movss dword [ebx + 4], xmm1
lea edi, [eax + edi*4]
sar esi, 1
mov dword [ebp - 0x94], esi
mov eax, ecx
cdq
idiv dword [ebp - 0x94]
mov ecx, 2
mov dword [ebp - 0x58], edi
xor esi, esi
cmp ecx, dword [ebp - 0x94]
mov dword [ebp - 0x5c], eax
jge 0x40ca43
mov edi, dword [ebp + 8]
prefetcht0 byte [ebx + 0xc]
prefetcht0 byte [ebx + 0x2c]
prefetcht0 byte [ebx + 0x4c]
prefetcht0 byte [ebx + 0x6c]
prefetcht0 byte [ebx + 0x8c]
lea edx, [ebx + edi*4 - 8]
prefetcht0 byte [ebx + 0xac]
nop
nop
nop
nop
nop
nop
nop
nop
nop
movss xmm2, dword [ebx + ecx*4]
movaps xmm7, xmm6
mov edi, dword [ebp - 0x5c]
fld dword [ebx + ecx*4 + 4]
prefetcht0 byte [ebx + ecx*4 + 0xc4]
mov eax, dword [ebp - 0x20]
add esi, edi
mov edi, dword [ebp - 0x58]
movaps xmm4, xmm2
subss xmm4, dword [edx]
sub eax, esi
subss xmm7, dword [edi + eax*4]
fld dword [edi + esi*4]
fxch st(1)
fst dword [ebp - 0x8c]
fxch st(1)
movss xmm3, dword [ebp - 0x8c]
movaps xmm1, xmm7
mulss xmm1, xmm4
addss xmm3, dword [edx + 4]
fst dword [ebp - 0x8c]
movss xmm0, dword [ebp - 0x8c]
mov dword [ebp - 0x98], eax
mulss xmm7, xmm3
movss dword [ebp - 0x8c], xmm7
mulss xmm0, xmm3
addss xmm1, xmm0
fld dword [ebp - 0x8c]
movss dword [ebp - 0x8c], xmm4
subss xmm2, xmm1
fld dword [ebp - 0x8c]
movss dword [ebx + ecx*4], xmm2
fmulp st(2)
fsubrp st(1)
fsubr st(1), st(0)
fxch st(1)
fstp dword [ebx + ecx*4 + 4]
add ecx, 2
fsub dword [edx + 4]
addss xmm1, dword [edx]
fstp dword [edx + 4]
movss dword [edx], xmm1
sub edx, 8
cmp ecx, dword [ebp - 0x94]
jl 0x40c984
mov edx, dword [ebp - 0x94]
mov ecx, ebx
mov edi, 2
mov eax, dword [ebp + 8]
xor byte [ebx + edx*4 + 7], 0x80
mov edx, dword [ebp + 0x14]
add edx, 8
call fcn.0040c0e4
cmp dword [ebp + 8], 8
jg 0x40cd57
lea eax, [edi*4]
cmp eax, dword [ebp + 8]
je 0x40cd99
xor edx, edx
cmp edx, edi
jge 0x40c7ec
movss xmm5, dword [0x7d5410]
add eax, ebx
prefetcht0 byte [eax + 4]
prefetcht0 byte [eax + 0x24]
prefetcht0 byte [eax + 0x44]
prefetcht0 byte [ebx + 4]
prefetcht0 byte [ebx + 0x24]
prefetcht0 byte [ebx + 0x44]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movss xmm1, dword [ebx + edx*4]
lea ecx, [edx + edi]
prefetcht0 byte [ebx + edx*4 + 0x64]
movss xmm2, dword [ebx + ecx*4]
prefetcht0 byte [ebx + ecx*4 + 0x64]
movss xmm7, dword [ebx + edx*4 + 4]
movaps xmm4, xmm1
movss xmm6, dword [ebx + ecx*4 + 4]
addss xmm1, xmm2
subss xmm4, xmm2
movss dword [ebx + edx*4], xmm1
subss xmm6, xmm7
xorps xmm7, xmm5
subss xmm7, dword [ebx + ecx*4 + 4]
movss dword [ebx + edx*4 + 4], xmm7
add edx, 2
cmp edx, edi
movss dword [ebx + ecx*4], xmm4
movss dword [ebx + ecx*4 + 4], xmm6
jl 0x40cab4
jmp 0x40c7ec
mov edi, dword [ebp + 8]
mov ecx, dword [ebp + 0x18]
mov esi, dword [ebp + 0x14]
sar edi, 2
mov dword [esp + 8], ecx
mov dword [esp + 4], esi
mov dword [esp], edi
call fcn.0040c554
jmp 0x40c778
mov edx, dword [ebp + 0x14]
mov ecx, ebx
mov eax, dword [ebp + 8]
add edx, 8
call fcn.0040c0e4
mov ecx, dword [ebp + 0x18]
mov edx, ebx
mov eax, dword [ebp + 8]
call fcn.0040c3e4
movss xmm5, dword [ebx + 0xc]
mov dword [ebp - 0x24], 4
mov eax, dword [ebp + 0x18]
mov esi, dword [ebp + 8]
movss xmm4, dword [ebx + 8]
lea ecx, [eax + edi*4]
mov edi, dword [ebp - 0x20]
movss xmm2, dword [0x7d5408]
sar esi, 1
movaps xmm6, xmm5
mov dword [ebp - 0x28], esi
add edi, edi
movaps xmm7, xmm4
mov eax, edi
cdq
mov edi, dword [ebp - 0x20]
idiv dword [ebp - 0x28]
mov edx, dword [ebp + 8]
sub edx, 2
addss xmm6, dword [ebx + edx*4 + 4]
subss xmm7, dword [ebx + edx*4]
mov dword [ebp - 0x2c], eax
mov esi, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x2c]
sub edi, esi
subss xmm2, dword [ecx + edi*4]
mov edi, dword [ebp - 0x28]
movss xmm3, dword [ecx + eax*4]
add eax, eax
movaps xmm1, xmm2
cmp dword [ebp - 0x24], edi
mulss xmm2, xmm6
mov dword [ebp - 0x94], eax
movaps xmm0, xmm3
movss dword [ebp - 0x8c], xmm2
mulss xmm3, xmm7
fld dword [ebp - 0x8c]
mulss xmm1, xmm7
movss dword [ebp - 0x8c], xmm3
mulss xmm0, xmm6
subss xmm1, xmm0
fld dword [ebp - 0x8c]
subss xmm4, xmm1
movss dword [ebx + 8], xmm4
faddp st(1)
fst dword [ebp - 0x8c]
movss xmm2, dword [ebp - 0x8c]
subss xmm5, xmm2
movss dword [ebx + 0xc], xmm5
fsubr dword [ebx + edx*4 + 4]
addss xmm1, dword [ebx + edx*4]
fstp dword [ebx + edx*4 + 4]
movss dword [ebx + edx*4], xmm1
jge 0x40c7cf
mov edi, dword [ebp - 0x2c]
lea edx, [ebx + edx*4 - 0x10]
mov eax, dword [ebp - 0x20]
shl edi, 2
lea esi, [ecx + eax*4]
mov eax, dword [ebp - 0x94]
mov dword [ebp - 0x50], edi
mov edi, dword [ebp - 0x2c]
mov dword [ebp - 0x4c], esi
lea esi, [ebx + 0x10]
lea ecx, [ecx + edi*8]
mov dword [ebp - 0x54], eax
nop
nop
nop
nop
movss xmm1, dword [0x7d50f0]
mov edi, dword [ebp - 0x94]
mov eax, dword [ebp - 0x2c]
movaps xmm2, xmmword [ebp - 0x48]
shl edi, 2
movaps xmm4, xmm1
mov dword [ebp - 0x98], edi
mov edi, dword [ebp - 0x98]
movlps xmm2, qword [edx + 8]
movss xmm7, dword [ecx + eax*4]
movhps xmm2, qword [edx]
mov eax, dword [ebp - 0x4c]
movss xmm6, dword [ecx]
sub eax, edi
mov edi, dword [ebp - 0x50]
movss xmm0, dword [eax]
shufps xmm6, xmm7, 0
sub eax, edi
movss xmm5, dword [eax]
subss xmm4, xmm0
movaps xmm3, xmm4
movaps xmm4, xmmword [0x7d5360]
movaps xmm0, xmm2
subss xmm1, xmm5
movaps xmm5, xmmword [esi]
shufps xmm3, xmm1, 0
xorps xmm0, xmm4
addps xmm0, xmm5
movaps xmm1, xmm0
shufps xmm1, xmm0, 0xb1
mulps xmm1, xmm6
mulps xmm0, xmm3
xorps xmm1, xmm4
addps xmm0, xmm1
subps xmm5, xmm0
xorps xmm4, xmm0
movaps xmmword [ebp - 0x48], xmm0
subps xmm2, xmm4
movaps xmmword [esi], xmm5
add esi, 0x10
movlps qword [edx + 8], xmm2
movhps qword [edx], xmm2
sub edx, 0x10
mov eax, dword [ebp - 0x54]
add dword [ebp - 0x24], 4
mov edi, dword [ebp - 0x28]
lea ecx, [ecx + eax*4]
add dword [ebp - 0x94], eax
cmp dword [ebp - 0x24], edi
jl 0x40cc64
jmp 0x40c7cf
movss dword [ebx + 4], xmm1
jne 0x40c7ec
mov ecx, dword [ebp + 0x18]
mov edx, ebx
mov eax, 4
call fcn.0040c3e4
jmp 0x40c7ec
mov ecx, dword [ebp + 0x18]
mov edx, ebx
mov eax, 4
call fcn.0040c3e4
jmp 0x40c7cf
mov ecx, dword [ebp + 0x18]
mov edx, ebx
mov edi, 8
mov eax, dword [ebp + 8]
call fcn.0040b894
cmp dword [ebp + 8], 0x20
jle 0x40ca6d
mov esi, dword [ebp + 0x18]
mov ecx, ebx
mov edx, edi
mov eax, dword [ebp + 8]
shl edi, 2
mov dword [esp], esi
call fcn.0040bb34
lea ecx, [edi*4]
cmp ecx, dword [ebp + 8]
jl 0x40cd73
jmp 0x40ca6d
mov dword [ebp - 0x60], 0
cmp dword [ebp - 0x60], edi
jge 0x40c7ec
lea eax, [edi + edi*2]
prefetcht0 byte [ebx]
lea esi, [ebx + eax*4]
mov eax, dword [ebp + 8]
lea ecx, [ebx + edi*8]
prefetcht0 byte [esi]
prefetcht0 byte [ecx]
mov edx, ebx
add eax, ebx
prefetcht0 byte [eax]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movaps xmm0, xmmword [ebp - 0x78]
prefetcht0 byte [edx + 0x20]
prefetcht0 byte [ecx + 0x20]
movaps xmm3, xmmword [ebp - 0x88]
prefetcht0 byte [eax + 0x20]
prefetcht0 byte [esi + 0x20]
movlps xmm0, qword [edx]
movhps xmm0, qword [ecx]
movaps xmmword [ebp - 0x78], xmm0
movlps xmm3, qword [eax]
movhps xmm3, qword [esi]
movaps xmmword [ebp - 0x88], xmm3
shufps xmm3, xmm3, 0x44
movaps xmm7, xmmword [ebp - 0x88]
movaps xmm5, xmmword [ebp - 0x78]
movaps xmm6, xmmword [ebp - 0x78]
xorps xmm3, xmmword [0x7d5350]
shufps xmm7, xmm7, 0xee
shufps xmm5, xmm5, 0xee
xorps xmm7, xmmword [0x7d5300]
shufps xmm6, xmm6, 0x44
xorps xmm6, xmmword [0x7d5320]
addps xmm5, xmm7
shufps xmm5, xmm5, 0xb4
movaps xmm4, xmm5
addps xmm6, xmm3
movaps xmm2, xmm6
xorps xmm4, xmmword [0x7d52d0]
subps xmm2, xmm4
movlps qword [edx], xmm2
add edx, 8
movhps qword [eax], xmm2
add eax, 8
xorps xmm5, xmmword [0x7d52d0]
addps xmm6, xmm5
movlps qword [ecx], xmm6
add ecx, 8
movhps qword [esi], xmm6
add esi, 8
add dword [ebp - 0x60], 2
cmp dword [ebp - 0x60], edi
jl 0x40cdd4
jmp 0x40c7ec