Function at 0x4a152c
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0xc8
mov rdi, rdx
mov rsi, rcx
mov r15, qword [rdx]
lea rcx, [r15 + 8]
call fcn.004d0988
mov r9, rax
shr r9, 0xa
mov ecx, 0x40
mov r8d, 0x40
je 0x4a156d
bsr r8, r9
xor r8, 0x3f
sub rcx, r8
cmp rcx, 7
mov r8d, 7
cmovb r8, rcx
lea rcx, [r8*4 + 1]
lea r14, [rsp + 0x28]
mov qword [r14 + 0x18], rdx
mov qword [r14], 0
mov qword [r14 + 8], rax
mov qword [r14 + 0x10], rcx
mov bpl, byte [rdi + 0x38]
lea rbx, [rsp + 0x70]
mov byte [rbx], bpl
mov r8d, 1
mov rcx, r14
mov rdx, rbx
call fcn.0041c414
lea rdx, [rdi + 0x39]
mov r8d, 3
mov rcx, r14
call fcn.0041c414
mov r12b, byte [rdi + 0x3c]
mov byte [rbx], r12b
lea rbx, [rsp + 0x70]
mov r8d, 1
mov rcx, r14
mov rdx, rbx
call fcn.0041c414
bswap r15
mov rax, qword [r14]
mov rcx, qword [r14 + 8]
sub rcx, rax
cmp rcx, 8
jae 0x4a1633
lea r14, [rsp + 0x28]
mov edx, 8
mov rcx, r14
call fcn.0041c11e
mov rax, qword [r14]
mov rdx, qword [r14 + 8]
sub rdx, rax
mov rcx, qword [r14 + 0x18]
mov qword [rcx + rax], r15
cmp rdx, 7
ja 0x4a163c
mov ecx, 8
call fcn.0041c3ac
ud2
mov rcx, qword [rsp + 0x40]
mov qword [rcx + rax], r15
add rax, 8
mov qword [rsp + 0x28], rax
cmp r12b, 0xb
jne 0x4a1666
mov rdx, qword [rdi + 0x10]
test rdx, rdx
je 0x4a1748
mov r8, qword [rdi + 0x18]
lea rcx, [rsp + 0x28]
call fcn.0041c414
mov rdx, qword [rdi + 0x28]
mov r8, qword [rdi + 0x30]
lea rdi, [rsp + 0x28]
mov rcx, rdi
call fcn.0041c414
mov rdx, qword [rdi]
test rdx, rdx
je 0x4a18b1
mov rax, qword [rsp + 0x40]
mov ecx, 1
cmp rdx, 1
je 0x4a16a6
xor byte [rax + rcx], bpl
inc rcx
cmp rdx, rcx
jne 0x4a1697
mov rcx, rdx
mov rbx, qword [rsp + 0x38]
mov rdx, rbx
not rdx
or rdx, 1
add rdx, rbx
jne 0x4a171e
shr rbx, 5
mov r8, qword [rsp + 0x30]
add r8, rbx
sub rax, rbx
add rcx, rbx
lea rdx, [rsp + 0x70]
mov qword [rdx], r8
mov qword [rdx + 8], rax
mov qword [rdx + 0x10], rcx
lea rdi, [rsp + 0xa0]
mov rcx, rdi
call fcn.0041bf0f
mov qword [rsp + 0x48], rbx
mov rax, qword [rdi + 8]
mov rcx, rax
sub rcx, rbx
jb 0x4a18c6
add rbx, qword [rsp + 0xa0]
mov rax, rbx
mov rbx, qword [rsp + 0xb0]
mov rdx, qword [rsp + 0xb8]
jmp 0x4a1725
lea rdx, [0x005d9170]
mov qword [rsi], rax
mov qword [rsi + 8], rcx
mov qword [rsi + 0x10], rbx
mov qword [rsi + 0x18], rdx
add rsp, 0xc8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
lea rax, [0x005dc5e6]
mov qword [rsp + 0x70], rax
mov rcx, qword [rsp + 0x70]
movabs rax, 0x5ba16cadd131a05e
mov qword [rsp + 0x70], rax
mov rdx, qword [rsp + 0x70]
call fcn.004786a7
xorps xmm0, xmm0
movaps xmmword [rsp + 0x50], xmm0
mov cl, 1
xor edx, edx
lea r8, [0x005dbe58]
mov r9, qword [rax + rdx]
movzx r11d, byte [rdx + r8]
mov r10, rdx
or r10, 1
movzx r10d, byte [r10 + r8]
mov rdi, rdx
or rdi, 2
movzx edi, byte [rdi + r8]
mov rbx, rdx
or rbx, 3
movzx ebx, byte [rbx + r8]
mov r14, rdx
or r14, 4
movzx r14d, byte [r14 + r8]
mov r12, rdx
or r12, 5
mov r13, rdx
or r13, 7
mov r15, rdx
or r15, 6
movzx r15d, byte [r15 + r8]
movzx r12d, byte [r12 + r8]
movzx r13d, byte [r13 + r8]
shl r13, 0x38
shl r15, 0x30
shl r12, 0x28
or r12, r13
shl r14, 0x20
shl rbx, 0x18
shl rdi, 0x10
shl r10, 8
or r10, r11
or r10, rdi
or r10, rbx
or r10, r14
or r10, r15
or r10, r12
mov r11, r10
and r11, r9
add r10, r9
add r11, r11
sub r10, r11
mov qword [rsp + rdx + 0x50], r10
mov edx, 8
test cl, 1
mov ecx, 0
jne 0x4a1785
mov ecx, dword [rax + 0x10]
lea edx, [rcx + rcx]
and edx, 0x542344ce
neg edx
add ecx, edx
add ecx, 0xaa11a267
mov dword [rsp + 0x60], ecx
movzx eax, word [rax + 0x14]
xor eax, 0xa469
mov word [rsp + 0x64], ax
mov ecx, 0x16
call fcn.005162fd
lea rcx, [rsp + 0x70]
mov qword [rcx], rax
mov qword [rcx + 8], rdx
movaps xmm0, xmmword [rsp + 0x50]
movups xmmword [rdx], xmm0
mov rax, qword [rsp + 0x5e]
mov qword [rdx + 0xe], rax
mov qword [rcx + 0x10], 0x16
call fcn.004554b3
mov qword [rsi], rax
mov qword [rsi + 0x18], 0
lea rcx, [rsp + 0x28]
call fcn.0041c37a
jmp 0x4a1734
lea r8, str.src_proto_frame.rsO
mov ecx, 1
xor edx, edx
call fcn.00429500
ud2
lea rcx, [rsp + 0xc0]
mov qword [rcx], rax
lea rax, [rsp + 0x48]
lea rdx, [rsp + 0x50]
mov qword [rdx], rax
lea rax, [0x0045c280]
mov qword [rdx + 8], rax
mov qword [rdx + 0x10], rcx
mov qword [rdx + 0x18], rax
lea rax, str.cannot_advance_past__remaining_:___
lea rcx, [rsp + 0x70]
mov qword [rcx + 0x10], rax
mov eax, 2
mov qword [rcx + 0x18], rax
mov qword [rcx], 0
mov qword [rcx + 0x20], rdx
mov qword [rcx + 0x28], rax
lea rdx, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_gouge_1.7.1_src_bytes.rs
call fcn.00426330
ud2