Function at 0x18004fc79
Capabilities:
Encode data using base64

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x148
mov r10, rcx
test r8b, 3
je 0x18004fca3
mov byte [r10 + 8], 0
and qword [r10], 0
jmp 0x18005002b
mov r14, r9
mov r13, rdx
cmp r8, 2
jb 0x18004fd12
movzx edx, byte [r8 + r13 - 1]
movzx eax, byte [r8 + r13 - 2]
mov ecx, 0x3c
mov r11d, 0x3c
sub r11d, eax
mov r9d, 0x1c2
add eax, r9d
and eax, r11d
sub ecx, edx
add edx, r9d
and edx, ecx
shr edx, 8
and edx, 1
bt eax, 8
mov ecx, edx
adc cx, 0
movzx r9d, cx
mov rcx, r8
sub rcx, r9
test r9w, r9w
je 0x18004fd1e
movzx esi, dx
cmp r9d, 2
je 0x18004fd27
cmp r9d, 1
jne 0x18004fc95
mov qword [rsp + 0x30], r10
jmp 0x18004fd34
mov qword [rsp + 0x30], r10
xor esi, esi
mov rcx, r8
jmp 0x18004fd37
mov qword [rsp + 0x30], r10
xor esi, esi
jmp 0x18004fd37
mov qword [rsp + 0x30], r10
movzx eax, ah
movzx eax, ax
and esi, eax
xor esi, 1
mov r15, qword [rsp + 0x1b0]
lea r9, str..cargo_registry_srcindex.crates.io_6f17d22bba15001f_base64ct_1.6.0_srcencoding.rs
mov rdx, r13
mov qword [rsp + 0x50], r8
call fcn.18004fb7b
mov rbx, rax
mov r12, rdx
mov rax, rdx
shr rax, 2
mov edi, r12d
and edi, 3
lea rax, [rax + rax*2]
lea r8, [rdi + rdi*2]
shr r8, 2
add r8, rax
cmp r8, r15
jbe 0x18004fd88
mov rax, qword [rsp + 0x30]
mov byte [rax + 8], 1
jmp 0x180050027
mov qword [rsp + 0x38], r13
lea r9, str..cargo_registry_srcindex.crates.io_6f17d22bba15001f_base64ct_1.6.0_srcencoding.rs
mov rcx, r14
mov rdx, r15
call fcn.180016e51
mov r8, rax
mov r9, rdx
mov qword [rsp + 0x98], rdx
and r12, 0xfffffffffffffffc
mov rax, rbx
add rax, r12
lea rcx, [rsp + 0xd0]
mov qword [rcx], rbx
mov qword [rcx + 8], r12
mov qword [rcx + 0x10], rax
mov qword [rcx + 0x18], rdi
mov qword [rcx + 0x20], 4
mov ecx, 3
mov rax, rdx
xor edx, edx
div rcx
mov qword [rsp + 0xa0], r9
mov rax, r9
sub rax, rdx
lea rcx, [r8 + rax]
lea r9, [rsp + 0xf8]
mov qword [rsp + 0x60], r8
mov qword [r9 + 0x10], r8
mov qword [r9 + 0x18], rax
mov qword [r9], rcx
mov qword [r9 + 8], rdx
mov qword [r9 + 0x20], 3
lea rcx, [rsp + 0x70]
lea rdx, [rsp + 0xd0]
lea r8, [rsp + 0xf8]
call fcn.18004fb9c
mov r15, qword [rsp + 0x70]
test r15, r15
je 0x18004ff0c
mov r12, qword [rsp + 0x78]
test r12, r12
je 0x180050367
mov rdi, qword [rsp + 0x80]
mov rbp, qword [rsp + 0x88]
mov cl, byte [r15]
call fcn.18005066d
cmp r12, 1
je 0x180050370
mov r14d, eax
mov cl, byte [r15 + 1]
call fcn.18005066d
cmp r12, 2
jbe 0x180050379
mov ebx, eax
mov cl, byte [r15 + 2]
call fcn.18005066d
cmp r12, 3
je 0x180050382
mov r13d, eax
mov cl, byte [r15 + 3]
call fcn.18005066d
test rbp, rbp
je 0x180050395
lea ecx, [r14*4]
movzx edx, bx
shr edx, 4
or edx, ecx
mov byte [rdi], dl
cmp rbp, 1
je 0x1800503a2
mov ecx, ebx
shl ecx, 4
movzx edx, r13w
shr edx, 2
or edx, ecx
mov byte [rdi + 1], dl
cmp rbp, 2
jbe 0x1800503b5
mov ecx, r13d
shl ecx, 6
or ecx, eax
mov byte [rdi + 2], cl
or ebx, r14d
or r13d, eax
or r13d, ebx
shr r13d, 8
and r13d, 1
or esi, r13d
jmp 0x18004fe19
mov r14, qword [rsp + 0xe0]
mov r13, qword [rsp + 0xe8]
mov rax, qword [rsp + 0xf8]
mov qword [rsp + 0x48], rax
mov rax, qword [rsp + 0x100]
mov qword [rsp + 0x40], rax
xor r15d, r15d
cmp r13, 1
sete r15b
lea rbx, [rsp + 0xac]
mov dword [rbx], 0x41414141
lea r8, str..cargo_registry_srcindex.crates.io_6f17d22bba15001f_base64ct_1.6.0_srcencoding.rs
mov rcx, rbx
mov rdx, r13
call fcn.18004fc27
lea rcx, str..cargo_registry_srcindex.crates.io_6f17d22bba15001f_base64ct_1.6.0_srcencoding.rs
mov qword [rsp + 0x20], rcx
mov rcx, rax
mov r8, r14
mov r9, r13
call fcn.1800162e7
mov cl, byte [rbx]
call fcn.18005066d
mov r14d, eax
mov cl, byte [rbx + 1]
call fcn.18005066d
mov ebp, eax
movzx edi, ax
mov cl, byte [rbx + 2]
call fcn.18005066d
mov r13d, eax
movzx r12d, ax
mov cl, byte [rbx + 3]
call fcn.18005066d
mov ebx, eax
lea eax, [r14*4]
shr edi, 4
or edi, eax
lea rcx, [rsp + 0x6d]
mov byte [rcx], dil
mov eax, ebp
shl eax, 4
shr r12d, 2
or r12d, eax
mov byte [rcx + 1], r12b
mov eax, r13d
shl eax, 6
or eax, ebx
mov byte [rcx + 2], al
or r14d, ebp
or ebx, r13d
or ebx, r14d
shr ebx, 8
and ebx, 1
or ebx, r15d
mov rdi, qword [rsp + 0x40]
mov rdx, rdi
call fcn.18004fc37
mov r9, rdx
lea rcx, str..cargo_registry_srcindex.crates.io_6f17d22bba15001f_base64ct_1.6.0_srcencoding.rs
mov qword [rsp + 0x20], rcx
mov rcx, qword [rsp + 0x48]
mov rdx, rdi
mov r8, rax
call fcn.1800162e7
or bx, si
je 0x18005003f
mov rax, qword [rsp + 0x30]
mov byte [rax + 8], 0
and qword [rax], 0
add rsp, 0x148
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov rbx, qword [rsp + 0xa0]
mov rax, rbx
mov r11, qword [rsp + 0x50]
or rax, r11
mov r10, qword [rsp + 0x30]
je 0x180050600
xor r8d, r8d
mov rax, r11
sub rax, 1
cmovb rax, r8
and rax, 0xfffffffffffffffc
mov rdi, qword [rsp + 0x38]
add rdi, rax
sub r11, rax
cmovb rdi, r8
jb 0x1800505ee
xor r8d, r8d
mov rcx, rbx
sub rcx, 1
cmovb rcx, r8
mov r9d, 3
mov rax, rcx
xor edx, edx
div r9
sub rcx, rdx
sub rbx, rcx
jb 0x1800505ee
and dword [rsp + 0x5c], 0
mov rax, rbx
shr rax, 0x3e
jne 0x1800505eb
lea rax, [rbx*4]
mov esi, 3
xor edx, edx
div rsi
add rax, 3
movabs r8, 0x7ffffffffffffffc
and r8, rax
cmp r8, 4
ja 0x1800505eb
mov qword [rsp + 0x38], rdi
mov qword [rsp + 0x50], r11
mov rdi, qword [rsp + 0x60]
add rdi, rcx
lea r9, str..cargo_registry_srcindex.crates.io_6f17d22bba15001f_base64ct_1.6.0_srcencoding.rs
lea rcx, [rsp + 0x5c]
mov edx, 4
call fcn.180016e51
mov r8, rax
mov rcx, rdx
mov rax, rbx
xor edx, edx
div rsi
sub rbx, rdx
lea rbp, [rsp + 0x120]
mov qword [rbp], rdi
add rdi, rbx
mov qword [rbp + 8], rbx
mov qword [rbp + 0x10], rdi
mov qword [rbp + 0x18], rdx
mov qword [rbp + 0x20], 3
mov eax, ecx
and eax, 3
mov qword [rsp + 0x40], rcx
and rcx, 0xfffffffffffffffc
lea rdx, [r8 + rcx]
lea r13, [rsp + 0x70]
mov qword [rsp + 0x48], r8
mov qword [r13 + 0x10], r8
mov qword [r13 + 0x18], rcx
mov qword [r13], rdx
mov qword [r13 + 8], rax
mov qword [r13 + 0x20], 4
lea r12, [rsp + 0xb0]
lea rsi, [0x18012a26e]
mov rcx, r12
mov rdx, rbp
mov r8, r13
call fcn.18004fb9c
mov rdx, qword [rsp + 0xb0]
test rdx, rdx
je 0x1800503cd
mov rax, qword [rsp + 0xb8]
test rax, rax
je 0x180050619
cmp rax, 1
je 0x180050625
cmp rax, 2
jbe 0x180050631
mov rax, qword [rsp + 0xc0]
mov rcx, qword [rsp + 0xc8]
movzx r9d, byte [rdx]
movzx r8d, byte [rdx + 1]
movzx edx, byte [rdx + 2]
movzx r9d, r9w
mov r15d, r9d
shr r15d, 2
mov r11d, r15d
add r11d, 0x41
mov edi, reloc.WS2_32.dll_recv
mov rbx, rsi
test rdi, rdi
je 0x180050239
movzx r14d, byte [rbx + 1]
test byte [rbx], 1
mov r10d, r15d
cmove r10d, r11d
sub r14d, r10d
movsx r10d, r14w
shr r10d, 8
and r10w, word [rbx + 2]
add rbx, 4
add r10d, r11d
add rdi, 0xfffffffffffffffc
mov r11d, r10d
jmp 0x180050205
test rcx, rcx
je 0x18005063d
mov byte [rax], r11b
shl r9d, 4
movzx r8d, r8w
mov r11d, r8d
shr r11d, 4
and r9d, 0x30
lea r10d, [r11 + r9]
add r10d, 0x41
or r11d, r9d
mov r9d, reloc.WS2_32.dll_recv
mov rdi, rsi
test r9, r9
je 0x18005029c
movzx ebx, byte [rdi + 1]
test byte [rdi], 1
mov r14d, r11d
cmove r14d, r10d
sub ebx, r14d
movsx ebx, bx
shr ebx, 8
and bx, word [rdi + 2]
add rdi, 4
add ebx, r10d
add r9, 0xfffffffffffffffc
mov r10d, ebx
jmp 0x18005026c
cmp rcx, 1
je 0x180050649
mov byte [rax + 1], r10b
movzx edx, dx
mov r10d, edx
shr r10d, 6
and r8d, 0xf
lea r9d, [r10 + r8*4]
lea r8d, [r10 + r8*4]
add r8d, 0x41
mov r10d, reloc.WS2_32.dll_recv
mov r11, rsi
test r10, r10
je 0x1800502ff
movzx edi, byte [r11 + 1]
test byte [r11], 1
mov ebx, r9d
cmove ebx, r8d
sub edi, ebx
movsx edi, di
shr edi, 8
and di, word [r11 + 2]
add r11, 4
add edi, r8d
add r10, 0xfffffffffffffffc
mov r8d, edi
jmp 0x1800502cd
cmp rcx, 2
jbe 0x180050655
mov byte [rax + 2], r8b
and edx, 0x3f
mov r8d, edx
add r8d, 0x41
mov r9d, reloc.WS2_32.dll_recv
mov r10, rsi
test r9, r9
je 0x180050354
movzx r11d, byte [r10 + 1]
test byte [r10], 1
mov edi, edx
cmove edi, r8d
sub r11d, edi
movsx r11d, r11w
shr r11d, 8
and r11w, word [r10 + 2]
add r10, 4
add r11d, r8d
add r9, 0xfffffffffffffffc
mov r8d, r11d
jmp 0x180050320
cmp rcx, 3
je 0x180050661
mov byte [rax + 3], r8b
jmp 0x18005018a
lea r8, str..cargo_registry_srcindex.crates.io_6f17d22bba15001f_base64ct_1.6.0_src_alphabet.rs
jmp 0x18005039c
lea r8, str..cargo_registry_srcindex.crates.io_6f17d22bba15001f_base64ct_1.6.0_src_alphabet.rs
jmp 0x1800503a9
lea r8, str..cargo_registry_srcindex.crates.io_6f17d22bba15001f_base64ct_1.6.0_src_alphabet.rs
jmp 0x1800503bc
lea r8, str..cargo_registry_srcindex.crates.io_6f17d22bba15001f_base64ct_1.6.0_src_alphabet.rs
mov ecx, 3
mov edx, 3
jmp 0x1800503c6
lea r8, str..cargo_registry_srcindex.crates.io_6f17d22bba15001f_base64ct_1.6.0_src_alphabet.rs
xor ecx, ecx
xor edx, edx
jmp 0x1800503c6
lea r8, str..cargo_registry_srcindex.crates.io_6f17d22bba15001f_base64ct_1.6.0_src_alphabet.rs
mov ecx, 1
mov edx, 1
jmp 0x1800503c6
lea r8, str..cargo_registry_srcindex.crates.io_6f17d22bba15001f_base64ct_1.6.0_src_alphabet.rs
mov ecx, 2
mov edx, 2
call fcn.1800d7690
ud2
mov rax, qword [rsp + 0x88]
mov r13, qword [rsp + 0x90]
sub rax, r13
jb 0x1800505ae
mov rbx, qword [rsp + 0x130]
mov r12, qword [rsp + 0x138]
mov rsi, qword [rsp + 0x80]
lea rcx, [rsi + r13]
mov qword [rsp + 0x80], rcx
mov qword [rsp + 0x88], rax
test rsi, rsi
je 0x1800505ae
lea r14, [rsp + 0xb0]
mov byte [r14 + 2], 0
and word [r14], 0
lea r8, str..cargo_registry_srcindex.crates.io_6f17d22bba15001f_base64ct_1.6.0_srcencoding.rs
mov rcx, r14
mov rdx, r12
call fcn.18004fc52
lea rcx, str..cargo_registry_srcindex.crates.io_6f17d22bba15001f_base64ct_1.6.0_srcencoding.rs
mov qword [rsp + 0x20], rcx
mov rcx, rax
mov r8, rbx
mov r9, r12
call fcn.1800162e7
movzx edx, byte [r14]
movzx ecx, byte [r14 + 1]
movzx eax, byte [r14 + 2]
mov r8d, edx
shr r8d, 2
mov r9d, r8d
add r9d, 0x41
lea r11, [0x18012a26e]
mov r10d, reloc.WS2_32.dll_recv
test r10, r10
je 0x1800504b4
movzx edi, byte [r11 + 1]
test byte [r11], 1
mov ebx, r8d
cmove ebx, r9d
sub edi, ebx
movsx edi, di
shr edi, 8
and di, word [r11 + 2]
add r11, 4
add edi, r9d
add r10, 0xfffffffffffffffc
mov r9d, edi
jmp 0x180050482
test r13, r13
je 0x18005063d
mov byte [rsi], r9b
movzx r9d, dx
shl r9d, 4
movzx ecx, cx
mov r8d, ecx
shr r8d, 4
and r9d, 0x30
lea edx, [r8 + r9]
add edx, 0x41
or r8d, r9d
lea r10, [0x18012a26e]
mov r9d, reloc.WS2_32.dll_recv
test r9, r9
je 0x180050521
movzx r11d, byte [r10 + 1]
test byte [r10], 1
mov edi, r8d
cmove edi, edx
sub r11d, edi
movsx r11d, r11w
shr r11d, 8
and r11w, word [r10 + 2]
add r10, 4
add r11d, edx
add r9, 0xfffffffffffffffc
mov edx, r11d
jmp 0x1800504ed
cmp r13, 1
je 0x180050649
mov byte [rsi + 1], dl
movzx eax, ax
shr eax, 6
and ecx, 0xf
lea edx, [rax + rcx*4]
lea eax, [rax + rcx*4]
add eax, 0x41
lea r8, [0x18012a26e]
mov ecx, reloc.WS2_32.dll_recv
test rcx, rcx
je 0x180050581
movzx r9d, byte [r8 + 1]
test byte [r8], 1
mov r10d, edx
cmove r10d, eax
sub r9d, r10d
movsx r9d, r9w
shr r9d, 8
and r9w, word [r8 + 2]
add r8, 4
add r9d, eax
add rcx, 0xfffffffffffffffc
mov eax, r9d
jmp 0x18005054c
cmp r13, 2
jbe 0x180050655
mov byte [rsi + 2], al
cmp r13, 3
je 0x180050661
cmp r12, 1
movzx eax, al
mov ecx, 0x3d
cmovne ecx, eax
mov byte [rsi + 2], cl
mov byte [rsi + 3], 0x3d
mov r11, qword [rsp + 0x48]
test r11, r11
mov r10, qword [rsp + 0x30]
mov r8, qword [rsp + 0x50]
mov r9, qword [rsp + 0x38]
je 0x1800505eb
mov rax, qword [rsp + 0x40]
cmp rax, r8
cmovb r8, rax
xor eax, eax
xor ecx, ecx
cmp r8, rax
je 0x1800505f7
mov dl, byte [r9 + rax]
xor dl, byte [r11 + rax]
inc rax
or cl, dl
jmp 0x1800505d7
mov r8b, 1
mov byte [r10 + 8], r8b
jmp 0x18004fc9a
test cl, cl
je 0x180050600
xor r8d, r8d
jmp 0x1800505ee
mov rax, qword [rsp + 0x60]
mov qword [r10], rax
mov rax, qword [rsp + 0x98]
mov qword [r10 + 8], rax
jmp 0x18005002b
lea r8, str..cargo_registry_srcindex.crates.io_6f17d22bba15001f_base64ct_1.6.0_src_alphabet.rs
jmp 0x18005039c
lea r8, str..cargo_registry_srcindex.crates.io_6f17d22bba15001f_base64ct_1.6.0_src_alphabet.rs
jmp 0x1800503a9
lea r8, str..cargo_registry_srcindex.crates.io_6f17d22bba15001f_base64ct_1.6.0_src_alphabet.rs
jmp 0x1800503bc
lea r8, str..cargo_registry_srcindex.crates.io_6f17d22bba15001f_base64ct_1.6.0_src_alphabet.rs
jmp 0x18005039c
lea r8, str..cargo_registry_srcindex.crates.io_6f17d22bba15001f_base64ct_1.6.0_src_alphabet.rs
jmp 0x1800503a9
lea r8, str..cargo_registry_srcindex.crates.io_6f17d22bba15001f_base64ct_1.6.0_src_alphabet.rs
jmp 0x1800503bc
lea r8, str..cargo_registry_srcindex.crates.io_6f17d22bba15001f_base64ct_1.6.0_src_alphabet.rs
jmp 0x180050389