Function at 0x140041500
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x20], r9
mov qword [rsp + 0x18], r8
mov qword [rsp + 0x10], rdx
mov qword [rsp + 8], rcx
push rbx
push rbp
push rsi
push rdi
push r14
push r15
sub rsp, 0x58
mov rdi, r9
mov r9, r8
mov r8, rdx
movzx edx, byte [rsp + 0xb0]
test edx, edx
je 0x1400420d3
sub edx, 1
je 0x140042070
sub edx, 1
je 0x140041f17
sub edx, 1
je 0x140041e05
cmp edx, 1
je 0x14004156b
mov eax, 0x24
add rsp, 0x58
pop r15
pop r14
pop rdi
pop rsi
pop rbp
pop rbx
ret
test r9, r9
je 0x140041d91
mov qword [rsp + 0x50], r12
xor r12d, r12d
mov qword [rsp + 8], r12
test rdi, rdi
je 0x140041684
cmp rdi, 0x40
jb 0x14004164a
lea rdx, [rcx - 1]
mov qword [rsp + 8], r12
lea rax, [r9 - 1]
add rdx, rdi
add rax, rdi
cmp rcx, rax
ja 0x1400415b5
cmp rdx, r9
jae 0x14004164a
lea rax, [r8 - 1]
add rax, rdi
cmp rcx, rax
ja 0x1400415ca
cmp rdx, r8
jae 0x14004164a
mov r11, rdi
and r11, 0xffffffffffffffc0
mov rdx, r8
lea rax, [r9 + 0x10]
sub rdx, r9
mov r10, rcx
sub r10, r9
movdqu xmm0, xmmword [rax - 0x10]
add r12, 0x40
movdqu xmm1, xmmword [rdx + rax - 0x10]
movdqu xmm2, xmmword [rdx + rax]
lea rax, [rax + 0x40]
paddb xmm1, xmm0
movdqu xmm0, xmmword [rax - 0x40]
movdqu xmmword [r10 + rax - 0x50], xmm1
paddb xmm2, xmm0
movdqu xmm0, xmmword [rax - 0x30]
movdqu xmm1, xmmword [rdx + rax - 0x30]
movdqu xmmword [r10 + rax - 0x40], xmm2
paddb xmm1, xmm0
movdqu xmm0, xmmword [rax - 0x20]
movdqu xmm2, xmmword [rdx + rax - 0x20]
movdqu xmmword [r10 + rax - 0x30], xmm1
paddb xmm2, xmm0
movdqu xmmword [r10 + rax - 0x20], xmm2
cmp r12, r11
jne 0x1400415e1
mov qword [rsp + 8], r12
cmp r12, rdi
je 0x140041684
mov r11, r8
mov qword [rsp + 8], rdi
mov rbx, rcx
lea rdx, [r12 + r9]
sub r11, r9
sub rbx, r9
mov r10, rdi
sub r10, r12
mov r12, rdi
nop dword [rax]
movzx eax, byte [rdx + r11]
add al, byte [rdx]
mov byte [rdx + rbx], al
lea rdx, [rdx + 1]
sub r10, 1
jne 0x140041670
mov rbp, qword [rsp + 0xb8]
mov qword [rsp + 0x48], r13
cmp rdi, 4
jb 0x14004192a
lea rax, [r12 + 3]
cmp rax, rbp
jae 0x140041cce
sub r9, rcx
lea r11, [rcx + 2]
sub r8, rcx
mov qword [rsp + 0x28], r9
add r8, rdi
mov rax, r12
sub rax, rdi
mov qword [rsp + 0x30], r8
add r11, rax
lea r10, [r9 + rdi]
mov qword [rsp + 0x10], r11
lea rax, [r8 - 2]
mov qword [rsp + 0x18], rax
mov rax, rdi
sub rax, rcx
mov rcx, qword [rsp + 0xa8]
inc rax
mov qword [rsp + 0x20], rax
movzx edi, byte [r9 + r11 - 2]
movzx eax, byte [r8 + r11]
movzx ebx, byte [r10 + r11 - 2]
movzx ebp, byte [r9 + r11 - 1]
movzx esi, byte [r10 + r11 - 1]
movzx r15d, byte [r8 + r11 - 1]
movzx r12d, byte [r10 + r11]
movzx r13d, byte [r9 + r11]
movzx r14d, byte [r11 - 1]
mov byte [rsp + 1], al
movzx eax, byte [r8 + r11 + 1]
mov byte [rsp], al
movzx eax, byte [r11]
mov byte [rsp + 0xb0], al
movzx eax, byte [r11 + 1]
mov byte [rsp + 4], al
movzx eax, byte [r10 + r11 + 1]
mov byte [rsp + 2], al
movzx eax, byte [r9 + r11 + 1]
movzx r11d, byte [r11 - 2]
mov byte [rsp + 3], al
mov eax, ebx
sub eax, edi
cdq
mov r10d, eax
mov eax, r11d
sub eax, edi
xor r10d, edx
sub r10d, edx
cdq
mov r9d, eax
mov eax, r11d
xor r9d, edx
sub r9d, edx
lea edx, [rdi + rdi]
sub eax, edx
movzx r8d, r9w
add eax, ebx
cdq
xor eax, edx
sub eax, edx
cmp r9w, r10w
cmovge r8w, r10w
cmovge ebx, r11d
cmp ax, r8w
movzx edx, bl
mov rax, qword [rsp + 0x18]
mov r8d, r14d
cmovl edx, edi
mov r10d, esi
mov rdi, qword [rsp + 0x10]
add dl, byte [rax + rdi]
mov eax, esi
sub eax, ebp
mov byte [rcx + rdi - 2], dl
cdq
mov ebx, eax
mov eax, r14d
sub eax, ebp
xor ebx, edx
sub ebx, edx
cdq
mov r11d, eax
xor r11d, edx
sub r11d, edx
lea edx, [rbp*2]
sub r8d, edx
lea eax, [r10 + r8]
movzx r10d, r11w
cdq
mov r8d, esi
xor eax, edx
sub eax, edx
cmp r11w, bx
cmovge r8d, r14d
cmovge r10w, bx
cmp ax, r10w
movzx r9d, r8b
cmovl r9d, ebp
add r9b, r15b
mov byte [rcx + rdi - 1], r9b
movzx edi, byte [rsp + 0xb0]
mov r10d, r12d
movzx esi, byte [rsp + 3]
mov r8d, edi
movzx ebp, byte [rsp + 4]
mov eax, r12d
sub eax, r13d
cdq
mov ebx, eax
mov eax, edi
sub eax, r13d
xor ebx, edx
sub ebx, edx
cdq
mov r11d, eax
xor r11d, edx
sub r11d, edx
lea edx, [r13*2]
sub r8d, edx
lea eax, [r10 + r8]
movzx r10d, r11w
cdq
mov r8d, r12d
xor eax, edx
sub eax, edx
cmp r11w, bx
cmovge r8d, edi
cmovge r10w, bx
movzx edi, byte [rsp + 2]
cmp ax, r10w
mov rax, qword [rsp + 0x10]
mov r10d, edi
movzx r9d, r8b
mov r8d, ebp
cmovl r9d, r13d
add r9b, byte [rsp + 1]
mov byte [rax + rcx], r9b
mov eax, edi
sub eax, esi
cdq
mov ebx, eax
mov eax, ebp
sub eax, esi
xor ebx, edx
sub ebx, edx
cdq
mov r11d, eax
xor r11d, edx
sub r11d, edx
lea edx, [rsi + rsi]
sub r8d, edx
lea eax, [r10 + r8]
movzx r10d, r11w
cdq
mov r8d, edi
xor eax, edx
sub eax, edx
mov rdx, qword [rsp + 8]
cmp r11w, bx
mov r11, qword [rsp + 0x10]
cmovge r8d, ebp
cmovge r10w, bx
mov rbp, qword [rsp + 0xb8]
cmp ax, r10w
mov rax, qword [rsp + 0x20]
movzx r9d, r8b
mov r8, qword [rsp + 0x30]
cmovl r9d, esi
add r9b, byte [rsp]
add rdx, 4
mov byte [rcx + r11 + 1], r9b
add r11, 4
mov r9, qword [rsp + 0x28]
add rax, r11
mov qword [rsp + 8], rdx
mov qword [rsp + 0x10], r11
lea r10, [r9 + rcx]
cmp rax, rbp
jb 0x1400416f1
jmp 0x140041b29
cmp rdi, 3
jb 0x140041b4e
lea rax, [r12 + 2]
cmp rax, rbp
jae 0x140041cce
sub r9, rcx
lea r10, [rcx + 2]
mov rax, r12
mov qword [rsp + 0x20], r9
sub rax, rdi
add r10, rax
mov rax, r8
sub rax, rcx
mov qword [rsp + 0x10], r10
add rax, rdi
lea r8, [r9 + rdi]
mov qword [rsp + 0x18], rax
lea rdx, [rax - 2]
mov qword [rsp + 0x30], rdx
mov rdx, rdi
sub rdx, rcx
mov rcx, qword [rsp + 0xa8]
mov qword [rsp + 0x28], rdx
nop word [rax + rax]
movzx r15d, byte [rax + r10 - 1]
movzx eax, byte [rax + r10]
movzx edi, byte [r9 + r10 - 2]
movzx ebx, byte [r8 + r10 - 2]
movzx r14d, byte [r10 + r9 - 1]
movzx esi, byte [r8 + r10 - 1]
movzx r12d, byte [r8 + r10]
movzx r11d, byte [r10 - 2]
movzx ebp, byte [r10 - 1]
movzx r13d, byte [r10]
mov byte [rsp], al
movzx eax, byte [r10 + r9]
mov byte [rsp + 0xb0], al
mov eax, ebx
sub eax, edi
cdq
mov r10d, eax
mov eax, r11d
sub eax, edi
xor r10d, edx
sub r10d, edx
cdq
mov r9d, eax
mov eax, r11d
xor r9d, edx
sub r9d, edx
lea edx, [rdi + rdi]
sub eax, edx
movzx r8d, r9w
add eax, ebx
cdq
xor eax, edx
sub eax, edx
cmp r9w, r10w
cmovge r8w, r10w
cmovge ebx, r11d
cmp ax, r8w
movzx edx, bl
mov rax, qword [rsp + 0x30]
mov r10d, esi
cmovl edx, edi
mov r8d, ebp
mov rdi, qword [rsp + 0x10]
add dl, byte [rax + rdi]
mov eax, esi
sub eax, r14d
mov byte [rcx + rdi - 2], dl
cdq
mov ebx, eax
mov eax, ebp
sub eax, r14d
xor ebx, edx
sub ebx, edx
cdq
mov r11d, eax
xor r11d, edx
sub r11d, edx
lea edx, [r14 + r14]
sub r8d, edx
lea eax, [r10 + r8]
movzx r10d, r11w
cdq
mov r8d, esi
xor eax, edx
sub eax, edx
cmp r11w, bx
cmovge r10w, bx
cmovge r8d, ebp
cmp ax, r10w
movzx r9d, r8b
mov eax, r12d
mov r10d, r12d
cmovl r9d, r14d
add r9b, r15b
mov byte [rdi + rcx - 1], r9b
movzx edi, byte [rsp + 0xb0]
sub eax, edi
cdq
mov ebx, eax
xor ebx, edx
sub ebx, edx
mov rbp, qword [rsp + 0xb8]
mov r8d, r13d
mov eax, r13d
sub eax, edi
cdq
mov r11d, eax
xor r11d, edx
sub r11d, edx
lea edx, [rdi + rdi]
sub r8d, edx
lea eax, [r10 + r8]
movzx r10d, r11w
cdq
mov r8d, r12d
xor eax, edx
sub eax, edx
mov rdx, qword [rsp + 8]
cmp r11w, bx
cmovge r8d, r13d
cmovge r10w, bx
cmp ax, r10w
movzx r9d, r8b
mov r10, qword [rsp + 0x10]
mov rax, qword [rsp + 0x28]
cmovl r9d, edi
add r9b, byte [rsp]
add rdx, 3
mov qword [rsp + 8], rdx
mov byte [r10 + rcx], r9b
add r10, 3
mov r9, qword [rsp + 0x20]
add rax, r10
cmp rax, rbp
mov qword [rsp + 0x10], r10
mov rax, qword [rsp + 0x18]
lea r8, [r9 + rcx]
jb 0x140041990
mov r8, qword [rsp + 0x98]
mov rdi, qword [rsp + 0xa8]
mov rcx, qword [rsp + 0x90]
mov r9, qword [rsp + 0xa0]
jmp 0x140041cd3
cmp rdi, 2
jb 0x140041cce
lea rax, [r12 + 1]
cmp rax, rbp
jae 0x140041cce
sub r8, r9
lea r13, [r9 + 1]
mov rdx, rcx
mov rax, r12
mov rcx, qword [rsp + 0xa8]
sub rax, rdi
add r13, rax
add r8, rcx
sub rdx, r9
mov qword [rsp + 8], r8
mov qword [rsp + 0x10], rdx
lea rax, [r8 - 1]
mov qword [rsp + 0x30], rax
lea rax, [rdx + rcx]
mov qword [rsp + 0x20], rax
dec rax
mov qword [rsp + 0x28], rax
mov rax, rcx
sub rax, r9
mov qword [rsp + 0x18], rax
nop word [rax + rax]
movzx ebp, byte [rdx + r13]
movzx r11d, byte [rdx + r13 - 1]
movzx r15d, byte [r8 + r13]
movzx edi, byte [r13 - 1]
movzx ebx, byte [rcx + r13 - 1]
movzx r14d, byte [r13]
mov eax, ebx
movzx esi, byte [rcx + r13]
sub eax, edi
cdq
mov r10d, eax
mov eax, r11d
sub eax, edi
xor r10d, edx
sub r10d, edx
cdq
mov r9d, eax
mov eax, r11d
xor r9d, edx
sub r9d, edx
lea edx, [rdi + rdi]
sub eax, edx
movzx r8d, r9w
add eax, ebx
cdq
xor eax, edx
sub eax, edx
cmp r9w, r10w
cmovge r8w, r10w
cmovge ebx, r11d
cmp ax, r8w
movzx edx, bl
mov rax, qword [rsp + 0x30]
mov r8d, ebp
cmovl edx, edi
mov r10d, esi
add dl, byte [rax + r13]
mov rax, qword [rsp + 0x28]
mov byte [rax + r13], dl
mov eax, esi
sub eax, r14d
cdq
mov ebx, eax
mov eax, ebp
sub eax, r14d
xor ebx, edx
sub ebx, edx
cdq
mov r11d, eax
xor r11d, edx
sub r11d, edx
lea edx, [r14 + r14]
sub r8d, edx
lea eax, [r10 + r8]
mov r8d, esi
cdq
movzx r10d, r11w
xor eax, edx
sub eax, edx
mov rdx, qword [rsp + 0x10]
cmp r11w, bx
cmovge r8d, ebp
cmovge r10w, bx
mov rbp, qword [rsp + 0xb8]
cmp ax, r10w
mov rax, qword [rsp + 0x20]
movzx r9d, r8b
mov r8, qword [rsp + 8]
cmovl r9d, r14d
add r9b, r15b
add r12, 2
mov byte [rax + r13], r9b
add r13, 2
mov rax, qword [rsp + 0x18]
add rax, r13
cmp rax, rbp
jb 0x140041bc0
mov rdx, r12
jmp 0x140041b29
mov rdx, qword [rsp + 8]
mov r13, qword [rsp + 0x48]
mov r12, qword [rsp + 0x50]
cmp rdx, rbp
je 0x140042101
sub r9, rcx
sub r8, rcx
mov rsi, rdx
mov qword [rsp + 0xa0], r9
sub rsi, rdi
add rsi, rcx
sub rbp, rdx
lea r14, [r9 + rdi]
lea r15, [r8 + rdi]
nop dword [rax + rax]
movzx ebx, byte [rsi + r9]
movzx r11d, byte [rsi + r14]
movzx r10d, byte [rsi]
lea rsi, [rsi + 1]
mov eax, r11d
sub eax, ebx
lea ecx, [rbx + rbx]
cdq
mov r9d, eax
mov eax, r10d
sub eax, ebx
xor r9d, edx
sub r9d, edx
cdq
mov r8d, eax
mov eax, r11d
sub eax, ecx
xor r8d, edx
add eax, r10d
sub r8d, edx
cdq
xor eax, edx
sub eax, edx
movzx edx, r8w
cmp r8w, r9w
cmovge dx, r9w
cmovge r11d, r10d
mov r9, qword [rsp + 0xa0]
cmp ax, dx
movzx ecx, r11b
cmovl ecx, ebx
add cl, byte [rsi + r15 - 1]
mov byte [rsi + rdi - 1], cl
sub rbp, 1
jne 0x140041d10
xor eax, eax
add rsp, 0x58
pop r15
pop r14
pop rdi
pop rsi
pop rbp
pop rbx
ret
test rdi, rdi
je 0x140041dc1
mov r10, r8
mov rdx, rcx
sub r10, rcx
mov r9, rdi
nop dword [rax]
nop word [rax + rax]
movzx eax, byte [r10 + rdx]
mov byte [rdx], al
lea rdx, [rdx + 1]
sub r9, 1
jne 0x140041db0
mov r9, qword [rsp + 0xb8]
cmp rdi, r9
jae 0x140042101
sub rcx, r8
lea rdx, [r8 + rdi]
mov r8, rcx
sub r8, rdi
sub r9, rdi
movzx eax, byte [r8 + rdx]
add al, byte [rdx]
mov byte [rcx + rdx], al
lea rdx, [rdx + 1]
sub r9, 1
jne 0x140041de2
xor eax, eax
add rsp, 0x58
pop r15
pop r14
pop rdi
pop rsi
pop rbp
pop rbx
ret
test r9, r9
je 0x140041ea0
test rdi, rdi
je 0x140041e48
mov r11, r9
mov rbx, rcx
sub r11, r8
mov rdx, r8
sub rbx, r8
mov r10, rdi
nop word [rax + rax]
movzx eax, byte [r11 + rdx]
lea rdx, [rdx + 1]
shr al, 1
add al, byte [rdx - 1]
mov byte [rdx + rbx - 1], al
sub r10, 1
jne 0x140041e30
mov r11, qword [rsp + 0xb8]
cmp rdi, r11
jae 0x140042101
sub rcx, r9
lea r10, [r9 + rdi]
mov rbx, rcx
sub r8, r9
sub rbx, rdi
sub r11, rdi
nop dword [rax]
movzx edx, byte [rbx + r10]
movzx eax, byte [r10]
lea r10, [r10 + 1]
add edx, eax
shr edx, 1
add dl, byte [r8 + r10 - 1]
mov byte [rcx + r10 - 1], dl
sub r11, 1
jne 0x140041e70
xor eax, eax
add rsp, 0x58
pop r15
pop r14
pop rdi
pop rsi
pop rbp
pop rbx
ret
test rdi, rdi
je 0x140041ec2
mov r10, r8
mov rdx, rcx
sub r10, rcx
mov r9, rdi
movzx eax, byte [rdx + r10]
mov byte [rdx], al
lea rdx, [rdx + 1]
sub r9, 1
jne 0x140041eb1
mov r9, qword [rsp + 0xb8]
cmp rdi, r9
jae 0x140042101
sub rcx, r8
lea rdx, [r8 + rdi]
mov r8, rcx
sub r8, rdi
sub r9, rdi
nop dword [rax]
nop word [rax + rax]
movzx eax, byte [rdx + r8]
lea rdx, [rdx + 1]
shr al, 1
add al, byte [rdx - 1]
mov byte [rdx + rcx - 1], al
sub r9, 1
jne 0x140041ef0
xor eax, eax
add rsp, 0x58
pop r15
pop r14
pop rdi
pop rsi
pop rbp
pop rbx
ret
test r9, r9
je 0x140042035
mov r11, qword [rsp + 0xb8]
xor edx, edx
test r11, r11
je 0x140042101
cmp r11, 0x40
jb 0x140041ff4
lea r10, [rcx - 1]
lea rax, [r11 - 1]
add r10, r11
add rax, r9
cmp rcx, rax
ja 0x140041f59
cmp r10, r9
jae 0x140041ff4
lea rax, [r11 - 1]
add rax, r8
cmp rcx, rax
ja 0x140041f6e
cmp r10, r8
jae 0x140041ff4
mov rdi, r11
and rdi, 0xffffffffffffffc0
mov r10, r8
lea rax, [r9 + 0x10]
sub r10, r9
mov rbx, rcx
sub rbx, r9
nop word [rax + rax]
movdqu xmm0, xmmword [rax - 0x10]
add rdx, 0x40
movdqu xmm1, xmmword [rax + r10 - 0x10]
movdqu xmm2, xmmword [rax + r10]
lea rax, [rax + 0x40]
paddb xmm1, xmm0
movdqu xmm0, xmmword [rax - 0x40]
movdqu xmmword [rax + rbx - 0x50], xmm1
paddb xmm2, xmm0
movdqu xmm0, xmmword [rax - 0x30]
movdqu xmm1, xmmword [rax + r10 - 0x30]
movdqu xmmword [rax + rbx - 0x40], xmm2
paddb xmm1, xmm0
movdqu xmm0, xmmword [rax - 0x20]
movdqu xmm2, xmmword [rax + r10 - 0x20]
movdqu xmmword [rax + rbx - 0x30], xmm1
paddb xmm2, xmm0
movdqu xmmword [rax + rbx - 0x20], xmm2
cmp rdx, rdi
jne 0x140041f90
cmp rdx, r11
je 0x140042101
sub r8, r9
lea r10, [rdx + r9]
sub rcx, r9
sub r11, rdx
nop word [rax + rax]
movzx eax, byte [r8 + r10]
add al, byte [r10]
mov byte [rcx + r10], al
lea r10, [r10 + 1]
sub r11, 1
jne 0x140042010
xor eax, eax
add rsp, 0x58
pop r15
pop r14
pop rdi
pop rsi
pop rbp
pop rbx
ret
mov rdx, qword [rsp + 0xb8]
test rdx, rdx
je 0x140042101
sub r8, rcx
nop dword [rax]
movzx eax, byte [r8 + rcx]
mov byte [rcx], al
lea rcx, [rcx + 1]
sub rdx, 1
jne 0x140042050
xor eax, eax
add rsp, 0x58
pop r15
pop r14
pop rdi
pop rsi
pop rbp
pop rbx
ret
test rdi, rdi
je 0x140042092
mov r10, r8
mov rdx, rcx
sub r10, rcx
mov r9, rdi
movzx eax, byte [r10 + rdx]
mov byte [rdx], al
lea rdx, [rdx + 1]
sub r9, 1
jne 0x140042081
mov r9, qword [rsp + 0xb8]
cmp rdi, r9
jae 0x140042101
sub rcx, r8
lea rdx, [r8 + rdi]
mov r8, rcx
sub r8, rdi
sub r9, rdi
nop
movzx eax, byte [rdx + r8]
add al, byte [rdx]
mov byte [rdx + rcx], al
lea rdx, [rdx + 1]
sub r9, 1
jne 0x1400420b0
xor eax, eax
add rsp, 0x58
pop r15
pop r14
pop rdi
pop rsi
pop rbp
pop rbx
ret
mov rdx, qword [rsp + 0xb8]
test rdx, rdx
je 0x140042101
sub r8, rcx
nop dword [rax]
nop word [rax + rax]
movzx eax, byte [r8 + rcx]
mov byte [rcx], al
lea rcx, [rcx + 1]
sub rdx, 1
jne 0x1400420f0
xor eax, eax
add rsp, 0x58
pop r15
pop r14
pop rdi
pop rsi
pop rbp
pop rbx
ret