Function at 0x180023eac
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xc8
mov r12, rcx
mov rbx, qword [rcx + 0x28]
mov ecx, dword [rbx + 0x28]
call fcn.180023aec
mov rdi, rax
mov ecx, dword [rbx + 0x70]
call fcn.180023aec
mov rbp, rax
mov edx, dword [rbx + 0x74]
mov r8, rbx
mov rcx, rdi
call fcn.18002397e
mov qword [rsp + 0x38], rax
mov edx, dword [rbx + 0xac]
mov r8, rbx
mov rcx, rdi
call fcn.18002397e
mov qword [rsp + 0x40], rax
mov edx, dword [rbx + 0x10]
mov r8, rbx
mov rcx, rdi
call fcn.18002397e
mov qword [rsp + 0x48], rax
mov edx, dword [rbx + 0x50]
mov r8, rbx
mov rcx, rbp
call fcn.18002397e
mov qword [rsp + 0x50], rax
mov edx, dword [rbx + 0x94]
mov r8, rbx
mov rcx, rdi
call fcn.18002397e
mov qword [rsp + 0x58], rax
mov edx, dword [rbx + 0x78]
mov r8, rbx
mov rcx, rdi
call fcn.18002397e
mov qword [rsp + 0x60], rax
mov r8, rbx
mov edx, dword [rbx]
mov rcx, rbp
call fcn.18002397e
mov qword [rsp + 0x68], rax
mov dword [rsp + 0x68], eax
mov edx, dword [rbx + 0xe0]
mov r8, rbx
mov rcx, rdi
call fcn.18002397e
mov qword [rsp + 0x70], rax
mov edx, dword [rbx + 0x64]
mov r8, rbx
mov rcx, rdi
call fcn.18002397e
mov qword [rsp + 0x78], rax
mov edx, dword [rbx + 0x100]
mov r8, rbx
mov rcx, rdi
call fcn.18002397e
mov r15, rax
mov edx, dword [rbx + 0x4c]
mov r8, rbx
mov rcx, rdi
call fcn.18002397e
mov r13, rax
mov edx, dword [rbx + 0x9c]
mov r8, rbx
mov rcx, rdi
call fcn.18002397e
mov edx, dword [rbx + 0x11c]
mov r8, rbx
mov rcx, rbp
call fcn.18002397e
mov r14, rax
mov edx, 0xf0
mov ecx, 0x40
call r15
mov rsi, rax
mov edx, dword [rbx + 0xc0]
mov r8, rbx
mov rcx, rdi
call fcn.18002397e
mov qword [rsi + 0x70], rax
mov qword [rsi + 0xa8], rdi
mov rcx, qword [rsp + 0x48]
mov qword [rsi + 0xb0], rcx
mov rcx, qword [rsp + 0x38]
mov qword [rsi + 0x48], rcx
mov rcx, qword [rsp + 0x70]
mov qword [rsi + 8], rcx
mov qword [rsi + 0x40], rbp
mov rcx, qword [rsp + 0x58]
mov qword [rsi + 0x38], rcx
mov qword [rsi + 0x60], r14
mov qword [rsi], r15
mov rcx, qword [rsp + 0x68]
mov qword [rsi + 0x50], rcx
mov rdx, qword [rsp + 0x50]
mov qword [rsi + 0x78], rdx
mov rcx, qword [rsp + 0x78]
mov qword [rsi + 0x20], rcx
mov qword [rsi + 0x10], r13
mov rdx, qword [rsp + 0x60]
mov qword [rsi + 0xe8], rdx
mov rax, qword [rsp + 0x40]
mov qword [rsi + 0xb8], rax
mov edx, dword [rbx + 0x6c]
mov r8, rbx
mov rcx, rbp
call fcn.18002397e
mov qword [rsi + 0x18], rax
mov edx, dword [rbx + 0x58]
mov r8, rbx
mov rcx, rbp
call fcn.18002397e
mov qword [rsi + 0x80], rax
mov r14, qword [r12 + 0x18]
mov edx, dword [rbx + 0xd0]
mov r8, rbx
mov rcx, rdi
call fcn.18002397e
mov r13, rax
mov eax, dword [rbx + 0x54]
xor eax, dword [rbx + 0xc]
movsxd rdx, dword [rbx + 0x98]
add r14, rdx
mov ebp, dword [r14]
mov r12d, dword [r14 + 4]
mov dword [rsp + 0xbc], 0
mov qword [rsp + 0xb0], 0
mov qword [rsp + 0xa8], 0
cmp ebp, eax
je 0x180024101
mov edx, ebp
mov ecx, 0x40
call r15
mov rdi, rax
lea rdx, [r14 + 8]
mov r8d, ebp
mov rcx, rax
call fcn.180023524
test ebp, ebp
je 0x180024076
mov rax, rdi
sub ebp, 1
shr ebp, 2
mov ebp, ebp
lea rdx, [rdi + rbp*4 + 4]
xor dword [rax], r12d
add rax, 4
cmp rdx, rax
jne 0x18002406a
mov edx, 0x20a
mov ecx, 0x40
call r15
movzx ecx, byte [rdi]
test cl, cl
je 0x1800240a6
mov r8d, 0
movsx cx, cl
mov word [rax + r8*2], cx
add r8, 1
movzx ecx, byte [rdi + r8]
test cl, cl
jne 0x180024090
lea r9, [rsp + 0xbc]
lea r8, [rsp + 0xb0]
mov rdx, rax
mov rcx, rsi
call fcn.180023c8d
test al, al
jne 0x1800240d9
add rsp, 0xc8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov qword [rsp + 0x20], rbx
mov r9, rsi
lea r8, [rsp + 0xa8]
mov edx, dword [rsp + 0xbc]
mov rcx, qword [rsp + 0xb0]
call fcn.180023551
test al, al
je 0x1800240c5
mov qword [rsp + 0xa0], 0
mov rdi, qword [rsp + 0xa8]
mov r8d, dword [rdi + 0xc]
mov edx, dword [rdi + 8]
lea rcx, [rdi + 0x10]
mov qword [rsp + 0x20], rsi
lea r9, [rsp + 0xa0]
call fcn.1800234b8
test al, al
je 0x1800240c5
mov rbp, qword [rsp + 0xa0]
lea rcx, [rbp + 0x90]
call fcn.18002374c
mov edx, 0
test eax, eax
jne 0x180024159
mov edx, dword [rbp + 0x160]
mov eax, dword [rbp + 8]
mov edx, edx
lea r12, [rax + rdx + 0x3dd]
add r12, rbp
mov dword [rsp + 0x9c], 0
mov r9d, dword [rbx + 0x12c]
mov qword [rsp + 0x20], rbx
lea r8, [rsp + 0x9c]
mov rdx, r12
mov rcx, rsi
call fcn.1800238ea
mov qword [rsp + 0x38], rax
mov edx, 0x20a
mov ecx, 0x40
call r15
mov r14, rax
lea rcx, [rbp + 0xf4]
mov rdx, rax
call fcn.180023857
mov rcx, r14
call fcn.180023dc6
mov rdx, rax
mov rcx, rsi
call fcn.180023a68
movsxd rdx, dword [rax + 0x3c]
mov esi, dword [rax + rdx + 0x2c]
add rsi, rax
mov edx, dword [rsp + 0x9c]
mov ecx, 0x40
call r15
mov r14, rax
mov r8d, dword [rsp + 0x9c]
mov rdx, rsi
mov rcx, rax
call fcn.180023524
mov qword [r12 + 0xcc0], r14
mov dword [rsp + 0x98], 0
lea r14, [rsp + 0x98]
mov edx, dword [rsp + 0x9c]
mov r9, r14
mov r8d, dword [rbx + 0x2c]
mov rcx, rsi
call r13
mov r8d, dword [rsp + 0x9c]
mov rdx, qword [rsp + 0x38]
mov rcx, rsi
call fcn.180023524
mov edx, dword [rsp + 0x9c]
mov r9, r14
mov r8d, dword [rsp + 0x98]
mov rcx, rsi
call r13
mov eax, dword [rbx + 0x2c]
mov dword [rsp + 0x80], eax
mov qword [rsp + 0x84], rsi
mov eax, dword [rsp + 0x9c]
mov dword [rsp + 0x8c], eax
lea r9, [rsp + 0x80]
mov r8, rdi
mov rdx, r12
mov rcx, rbp
call rsi
jmp 0x1800240c5