Function at 0x180020090
Capabilities:
Encode data using xor

Disassembly:
mov byte [rsp + 0x20], r9b
push rbx
push rbp
push rsi
push rdi
push r12
push r14
sub rsp, 0x48
mov rax, rdx
movzx ebx, r9b
sub rax, rcx
mov rsi, r8
and rax, 0xfffffffffffffffc
mov r12, rdx
mov rdi, rcx
cmp rax, 0x80
jle 0x18001f96c
test rsi, rsi
jle 0x18001f983
movzx r9d, bl
lea rcx, [rsp + 0x30]
mov r8, r12
mov rdx, rdi
call fcn.180020410
mov r14, qword [rsp + 0x30]
mov rcx, rsi
mov rbp, qword [rsp + 0x38]
mov rax, r14
sar rcx, 2
sub rax, rdi
sar rsi, 1
and rax, 0xfffffffffffffffc
add rsi, rcx
movzx r9d, bl
mov rcx, r12
mov r8, rsi
sub rcx, rbp
and rcx, 0xfffffffffffffffc
cmp rax, rcx
jge 0x18001f948
mov rdx, r14
mov rcx, rdi
call fcn.18001f8b0
mov rdi, rbp
jmp 0x18001f956
mov rdx, r12
mov rcx, rbp
call fcn.18001f8b0
mov r12, r14
mov rax, r12
sub rax, rdi
and rax, 0xfffffffffffffffc
cmp rax, 0x80
jg 0x18001f8e4
mov rdx, r12
mov rcx, rdi
add rsp, 0x48
pop r14
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
jmp 0x18001fb50
mov qword [rsp + 0x88], r13
mov r13, r12
sub r13, rdi
sar r13, 2
mov rbp, r13
sar rbp, 1
test rbp, rbp
jle 0x18001fa46
mov qword [rsp + 0x40], r15
lea r15, [r13 - 1]
sar r15, 1
mov eax, dword [rdi + rbp*4 - 4]
dec rbp
mov dword [rsp + 0x80], eax
mov r14, rbp
mov rcx, rbp
cmp rbp, r15
jge 0x18001fa02
nop dword [rax]
lea rsi, [rcx + rcx]
lea rdx, [rsi + 2]
lea rdx, [rdi + rdx*4]
lea r8, [rdx - 4]
call fcn.18001e020
movzx eax, al
lea rcx, [rsi + 1]
xor rax, 1
add rcx, rax
mov eax, dword [rdi + rcx*4]
mov dword [rdi + r14*4], eax
mov r14, rcx
cmp rcx, r15
jl 0x18001f9d0
cmp r14, r15
jne 0x18001fa1a
test r13b, 1
jne 0x18001fa1a
mov eax, dword [rdi + r13*4 - 4]
mov dword [rdi + r14*4], eax
lea r14, [r13 - 1]
lea r9, [rsp + 0x80]
mov r8, rbp
mov rdx, r14
mov rcx, rdi
call fcn.180021010
test rbp, rbp
jg 0x18001f9b0
mov r15, qword [rsp + 0x40]
movzx ebx, byte [rsp + 0x98]
movzx r8d, bl
mov rdx, r12
mov rcx, rdi
mov r13, qword [rsp + 0x88]
add rsp, 0x48
pop r14
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
jmp 0x180020090
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rsi
mov qword [rsp + 0x20], rdi
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x37]
sub rsp, 0x100
mov rax, qword [0x180232200]
xor rax, rsp
mov qword [rbp + 0x2f], rax
mov rdi, rdx
mov qword [rbp - 0x79], rdx
mov rbx, rcx
mov qword [rsp + 0x40], rcx
cmp rcx, rdx
je 0x18002002d
lea rax, [rcx + 4]
mov qword [rsp + 0x30], rax
cmp rax, rdx
je 0x18002002d
mov qword [rsp + 0x38], 4
xor edi, edi
mov qword [rsp + 0x28], rax
mov eax, dword [rax]
mov dword [rsp + 0x20], eax
xorps xmm0, xmm0
movups xmmword [rbp - 0x31], xmm0
mov r14d, edi
mov qword [rbp - 0x21], rdi
mov r12d, 0xf
mov qword [rbp - 0x19], r12
mov byte [rbp - 0x31], dil
movups xmmword [rbp - 0x51], xmm0
mov r15d, edi
mov qword [rbp - 0x41], rdi
mov r13d, r12d
mov qword [rbp - 0x39], r12
mov byte [rbp - 0x51], dil
xor r8d, r8d
mov edx, eax
lea rcx, [rbp - 0x71]
call fcn.18004e1f0
lea rcx, [rbp - 0x31]
cmp rcx, rax
je 0x18001fc38
movups xmm0, xmmword [rax]
movups xmmword [rbp - 0x31], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rbp - 0x21], xmm1
mov qword [rax + 0x10], rdi
mov qword [rax + 0x18], r12
mov byte [rax], dil
movdqa xmm0, xmm1
psrldq xmm0, 8
movq r12, xmm0
movq r14, xmm1
mov rdx, qword [rbp - 0x59]
cmp rdx, 0xf
jbe 0x18001fc73
inc rdx
mov rcx, qword [rbp - 0x71]
mov rax, rcx
cmp rdx, 0x1000
jb 0x18001fc6e
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18002005d
call fcn.180187890
xor r8d, r8d
mov edx, dword [rbx]
lea rcx, [rbp - 0x71]
call fcn.18004e1f0
lea rcx, [rbp - 0x51]
cmp rcx, rax
je 0x18001fcbb
movups xmm0, xmmword [rax]
movups xmmword [rbp - 0x51], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rbp - 0x41], xmm1
mov qword [rax + 0x10], rdi
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
movdqa xmm0, xmm1
psrldq xmm0, 8
movq r13, xmm0
movq r15, xmm1
mov rdx, qword [rbp - 0x59]
cmp rdx, 0xf
jbe 0x18001fcf6
inc rdx
mov rcx, qword [rbp - 0x71]
mov rax, rcx
cmp rdx, 0x1000
jb 0x18001fcf1
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180020064
call fcn.180187890
lea rdx, [rbp - 0x51]
mov rdi, qword [rbp - 0x51]
cmp r13, 0xf
cmova rdx, rdi
lea rcx, [rbp - 0x31]
mov rsi, qword [rbp - 0x31]
cmp r12, 0xf
cmova rcx, rsi
mov r8, r14
cmp r15, r14
cmovb r8, r15
call sub.VCRUNTIME140.dll_memcmp
mov ebx, eax
test eax, eax
jne 0x18001fd3f
cmp r14, r15
jae 0x18001fd37
mov ebx, 0xffffffff
jmp 0x18001fd3f
xor ebx, ebx
cmp r14, r15
seta bl
shr ebx, 0x1f
cmp r13, 0xf
jbe 0x18001fd7a
lea rdx, [r13 + 1]
mov rax, rdi
cmp rdx, 0x1000
jb 0x18001fd71
add rdx, 0x27
mov rdi, qword [rdi - 8]
sub rax, rdi
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18002006b
mov rcx, rdi
call fcn.180187890
nop
cmp r12, 0xf
jbe 0x18001fdb2
lea rdx, [r12 + 1]
mov rax, rsi
cmp rdx, 0x1000
jb 0x18001fdaa
add rdx, 0x27
mov rsi, qword [rsi - 8]
sub rax, rsi
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180020087
mov rcx, rsi
call fcn.180187890
test bl, bl
je 0x18001fdda
mov rdi, qword [rsp + 0x38]
mov r8, rdi
mov rbx, qword [rsp + 0x40]
mov rdx, rbx
lea rcx, [rbx + 4]
call sub.VCRUNTIME140.dll_memmove
mov eax, dword [rsp + 0x20]
mov dword [rbx], eax
jmp 0x180020009
mov rbx, qword [rsp + 0x30]
nop
sub rbx, 4
mov qword [rsp + 0x48], rbx
xorps xmm0, xmm0
movups xmmword [rbp + 0xf], xmm0
xor edi, edi
mov r14d, edi
mov qword [rbp + 0x1f], rdi
mov r12d, 0xf
mov qword [rbp + 0x27], r12
mov byte [rbp + 0xf], dil
movups xmmword [rbp - 0x11], xmm0
mov r15d, edi
mov qword [rbp - 1], rdi
mov r13d, r12d
mov qword [rbp + 7], r12
mov byte [rbp - 0x11], r15b
xor r8d, r8d
mov edx, dword [rsp + 0x20]
lea rcx, [rbp - 0x71]
call fcn.18004e1f0
lea rcx, [rbp + 0xf]
cmp rcx, rax
je 0x18001fe63
movups xmm0, xmmword [rax]
movups xmmword [rbp + 0xf], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rbp + 0x1f], xmm1
mov qword [rax + 0x10], rdi
mov qword [rax + 0x18], r12
mov byte [rax], dil
movdqa xmm0, xmm1
psrldq xmm0, 8
movq r12, xmm0
movq r14, xmm1
mov rdx, qword [rbp - 0x59]
cmp rdx, 0xf
jbe 0x18001fe9e
inc rdx
mov rcx, qword [rbp - 0x71]
mov rax, rcx
cmp rdx, 0x1000
jb 0x18001fe99
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180020072
call fcn.180187890
xor r8d, r8d
mov edx, dword [rbx]
lea rcx, [rbp - 0x71]
call fcn.18004e1f0
lea rcx, [rbp - 0x11]
cmp rcx, rax
je 0x18001fee6
movups xmm0, xmmword [rax]
movups xmmword [rbp - 0x11], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rbp - 1], xmm1
mov qword [rax + 0x10], rdi
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
movdqa xmm0, xmm1
psrldq xmm0, 8
movq r13, xmm0
movq r15, xmm1
mov rdx, qword [rbp - 0x59]
cmp rdx, 0xf
jbe 0x18001ff21
inc rdx
mov rcx, qword [rbp - 0x71]
mov rax, rcx
cmp rdx, 0x1000
jb 0x18001ff1c
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180020079
call fcn.180187890
lea rdx, [rbp - 0x11]
mov rdi, qword [rbp - 0x11]
cmp r13, 0xf
cmova rdx, rdi
lea rcx, [rbp + 0xf]
mov rsi, qword [rbp + 0xf]
cmp r12, 0xf
cmova rcx, rsi
mov r8, r14
cmp r15, r14
cmovb r8, r15
call sub.VCRUNTIME140.dll_memcmp
mov ebx, eax
test eax, eax
jne 0x18001ff6a
cmp r14, r15
jae 0x18001ff62
mov ebx, 0xffffffff
jmp 0x18001ff6a
xor ebx, ebx
cmp r14, r15
seta bl
shr ebx, 0x1f
cmp r13, 0xf
jbe 0x18001ffa5
lea rdx, [r13 + 1]
mov rax, rdi
cmp rdx, 0x1000
jb 0x18001ff9c
add rdx, 0x27
mov rdi, qword [rdi - 8]
sub rax, rdi
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180020080
mov rcx, rdi
call fcn.180187890
nop
cmp r12, 0xf
jbe 0x18001ffdd
lea rdx, [r12 + 1]
mov rax, rsi
cmp rdx, 0x1000
jb 0x18001ffd5
add rdx, 0x27
mov rsi, qword [rsi - 8]
sub rax, rsi
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180020087
mov rcx, rsi
call fcn.180187890
mov rcx, qword [rsp + 0x28]
test bl, bl
je 0x18001fff9
mov rbx, qword [rsp + 0x48]
mov eax, dword [rbx]
mov dword [rcx], eax
mov qword [rsp + 0x28], rbx
jmp 0x18001fde0
mov eax, dword [rsp + 0x20]
mov dword [rcx], eax
mov rbx, qword [rsp + 0x40]
mov rdi, qword [rsp + 0x38]
mov rax, qword [rsp + 0x30]
add rax, 4
mov qword [rsp + 0x30], rax
add rdi, 4
mov qword [rsp + 0x38], rdi
mov rdi, qword [rbp - 0x79]
cmp rax, rdi
jne 0x18001fbb5
mov rax, rdi
mov rcx, qword [rbp + 0x2f]
xor rcx, rsp
call fcn.180187870
lea r11, [rsp + 0x100]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rdi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
nop
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
nop
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
nop
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
nop
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
nop
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x27]
sub rsp, 0xc0
mov rax, qword [0x180232200]
xor rax, rsp
mov qword [rbp + 0x1f], rax
mov r14, rcx
mov qword [rbp - 0x61], rcx
mov rax, rdx
sub rax, rcx
and rax, 0xfffffffffffffffc
cmp rax, 8
jl 0x1800203cd
lea rcx, [rdx - 4]
mov qword [rbp - 0x59], rcx
mov eax, 4
sub rax, r14
mov qword [rbp - 0x49], rax
mov rdi, rcx
mov eax, dword [rcx]
mov dword [rbp - 0x79], eax
mov eax, dword [r14]
mov dword [rcx], eax
sub rdi, r14
sar rdi, 2
xor r13d, r13d
xor ecx, ecx
lea rsi, [rdi - 1]
sar rsi, 1
test rsi, rsi
jle 0x180020143
nop
lea rbx, [rcx + rcx]
lea rdx, [rbx + 2]
lea rdx, [r14 + rdx*4]
lea r8, [rdx - 4]
call fcn.18001e020
movzx eax, al
xor rax, 1
lea rcx, [rbx + 1]
add rcx, rax
mov eax, dword [r14 + rcx*4]
mov dword [r14 + r13*4], eax
mov r13, rcx
cmp rcx, rsi
jl 0x180020110
cmp r13, rsi
jne 0x18002015b
test dil, 1
jne 0x18002015b
mov eax, dword [r14 + rdi*4 - 4]
mov dword [r14 + r13*4], eax
lea r13, [rdi - 1]
lea rdi, [r13 - 1]
sar rdi, 1
test r13, r13
jle 0x1800203a2
nop dword [rax + rax]
xorps xmm0, xmm0
movups xmmword [rbp - 0x21], xmm0
xor r15d, r15d
mov qword [rbp - 0x11], r15
mov esi, 0xf
mov qword [rbp - 0x71], rsi
mov qword [rbp - 9], rsi
mov byte [rbp - 0x21], r15b
movups xmmword [rbp - 0x41], xmm0
xor r12d, r12d
mov qword [rbp - 0x31], r12
mov ebx, esi
mov qword [rbp - 0x69], rbx
mov qword [rbp - 0x29], rbx
mov byte [rbp - 0x41], r12b
lea rax, [r14 + rdi*4]
mov qword [rbp - 0x51], rax
xor r8d, r8d
mov edx, dword [rax]
lea rcx, [rbp - 1]
call fcn.18004e1f0
lea rcx, [rbp - 0x21]
cmp rcx, rax
je 0x1800201f4
movups xmm0, xmmword [rax]
movups xmmword [rbp - 0x21], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rbp - 0x11], xmm1
mov qword [rax + 0x10], r12
mov qword [rax + 0x18], rsi
mov byte [rax], r12b
movdqa xmm0, xmm1
psrldq xmm0, 8
movq qword [rbp - 0x71], xmm0
movq r15, xmm1
mov rdx, qword [rbp + 0x17]
cmp rdx, 0xf
jbe 0x18002022f
inc rdx
mov rcx, qword [rbp - 1]
mov rax, rcx
cmp rdx, 0x1000
jb 0x18002022a
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1800203f4
call fcn.180187890
xor r8d, r8d
mov edx, dword [rbp - 0x79]
lea rcx, [rbp - 1]
call fcn.18004e1f0
lea rcx, [rbp - 0x41]
cmp rcx, rax
je 0x180020280
movups xmm0, xmmword [rax]
movups xmmword [rbp - 0x41], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rbp - 0x31], xmm1
mov qword [rax + 0x10], 0
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
movdqa xmm0, xmm1
psrldq xmm0, 8
movq rbx, xmm0
mov qword [rbp - 0x69], rbx
movq r12, xmm1
mov rdx, qword [rbp + 0x17]
cmp rdx, 0xf
jbe 0x1800202bb
inc rdx
mov rcx, qword [rbp - 1]
mov rax, rcx
cmp rdx, 0x1000
jb 0x1800202b6
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1800203fb
call fcn.180187890
lea rdx, [rbp - 0x41]
mov rsi, qword [rbp - 0x41]
cmp rbx, 0xf
cmova rdx, rsi
lea rcx, [rbp - 0x21]
mov r14, qword [rbp - 0x21]
cmp qword [rbp - 0x71], 0xf
cmova rcx, r14
mov r8, r15
cmp r12, r15
cmovb r8, r12
call sub.VCRUNTIME140.dll_memcmp
mov ebx, eax
test eax, eax
jne 0x180020305
cmp r15, r12
jae 0x1800202fd
mov ebx, 0xffffffff
jmp 0x180020305
xor ebx, ebx
cmp r15, r12
seta bl
shr ebx, 0x1f
mov rdx, qword [rbp - 0x69]
cmp rdx, 0xf
jbe 0x180020343
inc rdx
mov rax, rsi
cmp rdx, 0x1000
jb 0x18002033a
add rdx, 0x27
mov rsi, qword [rsi - 8]
sub rax, rsi
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180020402
mov rcx, rsi
call fcn.180187890
nop
mov rax, qword [rbp - 0x71]
cmp rax, 0xf
jbe 0x18002037e
lea rdx, [rax + 1]
mov rax, r14
cmp rdx, 0x1000
jb 0x180020376
add rdx, 0x27
mov r14, qword [r14 - 8]
sub rax, r14
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180020409
mov rcx, r14
call fcn.180187890
mov r14, qword [rbp - 0x61]
test bl, bl
je 0x1800203a2
mov rax, qword [rbp - 0x51]
mov eax, dword [rax]
mov dword [r14 + r13*4], eax
mov r13, rdi
dec rdi
sar rdi, 1
test r13, r13
jg 0x180020170
mov eax, dword [rbp - 0x79]
mov dword [r14 + r13*4], eax
mov rcx, qword [rbp - 0x59]
sub rcx, 4
mov qword [rbp - 0x59], rcx
mov rdi, rcx
mov rax, qword [rbp - 0x49]
add rax, rcx
and rax, 0xfffffffffffffffc
cmp rax, 8
jge 0x1800200ec
mov rcx, qword [rbp + 0x1f]
xor rcx, rsp
call fcn.180187870
mov rbx, qword [rsp + 0x110]
add rsp, 0xc0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
nop
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
nop
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
nop
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3