Function at 0x1000c820
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x1c
mov ecx, dword [esp + 0x20]
mov eax, 0
mov edx, dword [esp + 0x2c]
test cl, 3
push ebx
mov ebx, dword [esp + 0x28]
sete al
mov dword [esp + 0xc], ebx
push ebp
push esi
push edi
test eax, eax
je 0x1000c9ad
test bl, 3
mov eax, 0
sete al
test eax, eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x10], eax
je 0x1000c9a7
test al, 3
mov eax, 0
sete al
test eax, eax
je 0x1000c99d
mov edi, edx
xor ebp, ebp
shr edi, 2
test edi, edi
je 0x1000c97a
mov eax, dword [esp + 0x38]
cmp edi, 8
jb 0x1000c936
lea eax, [eax + edi*4]
add eax, 0xfffffffc
lea esi, [ecx - 4]
lea esi, [esi + edi*4]
cmp ecx, eax
ja 0x1000c8af
mov eax, dword [esp + 0x38]
cmp esi, eax
jae 0x1000c936
lea eax, [ebx - 4]
lea eax, [eax + edi*4]
cmp ecx, eax
ja 0x1000c8bd
cmp esi, ebx
jae 0x1000c932
mov eax, edi
mov esi, edi
and eax, 7
sub esi, eax
mov eax, ecx
mov ecx, dword [esp + 0x38]
sub eax, ebx
sub ecx, ebx
mov dword [esp + 0x20], esi
lea esi, [ebx + 0x10]
mov dword [esp + 0x10], ecx
mov ebx, dword [esp + 0x30]
sub ebx, dword [esp + 0x38]
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x1c], ebx
mov ebx, eax
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x1c]
movups xmm0, xmmword [ecx]
add ebp, 8
lea ecx, [ecx + 0x20]
lea esi, [esi + 0x20]
movups xmm1, xmmword [esi - 0x30]
pxor xmm1, xmm0
movups xmmword [edx + ecx - 0x20], xmm1
movups xmm1, xmmword [eax + esi - 0x20]
movups xmm0, xmmword [esi - 0x20]
pxor xmm1, xmm0
movups xmmword [ebx + esi - 0x20], xmm1
cmp ebp, dword [esp + 0x20]
jb 0x1000c8f5
mov edx, dword [esp + 0x3c]
mov ebx, dword [esp + 0x34]
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x38]
cmp ebp, edi
jae 0x1000c97a
mov esi, ebx
lea ecx, [eax + ebp*4]
sub esi, eax
sub edi, ebp
mov dword [esp + 0x20], esi
mov esi, dword [esp + 0x30]
sub esi, eax
add ebp, edi
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
nop dword [eax + eax]
mov eax, dword [esi + ecx]
lea ecx, [ecx + 4]
xor eax, dword [ecx - 4]
mov dword [ecx + edx - 4], eax
sub edi, 1
jne 0x1000c960
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x30]
shl ebp, 2
sub edx, ebp
mov dword [esp + 0x14], edx
je 0x1000ca92
mov eax, dword [esp + 0x38]
add ecx, ebp
add ebx, ebp
mov dword [esp + 0x30], ecx
mov dword [esp + 0x18], ebx
add eax, ebp
jmp 0x1000c9b5
mov eax, dword [esp + 0x38]
mov dword [esp + 0x14], edx
jmp 0x1000c9b9
mov dword [esp + 0x14], edx
jmp 0x1000c9b9
mov eax, dword [esp + 0x38]
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], eax
xor edi, edi
test edx, edx
je 0x1000ca92
cmp edx, 0x20
jb 0x1000ca68
dec eax
lea esi, [ecx - 1]
add eax, edx
add esi, edx
cmp ecx, eax
ja 0x1000c9e4
mov eax, dword [esp + 0x10]
cmp esi, eax
jae 0x1000ca6c
lea eax, [ebx - 1]
add eax, edx
cmp ecx, eax
ja 0x1000c9f1
cmp esi, ebx
jae 0x1000ca68
mov eax, edx
mov ebp, edx
and eax, 0x1f
mov esi, ebx
sub ebp, eax
mov eax, ecx
mov ecx, dword [esp + 0x10]
sub eax, ebx
sub ecx, ebx
mov dword [esp + 0x20], ebp
mov ebp, dword [esp + 0x10]
mov dword [esp + 0x24], ecx
add ebp, 0x10
mov ecx, dword [esp + 0x30]
sub ecx, dword [esp + 0x10]
mov ebx, dword [esp + 0x24]
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x28]
mov dword [esp + 0x1c], eax
movups xmm0, xmmword [esi]
add edi, 0x20
lea esi, [esi + 0x20]
lea ebp, [ebp + 0x20]
movups xmm1, xmmword [ebx + esi - 0x20]
pxor xmm1, xmm0
movups xmmword [eax + esi - 0x20], xmm1
movups xmm1, xmmword [esi - 0x10]
movups xmm0, xmmword [ebp - 0x20]
pxor xmm1, xmm0
movups xmmword [edx + ebp - 0x20], xmm1
cmp edi, ecx
jb 0x1000ca31
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
mov eax, dword [esp + 0x10]
cmp edi, edx
jae 0x1000ca92
mov esi, dword [esp + 0x30]
lea ecx, [edi + eax]
sub ebx, eax
sub esi, eax
sub edx, edi
nop dword [eax]
mov al, byte [ebx + ecx]
lea ecx, [ecx + 1]
xor al, byte [ecx - 1]
mov byte [esi + ecx - 1], al
sub edx, 1
jne 0x1000ca80
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c
ret