Function at 0x56ecbd
Capabilities:
Encode data using base64

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x78
mov r15, r8
mov r12, rdx
movabs r8, 0xaaaaaaaaaaaaaaab
mov rax, r15
mul r8
mov rax, r15
shr rax, 0x3e
cmp eax, 2
ja 0x56f534
mov rsi, rdx
add rsi, rdx
and rsi, 0xfffffffffffffffc
mov rax, r15
mul r8
shr rdx, 1
lea rax, [rdx + rdx*2]
mov rdx, r15
sub rdx, rax
mov qword [rsp + 0x40], rdx
je 0x56ed21
add rsi, 4
jb 0x56f534
mov qword [rsp + 0x48], rcx
mov rcx, rsi
mov dl, 1
call fcn.00516634
mov qword [rsp + 0x38], rax
mov rbx, rdx
xor eax, eax
mov r8, r15
mov ecx, 0
sub r8, 0x1a
cmovb r8, rax
jbe 0x56f146
mov ecx, 0x20
mov r10, 0xffffffffffffffff
xor eax, eax
lea r11, [0x00616e14]
lea rdx, [rax + 0x1a]
cmp rdx, r15
ja 0x56f42c
test rcx, rcx
je 0x56f43b
cmp rcx, rsi
ja 0x56f450
lea rdx, [rcx - 0x20]
xor rdx, rcx
mov r9, rcx
and r9, r10
add r9, r9
cmp r9, rdx
je 0x56f45c
mov rdx, qword [r12 + rax]
bswap rdx
mov r9, rdx
shr r9, 0x3a
mov r9b, byte [r9 + r11 + 0x100]
mov byte [rbx + rcx - 0x20], r9b
mov r9, rdx
shr r9, 0x34
and r9d, 0x3f
mov r9b, byte [r9 + r11 + 0x100]
mov byte [rbx + rcx - 0x1f], r9b
mov r9, rdx
shr r9, 0x2e
and r9d, 0x3f
mov r9b, byte [r9 + r11 + 0x100]
mov byte [rbx + rcx - 0x1e], r9b
mov r9, rdx
shr r9, 0x28
and r9d, 0x3f
mov r9b, byte [r9 + r11 + 0x100]
mov byte [rbx + rcx - 0x1d], r9b
mov r9, rdx
shr r9, 0x22
and r9d, 0x3f
mov r9b, byte [r9 + r11 + 0x100]
mov byte [rbx + rcx - 0x1c], r9b
mov r9, rdx
shr r9, 0x1c
and r9d, 0x3f
mov r9b, byte [r9 + r11 + 0x100]
mov byte [rbx + rcx - 0x1b], r9b
mov r9d, edx
shr r9d, 0x16
and r9d, 0x3f
mov r9b, byte [r9 + r11 + 0x100]
mov byte [rbx + rcx - 0x1a], r9b
shr rdx, 0x10
mov r9, rdx
not r9
or r9, 0x3f
add r9, rdx
inc r9
cmp r9, 0x40
jae 0x56f468
mov dl, byte [r9 + r11 + 0x100]
mov byte [rbx + rcx - 0x19], dl
mov rdx, qword [r12 + rax + 6]
bswap rdx
mov r9, rdx
shr r9, 0x3a
mov r9b, byte [r9 + r11 + 0x100]
mov byte [rbx + rcx - 0x18], r9b
mov r9, rdx
shr r9, 0x34
mov edi, r9d
xor edi, 0xffffffc0
or r9d, 0x3f
and r9d, edi
cmp r9d, 0x40
jae 0x56f471
mov r9b, byte [r9 + r11 + 0x100]
mov byte [rbx + rcx - 0x17], r9b
mov r9, rdx
shr r9, 0x2e
and r9d, 0x3f
mov r9b, byte [r9 + r11 + 0x100]
mov byte [rbx + rcx - 0x16], r9b
mov r9, rdx
shr r9, 0x28
mov rdi, r9
not rdi
or rdi, 0x3f
add r9, rdi
inc r9
cmp r9, 0x40
jae 0x56f47a
mov r9b, byte [r9 + r11 + 0x100]
mov byte [rbx + rcx - 0x15], r9b
mov r9, rdx
shr r9, 0x22
and r9d, 0x3f
mov r9b, byte [r9 + r11 + 0x100]
mov byte [rbx + rcx - 0x14], r9b
mov r9, rdx
shr r9, 0x1c
and r9d, 0x3f
mov r9b, byte [r9 + r11 + 0x100]
mov byte [rbx + rcx - 0x13], r9b
mov r9d, edx
shr r9d, 0x16
and r9d, 0x3f
mov r9b, byte [r9 + r11 + 0x100]
mov byte [rbx + rcx - 0x12], r9b
shr rdx, 0x10
mov r9, rdx
not r9
or r9, 0x3f
add r9, rdx
inc r9
cmp r9, 0x40
jae 0x56f483
mov dl, byte [r9 + r11 + 0x100]
mov byte [rbx + rcx - 0x11], dl
mov rdx, qword [r12 + rax + 0xc]
bswap rdx
mov r9, rdx
shr r9, 0x3a
mov r9b, byte [r9 + r11 + 0x100]
mov byte [rbx + rcx - 0x10], r9b
mov r9, rdx
shr r9, 0x34
and r9d, 0x3f
mov r9b, byte [r9 + r11 + 0x100]
mov byte [rbx + rcx - 0xf], r9b
mov r9, rdx
shr r9, 0x2e
and r9d, 0x3f
mov r9b, byte [r9 + r11 + 0x100]
mov byte [rbx + rcx - 0xe], r9b
mov r9, rdx
shr r9, 0x28
and r9d, 0x3f
mov r9b, byte [r9 + r11 + 0x100]
mov byte [rbx + rcx - 0xd], r9b
mov r9, rdx
shr r9, 0x22
mov rdi, r9
not rdi
or rdi, 0x3f
add r9, rdi
inc r9
cmp r9, 0x40
jae 0x56f48c
mov r9b, byte [r9 + r11 + 0x100]
mov byte [rbx + rcx - 0xc], r9b
mov r9, rdx
shr r9, 0x1c
mov rdi, r9
xor rdi, 0xffffffffffffffc0
or r9, 0x3f
and r9, rdi
cmp r9, 0x40
jae 0x56f495
mov r9b, byte [r9 + r11 + 0x100]
mov byte [rbx + rcx - 0xb], r9b
mov r9d, edx
shr r9d, 0x16
and r9d, 0x3f
mov r9b, byte [r9 + r11 + 0x100]
mov byte [rbx + rcx - 0xa], r9b
shr edx, 0x10
and edx, 0x3f
mov dl, byte [rdx + r11 + 0x100]
mov byte [rbx + rcx - 9], dl
mov rdx, qword [r12 + rax + 0x12]
bswap rdx
mov r9, rdx
shr r9, 0x3a
mov r9b, byte [r9 + r11 + 0x100]
mov byte [rbx + rcx - 8], r9b
mov r9, rdx
shr r9, 0x34
mov rdi, r9
not rdi
or rdi, 0x3f
add r9, rdi
inc r9
cmp r9, 0x40
jae 0x56f49e
mov r9b, byte [r9 + r11 + 0x100]
mov byte [rbx + rcx - 7], r9b
mov r9, rdx
shr r9, 0x2e
and r9d, 0x3f
mov r9b, byte [r9 + r11 + 0x100]
mov byte [rbx + rcx - 6], r9b
mov r9, rdx
shr r9, 0x28
and r9d, 0x3f
mov r9b, byte [r9 + r11 + 0x100]
mov byte [rbx + rcx - 5], r9b
mov r9, rdx
shr r9, 0x22
and r9d, 0x3f
mov r9b, byte [r9 + r11 + 0x100]
mov byte [rbx + rcx - 4], r9b
mov r9, rdx
shr r9, 0x1c
and r9d, 0x3f
mov r9b, byte [r9 + r11 + 0x100]
mov byte [rbx + rcx - 3], r9b
mov r9d, edx
shr r9d, 0x16
and r9d, 0x3f
mov r9b, byte [r9 + r11 + 0x100]
mov byte [rbx + rcx - 2], r9b
shr edx, 0x10
and edx, 0x3f
mov dl, byte [rdx + r11 + 0x100]
mov byte [rbx + rcx - 1], dl
add rax, 0x18
add rcx, 0x20
add r10, 0xffffffffffffffe0
cmp rax, r8
jbe 0x56ed65
add rcx, 0xffffffffffffffe0
mov r8, r15
sub r8, qword [rsp + 0x40]
cmp rax, r8
jae 0x56f252
mov r9, rcx
not r9
lea r10, [0x00616e14]
cmp rax, 0xfffffffffffffffc
ja 0x56f4b2
lea r11, [rax + 3]
cmp r11, r15
ja 0x56f4c2
lea rdx, [rcx + 4]
cmp rcx, 0xfffffffffffffffb
ja 0x56f4d5
cmp rdx, rsi
ja 0x56f4e3
mov rdi, rdx
xor rdi, rcx
mov rbp, rdx
and rbp, r9
add rbp, rbp
sub rbp, rdi
je 0x56f4f8
movzx edi, byte [r12 + rax]
mov r14, rdi
shr r14, 2
mov r14b, byte [r14 + r10 + 0x100]
mov byte [rbx + rcx], r14b
cmp rbp, 1
jbe 0x56f3fc
mov r14b, byte [r12 + rax + 1]
mov r13d, r14d
shr r13b, 4
shl dil, 4
or dil, r13b
movzx edi, dil
and edi, 0x3f
mov dil, byte [rdi + r10 + 0x100]
mov byte [rbx + rcx + 1], dil
cmp rbp, 2
je 0x56f508
movzx eax, byte [r12 + rax + 2]
mov edi, eax
shr dil, 6
shl r14b, 2
or r14b, dil
movzx edi, r14b
and edi, 0x3f
mov dil, byte [rdi + r10 + 0x100]
mov byte [rbx + rcx + 2], dil
cmp rbp, 3
jbe 0x56f51e
and eax, 0x3f
mov al, byte [rax + r10 + 0x100]
mov byte [rbx + rcx + 3], al
add r9, 0xfffffffffffffffc
mov rcx, rdx
mov rax, r11
cmp r11, r8
jb 0x56f164
jmp 0x56f255
mov rdx, rcx
mov rax, qword [rsp + 0x40]
cmp rax, 1
je 0x56f306
cmp rax, 2
jne 0x56f35d
cmp rdx, rsi
jae 0x56f5ca
movzx r9d, byte [r12 + r8]
mov rcx, r9
shr rcx, 2
lea rax, [0x00616e14]
mov cl, byte [rcx + rax + 0x100]
mov byte [rbx + rdx], cl
lea rcx, [r8 + 1]
cmp rcx, r15
jae 0x56f5d3
lea rcx, [rdx + 1]
cmp rcx, rsi
jae 0x56f5dc
mov r10b, byte [r12 + r8 + 1]
shr r10b, 4
shl r9b, 4
or r9b, r10b
movzx r9d, r9b
and r9d, 0x3f
mov al, byte [r9 + rax + 0x100]
mov byte [rbx + rcx], al
mov eax, r8d
and eax, 1
xor r8, 1
lea rax, [r8 + rax*2]
cmp rax, r15
jae 0x56f5e8
lea rcx, [rdx + 2]
cmp rcx, rsi
jae 0x56f414
mov al, byte [r12 + rax]
shl al, 2
and al, 0x3c
mov r8d, 3
jmp 0x56f345
cmp rdx, rsi
jae 0x56f5fa
movzx eax, byte [r12 + r8]
mov rcx, rax
shr rcx, 2
lea r8, [0x00616e14]
mov cl, byte [rcx + r8 + 0x100]
mov byte [rbx + rdx], cl
lea rcx, [rdx + 1]
cmp rcx, rsi
jae 0x56f609
shl al, 4
and al, 0x30
mov r8d, 2
movzx eax, al
lea r9, [0x00616e14]
mov al, byte [rax + r9 + 0x100]
mov byte [rbx + rcx], al
add rdx, r8
mov rcx, rsi
sub rcx, rdx
jb 0x56f549
mov eax, edx
neg eax
and rax, 3
je 0x56f392
mov r8, rbx
add r8, rdx
xor r9d, r9d
cmp rcx, r9
je 0x56f420
mov byte [r8 + r9], 0x3d
inc r9
cmp rax, r9
jne 0x56f37c
add rdx, rax
jb 0x56f55d
lea r15, [rsp + 0x50]
mov rcx, r15
mov rdx, rbx
mov r8, rsi
call fcn.00422ec0
cmp qword [r15], 0
je 0x56f3d6
mov rax, qword [rsp + 0x58]
mov cl, byte [rsp + 0x60]
mov edx, dword [rsp + 0x61]
mov dword [rsp + 0x30], edx
mov edx, dword [rsp + 0x64]
mov dword [rsp + 0x33], edx
cmp cl, 2
jne 0x56f577
mov rax, qword [rsp + 0x48]
mov rcx, qword [rsp + 0x38]
mov qword [rax], rcx
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rsi
add rsp, 0x78
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
lea r8, [0x005bc9b8]
mov ecx, 1
mov edx, 1
call fcn.004262b0
ud2
lea r8, [0x005bca90]
mov rdx, rsi
jmp 0x56f40d
lea r8, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_hasten_0.22.1_src_encode.rs
mov rdx, rcx
jmp 0x56f40d
lea r8, [0x005bc880]
mov rcx, rdx
jmp 0x56f4d0
lea r8, [0x005bc898]
mov rcx, 0xffffffffffffffe0
xor edx, edx
jmp 0x56f4dc
lea r8, [0x005bc898]
jmp 0x56f4ee
lea r8, [0x005bc8b0]
jmp 0x56f4ff
lea r8, [0x005bc8c8]
jmp 0x56f4a5
lea r8, [0x005bc8e0]
jmp 0x56f4a5
lea r8, [0x005bc8f8]
jmp 0x56f4a5
lea r8, [0x005bc910]
jmp 0x56f4a5
lea r8, [0x005bc928]
jmp 0x56f4a5
lea r8, [0x005bc940]
jmp 0x56f4a5
lea r8, [0x005bc958]
mov edx, 0x40
mov rcx, r9
jmp 0x56f40d
lea rdx, [rax + 3]
lea r8, [0x005bc970]
mov rcx, rax
jmp 0x56f4dc
add rax, 3
lea r8, [0x005bc970]
mov rcx, rax
mov rdx, r15
jmp 0x56f4f1
lea r8, [0x005bc988]
call fcn.00429a20
ud2
add rcx, 4
lea r8, [0x005bc988]
mov rdx, rsi
call fcn.004292f0
ud2
lea r8, [0x005bc9a0]
xor ecx, ecx
xor edx, edx
jmp 0x56f40d
lea r8, [0x005bc9d0]
mov ecx, 2
mov edx, 2
jmp 0x56f40d
lea r8, [0x005bc9e8]
mov ecx, 3
mov edx, 3
jmp 0x56f40d
lea rcx, str.integer_overflow_when_calculating_buffer_sizeregistry_src_octopus.retort.com_8754fae0eb2f08f1_hasten_0.22.1_src_engine_mod.rs
lea r8, [0x006161e8]
mov edx, 0x2d
jmp 0x56f570
lea r8, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_hasten_0.22.1_src_encode.rs
mov rcx, rdx
mov rdx, rsi
call fcn.00429500
ud2
lea rcx, str.usize_overflow_when_calculating_b64_length
lea r8, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_hasten_0.22.1_src_encode.rs
mov edx, 0x2a
call fcn.0041f810
ud2
lea r8, [rsp + 0x50]
mov qword [r8], rax
mov byte [r8 + 8], cl
mov eax, dword [rsp + 0x30]
mov ecx, dword [rsp + 0x33]
mov dword [r8 + 9], eax
mov dword [r8 + 0xc], ecx
mov rax, qword [rsp + 0x38]
mov qword [r8 + 0x10], rax
mov qword [r8 + 0x18], rbx
mov qword [r8 + 0x20], rsi
lea rax, [0x00616210]
mov qword [rsp + 0x20], rax
lea rcx, str.Invalid_UTF8
lea r9, [0x00615bf8]
mov edx, 0xc
call fcn.0041f970
ud2
lea r8, [0x005bca30]
jmp 0x56f601
lea r8, [0x005bca48]
jmp 0x56f5f2
lea r8, [0x005bca60]
jmp 0x56f41b
lea r8, [0x005bca78]
mov rcx, rax
mov rdx, r15
jmp 0x56f40d
lea r8, [0x005bca00]
mov rcx, rdx
jmp 0x56f41b
lea r8, [0x005bca18]
jmp 0x56f41b