Function at 0x10312af0
Capabilities:
Encode data using xor

Disassembly:
push ebx
push esi
push edi
push ebp
sub esp, 0x14
mov eax, dword [esp + 0x30]
lea edx, [eax + 1]
mov dword [esp], edx
mov ecx, dword [esp + 0x34]
shl ecx, 3
lea edx, [eax - 1]
imul edx, ecx
mov dword [esp + 0xc], edx
shl eax, 3
mov dword [esp + 0x30], eax
mov ebp, dword [esp + 0x34]
test ebp, 3
jne 0x10312ea5
mov ebp, dword [esp + 0x3c]
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 0x2c]
test esi, 0xf
jne 0x10312cec
test edi, 0xf
jne 0x10312cec
mov esi, dword [esp + 0x28]
mov ebx, dword [esp + 0xc]
lea edi, [ebx + esi]
mov edx, dword [esp + 0x40]
movaps xmm0, xmmword [esi]
movaps xmm1, xmmword [esi + 0x10]
movaps xmm2, xmm0
movaps xmm3, xmm1
lea eax, [ebp + eax*4 - 0x20]
add ebp, 0x20
movaps xmm6, xmmword [ecx + esi]
movaps xmm4, xmmword [ebp]
mulps xmm4, xmm6
movaps xmm5, xmmword [ecx + esi + 0x10]
movaps xmm7, xmmword [ebp + 0x10]
mulps xmm7, xmm5
mulps xmm5, xmmword [ebp]
mulps xmm6, xmmword [ebp + 0x10]
addps xmm4, xmm7
subps xmm5, xmm6
movaps xmm6, xmmword [edi]
mulps xmm6, xmmword [eax]
movaps xmm7, xmmword [edi + 0x10]
mulps xmm7, xmmword [eax + 0x10]
addps xmm6, xmm7
movaps xmm7, xmm4
addps xmm4, xmm6
movaps xmmword [edx], xmm4
subps xmm7, xmm6
movaps xmmword [edx + 0x10], xmm7
addps xmm2, xmm4
movaps xmm6, xmmword [edi + 0x10]
mulps xmm6, xmmword [eax]
movaps xmm7, xmmword [edi]
mulps xmm7, xmmword [eax + 0x10]
subps xmm6, xmm7
add esi, ecx
sub edi, ecx
movaps xmm7, xmm5
addps xmm5, xmm6
movaps xmmword [edx + 0x20], xmm5
subps xmm7, xmm6
movaps xmmword [edx + 0x30], xmm7
addps xmm3, xmm5
add ebp, 0x20
sub eax, 0x20
add edx, 0x40
cmp esi, edi
jne 0x10312b70
mov esi, dword [esp + 0x2c]
movaps xmmword [esi], xmm2
movaps xmmword [esi + 0x10], xmm3
mov dword [esp + 4], esi
lea edi, [ebx + esi]
mov dword [esp + 8], edi
mov edi, dword [esp + 0x38]
mov eax, dword [esp + 0x30]
lea ebp, [eax + edi]
mov ebx, 2
movaps xmm2, xmm0
movaps xmm3, xmm1
xorps xmm4, xmm4
xorps xmm5, xmm5
mov esi, dword [esp + 0x40]
mov eax, dword [esp]
mov edx, ebx
sub eax, 2
movsd xmm6, qword [edi + edx*4]
shufps xmm6, xmm6, 0
movaps xmm7, xmmword [esi]
mulps xmm7, xmm6
mulps xmm6, xmmword [esi + 0x20]
addps xmm2, xmm7
addps xmm3, xmm6
movsd xmm6, qword [edi + edx*4]
shufps xmm6, xmm6, 0x55
add edx, ebx
mov edx, dword [ebp + edx*2]
movaps xmm7, xmmword [esi + 0x30]
mulps xmm7, xmm6
mulps xmm6, xmmword [esi + 0x10]
addps xmm4, xmm7
addps xmm5, xmm6
add esi, 0x40
sub eax, 2
jg 0x10312c2d
mov esi, dword [esp + 4]
mov eax, dword [esp + 8]
movaps xmm6, xmm2
addps xmm2, xmm4
movaps xmmword [ecx + esi], xmm2
movaps xmm7, xmm3
subps xmm3, xmm5
movaps xmmword [ecx + esi + 0x10], xmm3
subps xmm6, xmm4
movaps xmmword [eax], xmm6
addps xmm7, xmm5
movaps xmmword [eax + 0x10], xmm7
add esi, ecx
mov dword [esp + 4], esi
sub eax, ecx
mov dword [esp + 8], eax
add ebx, 2
cmp ebx, dword [esp]
jl 0x10312c15
mov esi, dword [esp + 0x28]
add esi, 0x20
mov dword [esp + 0x28], esi
mov esi, dword [esp + 0x2c]
add esi, 0x20
mov dword [esp + 0x2c], esi
mov ebp, dword [esp + 0x3c]
mov eax, dword [esp + 0x30]
lea ebp, [ebp + eax*4]
mov dword [esp + 0x3c], ebp
mov esi, dword [esp + 0x34]
sub esi, 4
mov dword [esp + 0x34], esi
jg 0x10312b4d
jmp 0x10313064
mov esi, dword [esp + 0x28]
mov ebx, dword [esp + 0xc]
lea edi, [ebx + esi]
mov edx, dword [esp + 0x40]
movups xmm0, xmmword [esi]
movups xmm1, xmmword [esi + 0x10]
movaps xmm2, xmm0
movaps xmm3, xmm1
lea eax, [ebp + eax*4 - 0x20]
add ebp, 0x20
movups xmm6, xmmword [ecx + esi]
movaps xmm4, xmmword [ebp]
mulps xmm4, xmm6
movups xmm5, xmmword [ecx + esi + 0x10]
movaps xmm7, xmmword [ebp + 0x10]
mulps xmm7, xmm5
mulps xmm5, xmmword [ebp]
mulps xmm6, xmmword [ebp + 0x10]
addps xmm4, xmm7
subps xmm5, xmm6
movups xmm6, xmmword [edi]
mulps xmm6, xmmword [eax]
movups xmm7, xmmword [edi + 0x10]
mulps xmm7, xmmword [eax + 0x10]
addps xmm6, xmm7
movaps xmm7, xmm4
addps xmm4, xmm6
movaps xmmword [edx], xmm4
subps xmm7, xmm6
movaps xmmword [edx + 0x10], xmm7
addps xmm2, xmm4
movups xmm6, xmmword [edi + 0x10]
mulps xmm6, xmmword [eax]
movups xmm7, xmmword [edi]
mulps xmm7, xmmword [eax + 0x10]
subps xmm6, xmm7
add esi, ecx
sub edi, ecx
movaps xmm7, xmm5
addps xmm5, xmm6
movaps xmmword [edx + 0x20], xmm5
subps xmm7, xmm6
movaps xmmword [edx + 0x30], xmm7
addps xmm3, xmm5
add ebp, 0x20
sub eax, 0x20
add edx, 0x40
cmp esi, edi
jne 0x10312d0f
mov esi, dword [esp + 0x2c]
movlps qword [esi], xmm2
movhps qword [esi + 8], xmm2
movlps qword [esi + 0x10], xmm3
movhps qword [esi + 0x18], xmm3
mov dword [esp + 4], esi
lea edi, [ebx + esi]
mov dword [esp + 8], edi
mov edi, dword [esp + 0x38]
mov eax, dword [esp + 0x30]
lea ebp, [eax + edi]
mov ebx, 2
movaps xmm2, xmm0
movaps xmm3, xmm1
xorps xmm4, xmm4
xorps xmm5, xmm5
mov esi, dword [esp + 0x40]
mov eax, dword [esp]
mov edx, ebx
sub eax, 2
movsd xmm6, qword [edi + edx*4]
shufps xmm6, xmm6, 0
movaps xmm7, xmmword [esi]
mulps xmm7, xmm6
mulps xmm6, xmmword [esi + 0x20]
addps xmm2, xmm7
addps xmm3, xmm6
movsd xmm6, qword [edi + edx*4]
shufps xmm6, xmm6, 0x55
add edx, ebx
mov edx, dword [ebp + edx*2]
movaps xmm7, xmmword [esi + 0x30]
mulps xmm7, xmm6
mulps xmm6, xmmword [esi + 0x10]
addps xmm4, xmm7
addps xmm5, xmm6
add esi, 0x40
sub eax, 2
jg 0x10312dd4
mov esi, dword [esp + 4]
mov eax, dword [esp + 8]
movaps xmm6, xmm2
addps xmm2, xmm4
movlps qword [ecx + esi], xmm2
movhps qword [ecx + esi + 8], xmm2
movaps xmm7, xmm3
subps xmm3, xmm5
movlps qword [ecx + esi + 0x10], xmm3
movhps qword [ecx + esi + 0x18], xmm3
subps xmm6, xmm4
movlps qword [eax], xmm6
movhps qword [eax + 8], xmm6
addps xmm7, xmm5
movlps qword [eax + 0x10], xmm7
movhps qword [eax + 0x18], xmm7
add esi, ecx
mov dword [esp + 4], esi
sub eax, ecx
mov dword [esp + 8], eax
add ebx, 2
cmp ebx, dword [esp]
jl 0x10312dbc
mov esi, dword [esp + 0x28]
add esi, 0x20
mov dword [esp + 0x28], esi
mov esi, dword [esp + 0x2c]
add esi, 0x20
mov dword [esp + 0x2c], esi
mov ebp, dword [esp + 0x3c]
mov eax, dword [esp + 0x30]
lea ebp, [ebp + eax*4]
mov dword [esp + 0x3c], ebp
mov esi, dword [esp + 0x34]
sub esi, 4
mov dword [esp + 0x34], esi
jg 0x10312cec
jmp 0x10313064
xor ebp, ebp
lea ebx, [0x1030e590]
mov dword [esp + 0x10], ebx
movaps xmm7, xmmword [ebx + 0x90]
mov esi, dword [esp + 0x28]
mov ebx, dword [esp + 0xc]
lea edi, [ebx + esi]
mov edx, dword [esp + 0x40]
mov ebx, dword [esp + 0x10]
movsd xmm6, qword [esi]
movaps xmm2, xmm6
cmp ebp, 0
je 0x10312ee0
lea eax, [eax + ebp - 8]
add ebp, 8
jmp 0x10312f13
movsd xmm0, qword [ecx + esi]
movlhps xmm0, xmm0
movsd xmm1, qword [edi]
movlhps xmm1, xmm1
xorps xmm1, xmmword [ebx + 0xa0]
addps xmm0, xmm1
movaps xmmword [edx], xmm0
andps xmm0, xmmword [ebx + 0xb0]
addps xmm2, xmm0
add esi, ecx
sub edi, ecx
add edx, 0x10
cmp esi, edi
jne 0x10312ee0
jmp 0x10312f76
movsd xmm0, qword [ecx + esi]
movsd xmm1, qword [edi]
movlhps xmm0, xmm1
movsd xmm3, qword [ebp]
movsd xmm5, qword [eax]
shufps xmm3, xmm5, 0
movsd xmm4, qword [ebp]
shufps xmm4, xmm5, 0x55
mulps xmm3, xmm0
shufps xmm0, xmm0, 0xb1
xorps xmm0, xmmword [ebx]
mulps xmm4, xmm0
addps xmm3, xmm4
movaps xmm4, xmm3
movlhps xmm3, xmm3
movhlps xmm4, xmm4
xorps xmm4, xmmword [ebx + 0xa0]
addps xmm3, xmm4
movaps xmmword [edx], xmm3
andps xmm3, xmmword [ebx + 0xb0]
addps xmm2, xmm3
add esi, ecx
sub edi, ecx
add ebp, 8
sub eax, 8
add edx, 0x10
cmp esi, edi
jne 0x10312f13
mov esi, dword [esp + 0x2c]
movlps qword [esi], xmm2
mov dword [esp + 4], esi
mov ebx, dword [esp + 0xc]
lea edi, [ebx + esi]
mov dword [esp + 8], edi
mov edi, dword [esp + 0x38]
mov eax, dword [esp + 0x30]
lea ebp, [eax + edi]
mov ebx, 2
movaps xmm4, xmm6
xorps xmm3, xmm3
mov esi, dword [esp + 0x40]
mov eax, dword [esp]
mov edx, ebx
sub eax, 4
jle 0x10312fe6
movsd xmm0, qword [edi + edx*4]
shufps xmm0, xmm0, 0x50
mulps xmm0, xmmword [esi]
add edx, ebx
mov edx, dword [ebp + edx*2]
addps xmm4, xmm0
movsd xmm1, qword [edi + edx*4]
shufps xmm1, xmm1, 0x50
mulps xmm1, xmmword [esi + 0x10]
add edx, ebx
mov edx, dword [ebp + edx*2]
addps xmm3, xmm1
add esi, 0x20
sub eax, 4
jg 0x10312fb0
addps xmm4, xmm3
add eax, 2
jle 0x10312ffa
movsd xmm0, qword [edi + edx*4]
shufps xmm0, xmm0, 0x50
mulps xmm0, xmmword [esi]
addps xmm4, xmm0
movhlps xmm0, xmm4
movlhps xmm4, xmm4
shufps xmm0, xmm0, 0x11
xorps xmm0, xmm7
addps xmm4, xmm0
mov esi, dword [esp + 4]
movlps qword [ecx + esi], xmm4
add esi, ecx
mov dword [esp + 4], esi
mov eax, dword [esp + 8]
movhps qword [eax], xmm4
sub eax, ecx
mov dword [esp + 8], eax
add ebx, 2
cmp ebx, dword [esp]
jl 0x10312f9c
mov esi, dword [esp + 0x28]
add esi, 8
mov dword [esp + 0x28], esi
mov esi, dword [esp + 0x2c]
add esi, 8
mov dword [esp + 0x2c], esi
mov ebp, dword [esp + 0x3c]
mov eax, dword [esp + 0x30]
add ebp, eax
mov dword [esp + 0x3c], ebp
mov esi, dword [esp + 0x34]
dec esi
mov dword [esp + 0x34], esi
jg 0x10312eb8
add esp, 0x14
pop ebp
pop edi
pop esi
pop ebx
ret