Function at 0x1800299d0
Capabilities:
Encode data using xor

Disassembly:
mov rax, rsp
mov qword [rax + 0x20], r9
mov dword [rax + 8], ecx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rax - 0x138]
sub rsp, 0x200
cmp qword [rbp + 0x170], 0
mov r15d, 0x1000000
mov rsi, r9
mov r13, r8
mov r14, rdx
mov r12d, ecx
mov dword [rsp + 0x20], r15d
je 0x180029d12
mov rdi, qword [rbp + 0x160]
mov qword [rax + 0x10], rbx
nop word [rax + rax]
lea rcx, [rbp - 0x50]
mov r8, r13
mov rdx, r14
call fcn.1800297c0
mov ecx, dword [rbp - 8]
mov rbx, rdi
test rdi, rdi
je 0x180029ad7
nop
test ecx, ecx
jne 0x180029a7e
cmp rbx, 0x80
jb 0x180029a7e
lea rcx, [rbp - 0x50]
mov rdx, rsi
call fcn.180027db0
add qword [rbp - 0x10], 0x400
mov ecx, dword [rbp - 8]
sub rsi, 0xffffffffffffff80
add rbx, 0xffffffffffffff80
jmp 0x180029ace
mov edi, 0x80
mov eax, ecx
mov rdx, rsi
sub edi, ecx
lea rcx, [rbp + rax - 4]
cmp rdi, rbx
cmova rdi, rbx
mov r8, rdi
call fcn.180016100
mov ecx, dword [rbp - 8]
add rsi, rdi
add ecx, edi
sub rbx, rdi
mov dword [rbp - 8], ecx
cmp ecx, 0x80
jne 0x180029ace
lea rdx, [rbp - 4]
lea rcx, [rbp - 0x50]
call fcn.180027db0
add qword [rbp - 0x10], 0x400
xor ecx, ecx
mov dword [rbp - 8], ecx
test rbx, rbx
jne 0x180029a50
mov ebx, 4
lea rsi, [rsp + 0x20]
test ecx, ecx
jne 0x180029b0f
cmp rbx, 0x80
jb 0x180029b0f
lea rcx, [rbp - 0x50]
mov rdx, rsi
call fcn.180027db0
add qword [rbp - 0x10], 0x400
mov ecx, dword [rbp - 8]
sub rsi, 0xffffffffffffff80
add rbx, 0xffffffffffffff80
jmp 0x180029b5f
mov edi, 0x80
mov eax, ecx
mov rdx, rsi
sub edi, ecx
lea rcx, [rbp + rax - 4]
cmp rdi, rbx
cmova rdi, rbx
mov r8, rdi
call fcn.180016100
mov ecx, dword [rbp - 8]
add rsi, rdi
add ecx, edi
sub rbx, rdi
mov dword [rbp - 8], ecx
cmp ecx, 0x80
jne 0x180029b5f
lea rdx, [rbp - 4]
lea rcx, [rbp - 0x50]
call fcn.180027db0
add qword [rbp - 0x10], 0x400
xor ecx, ecx
mov dword [rbp - 8], ecx
test rbx, rbx
jne 0x180029ae1
lea rdx, [rsp + 0x70]
lea rcx, [rbp - 0x50]
call fcn.180029590
movaps xmm0, xmmword [rsp + 0x70]
movaps xmm1, xmmword [rbp - 0x80]
movaps xmmword [rsp + 0x30], xmm0
movaps xmm0, xmmword [rbp - 0x70]
movaps xmmword [rsp + 0x40], xmm1
movaps xmm1, xmmword [rbp - 0x60]
movaps xmmword [rsp + 0x50], xmm0
movaps xmmword [rsp + 0x60], xmm1
cmp r12d, 1
jle 0x180029caa
dec r12d
nop dword [rax + rax]
lea rcx, [rbp - 0x50]
mov r8, r13
mov rdx, r14
call fcn.1800297c0
mov ecx, dword [rbp - 8]
mov ebx, 0x40
lea rsi, [rsp + 0x70]
nop dword [rax]
test ecx, ecx
jne 0x180029bfe
cmp rbx, 0x80
jb 0x180029bfe
lea rcx, [rbp - 0x50]
mov rdx, rsi
call fcn.180027db0
add qword [rbp - 0x10], 0x400
mov ecx, dword [rbp - 8]
sub rsi, 0xffffffffffffff80
add rbx, 0xffffffffffffff80
jmp 0x180029c4e
mov edi, 0x80
mov eax, ecx
mov rdx, rsi
sub edi, ecx
lea rcx, [rbp + rax - 4]
cmp rdi, rbx
cmova rdi, rbx
mov r8, rdi
call fcn.180016100
mov ecx, dword [rbp - 8]
add rsi, rdi
add ecx, edi
sub rbx, rdi
mov dword [rbp - 8], ecx
cmp ecx, 0x80
jne 0x180029c4e
lea rdx, [rbp - 4]
lea rcx, [rbp - 0x50]
call fcn.180027db0
add qword [rbp - 0x10], 0x400
xor ecx, ecx
mov dword [rbp - 8], ecx
test rbx, rbx
jne 0x180029bd0
lea rdx, [rsp + 0x70]
lea rcx, [rbp - 0x50]
call fcn.180029590
xor edx, edx
nop word [rax + rax]
mov eax, dword [rsp + rdx + 0x70]
add rdx, 0x10
xor dword [rsp + rdx + 0x20], eax
mov eax, dword [rsp + rdx + 0x64]
xor dword [rsp + rdx + 0x24], eax
mov eax, dword [rsp + rdx + 0x68]
xor dword [rsp + rdx + 0x28], eax
mov eax, dword [rsp + rdx + 0x6c]
xor dword [rsp + rdx + 0x2c], eax
cmp rdx, 0x40
jl 0x180029c70
dec r12
jne 0x180029bb0
mov r12d, dword [rbp + 0x140]
mov rbx, qword [rbp + 0x170]
mov rsi, qword [rbp + 0x168]
bswap r15d
mov edi, 0x40
inc r15d
lea rdx, [rsp + 0x30]
cmp rbx, rdi
bswap r15d
mov rcx, rsi
cmovb rdi, rbx
mov dword [rsp + 0x20], r15d
mov r8, rdi
call fcn.180016100
add rsi, rdi
sub rbx, rdi
mov rdi, qword [rbp + 0x160]
mov qword [rbp + 0x168], rsi
mov rsi, qword [rbp + 0x158]
mov qword [rbp + 0x170], rbx
jne 0x180029a30
mov rbx, qword [rsp + 0x248]
xor eax, eax
lea rdi, [rbp - 0x50]
mov ecx, 0x54
rep stosd dword [rdi], eax
lea rdi, [rsp + 0x30]
mov ecx, 0x10
rep stosd dword [rdi], eax
lea rdi, [rsp + 0x70]
mov ecx, 0x10
rep stosd dword [rdi], eax
add rsp, 0x200
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret