Function at 0x446f02
Capabilities:
Encode data using base64

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x98
mov r15, rdx
mov r14, rcx
movabs rcx, 0xaaaaaaaaaaaaaaab
mov rax, r9
mul rcx
mov rax, r9
shr rax, 0x3e
cmp eax, 2
ja 0x446f70
mov r13, r9
mov r12, r8
mov rsi, rdx
mov cl, byte [r15 + 0x141]
shr rsi, 1
lea rax, [rsi + rsi*2]
mov rdx, r9
sub rdx, rax
shl rsi, 2
test rdx, rdx
mov byte [rsp + 0x2f], cl
mov qword [rsp + 0x50], rdx
je 0x446f98
test cl, cl
je 0x446f88
add rsi, 4
jae 0x446f98
lea rcx, str.integer_overflow_when_calculating_buffer_sizeregistry_src_octopus.retort.com_8754fae0eb2f08f1_hasten_0.22.1_src_engine_mod.rs
lea r8, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_parade_0.21.7_src_engine_mod.rs
mov edx, 0x2d
jmp 0x447947
xor eax, eax
cmp rdx, 1
sete al
xor rax, 3
or rsi, rax
mov rcx, rsi
mov dl, 1
call fcn.00516634
mov qword [rsp + 0x48], rax
mov rbx, rdx
xor ebp, ebp
mov r8, r13
mov r10d, 0
sub r8, 0x1a
cmovb r8, rbp
jbe 0x4473fc
mov rcx, 0xffffffffffffffff
mov r10d, 0x20
xor eax, eax
xor ebp, ebp
mov r9d, eax
and r9d, 0x30
mov rdx, rbp
xor rdx, 0x1a
add rdx, r9
cmp rbp, rdx
ja 0x4477f9
cmp rdx, r13
ja 0x447805
test r10, r10
je 0x447814
cmp r10, rsi
ja 0x447829
mov r9, rdx
xor r9, rbp
and rdx, rcx
add rdx, rdx
sub rdx, r9
cmp rdx, 7
jbe 0x4477e8
mov rdi, qword [r12 + rbp]
bswap rdi
mov r9, rdi
shr r9, 0x3a
mov r9b, byte [r15 + r9 + 0x100]
mov byte [rbx + r10 - 0x20], r9b
mov r9, rdi
shr r9, 0x34
and r9d, 0x3f
mov r9b, byte [r15 + r9 + 0x100]
mov byte [rbx + r10 - 0x1f], r9b
mov r9, rdi
shr r9, 0x2e
and r9d, 0x3f
mov r9b, byte [r15 + r9 + 0x100]
mov byte [rbx + r10 - 0x1e], r9b
mov r9, rdi
shr r9, 0x28
and r9d, 0x3f
mov r9b, byte [r15 + r9 + 0x100]
mov byte [rbx + r10 - 0x1d], r9b
mov r9, rdi
shr r9, 0x22
and r9d, 0x3f
mov r9b, byte [r15 + r9 + 0x100]
mov byte [rbx + r10 - 0x1c], r9b
mov r9, rdi
shr r9, 0x1c
mov r11, r9
not r11
or r11, 0x3f
add r9, r11
inc r9
cmp r9, 0x40
jae 0x447838
mov r9b, byte [r15 + r9 + 0x100]
mov byte [rbx + r10 - 0x1b], r9b
mov r9d, edi
shr r9d, 0x16
and r9d, 0x3f
mov r9b, byte [r15 + r9 + 0x100]
mov byte [rbx + r10 - 0x1a], r9b
shr rdi, 0x10
mov r9, rdi
not r9
or r9, 0x3f
add r9, rdi
inc r9
cmp r9, 0x40
jae 0x447844
mov r9b, byte [r15 + r9 + 0x100]
mov byte [rbx + r10 - 0x19], r9b
lea r9, [rdx - 6]
cmp r9, 7
jbe 0x4477d4
mov rdi, qword [r12 + rbp + 6]
bswap rdi
mov r9, rdi
shr r9, 0x3a
mov r9b, byte [r15 + r9 + 0x100]
mov byte [rbx + r10 - 0x18], r9b
mov r9, rdi
shr r9, 0x34
and r9d, 0x3f
mov r9b, byte [r15 + r9 + 0x100]
mov byte [rbx + r10 - 0x17], r9b
mov r9, rdi
shr r9, 0x2e
and r9d, 0x3f
mov r9b, byte [r15 + r9 + 0x100]
mov byte [rbx + r10 - 0x16], r9b
mov r9, rdi
shr r9, 0x28
mov r11, r9
not r11
or r11, 0x3f
add r9, r11
inc r9
cmp r9, 0x40
jae 0x44779f
mov r9b, byte [r15 + r9 + 0x100]
mov byte [rbx + r10 - 0x15], r9b
mov r9, rdi
shr r9, 0x22
and r9d, 0x3f
mov r9b, byte [r15 + r9 + 0x100]
mov byte [rbx + r10 - 0x14], r9b
mov r9, rdi
shr r9, 0x1c
and r9d, 0x3f
mov r9b, byte [r15 + r9 + 0x100]
mov byte [rbx + r10 - 0x13], r9b
mov r9d, edi
shr r9d, 0x16
and r9d, 0x3f
mov r9b, byte [r15 + r9 + 0x100]
mov byte [rbx + r10 - 0x12], r9b
shr edi, 0x10
and edi, 0x3f
mov r9b, byte [r15 + rdi + 0x100]
mov byte [rbx + r10 - 0x11], r9b
lea r9, [rdx - 0xc]
cmp r9, 7
jbe 0x4477d4
mov rdi, qword [r12 + rbp + 0xc]
bswap rdi
mov r9, rdi
shr r9, 0x3a
mov r9b, byte [r15 + r9 + 0x100]
mov byte [rbx + r10 - 0x10], r9b
mov r9, rdi
shr r9, 0x34
and r9d, 0x3f
mov r9b, byte [r15 + r9 + 0x100]
mov byte [rbx + r10 - 0xf], r9b
mov r9, rdi
shr r9, 0x2e
and r9d, 0x3f
mov r9b, byte [r15 + r9 + 0x100]
mov byte [rbx + r10 - 0xe], r9b
mov r9, rdi
shr r9, 0x28
and r9d, 0x3f
mov r9b, byte [r15 + r9 + 0x100]
mov byte [rbx + r10 - 0xd], r9b
mov r9, rdi
shr r9, 0x22
and r9d, 0x3f
mov r9b, byte [r15 + r9 + 0x100]
mov byte [rbx + r10 - 0xc], r9b
mov r9, rdi
shr r9, 0x1c
mov r11, r9
not r11
or r11, 0x3f
add r9, r11
inc r9
cmp r9, 0x40
jae 0x447850
mov r9b, byte [r15 + r9 + 0x100]
mov byte [rbx + r10 - 0xb], r9b
mov r9d, edi
shr r9d, 0x16
and r9d, 0x3f
mov r9b, byte [r15 + r9 + 0x100]
mov byte [rbx + r10 - 0xa], r9b
shr edi, 0x10
and edi, 0x3f
mov r9b, byte [r15 + rdi + 0x100]
mov byte [rbx + r10 - 9], r9b
add rdx, 0xffffffffffffffee
cmp rdx, 7
jbe 0x4477e8
mov rdx, qword [r12 + rbp + 0x12]
bswap rdx
mov r9, rdx
shr r9, 0x3a
mov r9b, byte [r15 + r9 + 0x100]
mov byte [rbx + r10 - 8], r9b
mov r9, rdx
shr r9, 0x34
and r9d, 0x3f
mov r9b, byte [r15 + r9 + 0x100]
mov byte [rbx + r10 - 7], r9b
mov r9, rdx
shr r9, 0x2e
mov r11, r9
not r11
or r11, 0x3f
add r9, r11
inc r9
cmp r9, 0x40
jae 0x44785c
mov r9b, byte [r15 + r9 + 0x100]
mov byte [rbx + r10 - 6], r9b
mov r9, rdx
shr r9, 0x28
mov r11d, r9d
xor r11d, 0xffffffc0
or r9d, 0x3f
and r9d, r11d
cmp r9d, 0x40
jae 0x447868
mov r9b, byte [r15 + r9 + 0x100]
mov byte [rbx + r10 - 5], r9b
mov r9, rdx
shr r9, 0x22
and r9d, 0x3f
mov r9b, byte [r15 + r9 + 0x100]
mov byte [rbx + r10 - 4], r9b
mov r9, rdx
shr r9, 0x1c
and r9d, 0x3f
mov r9b, byte [r15 + r9 + 0x100]
mov byte [rbx + r10 - 3], r9b
mov r9, rdx
shr r9, 0x16
mov r11, r9
xor r11, 0xffffffffffffffc0
or r9, 0x3f
and r9, r11
cmp r9, 0x40
jae 0x447874
mov r9b, byte [r15 + r9 + 0x100]
mov byte [rbx + r10 - 2], r9b
shr edx, 0x10
and edx, 0x3f
mov dl, byte [r15 + rdx + 0x100]
mov byte [rbx + r10 - 1], dl
add rbp, 0x18
add rcx, 0xffffffffffffffe8
add rax, 0x30
add r10, 0x20
cmp rbp, r8
jbe 0x446fd4
add r10, 0xffffffffffffffe0
mov qword [rsp + 0x38], r14
mov rax, r13
sub rax, qword [rsp + 0x50]
mov rcx, rax
mov qword [rsp + 0x40], rax
cmp rbp, rax
jae 0x44759b
lea r8, [r10 + r10]
mov rax, r10
neg rax
mov qword [rsp + 0x58], rax
mov r14, rbp
not r14
mov qword [rsp + 0x60], r13
cmp rbp, 0xfffffffffffffffc
ja 0x447880
lea r11, [rbp + 3]
cmp r11, r13
ja 0x447890
mov r9d, r8d
and r9d, 8
mov rcx, r10
xor rcx, 4
add r9, rcx
cmp r9, r10
jb 0x4478a3
cmp r9, rsi
ja 0x4478b7
mov rdx, r11
xor rdx, rbp
mov rax, r11
and rax, r14
add rax, rax
cmp rax, rdx
je 0x4478cb
mov qword [rsp + 0x68], r14
cmp r10, r9
je 0x4478d4
sub rax, rdx
mov r14, r12
movzx r12d, byte [r12 + rbp]
mov rdx, r12
shr rdx, 2
mov dl, byte [r15 + rdx + 0x100]
mov byte [rbx + r10], dl
cmp rax, 1
jbe 0x4478e4
mov r9d, r8d
shr r9d, 3
and r9d, 1
mov rdx, qword [rsp + 0x58]
lea rdx, [rdx + r9*8]
add rdx, rcx
cmp rdx, 1
jbe 0x4477b0
mov rdi, rsi
mov r13b, byte [r14 + rbp + 1]
mov esi, r13d
shr sil, 4
shl r12b, 4
or r12b, sil
movzx esi, r12b
and esi, 0x3f
mov sil, byte [r15 + rsi + 0x100]
mov byte [rbx + r10 + 1], sil
cmp rax, 2
jbe 0x4478f0
cmp rdx, 2
jbe 0x4478f9
shl r9, 3
neg r9
add r9, r10
sub r9, rcx
add r9, 3
movzx eax, byte [r14 + rbp + 2]
mov ecx, eax
shr cl, 6
shl r13b, 2
or r13b, cl
movzx ecx, r13b
and ecx, 0x3f
mov cl, byte [r15 + rcx + 0x100]
mov byte [rbx + r10 + 2], cl
test r9, r9
je 0x44790f
mov r12, r14
and eax, 0x3f
mov al, byte [r15 + rax + 0x100]
mov byte [rbx + r10 + 3], al
add r10, 4
add r8, 8
add qword [rsp + 0x58], 0xfffffffffffffffc
mov r14, qword [rsp + 0x68]
add r14, 0xfffffffffffffffd
mov rbp, r11
cmp r11, qword [rsp + 0x40]
mov rsi, rdi
mov r13, qword [rsp + 0x60]
jb 0x447434
mov rax, qword [rsp + 0x50]
cmp rax, 1
je 0x447643
cmp rax, 2
jne 0x447699
cmp r10, rsi
mov rdi, qword [rsp + 0x38]
jae 0x447962
mov r8, qword [rsp + 0x40]
movzx edx, byte [r12 + r8]
mov rax, rdx
shr rax, 2
mov al, byte [r15 + rax + 0x100]
mov byte [rbx + r10], al
inc r8
mov rcx, r8
cmp r8, r13
jae 0x4477c8
lea rax, [r10 + 1]
cmp rax, rsi
jae 0x44796b
mov cl, byte [r12 + rcx]
mov eax, ecx
shr al, 4
shl dl, 4
or dl, al
movzx eax, dl
and eax, 0x3f
mov al, byte [r15 + rax + 0x100]
mov byte [rbx + r10 + 1], al
mov eax, r10d
and eax, 2
mov rdx, r10
xor rdx, 2
lea rax, [rdx + rax*2]
cmp rax, rsi
jae 0x447974
shl cl, 2
and cl, 0x3c
mov edx, 3
jmp 0x447686
cmp r10, rsi
jae 0x44797d
mov rax, qword [rsp + 0x40]
movzx ecx, byte [r12 + rax]
mov rax, rcx
shr rax, 2
mov al, byte [r15 + rax + 0x100]
mov byte [rbx + r10], al
lea rax, [r10 + 1]
cmp rax, rsi
mov rdi, qword [rsp + 0x38]
jae 0x447989
shl cl, 4
and cl, 0x30
mov edx, 2
movzx ecx, cl
mov cl, byte [r15 + rcx + 0x100]
mov byte [rbx + rax], cl
add r10, rdx
jmp 0x44769e
mov rdi, qword [rsp + 0x38]
cmp byte [rsp + 0x2f], 0
je 0x4476dd
mov rdx, rsi
sub rdx, r10
jb 0x44794e
mov eax, r10d
neg eax
and rax, 3
je 0x4476dd
mov rcx, rbx
add rcx, r10
xor r8d, r8d
cmp rdx, r8
je 0x447925
mov byte [rcx + r8], 0x3d
inc r8
cmp rax, r8
jne 0x4476c5
jmp 0x4476df
xor eax, eax
add r10, rax
jb 0x447934
lea r15, [rsp + 0x70]
mov rcx, r15
mov rdx, rbx
mov r8, rsi
call fcn.00422ec0
cmp qword [r15], 0
je 0x44777b
mov rax, qword [rsp + 0x78]
mov cl, byte [rsp + 0x80]
mov edx, dword [rsp + 0x81]
mov dword [rsp + 0x30], edx
mov edx, dword [rsp + 0x84]
mov dword [rsp + 0x33], edx
cmp cl, 2
mov rdx, qword [rsp + 0x48]
je 0x447780
lea r8, [rsp + 0x70]
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 qword [r8 + 0x10], rdx
mov qword [r8 + 0x18], rbx
mov qword [r8 + 0x20], rsi
lea rax, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_parade_0.21.7_src_engine_mod.rs
mov qword [rsp + 0x20], rax
lea rcx, str.Invalid_UTF8
lea r9, [0x005d8ec8]
mov edx, 0xc
call fcn.0041f970
ud2
mov rdx, qword [rsp + 0x48]
mov qword [rdi], rdx
mov qword [rdi + 8], rbx
mov qword [rdi + 0x10], rsi
add rsp, 0x98
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
lea r8, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_parade_0.21.7_src_engine_general_purpose_mod.rs8
mov edx, 0x40
mov rcx, r9
jmp 0x4477c1
lea r8, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_parade_0.21.7_src_engine_general_purpose_mod.rs8
mov ecx, 1
mov edx, 1
call fcn.004262b0
ud2
lea r8, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_parade_0.21.7_src_engine_general_purpose_mod.rs8
mov rdx, r13
jmp 0x4477c1
lea r8, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_parade_0.21.7_src_engine_general_purpose_mod.rs8
mov ecx, 8
mov rdx, r9
jmp 0x4478c4
lea r8, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_parade_0.21.7_src_engine_general_purpose_mod.rs8
mov ecx, 8
jmp 0x4478c4
lea r8, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_parade_0.21.7_src_engine_general_purpose_mod.rs8
jmp 0x44788b
lea r8, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_parade_0.21.7_src_engine_general_purpose_mod.rs8
mov rcx, rdx
jmp 0x44789e
lea r8, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_parade_0.21.7_src_engine_general_purpose_mod.rs8
mov rcx, 0xffffffffffffffe0
xor edx, edx
jmp 0x4478b0
lea r8, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_parade_0.21.7_src_engine_general_purpose_mod.rs8
mov rcx, r10
jmp 0x4478c1
lea r8, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_parade_0.21.7_src_engine_general_purpose_mod.rs8
jmp 0x4477a6
lea r8, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_parade_0.21.7_src_engine_general_purpose_mod.rs8
jmp 0x4477a6
lea r8, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_parade_0.21.7_src_engine_general_purpose_mod.rs8
jmp 0x4477a6
lea r8, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_parade_0.21.7_src_engine_general_purpose_mod.rs8
jmp 0x4477a6
lea r8, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_parade_0.21.7_src_engine_general_purpose_mod.rs8
jmp 0x4477a6
lea r8, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_parade_0.21.7_src_engine_general_purpose_mod.rs8
jmp 0x4477a6
lea rdx, [rbp + 3]
lea r8, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_parade_0.21.7_src_engine_general_purpose_mod.rs8
mov rcx, rbp
jmp 0x4478b0
add rbp, 3
lea r8, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_parade_0.21.7_src_engine_general_purpose_mod.rs8
mov rcx, rbp
mov rdx, r13
jmp 0x4478c4
lea r8, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_parade_0.21.7_src_engine_general_purpose_mod.rs8
mov rcx, r10
mov rdx, r9
call fcn.00429a20
ud2
lea r8, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_parade_0.21.7_src_engine_general_purpose_mod.rs8
mov rcx, r9
mov rdx, rsi
call fcn.004292f0
ud2
lea r8, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_parade_0.21.7_src_engine_general_purpose_mod.rs8
jmp 0x4478db
lea r8, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_parade_0.21.7_src_engine_general_purpose_mod.rs8
xor ecx, ecx
xor edx, edx
jmp 0x4477c1
lea r8, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_parade_0.21.7_src_engine_general_purpose_mod.rs8
jmp 0x4477b7
lea r8, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_parade_0.21.7_src_engine_general_purpose_mod.rs8
jmp 0x447900
lea r8, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_parade_0.21.7_src_engine_general_purpose_mod.rs8
mov ecx, 2
mov edx, 2
jmp 0x4477c1
lea r8, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_parade_0.21.7_src_engine_general_purpose_mod.rs8
mov ecx, 3
mov edx, 3
jmp 0x4477c1
lea r8, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_parade_0.21.7_src_encode.rs
mov rcx, rdx
jmp 0x4477c1
lea rcx, str.usize_overflow_when_calculating_b64_length
lea r8, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_parade_0.21.7_src_encode.rs
mov edx, 0x2a
call fcn.0041f810
ud2
lea r8, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_parade_0.21.7_src_encode.rs
mov rcx, r10
mov rdx, rsi
call fcn.00429500
ud2
lea r8, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_parade_0.21.7_src_engine_general_purpose_mod.rs8
jmp 0x447984
lea r8, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_parade_0.21.7_src_engine_general_purpose_mod.rs8
jmp 0x447990
lea r8, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_parade_0.21.7_src_engine_general_purpose_mod.rs8
jmp 0x447990
lea r8, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_parade_0.21.7_src_engine_general_purpose_mod.rs8
mov rcx, r10
jmp 0x447993
lea r8, str.registry_src_octopus.retort.com_8754fae0eb2f08f1_parade_0.21.7_src_engine_general_purpose_mod.rs8
mov rcx, rax
mov rdx, rsi
jmp 0x4477c1