Function at 0x10221c00
Capabilities:
Encode data using xor

Disassembly:
push esi
push edi
push ebx
sub esp, 0xc
mov edi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x20]
mov ecx, dword [esp + 0x28]
movaps xmm0, xmmword [0x103a7e20]
lea edx, [edi + 8]
lea eax, [edi + ebx*8 - 0x20]
and edi, 0xf
cmp ebx, 0x80000
jge 0x10221d9f
test edi, edi
jne 0x10221ce2
test ebx, ebx
jle 0x10222028
xor esi, esi
movsd xmm2, qword [edx + 8]
add esi, 8
movhps xmm2, qword [edx]
movaps xmm1, xmmword [eax + 0x10]
movaps xmm4, xmm2
movsldup xmm5, xmmword [ecx]
xorps xmm2, xmm0
movshdup xmm6, xmmword [ecx]
xorps xmm5, xmm0
addsubps xmm4, xmm1
xorps xmm1, xmm0
mulps xmm6, xmm4
shufps xmm4, xmm4, 0xb1
mulps xmm5, xmm4
movaps xmm4, xmmword [eax]
addps xmm6, xmm5
movsd xmm5, qword [edx + 0x18]
addps xmm1, xmm6
addsubps xmm2, xmm6
movhps xmm5, qword [edx + 0x10]
movlps qword [edx + 8], xmm1
movhps qword [edx], xmm1
movaps xmm1, xmm5
movaps xmmword [eax + 0x10], xmm2
xorps xmm5, xmm0
movsldup xmm2, xmmword [ecx + 0x10]
addsubps xmm1, xmm4
movshdup xmm3, xmmword [ecx + 0x10]
xorps xmm2, xmm0
mulps xmm3, xmm1
xorps xmm4, xmm0
shufps xmm1, xmm1, 0xb1
add ecx, 0x20
mulps xmm2, xmm1
addps xmm3, xmm2
addps xmm4, xmm3
addsubps xmm5, xmm3
movlps qword [edx + 0x18], xmm4
movhps qword [edx + 0x10], xmm4
add edx, 0x20
movaps xmmword [eax], xmm5
add eax, 0xffffffe0
cmp esi, ebx
jl 0x10221c41
jmp 0x10222028
test ebx, ebx
jle 0x10222028
xor esi, esi
movsd xmm3, qword [edx + 8]
add esi, 8
movhps xmm3, qword [edx]
movsd xmm2, qword [eax + 0x10]
movaps xmm6, xmm3
movhps xmm2, qword [eax + 0x18]
xorps xmm3, xmm0
movsldup xmm7, xmmword [ecx]
addsubps xmm6, xmm2
movshdup xmm1, xmmword [ecx]
xorps xmm7, xmm0
mulps xmm1, xmm6
xorps xmm2, xmm0
shufps xmm6, xmm6, 0xb1
mulps xmm7, xmm6
movsd xmm4, qword [eax]
addps xmm1, xmm7
movhps xmm4, qword [eax + 8]
addps xmm2, xmm1
addsubps xmm3, xmm1
movsd xmm1, qword [edx + 0x18]
movhps xmm1, qword [edx + 0x10]
movlps qword [edx + 8], xmm2
movhps qword [edx], xmm2
movaps xmm2, xmm1
movlps qword [eax + 0x10], xmm3
xorps xmm1, xmm0
movhps qword [eax + 0x18], xmm3
addsubps xmm2, xmm4
movsldup xmm3, xmmword [ecx + 0x10]
xorps xmm4, xmm0
movshdup xmm6, xmmword [ecx + 0x10]
xorps xmm3, xmm0
mulps xmm6, xmm2
add ecx, 0x20
shufps xmm2, xmm2, 0xb1
mulps xmm3, xmm2
addps xmm6, xmm3
addps xmm4, xmm6
addsubps xmm1, xmm6
movlps qword [edx + 0x18], xmm4
movhps qword [edx + 0x10], xmm4
add edx, 0x20
movlps qword [eax], xmm1
movhps qword [eax + 8], xmm1
add eax, 0xffffffe0
cmp esi, ebx
jl 0x10221cec
jmp 0x10222028
movaps xmm1, xmmword [0x103a7e30]
lea esi, [ecx + 0x2000]
mov dword [esp], 0
test edi, edi
je 0x10221efd
mov dword [esp + 8], edx
mov dword [esp + 4], eax
mov edx, dword [esp]
movsd xmm6, qword [esi]
mov edi, ecx
movaps xmm5, xmm6
xor eax, eax
shufps xmm5, xmm6, 0
add esi, 8
shufps xmm6, xmm6, 0x55
mov ecx, dword [esp + 4]
mov ebx, dword [esp + 8]
movsd xmm3, qword [ebx + 8]
add eax, 8
movhps xmm3, qword [ebx]
movsd xmm7, qword [ecx + 0x10]
movhps xmm7, qword [ecx + 0x18]
mulps xmm3, xmm1
mulps xmm7, xmm1
movaps xmm2, xmm3
movaps xmm4, xmmword [edi]
addsubps xmm2, xmm7
xorps xmm7, xmm0
addps xmm3, xmm7
movaps xmm7, xmm5
mulps xmm7, xmm4
shufps xmm4, xmm4, 0xb1
mulps xmm4, xmm6
addsubps xmm7, xmm4
movaps xmm4, xmm7
shufps xmm4, xmm7, 0xa0
shufps xmm7, xmm7, 0xf5
xorps xmm4, xmm0
mulps xmm7, xmm2
shufps xmm2, xmm2, 0xb1
mulps xmm4, xmm2
movaps xmm2, xmm3
xorps xmm3, xmm0
addps xmm7, xmm4
movsd xmm4, qword [ecx]
addps xmm2, xmm7
addsubps xmm3, xmm7
movsd xmm7, qword [ebx + 0x18]
movhps xmm7, qword [ebx + 0x10]
movhps xmm4, qword [ecx + 8]
mulps xmm7, xmm1
mulps xmm4, xmm1
movlps qword [ebx + 8], xmm2
movhps qword [ebx], xmm2
movlps qword [ecx + 0x10], xmm3
movhps qword [ecx + 0x18], xmm3
movaps xmm3, xmm7
movaps xmm2, xmmword [edi + 0x10]
add edi, 0x20
addsubps xmm3, xmm4
xorps xmm4, xmm0
addps xmm7, xmm4
movaps xmm4, xmm5
mulps xmm4, xmm2
shufps xmm2, xmm2, 0xb1
mulps xmm2, xmm6
addsubps xmm4, xmm2
movaps xmm2, xmm4
shufps xmm2, xmm4, 0xa0
shufps xmm4, xmm4, 0xf5
xorps xmm2, xmm0
mulps xmm4, xmm3
shufps xmm3, xmm3, 0xb1
mulps xmm2, xmm3
movaps xmm3, xmm7
xorps xmm7, xmm0
addps xmm4, xmm2
addps xmm3, xmm4
addsubps xmm7, xmm4
movlps qword [ebx + 0x18], xmm3
movhps qword [ebx + 0x10], xmm3
add ebx, 0x20
movlps qword [ecx], xmm7
movhps qword [ecx + 8], xmm7
add ecx, 0xffffffe0
cmp eax, 0x800
jl 0x10221de4
add edx, 0x800
mov dword [esp + 8], ebx
mov ebx, dword [esp + 0x20]
cmp edx, ebx
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x28]
jl 0x10221dc6
jmp 0x10222028
mov dword [esp + 8], edx
mov dword [esp + 4], eax
mov edx, dword [esp]
movsd xmm6, qword [esi]
mov edi, ecx
movaps xmm5, xmm6
xor eax, eax
shufps xmm5, xmm6, 0
add esi, 8
shufps xmm6, xmm6, 0x55
mov ecx, dword [esp + 4]
mov ebx, dword [esp + 8]
movsd xmm3, qword [ebx + 8]
add eax, 8
movhps xmm3, qword [ebx]
movaps xmm7, xmm5
movaps xmm4, xmmword [ecx + 0x10]
mulps xmm3, xmm1
mulps xmm4, xmm1
movaps xmm2, xmm3
addsubps xmm2, xmm4
xorps xmm4, xmm0
addps xmm3, xmm4
movaps xmm4, xmmword [edi]
mulps xmm7, xmm4
shufps xmm4, xmm4, 0xb1
mulps xmm4, xmm6
addsubps xmm7, xmm4
movaps xmm4, xmm7
shufps xmm4, xmm7, 0xa0
shufps xmm7, xmm7, 0xf5
xorps xmm4, xmm0
mulps xmm7, xmm2
shufps xmm2, xmm2, 0xb1
mulps xmm4, xmm2
movaps xmm2, xmm3
xorps xmm3, xmm0
addps xmm7, xmm4
movaps xmm4, xmmword [ecx]
addps xmm2, xmm7
mulps xmm4, xmm1
addsubps xmm3, xmm7
movsd xmm7, qword [ebx + 0x18]
movhps xmm7, qword [ebx + 0x10]
mulps xmm7, xmm1
movlps qword [ebx + 8], xmm2
movhps qword [ebx], xmm2
movaps xmmword [ecx + 0x10], xmm3
movaps xmm3, xmm7
movaps xmm2, xmmword [edi + 0x10]
add edi, 0x20
addsubps xmm3, xmm4
xorps xmm4, xmm0
addps xmm7, xmm4
movaps xmm4, xmm5
mulps xmm4, xmm2
shufps xmm2, xmm2, 0xb1
mulps xmm2, xmm6
addsubps xmm4, xmm2
movaps xmm2, xmm4
shufps xmm2, xmm4, 0xa0
shufps xmm4, xmm4, 0xf5
xorps xmm2, xmm0
mulps xmm4, xmm3
shufps xmm3, xmm3, 0xb1
mulps xmm2, xmm3
movaps xmm3, xmm7
xorps xmm7, xmm0
addps xmm4, xmm2
addps xmm3, xmm4
addsubps xmm7, xmm4
movlps qword [ebx + 0x18], xmm3
movhps qword [ebx + 0x10], xmm3
add ebx, 0x20
movaps xmmword [ecx], xmm7
add ecx, 0xffffffe0
cmp eax, 0x800
jl 0x10221f26
add edx, 0x800
mov dword [esp + 8], ebx
mov ebx, dword [esp + 0x20]
cmp edx, ebx
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x28]
jl 0x10221f08
add esp, 0xc
pop ebx
pop edi
pop esi
ret