Function at 0x29e85baf3d0
Capabilities:
Encode data using xor

Disassembly:
push rbx
push rsi
push r12
push r13
push r14
push r15
sub rsp, 0x48
mov rax, qword [rcx + 0x178]
mov r12, qword [rcx + 0x160]
mov r13, qword [rcx + 0x168]
mov qword [rsp + 0x28], rax
mov rax, qword [rcx + 0x180]
mov rbx, rcx
mov rcx, qword [rcx + 0x38]
mov qword [rsp + 0x20], rax
movabs rax, 0xfffffffe0
add rcx, r9
mov r15, r9
mov r14, r8
mov rsi, rdx
cmp rcx, rax
ja 0x29e85baf6c6
cmp rcx, r9
jb 0x29e85baf6c6
cmp dword [rbx + 0x174], 0
mov qword [rsp + 0x88], rbp
mov qword [rbx + 0x38], rcx
mov qword [rsp + 0x40], rdi
je 0x29e85baf463
lea rdx, [rbx + 0x60]
lea rcx, [rbx + 0x40]
call r12
mov dword [rbx + 0x174], 0
movzx eax, byte [rbx + 0xd]
mov ebp, dword [rbx + 0x170]
movzx edi, byte [rbx + 0xc]
shl edi, 8
mov dword [rsp + 0x80], ebp
or edi, eax
movzx eax, byte [rbx + 0xe]
shl edi, 8
or edi, eax
movzx eax, byte [rbx + 0xf]
shl edi, 8
or edi, eax
test ebp, ebp
je 0x29e85baf4d8
test r15, r15
je 0x29e85baf4c5
movzx edx, byte [rsi]
mov ecx, ebp
inc r14
movzx eax, byte [rcx + rbx + 0x10]
inc rsi
dec r15
xor al, dl
mov byte [r14 - 1], al
xor byte [rcx + rbx + 0x40], dl
inc ebp
and ebp, 0xf
mov dword [rsp + 0x80], ebp
jne 0x29e85baf493
jmp 0x29e85baf4cd
test ebp, ebp
jne 0x29e85baf69f
lea rdx, [rbx + 0x60]
lea rcx, [rbx + 0x40]
call r12
cmp r15, 0xc00
jb 0x29e85baf5ad
movabs rax, 0xaaaaaaaaaaaaaaab
lea rcx, [rbx + 0x60]
lea r10, [rbx + 0x40]
mul r15
mov rbp, rdx
shr rbp, 0xb
mov qword [rsp + 0x30], rbp
imul rax, rbp, 0xfffffffffffff400
add r15, rax
mov qword [rsp + 0x98], r15
mov r15, qword [rsp + 0x20]
nop dword [rax]
mov rdx, rcx
mov r9d, 0xc00
mov r8, rsi
mov rcx, r10
call r13
mov rbp, qword [rsp + 0x28]
mov r12d, 0xc0
nop dword [rax]
lea rdx, [rbx + 0x10]
mov r8, r15
mov rcx, rbx
call rbp
inc edi
add r14, 0x10
mov byte [rbx + 0xf], dil
mov eax, edi
add rsi, 0x10
shr eax, 0x18
mov byte [rbx + 0xc], al
mov eax, edi
shr eax, 0x10
mov byte [rbx + 0xd], al
mov eax, edi
shr eax, 8
mov byte [rbx + 0xe], al
mov rax, qword [rsi - 0x10]
xor rax, qword [rbx + 0x10]
mov qword [r14 - 0x10], rax
mov rax, qword [rsi - 8]
xor rax, qword [rbx + 0x18]
mov qword [r14 - 8], rax
dec r12
jne 0x29e85baf540
dec qword [rsp + 0x30]
lea rcx, [rbx + 0x60]
lea r10, [rbx + 0x40]
jne 0x29e85baf520
mov r15, qword [rsp + 0x98]
mov ebp, dword [rsp + 0x80]
mov r9, r15
and r9, 0xfffffffffffffff0
je 0x29e85baf650
lea rdx, [rbx + 0x60]
lea rcx, [rbx + 0x40]
mov r8, rsi
call r13
cmp r15, 0x10
jb 0x29e85baf650
mov rbp, qword [rsp + 0x28]
mov r12, r15
shr r12, 4
imul rax, r12, 0xfffffffffffffff0
add r15, rax
mov qword [rsp + 0x98], r15
mov r15, qword [rsp + 0x20]
lea rdx, [rbx + 0x10]
mov r8, r15
mov rcx, rbx
call rbp
inc edi
add r14, 0x10
mov byte [rbx + 0xf], dil
mov eax, edi
add rsi, 0x10
shr eax, 0x18
mov byte [rbx + 0xc], al
mov eax, edi
shr eax, 0x10
mov byte [rbx + 0xd], al
mov eax, edi
shr eax, 8
mov byte [rbx + 0xe], al
mov rax, qword [rsi - 0x10]
xor rax, qword [rbx + 0x10]
mov qword [r14 - 0x10], rax
mov rax, qword [rsi - 8]
xor rax, qword [rbx + 0x18]
mov qword [r14 - 8], rax
dec r12
jne 0x29e85baf5f2
mov r15, qword [rsp + 0x98]
mov ebp, dword [rsp + 0x80]
test r15, r15
je 0x29e85baf69f
mov r8, qword [rsp + 0x20]
lea rdx, [rbx + 0x10]
mov rcx, rbx
call qword [rsp + 0x28]
inc edi
mov eax, edi
mov byte [rbx + 0xf], dil
shr eax, 0x18
mov byte [rbx + 0xc], al
mov eax, edi
shr eax, 0x10
mov byte [rbx + 0xd], al
mov eax, edi
shr eax, 8
mov byte [rbx + 0xe], al
mov edx, ebp
inc ebp
movzx ecx, byte [rdx + rsi]
movzx eax, byte [rdx + rbx + 0x10]
xor byte [rdx + rbx + 0x40], cl
xor al, cl
mov byte [rdx + r14], al
dec r15
jne 0x29e85baf683
mov rdi, qword [rsp + 0x40]
mov dword [rbx + 0x170], ebp
mov rbp, qword [rsp + 0x88]
mov eax, 1
add rsp, 0x48
pop r15
pop r14
pop r13
pop r12
pop rsi
pop rbx
ret
xor eax, eax
add rsp, 0x48
pop r15
pop r14
pop r13
pop r12
pop rsi
pop rbx
ret