Function at 0x180037080
Capabilities:
Encode data using xor

Disassembly:
push rbp
push rsi
push rdi
push r14
push r15
sub rsp, 0xc0
mov qword [rsp + 0x30], 0xfffffffffffffffe
mov qword [rsp + 0x108], rbx
mov rax, qword [0x18028f9a8]
xor rax, rsp
mov qword [rsp + 0xb8], rax
mov r14, r8
mov rdi, rdx
mov rbp, rcx
mov rcx, qword [rdx]
mov r8, qword [rdx + 8]
sub r8, rcx
cmp r8, r14
jae 0x1800370f4
mov dword [rsp + 0x20], 0x9a
lea r9, str.gold
lea r8, str.finish
lea rdx, str.Offset_is_sane
lea rcx, str.buffer.size_____offset
call fcn.180043540
int3
lea r11, [r14 + rcx]
mov r10, r8
sub r10, r14
mov rbx, qword [rbp + 0x20]
sub rbx, qword [rbp + 0x18]
lea rax, [rbx + 1]
cmp r10, rax
jae 0x180037154
lea rdx, [rsp + 0x40]
mov rcx, rbp
call fcn.1800373b0
nop
lea r8, str.:_insufficient_data_to_encrypt
mov rdx, rax
lea rcx, [rsp + 0x98]
call fcn.1800337b0
nop
mov rdx, rax
lea rcx, [rsp + 0x60]
call fcn.180033d60
lea rdx, [0x18028bd48]
lea rcx, [rsp + 0x60]
call fcn.1801a3720
nop
xor edx, edx
mov rax, r10
div rbx
test rdx, rdx
jne 0x1800371ed
cmp r8, r14
jae 0x180037194
mov dword [rsp + 0x20], 0x75
lea r9, str.gold
lea r8, str.update
lea rdx, str.Offset_ok
lea rcx, str.buffer.size_____offset
call fcn.180043540
int3
mov rax, qword [rbp]
sub r8, r14
lea rdx, [r14 + rcx]
mov rcx, rbp
call qword [rax + 0x10]
lea rdx, [r14 + rax]
mov rcx, rdi
call fcn.180036440
xor r9d, r9d
test rbx, rbx
je 0x18003733b
lea r10, [rbx + rbx]
mov r8, qword [rdi + 8]
mov rdx, r8
sub rdx, r10
sub r8, rbx
movzx ecx, byte [r8 + r9]
movzx eax, byte [rdx + r9]
mov byte [r8 + r9], al
mov byte [rdx + r9], cl
inc r9
cmp r9, rbx
jne 0x1800371c1
jmp 0x18003733b
mov r15, r10
sub r15, rbx
sub r15, rdx
mov rsi, r10
sub rsi, r15
cmp rsi, rbx
jbe 0x180037311
lea rax, [rbx + rbx]
cmp rsi, rax
jae 0x180037311
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x40], xmm0
xor r9d, r9d
mov qword [rsp + 0x50], r9
xor eax, eax
lea r8, [r10 + r11]
lea rdx, [r15 + r11]
lea rcx, [rsp + 0x40]
call fcn.180036680
nop
lea rdx, [r14 + r15]
mov rcx, rdi
call fcn.180036440
mov r8, r14
mov rdx, rdi
mov rcx, rbp
call fcn.180037b60
mov r8, rbx
mov rdx, qword [rbp + 0x18]
mov r14, qword [rsp + 0x40]
mov rcx, r14
call fcn.180023950
mov rcx, qword [rbp + 8]
mov rax, qword [rcx]
mov r9d, 1
mov r8, r14
mov rdx, r14
call qword [rax + 0x40]
sub rsi, rbx
je 0x1800372a6
lea rax, [r14 + rbx]
neg rbx
nop dword [rax + rax]
movzx ecx, byte [rax]
xor byte [rbx + rax], cl
movzx ecx, byte [rbx + rax]
xor byte [rax], cl
lea rax, [rax + 1]
sub rsi, 1
jne 0x180037290
mov rcx, qword [rbp + 8]
mov rax, qword [rcx]
mov r9d, 1
mov r8, r14
mov rdx, r14
call qword [rax + 0x40]
mov rsi, qword [rdi + 8]
sub rsi, qword [rdi]
mov rbx, qword [rsp + 0x48]
sub rbx, r14
lea rdx, [rbx + rsi]
mov rcx, rdi
call fcn.180036440
test rbx, rbx
je 0x1800372f3
mov rcx, qword [rdi]
add rcx, rsi
test rbx, rbx
je 0x1800372f3
mov r8, rbx
mov rdx, r14
call fcn.1801a4560
nop
test r14, r14
je 0x18003730f
mov rdx, qword [rsp + 0x50]
sub rdx, r14
mov r8d, 1
mov rcx, r14
call fcn.180033660
nop
jmp 0x18003733b
mov dword [rsp + 0x20], 0xaf
lea r9, str.gold
lea r8, str.finish
lea rdx, str.Left_over_size_in_expected_range
lea rcx, str.final_bytes___BS__final_bytes___2BS
call fcn.180043540
int3
mov rcx, qword [rsp + 0xb8]
xor rcx, rsp
call fcn.180186840
mov rbx, qword [rsp + 0x108]
add rsp, 0xc0
pop r15
pop r14
pop rdi
pop rsi
pop rbp
ret