Function at 0x14000c950
Capabilities:
Encode data using base64

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x488
mov r14, r9
mov rsi, r8
mov rdi, rdx
mov r15, rcx
lea rcx, [rsp + 0x88]
mov r8d, 0x400
xor edx, edx
call sub.msvcrt.dll_memset
movzx eax, byte [r15 + 0xa]
lea rcx, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__._0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz._ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_________0123456789_ABCDEFGHIJKLMNPQRSTUVXYZ__abcdehijklmpqr
mov rbp, qword [rcx + rax*8]
mov rax, qword [r15]
mov qword [rsp + 0x50], rax
movzx eax, byte [r15 + 8]
mov byte [rsp + 0x2f], al
movabs rcx, 0xaaaaaaaaaaaaaaab
mov rax, rsi
mul rcx
shr rdx, 1
lea rax, [rdx + rdx*2]
mov rcx, rsi
sub rcx, rax
setne al
xor rcx, 3
mov qword [rsp + 0x30], rcx
setne cl
and cl, al
mov byte [rsp + 0x2e], cl
mov rax, qword [r14]
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x48], rdi
lea rax, [rdi + 2]
mov qword [rsp + 0x38], rax
xor r13d, r13d
mov r14, r13
mov r9, rsi
sub r9, r13
jbe 0x14000d02c
mov rax, qword [rsp + 0x50]
cmp rax, r9
cmovb r9, rax
mov r13, r9
add r13, r14
jb 0x14000d135
cmp r13, rsi
ja 0x14000d149
mov rax, qword [rsp + 0x48]
lea r10, [rax + r14]
mov rdx, r9
mov r11d, 0
mov r15d, 0
sub rdx, 0x1a
mov eax, 0
cmovb rdx, rax
jbe 0x14000cd69
xor r8d, r8d
xor r15d, r15d
nop word cs:[rax + rax]
lea rax, [r15 + 0x1a]
cmp rax, r9
ja 0x14000d0d8
cmp r8, 0x3e1
jae 0x14000d0ec
lea r11, [r8 + 0x20]
mov rax, qword [r10 + r15]
bswap rax
mov rcx, rax
shr rcx, 0x3a
movzx ecx, byte [rbp + rcx]
mov byte [rsp + r8 + 0x88], cl
mov rcx, rax
shr rcx, 0x34
and ecx, 0x3f
movzx ecx, byte [rbp + rcx]
mov byte [rsp + r8 + 0x89], cl
mov rcx, rax
shr rcx, 0x2e
and ecx, 0x3f
movzx ecx, byte [rbp + rcx]
mov byte [rsp + r8 + 0x8a], cl
mov rcx, rax
shr rcx, 0x28
and ecx, 0x3f
movzx ecx, byte [rbp + rcx]
mov byte [rsp + r8 + 0x8b], cl
mov rcx, rax
shr rcx, 0x22
and ecx, 0x3f
movzx ecx, byte [rbp + rcx]
mov byte [rsp + r8 + 0x8c], cl
mov rcx, rax
shr rcx, 0x1c
and ecx, 0x3f
movzx ecx, byte [rbp + rcx]
mov byte [rsp + r8 + 0x8d], cl
mov ecx, eax
shr ecx, 0x16
and ecx, 0x3f
movzx ecx, byte [rbp + rcx]
mov byte [rsp + r8 + 0x8e], cl
shr eax, 0x10
and eax, 0x3f
movzx ecx, byte [rbp + rax]
mov rax, qword [r10 + r15 + 6]
bswap rax
mov byte [rsp + r8 + 0x8f], cl
mov rcx, rax
shr rcx, 0x3a
movzx ecx, byte [rbp + rcx]
mov byte [rsp + r8 + 0x90], cl
mov rcx, rax
shr rcx, 0x34
and ecx, 0x3f
movzx ecx, byte [rbp + rcx]
mov byte [rsp + r8 + 0x91], cl
mov rcx, rax
shr rcx, 0x2e
and ecx, 0x3f
movzx ecx, byte [rbp + rcx]
mov byte [rsp + r8 + 0x92], cl
mov rcx, rax
shr rcx, 0x28
and ecx, 0x3f
movzx ecx, byte [rbp + rcx]
mov byte [rsp + r8 + 0x93], cl
mov rcx, rax
shr rcx, 0x22
and ecx, 0x3f
movzx ecx, byte [rbp + rcx]
mov byte [rsp + r8 + 0x94], cl
mov rcx, rax
shr rcx, 0x1c
and ecx, 0x3f
movzx ecx, byte [rbp + rcx]
mov byte [rsp + r8 + 0x95], cl
mov ecx, eax
shr ecx, 0x16
and ecx, 0x3f
movzx ecx, byte [rbp + rcx]
mov byte [rsp + r8 + 0x96], cl
shr eax, 0x10
and eax, 0x3f
movzx eax, byte [rbp + rax]
mov byte [rsp + r8 + 0x97], al
mov rax, qword [r10 + r15 + 0xc]
bswap rax
mov rcx, rax
shr rcx, 0x3a
movzx ecx, byte [rbp + rcx]
mov byte [rsp + r8 + 0x98], cl
mov rcx, rax
shr rcx, 0x34
and ecx, 0x3f
movzx ecx, byte [rbp + rcx]
mov byte [rsp + r8 + 0x99], cl
mov rcx, rax
shr rcx, 0x2e
and ecx, 0x3f
movzx ecx, byte [rbp + rcx]
mov byte [rsp + r8 + 0x9a], cl
mov rcx, rax
shr rcx, 0x28
and ecx, 0x3f
movzx ecx, byte [rbp + rcx]
mov byte [rsp + r8 + 0x9b], cl
mov rcx, rax
shr rcx, 0x22
and ecx, 0x3f
movzx ecx, byte [rbp + rcx]
mov byte [rsp + r8 + 0x9c], cl
mov rcx, rax
shr rcx, 0x1c
and ecx, 0x3f
movzx ecx, byte [rbp + rcx]
mov byte [rsp + r8 + 0x9d], cl
mov ecx, eax
shr ecx, 0x16
and ecx, 0x3f
movzx ecx, byte [rbp + rcx]
mov byte [rsp + r8 + 0x9e], cl
shr eax, 0x10
and eax, 0x3f
movzx eax, byte [rbp + rax]
mov byte [rsp + r8 + 0x9f], al
mov rax, qword [r10 + r15 + 0x12]
bswap rax
mov rcx, rax
shr rcx, 0x3a
movzx ecx, byte [rbp + rcx]
mov byte [rsp + r8 + 0xa0], cl
mov rcx, rax
shr rcx, 0x34
and ecx, 0x3f
movzx ecx, byte [rbp + rcx]
mov byte [rsp + r8 + 0xa1], cl
mov rcx, rax
shr rcx, 0x2e
and ecx, 0x3f
movzx ecx, byte [rbp + rcx]
mov byte [rsp + r8 + 0xa2], cl
mov rcx, rax
shr rcx, 0x28
and ecx, 0x3f
movzx ecx, byte [rbp + rcx]
mov byte [rsp + r8 + 0xa3], cl
mov rcx, rax
shr rcx, 0x22
and ecx, 0x3f
movzx ecx, byte [rbp + rcx]
mov byte [rsp + r8 + 0xa4], cl
mov rcx, rax
shr rcx, 0x1c
and ecx, 0x3f
movzx ecx, byte [rbp + rcx]
mov byte [rsp + r8 + 0xa5], cl
mov ecx, eax
shr ecx, 0x16
and ecx, 0x3f
movzx ecx, byte [rbp + rcx]
mov byte [rsp + r8 + 0xa6], cl
shr eax, 0x10
and eax, 0x3f
movzx eax, byte [rbp + rax]
mov byte [rsp + r8 + 0xa7], al
add r15, 0x18
mov r8, r11
cmp r15, rdx
jbe 0x14000ca60
mov rax, r9
movabs rcx, 0xaaaaaaaaaaaaaaab
mul rcx
shr rdx, 1
lea rax, [rdx + rdx*2]
cmp r15, rax
jae 0x14000cee0
mov rcx, qword [rsp + 0x38]
lea rdx, [rcx + r14]
nop word cs:[rax + rax]
lea rcx, [r15 + 3]
cmp rcx, r9
ja 0x14000d104
lea r8, [r11 + 4]
cmp r11, 0x3fd
jae 0x14000d11c
movzx edi, byte [rdx + r15 - 2]
mov ebx, edi
shr ebx, 2
movzx ebx, byte [rbp + rbx]
mov byte [rsp + r11 + 0x88], bl
movzx r12d, byte [rdx + r15 - 1]
shl dil, 4
mov ebx, r12d
shr bl, 4
or bl, dil
movzx edi, bl
and edi, 0x3f
movzx ebx, byte [rbp + rdi]
mov byte [rsp + r11 + 0x89], bl
movzx edi, byte [rdx + r15]
shl r12b, 2
mov ebx, edi
shr bl, 6
or bl, r12b
movzx ebx, bl
and ebx, 0x3f
movzx ebx, byte [rbp + rbx]
mov byte [rsp + r11 + 0x8a], bl
and edi, 0x3f
movzx ebx, byte [rbp + rdi]
mov byte [rsp + r11 + 0x8b], bl
mov r15, rcx
mov r11, r8
cmp rcx, rax
jb 0x14000cda0
mov rcx, r9
sub rcx, rax
cmp rcx, 1
je 0x14000cef3
cmp rcx, 2
jne 0x14000cf44
cmp r8, 0x3ff
ja 0x14000d05f
movzx ecx, byte [r10 + rax]
mov edx, ecx
shr edx, 2
movzx edx, byte [rbp + rdx]
mov byte [rsp + r8 + 0x88], dl
inc rax
cmp rax, r9
jae 0x14000d081
cmp r8, 0x3ff
jae 0x14000d0ad
movzx eax, byte [r10 + rax]
mov edx, eax
shr dl, 4
shl cl, 4
or cl, dl
movzx ecx, cl
and ecx, 0x3f
movzx ecx, byte [rbp + rcx]
lea rdx, [rsp + 0x88]
mov byte [r8 + rdx + 1], cl
lea rcx, [r8 + 2]
cmp r8, 0x3fe
je 0x14000d0c5
shl al, 2
and al, 0x3c
mov edx, 3
jmp 0x14000cf32
mov r8, r11
mov rcx, r9
sub rcx, rax
cmp rcx, 1
jne 0x14000ce4f
cmp r8, 0x3ff
ja 0x14000d068
movzx eax, byte [r10 + rax]
mov ecx, eax
shr ecx, 2
movzx ecx, byte [rbp + rcx]
mov byte [rsp + r8 + 0x88], cl
cmp r8, 0x3ff
je 0x14000d095
lea rcx, [r8 + 1]
shl al, 4
and al, 0x30
mov edx, 2
movzx eax, al
movzx eax, byte [rbp + rax]
mov byte [rsp + rcx + 0x88], al
add r8, rdx
cmp byte [rsp + 0x2f], 0
je 0x14000cfe5
cmp r13, rsi
jb 0x14000cfe5
cmp r8, 0x401
jae 0x14000d19e
cmp byte [rsp + 0x2e], 0
je 0x14000cfe0
cmp r8, 0x400
je 0x14000d046
mov byte [rsp + r8 + 0x88], 0x3d
mov rcx, qword [rsp + 0x30]
mov rax, rcx
cmp rcx, 1
je 0x14000cfe2
cmp r8, 0x3ff
je 0x14000d046
mov byte [rsp + r8 + 0x89], 0x3d
mov rcx, qword [rsp + 0x30]
mov rax, rcx
cmp rcx, 2
je 0x14000cfe2
cmp r8, 0x3fe
je 0x14000d046
mov byte [rsp + r8 + 0x8a], 0x3d
mov rax, qword [rsp + 0x30]
jmp 0x14000cfe2
xor eax, eax
add r8, rax
cmp r8, 0x401
jae 0x14000d15d
lea rcx, [rsp + 0x58]
lea rdx, [rsp + 0x88]
call dbg.from_utf8
cmp qword [rsp + 0x58], 0
jne 0x14000d166
mov rdx, qword [rsp + 0x60]
mov r8, qword [rsp + 0x68]
mov rcx, qword [rsp + 0x40]
call sym.core::fmt::Formatter::write_str::h8580674b97d7c9aa
test al, al
je 0x14000c9f0
cmp rsi, r14
seta al
add rsp, 0x488
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov ecx, 0x400
sub rcx, r8
lea r8, str.x5__
mov rdx, rcx
call dbg.panic_bounds_check
ud2
lea rax, [0x1402c3458]
jmp 0x14000d06f
lea rax, [0x1402c34b8]
mov edx, 0x400
mov rcx, r8
mov r8, rax
call dbg.panic_bounds_check
ud2
lea r8, [0x1402c3470]
mov rcx, rax
mov rdx, r9
call dbg.panic_bounds_check
ud2
lea r8, [0x1402c34d0]
mov ecx, 0x400
mov edx, 0x400
call dbg.panic_bounds_check
ud2
lea r8, [0x1402c3488]
mov ecx, 0x400
mov edx, 0x400
call dbg.panic_bounds_check
ud2
lea r8, [0x1402c34a0]
mov edx, 0x400
call dbg.panic_bounds_check
ud2
lea r8, [0x1402c3518]
mov rcx, rax
mov rdx, r9
call dbg.slice_end_index_len_fail
ud2
lea r8, [0x1402c3530]
mov ecx, 0x420
mov edx, 0x400
call dbg.slice_end_index_len_fail
ud2
add r15, 3
lea r8, [0x1402c34e8]
mov rcx, r15
mov rdx, r9
call dbg.slice_end_index_len_fail
ud2
lea rax, [0x1402c3500]
mov edx, 0x400
mov rcx, r8
mov r8, rax
call dbg.slice_end_index_len_fail
ud2
lea r8, str._Users_o_.cargo_registry_src_index.crates.io_6f17d22bba15001f_base64_0.13.1_src_chunked_encoder.rs
mov rcx, r14
mov rdx, r13
call dbg.slice_index_order_fail
ud2
lea r8, str._Users_o_.cargo_registry_src_index.crates.io_6f17d22bba15001f_base64_0.13.1_src_chunked_encoder.rs
mov rcx, r13
mov rdx, rsi
call dbg.slice_end_index_len_fail
ud2
lea rax, str._Users_o_.cargo_registry_src_index.crates.io_6f17d22bba15001f_base64_0.13.1_src_chunked_encoder.rs
jmp 0x14000d123
lea rax, [rsp + 0x60]
movups xmm0, xmmword [rax]
movaps xmmword [rsp + 0x70], xmm0
lea rax, [0x1402c27b8]
mov qword [rsp + 0x20], rax
lea rcx, str.base64_data_was_not_utf8_Users_o_.cargo_registry_src_index.crates.io_6f17d22bba15001f_base64_0.13.1_src_display.rs
lea r9, sym._ZN4core3ptr48drop_in_place_LT_core..str..error..Utf8Error_GT_17h5301ed8e27cb8b95E.llvm.8040292938745959470
lea r8, [rsp + 0x70]
mov edx, 0x18
call dbg.unwrap_failed
ud2
lea rax, str._Users_o_.cargo_registry_src_index.crates.io_6f17d22bba15001f_base64_0.13.1_src_chunked_encoder.rs
mov edx, 0x400
mov rcx, r8
mov r8, rax
call dbg.slice_start_index_len_fail
ud2