Function at 0x1400209c0
Capabilities:
Encode data using base64

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x48
mov qword [rsp + 0x30], 0
mov r12, rcx
mov rsi, rdx
mov rbp, r8
mov qword [rsp + 0x38], 0
test r9b, r9b
je 0x140020c68
imul rcx, r8, 4
jo 0x140020c20
movabs rdi, 0x5555555555555556
mov rax, rcx
sar rcx, 0x3f
imul rdi
sub rdx, rcx
add rdx, 6
mov r9, rdx
js 0x140020c30
lea r14, [rsp + 0x30]
mov rcx, r14
call sym.setLengthStrV2
mov rax, rbp
imul rdi
mov rax, rbp
sar rax, 0x3f
mov rdi, rdx
sub rdi, rax
lea rax, [rdi + rdi*2]
mov rdi, rbp
sub rdi, rax
mov rax, rbp
sub rax, rdi
mov qword [rsp + 0x28], rdi
seto r15b
mov qword [rsp + 0x20], rax
movzx r15d, r15b
jo 0x140020c20
xor ebx, ebx
lea r13, [0x1400472a0]
cmp qword [rsp + 0x20], r15
je 0x140020ef0
cmp rbp, r15
jle 0x140020ed8
movzx eax, byte [rsi + r15]
mov rcx, r15
shl eax, 0x10
mov r9d, eax
add rcx, 1
js 0x140020c20
cmp rcx, r15
jb 0x140020c20
test rcx, rcx
js 0x140020eb0
cmp rcx, rbp
jge 0x140020eb0
movzx edx, byte [rsi + rcx]
lea rcx, [r15 + 2]
shl edx, 8
cmp rbp, rcx
jle 0x140020eb0
movzx eax, byte [rsi + r15 + 2]
add r15, 3
or eax, edx
mov rdx, qword [rsp + 0x30]
or eax, r9d
mov edi, eax
test rbx, rbx
js 0x140020ec0
cmp rbx, rdx
jge 0x140020ec0
mov rdx, qword [rsp + 0x38]
test rdx, rdx
je 0x140020b13
test byte [rdx + 7], 0x40
je 0x140020b13
mov rcx, r14
call sym.nimPrepareStrMutationImpl__system_u2387
mov rdx, qword [rsp + 0x38]
mov ecx, edi
shr ecx, 0x12
movzx ecx, byte [r13 + rcx]
mov byte [rdx + rbx + 8], cl
add rbx, 1
mov rcx, rbx
jo 0x140020c20
mov rdx, qword [rsp + 0x30]
test rbx, rbx
js 0x140020e90
cmp rbx, rdx
jge 0x140020e9a
mov rdx, qword [rsp + 0x38]
test rdx, rdx
je 0x140020b63
test byte [rdx + 7], 0x40
je 0x140020b63
mov rcx, r14
call sym.nimPrepareStrMutationImpl__system_u2387
mov rdx, qword [rsp + 0x38]
mov ecx, edi
shr ecx, 0xc
and ecx, 0x3f
movzx ecx, byte [r13 + rcx]
mov byte [rdx + rbx + 8], cl
add rbx, 1
mov rcx, rbx
jo 0x140020c20
mov rdx, qword [rsp + 0x30]
test rbx, rbx
js 0x140020e90
cmp rbx, rdx
jge 0x140020e9a
mov rdx, qword [rsp + 0x38]
test rdx, rdx
je 0x140020bb6
test byte [rdx + 7], 0x40
je 0x140020bb6
mov rcx, r14
call sym.nimPrepareStrMutationImpl__system_u2387
mov rdx, qword [rsp + 0x38]
mov ecx, edi
shr ecx, 6
and ecx, 0x3f
movzx ecx, byte [r13 + rcx]
mov byte [rdx + rbx + 8], cl
add rbx, 1
mov rcx, rbx
jo 0x140020c20
mov rdx, qword [rsp + 0x30]
test rbx, rbx
js 0x140020e90
cmp rbx, rdx
jge 0x140020e9a
mov rdx, qword [rsp + 0x38]
test rdx, rdx
je 0x140020c05
test byte [rdx + 7], 0x40
je 0x140020c05
mov rcx, r14
call sym.nimPrepareStrMutationImpl__system_u2387
mov rdx, qword [rsp + 0x38]
mov eax, edi
and eax, 0x3f
movzx eax, byte [r13 + rax]
mov byte [rdx + rbx + 8], al
add rbx, 1
jno 0x140020a73
nop
call sym.raiseOverflow
jmp 0x140020c44
movabs r8, 0x7fffffffffffffff
xor edx, edx
mov rcx, r9
call sym.raiseRangeErrorI
movdqa xmm0, xmmword [rsp + 0x30]
mov rax, r12
movups xmmword [r12], xmm0
add rsp, 0x48
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
imul rcx, r8, 4
jo 0x140020c20
movabs rdi, 0x5555555555555556
mov rax, rcx
sar rcx, 0x3f
imul rdi
sub rdx, rcx
add rdx, 6
mov r9, rdx
js 0x140020c30
lea r14, [rsp + 0x30]
mov rcx, r14
call sym.setLengthStrV2
mov rax, rbp
imul rdi
mov rax, rbp
sar rax, 0x3f
mov rdi, rdx
sub rdi, rax
lea rax, [rdi + rdi*2]
mov rdi, rbp
sub rdi, rax
mov rax, rbp
sub rax, rdi
mov qword [rsp + 0x28], rdi
seto r15b
mov qword [rsp + 0x20], rax
movzx r15d, r15b
jo 0x140020c20
xor ebx, ebx
lea r13, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__
cmp qword [rsp + 0x20], r15
je 0x140021066
cmp rbp, r15
jle 0x140020ed8
movzx eax, byte [rsi + r15]
mov rcx, r15
shl eax, 0x10
mov r9d, eax
add rcx, 1
js 0x140020c20
cmp rcx, r15
jb 0x140020c20
test rcx, rcx
js 0x140020eb0
cmp rcx, rbp
jge 0x140020eb0
movzx eax, byte [rsi + rcx]
lea rcx, [r15 + 2]
shl eax, 8
cmp rcx, rbp
jge 0x140020eb0
movzx edx, byte [rsi + r15 + 2]
add r15, 3
or eax, edx
mov rdx, qword [rsp + 0x30]
or eax, r9d
mov edi, eax
test rbx, rbx
js 0x140020ec0
cmp rdx, rbx
jle 0x140020ec0
mov rdx, qword [rsp + 0x38]
test rdx, rdx
je 0x140020d7f
test byte [rdx + 7], 0x40
je 0x140020d7f
mov rcx, r14
call sym.nimPrepareStrMutationImpl__system_u2387
mov rdx, qword [rsp + 0x38]
mov ecx, edi
shr ecx, 0x12
movzx ecx, byte [r13 + rcx]
mov byte [rdx + rbx + 8], cl
add rbx, 1
mov rcx, rbx
jo 0x140020c20
mov rdx, qword [rsp + 0x30]
test rbx, rbx
js 0x140020e90
cmp rdx, rbx
jle 0x140020e9a
mov rdx, qword [rsp + 0x38]
test rdx, rdx
je 0x140020dcf
test byte [rdx + 7], 0x40
je 0x140020dcf
mov rcx, r14
call sym.nimPrepareStrMutationImpl__system_u2387
mov rdx, qword [rsp + 0x38]
mov ecx, edi
shr ecx, 0xc
and ecx, 0x3f
movzx ecx, byte [r13 + rcx]
mov byte [rdx + rbx + 8], cl
add rbx, 1
mov rcx, rbx
jo 0x140020c20
mov rdx, qword [rsp + 0x30]
test rbx, rbx
js 0x140020e90
cmp rbx, rdx
jge 0x140020e9a
mov rdx, qword [rsp + 0x38]
test rdx, rdx
je 0x140020e22
test byte [rdx + 7], 0x40
je 0x140020e22
mov rcx, r14
call sym.nimPrepareStrMutationImpl__system_u2387
mov rdx, qword [rsp + 0x38]
mov ecx, edi
shr ecx, 6
and ecx, 0x3f
movzx ecx, byte [r13 + rcx]
mov byte [rdx + rbx + 8], cl
add rbx, 1
mov rcx, rbx
jo 0x140020c20
mov rdx, qword [rsp + 0x30]
test rbx, rbx
js 0x140020e90
cmp rdx, rbx
jle 0x140020e9a
mov rdx, qword [rsp + 0x38]
test rdx, rdx
je 0x140020e6d
test byte [rdx + 7], 0x40
je 0x140020e6d
mov rcx, r14
call sym.nimPrepareStrMutationImpl__system_u2387
mov rdx, qword [rsp + 0x38]
mov eax, edi
and eax, 0x3f
movzx eax, byte [r13 + rax]
mov byte [rdx + rbx + 8], al
add rbx, 1
jno 0x140020cdf
jmp 0x140020c20
movabs rcx, 0x8000000000000000
sub rdx, 1
call sym.raiseIndexError2
jmp 0x140020c44
lea rdx, [rbp - 1]
call sym.raiseIndexError2
jmp 0x140020c44
sub rdx, 1
mov rcx, rbx
call sym.raiseIndexError2
jmp 0x140020c44
lea rdx, [rbp - 1]
mov rcx, r15
call sym.raiseIndexError2
jmp 0x140020c44
cmp qword [rsp + 0x28], 1
je 0x14002119c
cmp qword [rsp + 0x28], 2
jne 0x14002104d
cmp rbp, qword [rsp + 0x20]
jle 0x1400213d0
mov rdi, qword [rsp + 0x20]
mov rcx, rdi
movzx eax, byte [rsi + rdi]
add rcx, 1
js 0x140020c20
cmp rcx, rdi
jb 0x140020c20
test rcx, rcx
js 0x140020eb0
cmp rcx, rbp
jge 0x140020eb0
movzx edx, byte [rsi + rdi + 1]
mov rcx, qword [rsp + 0x30]
test rbx, rbx
js 0x1400213fc
cmp rcx, rbx
jle 0x1400213fc
movzx esi, dl
shl eax, 0x10
mov rcx, r14
lea rdi, [0x1400472a0]
shl esi, 8
or esi, eax
call sym.nimPrepareStrMutationV2
mov eax, esi
shr eax, 0x12
movzx edx, byte [rdi + rax]
mov rax, qword [rsp + 0x38]
mov byte [rax + rbx + 8], dl
add rbx, 1
mov r13, rbx
jo 0x140020c20
mov rax, qword [rsp + 0x30]
test rbx, rbx
js 0x14002118b
cmp rax, rbx
jle 0x14002118b
mov rcx, r14
call sym.nimPrepareStrMutationV2
mov eax, esi
shr eax, 0xc
and eax, 0x3f
add r13, 1
movzx edx, byte [rdi + rax]
mov rax, qword [rsp + 0x38]
mov byte [rax + rbx + 8], dl
jo 0x140020c20
mov rax, qword [rsp + 0x30]
test r13, r13
js 0x14002118b
cmp r13, rax
jge 0x14002118b
mov rcx, r14
call sym.nimPrepareStrMutationV2
mov eax, esi
shr eax, 6
and eax, 0x3c
movzx edx, byte [rdi + rax]
mov rax, qword [rsp + 0x38]
mov byte [rax + r13 + 8], dl
add r13, 1
jo 0x140020c20
mov rax, qword [rsp + 0x30]
test r13, r13
js 0x14002118b
cmp rax, r13
jle 0x14002118b
mov rcx, r14
mov rbx, r13
call sym.nimPrepareStrMutationV2
mov rax, qword [rsp + 0x38]
add rbx, 1
mov byte [rax + r13 + 8], 0x3d
jo 0x140020c20
test rbx, rbx
js 0x1400213e3
mov rdx, rbx
mov rcx, r14
call sym.setLengthStrV2
jmp 0x140020c44
cmp qword [rsp + 0x28], 1
je 0x1400212d1
cmp qword [rsp + 0x28], 2
jne 0x14002104d
cmp rbp, qword [rsp + 0x20]
jle 0x1400213d0
mov rdi, qword [rsp + 0x20]
mov rcx, rdi
movzx eax, byte [rsi + rdi]
add rcx, 1
js 0x140020c20
cmp rcx, rdi
jb 0x140020c20
test rcx, rcx
js 0x140020eb0
cmp rbp, rcx
jle 0x140020eb0
movzx esi, byte [rsi + rdi + 1]
mov rdx, qword [rsp + 0x30]
test rbx, rbx
js 0x140020ec0
cmp rbx, rdx
jge 0x140020ec0
shl eax, 0x10
shl esi, 8
mov rcx, r14
lea rbp, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__
or esi, eax
call sym.nimPrepareStrMutationV2
mov eax, esi
shr eax, 0x12
movzx edx, byte [rbp + rax]
mov rax, qword [rsp + 0x38]
mov byte [rax + rbx + 8], dl
add rbx, 1
mov r13, rbx
jo 0x140020c20
mov rax, qword [rsp + 0x30]
test rbx, rbx
js 0x14002118b
cmp rbx, rax
jge 0x14002118b
mov rcx, r14
call sym.nimPrepareStrMutationV2
mov eax, esi
shr eax, 0xc
and eax, 0x3f
add r13, 1
movzx edx, byte [rbp + rax]
mov rax, qword [rsp + 0x38]
mov byte [rax + rbx + 8], dl
jo 0x140020c20
mov rax, qword [rsp + 0x30]
test r13, r13
js 0x14002118b
cmp r13, rax
jge 0x14002118b
mov rcx, r14
call sym.nimPrepareStrMutationV2
mov eax, esi
shr eax, 6
and eax, 0x3c
movzx edx, byte [rbp + rax]
mov rax, qword [rsp + 0x38]
mov byte [rax + r13 + 8], dl
add r13, 1
jo 0x140020c20
mov rax, qword [rsp + 0x30]
test r13, r13
js 0x14002118b
cmp r13, rax
jl 0x14002102d
lea rdx, [rax - 1]
mov rcx, r13
call sym.raiseIndexError2
jmp 0x140020c44
cmp rbp, qword [rsp + 0x20]
jle 0x1400213d0
mov rdi, qword [rsp + 0x20]
mov rax, rdi
movzx esi, byte [rsi + rdi]
add rax, 1
js 0x140020c20
cmp rax, rdi
jb 0x140020c20
mov rax, qword [rsp + 0x30]
test rbx, rbx
js 0x1400212c0
cmp rax, rbx
jle 0x1400212c0
mov rdx, qword [rsp + 0x38]
test rdx, rdx
je 0x1400211fa
test byte [rdx + 7], 0x40
je 0x1400211fa
mov rcx, r14
call sym.nimPrepareStrMutationImpl__system_u2387
mov rdx, qword [rsp + 0x38]
mov ebp, esi
shr esi, 2
lea rdi, [0x1400472a0]
mov eax, esi
shl ebp, 0x10
movzx eax, byte [rdi + rax]
mov byte [rdx + rbx + 8], al
add rbx, 1
jo 0x140020c20
mov rax, qword [rsp + 0x30]
test rbx, rbx
js 0x1400212c0
cmp rbx, rax
jge 0x1400212c0
mov rcx, r14
call sym.nimPrepareStrMutationV2
mov eax, ebp
shr eax, 0xc
and eax, 0x30
movzx edx, byte [rdi + rax]
mov rax, qword [rsp + 0x38]
mov byte [rax + rbx + 8], dl
add rbx, 1
jo 0x140020c20
mov rax, qword [rsp + 0x30]
test rbx, rbx
js 0x1400212c0
cmp rax, rbx
jle 0x1400212c0
mov rcx, r14
call sym.nimPrepareStrMutationV2
mov rax, qword [rsp + 0x38]
mov byte [rax + rbx + 8], 0x3d
add rbx, 1
jo 0x140020c20
mov rax, qword [rsp + 0x30]
test rbx, rbx
js 0x1400212c0
cmp rbx, rax
jge 0x1400212c0
mov rcx, r14
call sym.nimPrepareStrMutationV2
mov rax, qword [rsp + 0x38]
mov byte [rax + rbx + 8], 0x3d
add rbx, 1
jno 0x14002104d
jmp 0x140020c20
lea rdx, [rax - 1]
mov rcx, rbx
call sym.raiseIndexError2
jmp 0x140020c44
cmp rbp, qword [rsp + 0x20]
jle 0x1400213d0
mov rdi, qword [rsp + 0x20]
mov rax, rdi
movzx esi, byte [rsi + rdi]
add rax, 1
js 0x140020c20
cmp rax, rdi
jb 0x140020c20
mov rax, qword [rsp + 0x30]
test rbx, rbx
js 0x1400212c0
cmp rbx, rax
jge 0x1400212c0
mov rdx, qword [rsp + 0x38]
test rdx, rdx
je 0x140021327
test byte [rdx + 7], 0x40
je 0x140021327
mov rcx, r14
call sym.nimPrepareStrMutationImpl__system_u2387
mov rdx, qword [rsp + 0x38]
mov edi, esi
shr esi, 2
lea rbp, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__
mov eax, esi
shl edi, 0x10
movzx eax, byte [rbp + rax]
mov byte [rdx + rbx + 8], al
add rbx, 1
mov r13, rbx
jo 0x140020c20
mov rax, qword [rsp + 0x30]
test rbx, rbx
js 0x14002118b
cmp rbx, rax
jge 0x14002118b
mov rcx, r14
call sym.nimPrepareStrMutationV2
mov eax, edi
shr eax, 0xc
and eax, 0x30
add r13, 1
movzx edx, byte [rbp + rax]
mov rax, qword [rsp + 0x38]
mov byte [rax + rbx + 8], dl
jo 0x140020c20
mov rax, qword [rsp + 0x30]
test r13, r13
js 0x14002118b
cmp r13, rax
jge 0x14002118b
mov rcx, r14
call sym.nimPrepareStrMutationV2
mov rax, qword [rsp + 0x38]
mov byte [rax + r13 + 8], 0x3d
add r13, 1
jno 0x140021178
jmp 0x140020c20
mov rcx, qword [rsp + 0x20]
lea rdx, [rbp - 1]
call sym.raiseIndexError2
jmp 0x140020c44
movabs r8, 0x7fffffffffffffff
xor edx, edx
mov rcx, rbx
call sym.raiseRangeErrorI
jmp 0x140020c44
lea rdx, [rcx - 1]
mov rcx, rbx
call sym.raiseIndexError2
jmp 0x140020c44