Function at 0x180009460
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 r12
push r14
push r15
sub rsp, 0x50
mov rdi, r9
mov r9, r8
mov r8, rdx
movzx edx, byte [rsp + 0xb0]
test edx, edx
je 0x180009fd6
sub edx, 1
je 0x180009f76
sub edx, 1
je 0x180009e3f
sub edx, 1
je 0x180009d4b
cmp edx, 1
je 0x1800094cf
mov eax, 0x24
add rsp, 0x50
pop r15
pop r14
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret
test r9, r9
je 0x180009ce7
mov rbp, qword [rsp + 0xb8]
xor r12d, r12d
test rdi, rdi
je 0x180009c3b
mov qword [rsp + 0x48], r13
cmp rdi, 0x40
jb 0x1800095be
lea rdx, [rcx - 1]
lea rax, [r9 - 1]
add rdx, rdi
add rax, rdi
cmp rcx, rax
ja 0x180009517
cmp rdx, r9
jae 0x1800095be
lea rax, [r8 - 1]
add rax, rdi
cmp rcx, rax
ja 0x18000952c
cmp rdx, r8
jae 0x1800095be
mov rbx, rdi
and rbx, 0xffffffffffffffc0
mov rdx, r8
lea rax, [r9 + 0x10]
sub rdx, r9
mov r10, rcx
sub r10, r9
nop dword [rax]
nop word [rax + rax]
movdqu xmm0, xmmword [rax - 0x10]
add r12, 0x40
movdqu xmm1, xmmword [rdx + rax - 0x10]
movdqu xmm2, xmmword [rax + rdx]
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 [rax + r10 - 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, rbx
jne 0x180009550
mov qword [rsp + 0x10], r12
cmp r12, rdi
je 0x1800095fe
mov r11, r8
mov qword [rsp + 0x10], 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 0x1800095e0
cmp rdi, 4
jb 0x180009899
lea rax, [r12 + 3]
cmp rax, rbp
jae 0x180009c36
sub r8, rcx
lea r10, [rcx + 2]
add r8, rdi
mov rdx, r9
sub rdx, rcx
mov qword [rsp + 0x18], r8
mov rax, r12
mov qword [rsp + 0x30], rdx
sub rax, rdi
add r10, rax
lea rax, [r8 - 2]
mov qword [rsp + 0x20], rax
lea r9, [rdx + rdi]
mov rax, rdi
mov qword [rsp + 8], r10
sub rax, rcx
mov rcx, qword [rsp + 0xa8]
inc rax
mov qword [rsp + 0x28], rax
nop word [rax + rax]
movzx edi, byte [rdx + r10 - 2]
movzx ebp, byte [rdx + r10 - 1]
movzx r13d, byte [rdx + r10]
movzx eax, byte [r8 + r10]
movzx ebx, byte [r9 + r10 - 2]
movzx esi, byte [r9 + r10 - 1]
movzx r15d, byte [r8 + r10 - 1]
movzx r12d, byte [r9 + r10]
movzx r11d, byte [r10 - 2]
movzx r14d, byte [r10 - 1]
mov byte [rsp + 1], al
movzx eax, byte [r8 + r10 + 1]
mov byte [rsp], al
movzx eax, byte [r10]
mov byte [rsp + 0xb0], al
movzx eax, byte [r10 + 1]
mov byte [rsp + 4], al
movzx eax, byte [r9 + r10 + 1]
mov byte [rsp + 2], al
movzx eax, byte [rdx + r10 + 1]
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 + 0x20]
mov r8d, r14d
cmovl edx, edi
mov r10d, esi
mov rdi, qword [rsp + 8]
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
mov r12, qword [rsp + 0x10]
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 + 8]
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 + 0x30]
cmp r11w, bx
cmovge r8d, ebp
cmovge r10w, bx
mov rbp, qword [rsp + 0xb8]
cmp ax, r10w
mov r10, qword [rsp + 8]
mov rax, qword [rsp + 0x28]
movzx r9d, r8b
mov r8, qword [rsp + 0x18]
cmovl r9d, esi
add r9b, byte [rsp]
add r12, 4
mov byte [rcx + r10 + 1], r9b
add r10, 4
add rax, r10
mov qword [rsp + 0x10], r12
mov qword [rsp + 8], r10
lea r9, [rdx + rcx]
cmp rax, rbp
jb 0x180009660
jmp 0x180009c16
cmp rdi, 3
jb 0x180009a9c
lea rax, [rdi + 2]
cmp rax, rbp
jae 0x180009c36
sub r9, rcx
lea rdx, [rcx + 2]
mov rax, rdi
mov qword [rsp + 0x28], r9
sub rax, rdi
add rdx, rax
mov rax, r8
sub rax, rcx
mov qword [rsp + 8], rdx
add rax, rdi
lea r8, [r9 + rdi]
mov qword [rsp + 0x20], rax
lea r10, [rax - 2]
mov qword [rsp + 0x18], r10
mov r10, rdi
sub r10, rcx
mov rcx, qword [rsp + 0xa8]
mov qword [rsp + 0x30], r10
nop dword [rax + rax]
movzx r15d, byte [rax + rdx - 1]
movzx eax, byte [rax + rdx]
movzx ebx, byte [r8 + rdx - 2]
movzx edi, byte [r9 + rdx - 2]
movzx esi, byte [r8 + rdx - 1]
movzx r12d, byte [r8 + rdx]
movzx r14d, byte [rdx + r9 - 1]
movzx r11d, byte [rdx - 2]
movzx ebp, byte [rdx - 1]
movzx r13d, byte [rdx]
mov byte [rsp], al
movzx eax, byte [r9 + rdx]
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 + 0x18]
mov r10d, esi
cmovl edx, edi
mov r8d, ebp
mov rdi, qword [rsp + 8]
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]
mov r8d, r12d
mov r12, qword [rsp + 0x10]
cdq
xor eax, edx
movzx r10d, r11w
sub eax, edx
mov rdx, qword [rsp + 8]
cmp r11w, bx
cmovge r8d, r13d
cmovge r10w, bx
cmp ax, r10w
movzx r9d, r8b
mov rax, qword [rsp + 0x30]
cmovl r9d, edi
add r12, 3
add r9b, byte [rsp]
mov byte [rdx + rcx], r9b
add rdx, 3
mov r9, qword [rsp + 0x28]
add rax, rdx
cmp rax, rbp
mov qword [rsp + 0x10], r12
mov rax, qword [rsp + 0x20]
mov qword [rsp + 8], rdx
lea r8, [r9 + rcx]
jb 0x180009900
jmp 0x180009c16
cmp rdi, 2
jb 0x180009c36
lea rax, [rdi + 1]
cmp rax, rbp
jae 0x180009c36
sub r8, r9
lea r13, [r9 + 1]
mov rdx, rcx
mov rax, rdi
mov rcx, qword [rsp + 0xa8]
sub rax, rdi
add r13, rax
add r8, rcx
sub rdx, r9
mov qword [rsp + 0x10], r8
mov qword [rsp + 8], rdx
lea rax, [r8 - 1]
mov qword [rsp + 0x18], rax
lea rax, [rdx + rcx]
mov qword [rsp + 0x28], rax
dec rax
mov qword [rsp + 0x30], rax
mov rax, rcx
sub rax, r9
mov qword [rsp + 0x20], rax
nop dword [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 + 0x18]
mov r8d, ebp
cmovl edx, edi
mov r10d, esi
add dl, byte [rax + r13]
mov rax, qword [rsp + 0x30]
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 + 8]
cmp r11w, bx
cmovge r8d, ebp
cmovge r10w, bx
mov rbp, qword [rsp + 0xb8]
cmp ax, r10w
mov rax, qword [rsp + 0x28]
movzx r9d, r8b
mov r8, qword [rsp + 0x10]
cmovl r9d, r14d
add r9b, r15b
add r12, 2
mov byte [rax + r13], r9b
add r13, 2
mov rax, qword [rsp + 0x20]
add rax, r13
cmp rax, rbp
jb 0x180009b10
mov rcx, qword [rsp + 0x90]
mov rdi, qword [rsp + 0xa8]
mov r8, qword [rsp + 0x98]
mov r9, qword [rsp + 0xa0]
mov r13, qword [rsp + 0x48]
cmp r12, rbp
je 0x18000a001
sub r9, rcx
sub r8, rcx
mov rsi, r12
mov qword [rsp + 0xa0], r9
sub rsi, rdi
add rsi, rcx
sub rbp, r12
lea r14, [r9 + rdi]
lea r15, [r8 + rdi]
nop word [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 0x180009c70
jmp 0x18000a001
test rdi, rdi
je 0x180009d11
mov r10, r8
mov rdx, rcx
sub r10, rcx
mov r9, rdi
nop dword [rax + rax]
movzx eax, byte [r10 + rdx]
mov byte [rdx], al
lea rdx, [rdx + 1]
sub r9, 1
jne 0x180009d00
mov r9, qword [rsp + 0xb8]
cmp rdi, r9
jae 0x18000a001
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 0x180009d32
jmp 0x18000a001
test r9, r9
je 0x180009dd6
test rdi, rdi
je 0x180009d88
mov r11, r9
mov rbx, rcx
sub r11, r8
mov rdx, r8
sub rbx, r8
mov r10, rdi
nop dword [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 0x180009d70
mov r11, qword [rsp + 0xb8]
cmp rdi, r11
jae 0x18000a001
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 0x180009db0
jmp 0x18000a001
test rdi, rdi
je 0x180009e01
mov r10, r8
mov rdx, rcx
sub r10, rcx
mov r9, rdi
nop word [rax + rax]
movzx eax, byte [rdx + r10]
mov byte [rdx], al
lea rdx, [rdx + 1]
sub r9, 1
jne 0x180009df0
mov r9, qword [rsp + 0xb8]
cmp rdi, r9
jae 0x18000a001
sub rcx, r8
lea rdx, [r8 + rdi]
mov r8, rcx
sub r8, rdi
sub r9, rdi
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 0x180009e22
jmp 0x18000a001
test r9, r9
je 0x180009f4b
mov r11, qword [rsp + 0xb8]
xor edx, edx
test r11, r11
je 0x18000a001
cmp r11, 0x40
jb 0x180009f1d
lea r10, [rcx - 1]
lea rax, [r11 - 1]
add r10, r11
add rax, r9
cmp rcx, rax
ja 0x180009e81
cmp r10, r9
jae 0x180009f1d
lea rax, [r11 - 1]
add rax, r8
cmp rcx, rax
ja 0x180009e96
cmp r10, r8
jae 0x180009f1d
mov rdi, r11
and rdi, 0xffffffffffffffc0
mov r10, r8
lea rax, [r9 + 0x10]
sub r10, r9
mov rbx, rcx
sub rbx, r9
nop dword [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 0x180009eb0
cmp rdx, r11
je 0x18000a001
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 0x180009f30
jmp 0x18000a001
mov rdx, qword [rsp + 0xb8]
test rdx, rdx
je 0x18000a001
sub r8, rcx
nop
movzx eax, byte [r8 + rcx]
mov byte [rcx], al
lea rcx, [rcx + 1]
sub rdx, 1
jne 0x180009f60
jmp 0x18000a001
test rdi, rdi
je 0x180009fa1
mov r10, r8
mov rdx, rcx
sub r10, rcx
mov r9, rdi
nop word [rax + rax]
movzx eax, byte [r10 + rdx]
mov byte [rdx], al
lea rdx, [rdx + 1]
sub r9, 1
jne 0x180009f90
mov r9, qword [rsp + 0xb8]
cmp rdi, r9
jae 0x18000a001
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 [rcx + rdx], al
lea rdx, [rdx + 1]
sub r9, 1
jne 0x180009fc0
jmp 0x18000a001
mov rdx, qword [rsp + 0xb8]
test rdx, rdx
je 0x18000a001
sub r8, rcx
nop word [rax + rax]
movzx eax, byte [r8 + rcx]
mov byte [rcx], al
lea rcx, [rcx + 1]
sub rdx, 1
jne 0x180009ff0
xor eax, eax
add rsp, 0x50
pop r15
pop r14
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret