Function at 0x18003bb30
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x10], rdx
push rbp
push rbx
push rdi
push r12
push r13
push r14
lea rbp, [rsp - 0xc8]
sub rsp, 0x1c8
mov rdi, rcx
xor r13d, r13d
mov dword [rdx], r13d
mov rbx, rdx
mov r8, qword [rcx]
mov ecx, dword [rcx + 0x18]
mov rax, qword [rdi + 8]
lea r12, [rdi + 0x88]
sub rax, r8
lea r14d, [r13 + 1]
cmp rcx, rax
jb 0x18003bb7a
xor al, al
jmp 0x18003bba4
lea eax, [rcx + 1]
mov dword [rdi + 0x18], eax
lea rdx, [rbp + 0x100]
movzx eax, byte [r8 + rcx]
mov r8d, r14d
mov rcx, r12
mov byte [rbp + 0x100], al
call fcn.180002ae0
movzx eax, byte [rbp + 0x100]
movzx ecx, al
mov dword [rbx], ecx
mov qword [rsp + 0x1c0], rsi
mov qword [rsp + 0x1b8], r15
sub ecx, r14d
je 0x18003c308
sub ecx, r14d
je 0x18003c1bf
sub ecx, r14d
je 0x18003bce6
cmp ecx, r14d
jne case.default.0x18003c367
mov r8, qword [rdi + 8]
mov rdx, qword [rdi]
mov rax, r8
mov ecx, dword [rdi + 0x18]
sub rax, rdx
cmp rcx, rax
jb 0x18003bbf6
xor al, al
jmp 0x18003bc29
lea eax, [rcx + 1]
mov r8d, r14d
mov dword [rdi + 0x18], eax
movzx eax, byte [rdx + rcx]
lea rdx, [rbp + 0x108]
mov rcx, r12
mov byte [rbp + 0x108], al
call fcn.180002ae0
movzx eax, byte [rbp + 0x108]
mov r8, qword [rdi + 8]
mov rdx, qword [rdi]
mov ecx, dword [rdi + 0x18]
mov byte [rbp + 0x100], al
mov rax, r8
sub rax, rdx
mov r9d, ecx
cmp r9, rax
jb 0x18003bc41
xor al, al
jmp 0x18003bc75
lea eax, [rcx + 1]
mov r8d, r14d
mov dword [rdi + 0x18], eax
mov rcx, r12
movzx eax, byte [r9 + rdx]
lea rdx, [rbp + 0x108]
mov byte [rbp + 0x108], al
call fcn.180002ae0
movzx eax, byte [rbp + 0x108]
mov r8, qword [rdi + 8]
mov rdx, qword [rdi]
mov ecx, dword [rdi + 0x18]
mov byte [rbp + 0x101], al
mov rax, r8
sub rax, rdx
mov r9d, ecx
cmp r9, rax
jb 0x18003bc8d
xor al, al
jmp 0x18003bcc1
lea eax, [rcx + 1]
mov r8d, r14d
mov dword [rdi + 0x18], eax
mov rcx, r12
movzx eax, byte [rdx + r9]
lea rdx, [rbp + 0x108]
mov byte [rbp + 0x108], al
call fcn.180002ae0
movzx eax, byte [rbp + 0x108]
mov r8, qword [rdi + 8]
mov rdx, qword [rdi]
mov ecx, dword [rdi + 0x18]
mov r9d, ecx
sub r8, rdx
mov byte [rbp + 0x102], al
cmp r9, r8
jae 0x18003c2b4
lea eax, [rcx + 1]
mov dword [rdi + 0x18], eax
movzx eax, byte [rdx + r9]
jmp 0x18003c2d5
mov rcx, qword [rdi + 8]
mov r8, qword [rdi]
mov rax, rcx
mov edx, dword [rdi + 0x18]
sub rax, r8
cmp rdx, rax
jb 0x18003bcff
xor al, al
jmp 0x18003bd33
lea eax, [rdx + 1]
mov rcx, r12
mov dword [rdi + 0x18], eax
movzx eax, byte [rdx + r8]
mov r8d, r14d
lea rdx, [rbp + 0x110]
mov byte [rbp + 0x110], al
call fcn.180002ae0
movzx eax, byte [rbp + 0x110]
mov edx, dword [rdi + 0x18]
mov r8, qword [rdi]
mov rcx, qword [rdi + 8]
mov r9d, edx
sub rcx, r8
mov byte [rsp + 0x24], al
cmp r9, rcx
jb 0x18003bd46
xor al, al
jmp 0x18003bd70
lea eax, [rdx + 1]
mov rcx, r12
mov dword [rdi + 0x18], eax
lea rdx, [rbp + 0x118]
movzx eax, byte [r9 + r8]
mov r8d, r14d
mov byte [rbp + 0x118], al
call fcn.180002ae0
movzx eax, byte [rbp + 0x118]
mov byte [rsp + 0x25], al
xorps xmm0, xmm0
movsx eax, word [rsp + 0x24]
mov rsi, r13
mov qword [rsp + 0x70], r13
movdqu xmmword [rsp + 0x60], xmm0
test eax, eax
jle 0x18003be0f
mov rbx, qword [rsp + 0x68]
mov r15d, eax
nop word [rax + rax]
mov rdx, qword [rdi]
mov rax, qword [rdi + 8]
mov ecx, dword [rdi + 0x18]
sub rax, rdx
cmp rcx, rax
jb 0x18003bdb6
xor al, al
jmp 0x18003bdd9
lea eax, [rcx + 1]
mov r8d, r14d
mov dword [rdi + 0x18], eax
movzx eax, byte [rcx + rdx]
lea rdx, [rsp + 0x20]
mov rcx, r12
mov byte [rsp + 0x20], al
call fcn.180002ae0
movzx eax, byte [rsp + 0x20]
mov byte [rsp + 0x21], al
cmp rbx, rsi
je 0x18003bdee
mov byte [rbx], al
inc rbx
mov qword [rsp + 0x68], rbx
jmp 0x18003be0a
lea r8, [rsp + 0x21]
mov rdx, rbx
lea rcx, [rsp + 0x60]
call fcn.18023f460
mov rsi, qword [rsp + 0x70]
mov rbx, qword [rsp + 0x68]
sub r15, r14
jne 0x18003bda0
mov dword [rsp + 0x28], 4
movabs r10, 0xaaaaaaaaaaaaaaab
mov dword [rsp + 0x38], 2
mov ecx, dword [rsp + 0x38]
mov eax, dword [rsp + 0x28]
add ecx, eax
mov dword [rsp + 0x28], ecx
mov r8d, dword [rsp + 0x28]
mov dword [rsp + 0x30], 0xc92935bb
mov dword [rsp + 0x34], 0xaa2594
mov qword [rsp + 0x28], r13
mov rax, qword [rsp + 0x28]
nop word [rax + rax]
mov rcx, qword [rsp + 0x28]
mov rax, qword [rsp + 0x28]
movzx r9d, byte [rsp + rax + 0x31]
mov rax, r10
mul rcx
shr rdx, 4
movzx eax, dl
add al, al
add dl, al
mov rax, qword [rsp + 0x28]
shl dl, 3
sub cl, dl
mov edx, 0x230ce477
sar edx, cl
xor dl, r9b
mov byte [rsp + rax + 0x31], dl
mov rax, qword [rsp + 0x28]
inc rax
mov qword [rsp + 0x28], rax
mov rax, qword [rsp + 0x28]
cmp rax, 6
jb 0x18003be60
lea rdx, [rsp + 0x31]
mov byte [rsp + 0x37], r13b
lea rcx, [rbp - 0x60]
call fcn.180034960
mov r12d, dword [rsp + 0x68]
mov r15, qword [rsp + 0x60]
mov edx, dword [rbp + 0xa4]
sub r12d, r15d
cmp r12d, 4
jl 0x18003bf27
mov r13d, r12d
mov rbx, r15
shr r13, 2
mov eax, r13d
mov rsi, r13
neg eax
lea r12d, [r12 + rax*4]
lea eax, [rdx - 1]
cmp eax, r14d
jbe 0x18003bf0d
lea rcx, [rbp - 0x60]
call fcn.180034f70
mov edx, r14d
mov dword [rbp + 0xa4], edx
movsxd rax, edx
inc edx
mov ecx, dword [rbp + rax*4 - 0x60]
xor dword [rbx], ecx
add rbx, 4
mov dword [rbp + 0xa4], edx
sub rsi, r14
jne 0x18003bef3
lea eax, [rdx - 1]
lea ebx, [r13*4]
cmp eax, r14d
jbe 0x18003bf49
lea rcx, [rbp - 0x60]
call fcn.180034f70
mov edx, r14d
mov dword [rbp + 0xa4], edx
movsxd rax, edx
mov ecx, dword [rbp + rax*4 - 0x60]
mov dword [rbp + 0x100], ecx
movsxd rcx, r12d
test r12d, r12d
jle 0x18003bf86
movsxd rdx, ebx
add rdx, r15
nop dword [rax]
nop dword [rax + rax]
movzx eax, byte [rbp + rcx + 0x100]
dec rcx
xor byte [rdx], al
lea rdx, [rdx + 1]
test rcx, rcx
jg 0x18003bf70
mov r12, qword [rsp + 0x68]
lea rcx, [rsp + 0x40]
mov rdx, r12
mov qword [rsp + 0x50], 0
mov r13d, 0xf
mov byte [rsp + 0x40], 0
sub rdx, r15
mov qword [rsp + 0x58], r13
call fcn.180241000
mov rsi, r15
cmp r15, r12
je 0x18003c01f
movzx ebx, byte [rbp + 0x108]
nop dword [rax]
nop word [rax + rax]
mov rcx, qword [rsp + 0x50]
mov rdx, qword [rsp + 0x58]
movzx r9d, byte [rsi]
cmp rcx, rdx
jae 0x18003c006
lea rax, [rcx + 1]
cmp rdx, 0x10
mov qword [rsp + 0x50], rax
lea rax, [rsp + 0x40]
cmovae rax, qword [rsp + 0x40]
mov byte [rax + rcx], r9b
mov byte [rax + rcx + 1], 0
jmp 0x18003c017
movzx r8d, bl
lea rcx, [rsp + 0x40]
mov rdx, r14
call fcn.18023f610
inc rsi
cmp rsi, r12
jne 0x18003bfd0
cmp qword [rsp + 0x58], 0x10
lea rbx, [rsp + 0x40]
mov rsi, qword [rsp + 0x50]
xorps xmm0, xmm0
cmovae rbx, qword [rsp + 0x40]
movdqu xmmword [rbp - 0x78], xmm0
cmp rsi, 0x10
jae 0x18003c050
mov r8d, 0x10
lea rcx, [rsp + 0x78]
jmp 0x18003c0be
movabs rax, 0x7fffffffffffffff
mov r13, rsi
or r13, 0xf
cmp r13, rax
cmova r13, rax
lea rcx, [r13 + 1]
cmp rcx, 0x1000
jb 0x18003c0a4
lea rax, [rcx + 0x27]
cmp rax, rcx
jbe 0x18003c3c3
mov rcx, rax
call fcn.180249f28
mov rcx, rax
test rax, rax
je 0x18003c3c9
add rax, 0x27
and rax, 0xffffffffffffffe0
mov qword [rax - 8], rcx
jmp 0x18003c0b2
test rcx, rcx
je 0x18003c0b0
call fcn.180249f28
jmp 0x18003c0b2
xor eax, eax
mov qword [rsp + 0x78], rax
lea r8, [rsi + 1]
mov rcx, rax
mov rdx, rbx
call fcn.18024af30
mov rbx, qword [rdi + 0x70]
lea r12, [rdi + 0x70]
mov rdi, qword [rdi + 0x78]
mov qword [rbp - 0x70], r13
mov qword [rbp - 0x78], rsi
cmp rbx, rdi
je 0x18003c11e
nop
cmp qword [rbx + 0x18], 0x10
mov rdx, rbx
jb 0x18003c0ed
mov rdx, qword [rbx]
cmp r13, 0x10
lea rcx, [rsp + 0x78]
cmovae rcx, qword [rsp + 0x78]
cmp rsi, qword [rbx + 0x10]
jne 0x18003c112
mov r8, rsi
call fcn.18024c4b0
test eax, eax
je 0x18003c1a0
add rbx, 0x20
inc r14d
cmp rbx, rdi
jne 0x18003c0e0
lea rcx, [rsp + 0x78]
call fcn.18023c0a0
mov rbx, qword [rbp + 0x108]
mov dword [rbx + 4], 0
lea rdx, [rsp + 0x40]
mov rcx, r12
call fcn.18023ae80
mov rax, qword [r12 + 8]
sub rax, qword [r12]
sar rax, 5
mov dword [rbx + 4], eax
lea rcx, [rsp + 0x40]
call fcn.18023c0a0
test r15, r15
je 0x18003c399
mov rdx, qword [rsp + 0x70]
mov rax, r15
sub rdx, r15
cmp rdx, 0x1000
jb 0x18003c193
mov r15, qword [r15 - 8]
add rdx, 0x27
sub rax, r15
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18003c3bd
mov rcx, r15
call fcn.180249cb8
jmp 0x18003c399
lea rcx, [rsp + 0x78]
call fcn.18023c0a0
mov rbx, qword [rbp + 0x108]
mov dword [rbx + 4], r14d
test r14d, r14d
jne 0x18003c153
jmp 0x18003c136
mov r8, qword [rdi + 8]
mov rdx, qword [rdi]
mov rax, r8
mov ecx, dword [rdi + 0x18]
sub rax, rdx
cmp rcx, rax
jb 0x18003c1d8
xor al, al
jmp 0x18003c20b
lea eax, [rcx + 1]
mov r8d, r14d
mov dword [rdi + 0x18], eax
movzx eax, byte [rdx + rcx]
lea rdx, [rbp + 0x108]
mov rcx, r12
mov byte [rbp + 0x108], al
call fcn.180002ae0
movzx eax, byte [rbp + 0x108]
mov r8, qword [rdi + 8]
mov rdx, qword [rdi]
mov ecx, dword [rdi + 0x18]
mov byte [rbp + 0x100], al
mov rax, r8
sub rax, rdx
mov r9d, ecx
cmp r9, rax
jb 0x18003c223
xor al, al
jmp 0x18003c257
lea eax, [rcx + 1]
mov r8d, r14d
mov dword [rdi + 0x18], eax
mov rcx, r12
movzx eax, byte [r9 + rdx]
lea rdx, [rbp + 0x108]
mov byte [rbp + 0x108], al
call fcn.180002ae0
movzx eax, byte [rbp + 0x108]
mov r8, qword [rdi + 8]
mov rdx, qword [rdi]
mov ecx, dword [rdi + 0x18]
mov byte [rbp + 0x101], al
mov rax, r8
sub rax, rdx
mov r9d, ecx
cmp r9, rax
jb 0x18003c26f
xor al, al
jmp 0x18003c2a3
lea eax, [rcx + 1]
mov r8d, r14d
mov dword [rdi + 0x18], eax
mov rcx, r12
movzx eax, byte [r9 + rdx]
lea rdx, [rbp + 0x108]
mov byte [rbp + 0x108], al
call fcn.180002ae0
movzx eax, byte [rbp + 0x108]
mov r8, qword [rdi + 8]
mov rdx, qword [rdi]
mov ecx, dword [rdi + 0x18]
mov r9d, ecx
sub r8, rdx
mov byte [rbp + 0x102], al
cmp r9, r8
jb 0x18003c2ca
xor al, al
mov byte [rbp + 0x103], al
mov eax, dword [rbp + 0x100]
mov dword [rbx + 4], eax
jmp 0x18003c399
lea eax, [rcx + 1]
mov dword [rdi + 0x18], eax
movzx eax, byte [r9 + rdx]
mov r8d, r14d
mov byte [rbp + 0x108], al
lea rdx, [rbp + 0x108]
mov rcx, r12
call fcn.180002ae0
movzx eax, byte [rbp + 0x108]
mov byte [rbp + 0x103], al
mov eax, dword [rbp + 0x100]
mov dword [rbx + 4], eax
jmp 0x18003c399
mov rdx, qword [rdi]
mov rax, qword [rdi + 8]
mov ecx, dword [rdi + 0x18]
sub rax, rdx
cmp rcx, rax
jb 0x18003c31e
xor al, al
jmp 0x18003c347
lea eax, [rcx + 1]
mov r8d, r14d
mov dword [rdi + 0x18], eax
movzx eax, byte [rdx + rcx]
lea rdx, [rbp + 0x108]
mov rcx, r12
mov byte [rbp + 0x108], al
call fcn.180002ae0
movzx eax, byte [rbp + 0x108]
movzx eax, al
mov dword [rbx + 4], eax
dec eax
cmp eax, 5
ja case.default.0x18003c367
lea rdx, [0x180000000]
cdqe
mov ecx, dword [rdx + rax*4 + 0x3c3d0]
add rcx, rdx
jmp rcx
mov eax, 0x20
jmp 0x18003c391
mov eax, 0x28
jmp 0x18003c391
mov eax, 0x30
jmp 0x18003c391
mov eax, 0x38
jmp 0x18003c391
mov eax, 0x40
jmp 0x18003c391
mov eax, 0x48
add rax, rdi
jne 0x18003c399
mov dword [rbx], r13d
mov r15, qword [rsp + 0x1b8]
mov rax, rbx
mov rsi, qword [rsp + 0x1c0]
add rsp, 0x1c8
pop r14
pop r13
pop r12
pop rdi
pop rbx
pop rbp
ret
call fcn.1802514a4
int3
call fcn.180001150
int3
call fcn.1802514a4
int3