Function at 0x1024ab60
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x28
mov eax, dword [esp + 0x34]
push ebp
mov ebp, ecx
mov ecx, dword [esp + 0x34]
imul edx, ecx
imul ecx, eax
mov dword [esp + 0x28], ebp
imul edx, eax
xor eax, eax
add ecx, 7
mov dword [esp + 8], eax
shr ecx, 3
mov dword [esp + 0x34], ecx
add edx, 7
shr edx, 3
mov dword [esp + 0x38], edx
cmp dword [esp + 0x30], eax
jbe 0x1024afbe
push ebx
push esi
lea ecx, [edx + 1]
push edi
mov ebx, ecx
mov esi, eax
imul ebx, eax
movzx eax, byte [ebx + ebp]
imul esi, edx
dec eax
add ebx, ebp
inc ebx
add esi, ebp
mov ebp, esi
mov edi, esi
sub ebp, edx
mov dword [esp + 0x10], edi
mov ecx, ebp
mov dword [esp + 0x18], ecx
cmp eax, 3
ja case.default.0x1024abd2
jmp dword [eax*4 + 0x1024afc4]
mov eax, dword [esp + 0x40]
test eax, eax
je 0x1024abf0
mov ecx, eax
mov al, byte [ebx]
inc ebx
mov byte [esi], al
inc esi
dec ecx
jne 0x1024abe3
mov eax, dword [esp + 0x40]
mov ebp, edx
mov ecx, eax
sub ebp, eax
mov dword [esp + 0x1c], ebp
cmp eax, edx
jae 0x1024afa1
cmp ebp, 0x20
jb 0x1024ac93
lea ebp, [esi + eax]
mov eax, dword [esp + 0x40]
add eax, ebx
mov dword [esp + 0x10], ebp
mov dword [esp + 0x18], eax
lea eax, [ebx - 1]
add eax, edx
cmp ebp, eax
mov ebp, dword [esp + 0x1c]
ja 0x1024ac34
lea eax, [esi - 1]
add eax, edx
cmp eax, dword [esp + 0x18]
jae 0x1024ac93
mov eax, dword [esp + 0x40]
add eax, edi
mov dword [esp + 0x1c], eax
lea eax, [edi - 1]
add eax, edx
cmp dword [esp + 0x10], eax
ja 0x1024ac54
lea eax, [esi - 1]
add eax, edx
cmp eax, dword [esp + 0x1c]
jae 0x1024ac93
and ebp, 0x1f
mov eax, edx
sub eax, ebp
jmp 0x1024ac60
movdqu xmm0, xmmword [ebx]
add ecx, 0x20
movdqu xmm1, xmmword [edi]
paddb xmm1, xmm0
movdqu xmmword [esi], xmm1
movdqu xmm1, xmmword [edi + 0x10]
add edi, 0x20
movdqu xmm0, xmmword [ebx + 0x10]
add ebx, 0x20
paddb xmm1, xmm0
movdqu xmmword [esi + 0x10], xmm1
add esi, 0x20
cmp ecx, eax
jb 0x1024ac60
cmp ecx, edx
jae 0x1024afa1
sub ebx, edi
sub esi, edi
sub edx, ecx
mov al, byte [ebx + edi]
lea edi, [edi + 1]
add al, byte [edi - 1]
mov byte [esi + edi - 1], al
dec edx
jne 0x1024aca1
mov edx, dword [esp + 0x44]
jmp 0x1024afa1
cmp dword [esp + 0x14], 0
jne 0x1024ace3
test edx, edx
je 0x1024afa1
mov ecx, edx
jmp 0x1024acd0
mov al, byte [ebx]
lea esi, [esi + 1]
mov byte [esi - 1], al
lea ebx, [ebx + 1]
dec ecx
jne 0x1024acd0
jmp 0x1024afa1
xor ecx, ecx
test edx, edx
je 0x1024afa1
cmp edx, 0x20
jb 0x1024ad54
lea eax, [ebx - 1]
lea edi, [esi - 1]
add eax, edx
add edi, edx
cmp esi, eax
ja 0x1024ad04
cmp edi, ebx
jae 0x1024ad54
lea eax, [ebp - 1]
add eax, edx
cmp esi, eax
ja 0x1024ad11
cmp edi, ebp
jae 0x1024ad54
mov eax, edx
mov edi, edx
and eax, 0x1f
sub edi, eax
lea ebx, [ebx]
movdqu xmm0, xmmword [ebx]
add ecx, 0x20
movdqu xmm1, xmmword [ebp]
paddb xmm1, xmm0
movdqu xmmword [esi], xmm1
movdqu xmm1, xmmword [ebp + 0x10]
add ebp, 0x20
movdqu xmm0, xmmword [ebx + 0x10]
add ebx, 0x20
paddb xmm1, xmm0
movdqu xmmword [esi + 0x10], xmm1
add esi, 0x20
cmp ecx, edi
jb 0x1024ad20
cmp ecx, edx
jae 0x1024afa1
sub ebx, ebp
sub esi, ebp
sub edx, ecx
mov al, byte [ebx + ebp]
lea ebp, [ebp + 1]
add al, byte [ebp - 1]
mov byte [esi + ebp - 1], al
dec edx
jne 0x1024ad62
mov edx, dword [esp + 0x44]
jmp 0x1024afa1
cmp dword [esp + 0x14], 0
jne 0x1024adc0
mov ebp, dword [esp + 0x40]
test ebp, ebp
je 0x1024ad99
mov ecx, ebp
lea esp, [esp]
mov al, byte [ebx]
inc ebx
mov byte [esi], al
inc esi
dec ecx
jne 0x1024ad90
cmp ebp, edx
jae 0x1024afa1
mov ecx, edx
sub edi, esi
sub ecx, ebp
mov al, byte [edi + esi]
lea esi, [esi + 1]
shr al, 1
lea ebx, [ebx + 1]
add al, byte [ebx - 1]
mov byte [esi - 1], al
dec ecx
jne 0x1024ada7
jmp 0x1024afa1
mov eax, dword [esp + 0x40]
test eax, eax
je 0x1024ade3
mov ecx, eax
lea ebx, [ebx]
mov al, byte [ebp]
inc ebp
shr al, 1
add al, byte [ebx]
inc ebx
mov byte [esi], al
inc esi
dec ecx
jne 0x1024add0
mov eax, dword [esp + 0x40]
cmp eax, edx
jae 0x1024afa1
sub ebp, esi
sub edx, eax
nop
movzx ecx, byte [esi + ebp]
lea esi, [esi + 1]
movzx eax, byte [edi]
lea edi, [edi + 1]
add ecx, eax
lea ebx, [ebx + 1]
sar ecx, 1
add cl, byte [ebx - 1]
mov byte [esi - 1], cl
dec edx
jne 0x1024adf0
mov edx, dword [esp + 0x44]
jmp 0x1024afa1
cmp dword [esp + 0x14], 0
jne 0x1024ae96
mov ebp, dword [esp + 0x40]
test ebp, ebp
je 0x1024ae44
push 0
xor edx, edx
xor ecx, ecx
call fcn.1024ab00
add esp, 4
mov edx, ebp
mov cl, byte [ebx]
inc ebx
add cl, al
mov byte [esi], cl
inc esi
dec edx
jne 0x1024ae35
mov edx, dword [esp + 0x44]
cmp ebp, edx
jae 0x1024afa1
mov ebp, dword [esp + 0x44]
xor eax, eax
cdq
xor eax, edx
sub eax, edx
sub ebp, dword [esp + 0x40]
mov dword [esp + 0x1c], eax
nop
movzx edi, byte [edi]
lea esi, [esi + 1]
mov eax, edi
lea ebx, [ebx + 1]
cdq
xor ecx, ecx
xor eax, edx
sub eax, edx
cmp dword [esp + 0x1c], eax
mov al, byte [ebx - 1]
cmovle ecx, edi
mov edi, dword [esp + 0x10]
add al, cl
inc edi
mov byte [esi - 1], al
mov dword [esp + 0x10], edi
dec ebp
jne 0x1024ae60
mov edx, dword [esp + 0x44]
jmp 0x1024afa1
mov eax, dword [esp + 0x40]
test eax, eax
je 0x1024aef1
xor eax, eax
cdq
mov edi, eax
mov eax, dword [esp + 0x40]
xor edi, edx
mov dword [esp + 0x1c], eax
sub edi, edx
nop
movzx eax, byte [ebp]
mov dword [esp + 0x20], eax
cdq
xor eax, edx
sub eax, edx
cmp eax, edi
jg 0x1024aec9
cmp eax, eax
jg 0x1024aec9
xor ecx, ecx
jmp 0x1024aed2
xor ecx, ecx
cmp edi, eax
cmovle ecx, dword [esp + 0x20]
mov al, byte [ebx]
inc ebp
add al, cl
inc ebx
mov byte [esi], al
inc esi
dec dword [esp + 0x1c]
jne 0x1024aeb0
mov edi, dword [esp + 0x10]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x44]
mov eax, dword [esp + 0x40]
cmp eax, edx
jae 0x1024afa1
sub edi, ecx
mov eax, edx
sub ebp, ecx
mov dword [esp + 0x10], edi
sub esi, ecx
sub eax, dword [esp + 0x40]
mov dword [esp + 0x1c], eax
lea ecx, [ecx]
movzx eax, byte [ecx]
movzx edx, byte [ecx + ebp]
movzx ecx, byte [edi + ecx]
mov edi, edx
sub edi, eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], edx
mov dword [esp + 0x28], ecx
sub ecx, eax
mov eax, edi
cdq
xor eax, edx
sub eax, edx
mov dword [esp + 0x20], eax
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
mov dword [esp + 0x24], eax
lea eax, [ecx + edi]
mov ecx, dword [esp + 0x20]
cdq
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x24]
cmp ecx, edx
jg 0x1024af61
cmp ecx, eax
jg 0x1024af61
mov ecx, dword [esp + 0x28]
jmp 0x1024af6c
mov ecx, dword [esp + 0x2c]
cmp edx, eax
cmovle ecx, dword [esp + 0x30]
mov al, byte [ebx]
inc ebx
mov edi, dword [esp + 0x10]
add al, cl
mov ecx, dword [esp + 0x18]
mov byte [esi + ecx], al
inc ecx
dec dword [esp + 0x1c]
mov dword [esp + 0x18], ecx
jne 0x1024af10
mov edx, dword [esp + 0x44]
jmp 0x1024afa1
test edx, edx
je 0x1024afa1
mov ecx, edx
mov al, byte [ebx]
lea esi, [esi + 1]
mov byte [esi - 1], al
lea ebx, [ebx + 1]
dec ecx
jne 0x1024af93
mov eax, dword [esp + 0x14]
lea ecx, [edx + 1]
mov ebp, dword [esp + 0x34]
inc eax
mov dword [esp + 0x14], eax
cmp eax, dword [esp + 0x3c]
jb 0x1024aba5
pop edi
pop esi
pop ebx
pop ebp
add esp, 0x28
ret