Function at 0x18002f660
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x10], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x170]
sub rsp, 0x270
cmp qword [rcx + 0x38], 0
mov r14, rdx
mov rsi, rcx
jne 0x18002faff
xor ebx, ebx
mov dword [rsp + 0x20], 0x838b9bf9
mov dword [rsp + 0x24], 0x5f33d82f
movabs r13, 0xaaaaaaaaaaaaaaab
mov dword [rsp + 0x28], 0x2af16a47
mov word [rsp + 0x2c], 0x60
mov qword [rbp + 0x1c8], rbx
mov rax, qword [rbp + 0x1c8]
nop dword [rax]
mov rcx, qword [rbp + 0x1c8]
mov rax, qword [rbp + 0x1c8]
movzx r8d, byte [rsp + rax + 0x21]
mov rax, r13
mul rcx
shr rdx, 4
movzx eax, dl
add al, al
add dl, al
mov rax, qword [rbp + 0x1c8]
shl dl, 3
sub cl, dl
mov edx, 0x54390bdc
sar edx, cl
xor dl, r8b
mov byte [rsp + rax + 0x21], dl
mov rax, qword [rbp + 0x1c8]
inc rax
mov qword [rbp + 0x1c8], rax
mov rax, qword [rbp + 0x1c8]
cmp rax, 0xc
jb 0x18002f6d0
mov byte [rsp + 0x2d], bl
call fcn.1800015c0
mov rcx, qword gs:[0x58]
mov r15, rax
mov edx, dword [0x1802848b4]
mov eax, 4
mov rdi, qword [rcx + rdx*8]
add rdi, rax
mov ecx, dword [rdi]
cmp dword [0x180286968], ecx
jle 0x18002f78d
lea rcx, [0x180286968]
call fcn.180249e18
cmp dword [0x180286968], 0xffffffff
jne 0x18002f78d
mov rax, qword [sym.imp.KERNEL32.dll_LoadLibraryA]
lea rcx, [0x180286968]
mov qword [0x18028a9f8], rax
call fcn.180249db8
mov eax, dword [rdi]
cmp dword [0x18028a99c], eax
jle 0x18002f7c6
lea rcx, [0x18028a99c]
call fcn.180249e18
cmp dword [0x18028a99c], 0xffffffff
jne 0x18002f7c6
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
lea rcx, [0x18028a99c]
mov qword [0x18028a9a0], rax
call fcn.180249db8
mov rax, qword [0x18028a9f8]
mov rcx, r15
call rax
mov r8, qword [0x18028a9a0]
lea rdx, [rsp + 0x21]
mov rcx, rax
call r8
mov r12, rax
test rax, rax
je 0x18002faf9
movdqa xmm0, xmmword [0x18027aec0]
movdqu xmmword [rsp + 0x2e], xmm0
mov word [rsp + 0x3e], 0x5e
mov qword [rbp + 0x1c8], rbx
mov rcx, qword [rbp + 0x1c8]
nop dword [rax]
nop word [rax + rax]
mov rcx, qword [rbp + 0x1c8]
mov rax, qword [rbp + 0x1c8]
movzx r8d, byte [rsp + rax + 0x2f]
mov rax, r13
mul rcx
shr rdx, 4
movzx eax, dl
add al, al
add dl, al
mov rax, qword [rbp + 0x1c8]
shl dl, 3
sub cl, dl
mov edx, 0x6c0fe211
sar edx, cl
xor dl, r8b
mov byte [rsp + rax + 0x2f], dl
mov rax, qword [rbp + 0x1c8]
inc rax
mov qword [rbp + 0x1c8], rax
mov rax, qword [rbp + 0x1c8]
cmp rax, 0x10
jb 0x18002f820
mov byte [rsp + 0x3f], bl
call fcn.1800015c0
mov edx, dword [rdi]
mov r15, rax
cmp dword [0x180286968], edx
jle 0x18002f8c2
lea rcx, [0x180286968]
call fcn.180249e18
cmp dword [0x180286968], 0xffffffff
jne 0x18002f8c2
mov rdx, qword [sym.imp.KERNEL32.dll_LoadLibraryA]
lea rcx, [0x180286968]
mov qword [0x18028a9f8], rdx
call fcn.180249db8
mov eax, dword [rdi]
cmp dword [0x18028a99c], eax
jle 0x18002f8fb
lea rcx, [0x18028a99c]
call fcn.180249e18
cmp dword [0x18028a99c], 0xffffffff
jne 0x18002f8fb
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
lea rcx, [0x18028a99c]
mov qword [0x18028a9a0], rax
call fcn.180249db8
mov rax, qword [0x18028a9f8]
mov rcx, r15
call rax
mov r8, qword [0x18028a9a0]
lea rdx, [rsp + 0x2f]
mov rcx, rax
call r8
mov rdi, rax
test rax, rax
je 0x18002faf9
mov qword [rsp + 0x40], 0x41
mov qword [rbp + 0x1c8], 0xc3
mov rdx, qword [rbp + 0x1c8]
mov rcx, qword [rsp + 0x40]
add rdx, rcx
mov qword [rbp + 0x1c8], rdx
lea rdx, [rbp + 0x60]
mov rcx, qword [rbp + 0x1c8]
call r12
xor eax, eax
mov word [rbp + 0x1b0], 0xd0b6
mov byte [rbp + 0x1b2], al
mov qword [rbp + 0x1c8], rbx
mov rax, qword [rbp + 0x1c8]
nop dword [rax]
mov rcx, qword [rbp + 0x1c8]
mov rax, qword [rbp + 0x1c8]
movzx r8d, byte [rbp + rax + 0x1b1]
mov rax, r13
mul rcx
shr rdx, 4
movzx eax, dl
add al, al
add dl, al
mov rax, qword [rbp + 0x1c8]
shl dl, 3
sub cl, dl
mov edx, 0xdf3ccb7
sar edx, cl
xor dl, r8b
mov byte [rbp + rax + 0x1b1], dl
mov rax, qword [rbp + 0x1c8]
inc rax
mov qword [rbp + 0x1c8], rax
mov rax, qword [rbp + 0x1c8]
cmp rax, 1
jb 0x18002f980
lea r9, [rsp + 0x50]
mov byte [rbp + 0x1b2], bl
xor r8d, r8d
lea rdx, [rbp + 0x1b1]
lea rcx, [rbp + 0x60]
call rdi
cmp byte [rsi + 0x58], 5
jne 0x18002face
mov dword [rbp + 0x1c0], 0xce09f7e7
mov word [rbp + 0x1c4], 0xbe
mov qword [rbp + 0x1c8], rbx
mov rax, qword [rbp + 0x1c8]
nop dword [rax]
mov rcx, qword [rbp + 0x1c8]
mov rax, qword [rbp + 0x1c8]
movzx r8d, byte [rbp + rax + 0x1c1]
mov rax, r13
mul rcx
shr rdx, 4
movzx eax, dl
add al, al
add dl, al
mov rax, qword [rbp + 0x1c8]
shl dl, 3
sub cl, dl
mov edx, 0x4d6536d9
sar edx, cl
xor dl, r8b
mov byte [rbp + rax + 0x1c1], dl
mov rax, qword [rbp + 0x1c8]
inc rax
mov qword [rbp + 0x1c8], rax
mov rax, qword [rbp + 0x1c8]
cmp rax, 4
jb 0x18002fa30
mov byte [rbp + 0x1c5], bl
cmp byte [rsp + 0x50], bl
je 0x18002faa9
nop
inc ebx
cmp byte [rsp + rbx + 0x50], 0
jne 0x18002faa0
mov eax, ebx
lea rcx, [rsp + 0x50]
add rcx, rax
lea rdx, [rbp + 0x1c1]
sub rdx, rcx
nop dword [rax]
movzx eax, byte [rdx + rcx]
mov byte [rcx], al
lea rcx, [rcx + 1]
test al, al
jne 0x18002fac0
lea rbx, [rsi + 0x28]
mov r8, 0xffffffffffffffff
lea rax, [rsp + 0x50]
nop
inc r8
cmp byte [rax + r8], 0
jne 0x18002fae0
lea rdx, [rsp + 0x50]
mov rcx, rbx
call fcn.18023c100
jmp 0x18002fb03
lea rdx, [rsi + 0x28]
jmp 0x18002fb06
lea rbx, [rcx + 0x28]
mov rdx, rbx
mov rcx, r14
call fcn.18023b280
mov rbx, qword [rsp + 0x2b8]
mov rax, r14
add rsp, 0x270
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret