Function at 0x180021ec8
Capabilities:
Encode data using xor

Disassembly:
mov rax, rsp
mov qword [rax + 0x18], r8
mov qword [rax + 0x10], rdx
mov qword [rax + 8], rcx
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rax - 0x57]
sub rsp, 0xb8
mov qword [rbp - 1], 0xfffffffffffffffe
mov r14, r8
mov rdi, rdx
xor r13d, r13d
mov dword [rbp + 0x77], r13d
lea rax, [0x18019af30]
mov qword [rbp + 0x5f], rax
mov qword [0x18019af38], r13
xorps xmm0, xmm0
movups xmmword [0x18019af40], xmm0
mov qword [0x18019af50], r13
lea ebx, [r13 + 0xf]
mov qword [0x18019af58], rbx
mov byte [0x18019af40], r13b
movups xmmword [0x18019af60], xmm0
mov qword [0x18019af70], r13
mov qword [0x18019af78], rbx
xor r8d, r8d
lea rdx, [0x180164c88]
lea rcx, [0x18019af60]
call qword [sym.imp.VCRUNTIME140.dll_memcpy]
mov byte [0x18019af60], r13b
xorps xmm0, xmm0
movups xmmword [0x18019af80], xmm0
mov qword [0x18019af90], r13
mov qword [0x18019af98], rbx
mov byte [0x18019af80], r13b
lea r12d, [r13 + 1]
mov byte [0x18019afa0], r12b
mov qword [0x18019afa8], r13
cmp qword [rdi + 0x18], 0x10
jb 0x180021fab
mov rsi, qword [rdi]
mov rcx, rsi
jmp 0x180021fb1
mov rcx, rdi
mov rsi, rdi
mov r15, qword [rdi + 0x10]
add r15, rcx
mov rbx, rdi
cmp qword [rdi + 0x18], 0x10
jb 0x180021fc5
mov rbx, qword [rdi]
cmp rbx, r15
je 0x180021fe1
sub rsi, rbx
movzx ecx, byte [rbx]
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_tolower]
mov byte [rbx + rsi], al
add rbx, r12
cmp rbx, r15
jne 0x180021fcd
mov rdx, rdi
lea rcx, [0x18019af40]
call fcn.1800154d4
mov rdx, r14
lea rcx, [0x18019af80]
call fcn.1800154d4
xorps xmm0, xmm0
movups xmmword [rbp - 0x21], xmm0
mov qword [rbp - 0x11], r12
mov esi, 0xf
mov qword [rbp - 9], rsi
mov r8, r12
lea rdx, [0x180164cb8]
lea rcx, [rbp - 0x21]
call qword [sym.imp.VCRUNTIME140.dll_memcpy]
mov byte [rbp - 0x20], r13b
lea r8, [rbp - 0x21]
mov rdx, rdi
lea rcx, [rbp - 0x41]
call fcn.18001d72c
nop
mov rdx, qword [rax + 8]
sub rdx, 0x20
lea rcx, [0x18019af60]
call fcn.1800154d4
nop
lea rcx, [rbp - 0x41]
call fcn.180015704
mov r8, r14
mov rdx, rdi
call fcn.18001bab0
test rax, rax
je 0x180022076
mov qword [0x18019af30], rax
jmp 0x1800224e5
mov rdx, rdi
call fcn.18001b7a8
mov qword [0x18019af38], rax
lea rcx, [0x18019af30]
call fcn.180026858
mov dword [rbp - 0x59], 0x2e
mov eax, dword [rbp - 0x59]
xor al, 0x47
mov byte [rbp - 0x55], al
mov eax, dword [rbp - 0x59]
add al, r12b
xor al, 0x6c
mov byte [rbp - 0x54], al
mov eax, dword [rbp - 0x59]
add al, 2
xor al, 0x6f
mov byte [rbp - 0x53], al
mov eax, dword [rbp - 0x59]
add al, 3
xor al, 0x62
mov byte [rbp - 0x52], al
mov eax, dword [rbp - 0x59]
add al, 4
xor al, 0x61
mov byte [rbp - 0x51], al
mov eax, dword [rbp - 0x59]
add al, 5
xor al, 0x6c
mov byte [rbp - 0x50], al
mov eax, dword [rbp - 0x59]
add al, 6
xor al, 0x41
mov byte [rbp - 0x4f], al
mov eax, dword [rbp - 0x59]
add al, 7
xor al, 0x64
mov byte [rbp - 0x4e], al
mov eax, dword [rbp - 0x59]
add al, 8
xor al, 0x64
mov byte [rbp - 0x4d], al
mov eax, dword [rbp - 0x59]
add al, 9
xor al, 0x41
mov byte [rbp - 0x4c], al
mov eax, dword [rbp - 0x59]
add al, 0xa
xor al, 0x74
mov byte [rbp - 0x4b], al
mov eax, dword [rbp - 0x59]
add al, 0xb
xor al, 0x6f
mov byte [rbp - 0x4a], al
mov eax, dword [rbp - 0x59]
add al, 0xc
xor al, 0x6d
mov byte [rbp - 0x49], al
xor eax, eax
mov byte [rbp - 0x48], al
mov al, byte [rbp - 0x55]
mov r15d, r12d
mov rdx, r13
mov al, byte [rbp + rdx - 0x55]
mov ecx, dword [rbp - 0x59]
add cl, dl
xor cl, al
mov byte [rbp + rdx - 0x55], cl
add rdx, r12
cmp rdx, 0xd
jb 0x180022127
mov byte [rbp - 0x48], r13b
xor r8d, r8d
lea rdx, [rbp - 0x55]
mov rcx, r14
call fcn.18001bfe4
or rbx, 0xffffffffffffffff
test rax, rax
je 0x180022254
mov dword [rbp - 0x71], 0x38
mov eax, dword [rbp - 0x71]
xor al, 0x47
mov byte [rbp - 0x6d], al
mov eax, dword [rbp - 0x71]
add al, r12b
xor al, 0x6c
mov byte [rbp - 0x6c], al
mov eax, dword [rbp - 0x71]
add al, 2
xor al, 0x6f
mov byte [rbp - 0x6b], al
mov eax, dword [rbp - 0x71]
add al, 3
xor al, 0x62
mov byte [rbp - 0x6a], al
mov eax, dword [rbp - 0x71]
add al, 4
xor al, 0x61
mov byte [rbp - 0x69], al
mov eax, dword [rbp - 0x71]
add al, 5
xor al, 0x6c
mov byte [rbp - 0x68], al
mov eax, dword [rbp - 0x71]
add al, 6
xor al, 0x47
mov byte [rbp - 0x67], al
mov eax, dword [rbp - 0x71]
add al, 7
xor al, 0x65
mov byte [rbp - 0x66], al
mov eax, dword [rbp - 0x71]
add al, 8
xor al, 0x74
mov byte [rbp - 0x65], al
mov eax, dword [rbp - 0x71]
add al, 9
xor al, 0x41
mov byte [rbp - 0x64], al
mov eax, dword [rbp - 0x71]
add al, 0xa
xor al, 0x74
mov byte [rbp - 0x63], al
mov eax, dword [rbp - 0x71]
add al, 0xb
xor al, 0x6f
mov byte [rbp - 0x62], al
mov eax, dword [rbp - 0x71]
add al, 0xc
xor al, 0x6d
mov byte [rbp - 0x61], al
mov eax, dword [rbp - 0x71]
add al, 0xd
xor al, 0x4e
mov byte [rbp - 0x60], al
mov eax, dword [rbp - 0x71]
add al, 0xe
xor al, 0x61
mov byte [rbp - 0x5f], al
mov eax, dword [rbp - 0x71]
add al, sil
xor al, 0x6d
mov byte [rbp - 0x5e], al
mov eax, dword [rbp - 0x71]
add al, 0x10
xor al, 0x65
mov byte [rbp - 0x5d], al
xor eax, eax
mov byte [rbp - 0x5c], al
mov al, byte [rbp - 0x6d]
lea r15d, [rbx + 4]
mov rdx, r13
mov al, byte [rbp + rdx - 0x6d]
mov ecx, dword [rbp - 0x71]
add cl, dl
xor cl, al
mov byte [rbp + rdx - 0x6d], cl
add rdx, r12
cmp rdx, 0x11
jb 0x18002221f
mov byte [rbp - 0x5c], r13b
mov r8, rbx
lea rdx, [rbp - 0x6d]
mov rcx, r14
call fcn.18001bfe4
test rax, rax
je 0x180022254
mov sil, r13b
jmp 0x18002225d
mov sil, r12b
test r15b, 2
je 0x18002226d
xor edx, edx
lea r8d, [rdx + 0x12]
lea rcx, [rbp - 0x6d]
call qword [sym.imp.VCRUNTIME140.dll_memset]
xor edx, edx
lea r8d, [rdx + 0xe]
lea rcx, [rbp - 0x55]
call qword [sym.imp.VCRUNTIME140.dll_memset]
test sil, sil
je 0x1800223bf
mov dword [rsp + 0x20], 0x74
mov eax, dword [rsp + 0x20]
xor al, 0x75
mov byte [rbp - 0x7d], al
mov eax, dword [rsp + 0x20]
add al, r12b
xor al, 0x73
mov byte [rbp - 0x7c], al
mov eax, dword [rsp + 0x20]
add al, 2
xor al, 0x65
mov byte [rbp - 0x7b], al
mov eax, dword [rsp + 0x20]
add al, 3
xor al, 0x72
mov byte [rbp - 0x7a], al
mov eax, dword [rsp + 0x20]
add al, 4
xor al, 0x33
mov byte [rbp - 0x79], al
mov eax, dword [rsp + 0x20]
add al, 5
xor al, 0x32
mov byte [rbp - 0x78], al
mov eax, dword [rsp + 0x20]
add al, 6
xor al, 0x2e
mov byte [rbp - 0x77], al
mov eax, dword [rsp + 0x20]
add al, 7
xor al, 0x64
mov byte [rbp - 0x76], al
mov eax, dword [rsp + 0x20]
add al, 8
xor al, 0x6c
mov byte [rbp - 0x75], al
mov eax, dword [rsp + 0x20]
add al, 9
xor al, 0x6c
mov byte [rbp - 0x74], al
xor eax, eax
mov byte [rbp - 0x73], al
mov al, byte [rbp - 0x7d]
mov rdx, r13
mov al, byte [rbp + rdx - 0x7d]
mov ecx, dword [rsp + 0x20]
add cl, dl
xor cl, al
mov byte [rbp + rdx - 0x7d], cl
add rdx, r12
cmp rdx, 0xa
jb 0x180022306
mov byte [rbp - 0x73], r13b
xorps xmm0, xmm0
movups xmmword [rbp - 0x41], xmm0
xorps xmm1, xmm1
movdqu xmmword [rbp - 0x31], xmm1
lea rax, [rbp - 0x7d]
inc rbx
cmp byte [rax + rbx], r13b
jne 0x180022336
mov r8, rbx
lea rdx, [rbp - 0x7d]
lea rcx, [rbp - 0x41]
call fcn.18000c7ac
nop
xor edx, edx
lea r8d, [rdx + 0xb]
lea rcx, [rbp - 0x7d]
call qword [sym.imp.VCRUNTIME140.dll_memset]
lea rcx, [rbp - 0x41]
cmp qword [rbp - 0x29], 0x10
cmovae rcx, qword [rbp - 0x41]
call qword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov r8, rax
lea rdx, [rbp - 0x41]
call fcn.1800150f8
nop
mov rdx, qword [rbp - 0x29]
cmp rdx, 0x10
jb 0x1800223bf
inc rdx
mov rcx, qword [rbp - 0x41]
mov rax, rcx
cmp rdx, 0x1000
jb 0x1800223ba
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x1800223ba
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
call fcn.180157a14
mov rcx, qword [0x18019af38]
test rcx, rcx
je 0x180022590
mov rdx, r14
cmp qword [r14 + 0x18], 0x10
jb 0x1800223dc
mov rdx, qword [r14]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov r15, rax
cmp byte [0x18019afa0], r13b
je 0x180022428
lea rcx, [0x18019af30]
call fcn.180025c08
mov rsi, rax
mov rbx, qword [0x18019af38]
mov r12, r15
sub r12, rbx
lea rcx, [0x18019af30]
call fcn.180026858
mov rax, qword [0x18019af38]
cmp rax, rbx
je 0x18002242b
lea rsi, [rax + r12]
jmp 0x18002242b
mov rsi, r15
test rsi, rsi
jne 0x180022495
mov rsi, r15
test r15, r15
jne 0x18002248e
mov rcx, rdi
cmp qword [rdi + 0x18], 0x10
jb 0x180022445
mov rcx, qword [rdi]
call qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
test rax, rax
jne 0x18002246c
mov rcx, rdi
cmp qword [rdi + 0x18], 0x10
jb 0x18002245d
mov rcx, qword [rdi]
call qword [sym.imp.KERNEL32.dll_LoadLibraryA]
test rax, rax
je 0x180022590
mov rdx, r14
cmp qword [r14 + 0x18], 0x10
jb 0x180022479
mov rdx, qword [r14]
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rsi, rax
test rax, rax
je 0x180022590
mov byte [0x18019afa0], r13b
cmp byte [0x18019afa0], r13b
je 0x1800224cb
mov rdx, rsi
call fcn.180026de0
test al, al
jne 0x1800224b6
mov rsi, r15
mov byte [0x18019afa0], r13b
jmp 0x1800224c3
cmp rsi, r15
je 0x1800224c3
mov rdx, r15
call fcn.180025644
mov rdx, rsi
call fcn.180025644
mov r9, rsi
mov r8, r14
mov rdx, rdi
call fcn.18001b8ac
mov qword [0x18019af30], rsi
mov esi, 0xf
mov rdx, qword [rdi + 0x18]
cmp rdx, 0x10
jb 0x18002251b
mov rcx, qword [rdi]
inc rdx
cmp rdx, 0x1000
jb 0x180022516
add rdx, 0x27
mov r8, qword [rcx - 8]
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x180022582
mov rcx, r8
call fcn.180157a14
mov qword [rdi + 0x10], r13
mov qword [rdi + 0x18], rsi
mov byte [rdi], r13b
mov rdx, qword [r14 + 0x18]
cmp rdx, 0x10
jb 0x18002255c
inc rdx
mov rcx, qword [r14]
cmp rdx, 0x1000
jb 0x180022557
add rdx, 0x27
mov r8, qword [rcx - 8]
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x180022589
mov rcx, r8
call fcn.180157a14
mov qword [r14 + 0x10], r13
mov qword [r14 + 0x18], rsi
mov byte [r14], r13b
lea rax, [0x18019af30]
add rsp, 0xb8
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
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 fcn.1800a9ce8
int3