Function at 0x1400219f0
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 rax, r8
mov rdi, rdx
mov r12, rcx
mov rsi, r8
movabs rdx, 0x5555555555555556
mov qword [rsp + 0x30], 0
mov qword [rsp + 0x38], 0
imul rdx
mov rax, r8
sar rax, 0x3f
mov rbx, rdx
sub rbx, rax
mov rax, rbx
test r9b, r9b
je 0x140021c78
add rax, r8
jo 0x140021c50
add rax, 6
jo 0x140021c50
test rax, rax
js 0x140021e90
lea r14, [rsp + 0x30]
mov rdx, rax
mov rcx, r14
call sym.setLengthStrV2
lea rax, [rbx + rbx*2]
mov rdx, rsi
sub rdx, rax
mov rax, rsi
sub rax, rdx
mov qword [rsp + 0x28], rdx
seto r15b
mov qword [rsp + 0x20], rax
movzx r15d, r15b
jo 0x140021c50
xor ebx, ebx
lea rbp, [0x1400482a0]
cmp qword [rsp + 0x20], r15
je 0x140021f30
cmp rsi, r15
jle 0x140021f18
movzx eax, byte [rdi + r15]
mov rcx, r15
shl eax, 0x10
mov r9d, eax
add rcx, 1
js 0x140021c50
cmp rcx, r15
jb 0x140021c50
test rcx, rcx
js 0x140021ed0
cmp rcx, rsi
jge 0x140021ed0
movzx edx, byte [rdi + rcx]
lea rcx, [r15 + 2]
shl edx, 8
cmp rsi, rcx
jle 0x140021ed0
movzx eax, byte [rdi + r15 + 2]
add r15, 3
or eax, edx
mov rdx, qword [rsp + 0x30]
or eax, r9d
mov r13d, eax
test rbx, rbx
js 0x140021f00
cmp rdx, rbx
jle 0x140021f00
mov rdx, qword [rsp + 0x38]
test rdx, rdx
je 0x140021b42
test byte [rdx + 7], 0x40
je 0x140021b42
mov rcx, r14
call sym.nimPrepareStrMutationImpl__system_u2386
mov rdx, qword [rsp + 0x38]
mov ecx, r13d
shr ecx, 0x12
movzx ecx, byte [rbp + rcx]
mov byte [rdx + rbx + 8], cl
add rbx, 1
mov rcx, rbx
jo 0x140021c50
mov rdx, qword [rsp + 0x30]
test rbx, rbx
js 0x140021eb0
cmp rdx, rbx
jle 0x140021eba
mov rdx, qword [rsp + 0x38]
test rdx, rdx
je 0x140021b92
test byte [rdx + 7], 0x40
je 0x140021b92
mov rcx, r14
call sym.nimPrepareStrMutationImpl__system_u2386
mov rdx, qword [rsp + 0x38]
mov ecx, r13d
shr ecx, 0xc
and ecx, 0x3f
movzx ecx, byte [rbp + rcx]
mov byte [rdx + rbx + 8], cl
add rbx, 1
mov rcx, rbx
jo 0x140021c50
mov rdx, qword [rsp + 0x30]
test rbx, rbx
js 0x140021eb0
cmp rbx, rdx
jge 0x140021eba
mov rdx, qword [rsp + 0x38]
test rdx, rdx
je 0x140021be5
test byte [rdx + 7], 0x40
je 0x140021be5
mov rcx, r14
call sym.nimPrepareStrMutationImpl__system_u2386
mov rdx, qword [rsp + 0x38]
mov ecx, r13d
shr ecx, 6
and ecx, 0x3f
movzx ecx, byte [rbp + rcx]
mov byte [rdx + rbx + 8], cl
add rbx, 1
mov rcx, rbx
jo 0x140021c50
mov rdx, qword [rsp + 0x30]
test rbx, rbx
js 0x140021eb0
cmp rbx, rdx
jge 0x140021eba
mov rdx, qword [rsp + 0x38]
test rdx, rdx
je 0x140021c34
test byte [rdx + 7], 0x40
je 0x140021c34
mov rcx, r14
call sym.nimPrepareStrMutationImpl__system_u2386
mov rdx, qword [rsp + 0x38]
mov eax, r13d
and eax, 0x3f
movzx eax, byte [rbp + rax]
mov byte [rdx + rbx + 8], al
add rbx, 1
jno 0x140021aa1
nop dword [rax]
call sym.raiseOverflow
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
add rax, r8
jo 0x140021c50
add rax, 6
jo 0x140021c50
test rax, rax
js 0x140021e90
lea r14, [rsp + 0x30]
mov rdx, rax
mov rcx, r14
call sym.setLengthStrV2
lea rax, [rbx + rbx*2]
mov rdx, rsi
sub rdx, rax
mov rax, rsi
sub rax, rdx
mov qword [rsp + 0x28], rdx
seto r15b
mov qword [rsp + 0x20], rax
movzx r15d, r15b
jo 0x140021c50
xor ebx, ebx
lea rbp, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__
cmp qword [rsp + 0x20], r15
je 0x1400220c1
cmp rsi, r15
jle 0x140021f18
movzx eax, byte [rdi + r15]
mov rcx, r15
shl eax, 0x10
mov r8d, eax
add rcx, 1
js 0x140021c50
cmp rcx, r15
jb 0x140021c50
test rcx, rcx
js 0x140021ed0
cmp rcx, rsi
jge 0x140021ed0
movzx eax, byte [rdi + rcx]
lea rcx, [r15 + 2]
shl eax, 8
cmp rcx, rsi
jge 0x140021ed0
movzx ecx, byte [rdi + r15 + 2]
add r15, 3
or eax, ecx
mov rcx, qword [rsp + 0x30]
or eax, r8d
mov r13d, eax
test rbx, rbx
js 0x1400220b0
cmp rbx, rcx
jge 0x1400220b0
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x140021d6a
test byte [rcx + 7], 0x40
je 0x140021d6a
mov rcx, r14
call sym.nimPrepareStrMutationImpl__system_u2386
mov rcx, qword [rsp + 0x38]
mov r8d, r13d
shr r8d, 0x12
movzx r8d, byte [rbp + r8]
mov byte [rcx + rbx + 8], r8b
add rbx, 1
mov r8, rbx
jo 0x140021c50
mov rcx, qword [rsp + 0x30]
test rbx, rbx
js 0x140021ee0
cmp rbx, rcx
jge 0x140021eea
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x140021dbd
test byte [rcx + 7], 0x40
je 0x140021dbd
mov rcx, r14
call sym.nimPrepareStrMutationImpl__system_u2386
mov rcx, qword [rsp + 0x38]
mov r8d, r13d
shr r8d, 0xc
and r8d, 0x3f
movzx r8d, byte [rbp + r8]
mov byte [rcx + rbx + 8], r8b
add rbx, 1
mov r8, rbx
jo 0x140021c50
mov rcx, qword [rsp + 0x30]
test rbx, rbx
js 0x140021ee0
cmp rbx, rcx
jge 0x140021eea
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x140021e14
test byte [rcx + 7], 0x40
je 0x140021e14
mov rcx, r14
call sym.nimPrepareStrMutationImpl__system_u2386
mov rcx, qword [rsp + 0x38]
mov r8d, r13d
shr r8d, 6
and r8d, 0x3f
movzx r8d, byte [rbp + r8]
mov byte [rcx + rbx + 8], r8b
add rbx, 1
mov r8, rbx
jo 0x140021c50
mov rcx, qword [rsp + 0x30]
test rbx, rbx
js 0x140021ee0
cmp rbx, rcx
jge 0x140021eea
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x140021e6b
test byte [rcx + 7], 0x40
je 0x140021e6b
mov rcx, r14
call sym.nimPrepareStrMutationImpl__system_u2386
mov rcx, qword [rsp + 0x38]
mov eax, r13d
and eax, 0x3f
movzx eax, byte [rbp + rax]
mov byte [rcx + rbx + 8], al
add rbx, 1
jno 0x140021cc9
jmp 0x140021c50
movabs r8, 0x7fffffffffffffff
xor edx, edx
mov rcx, rax
call sym.raiseRangeErrorI
jmp 0x140021c55
movabs rcx, 0x8000000000000000
sub rdx, 1
call sym.raiseIndexError2
jmp 0x140021c55
lea rdx, [rsi - 1]
call sym.raiseIndexError2
jmp 0x140021c55
movabs r8, 0x8000000000000000
lea rdx, [rcx - 1]
mov rcx, r8
call sym.raiseIndexError2
jmp 0x140021c55
sub rdx, 1
mov rcx, rbx
call sym.raiseIndexError2
jmp 0x140021c55
lea rdx, [rsi - 1]
mov rcx, r15
call sym.raiseIndexError2
jmp 0x140021c55
cmp qword [rsp + 0x28], 1
je 0x1400221f0
cmp qword [rsp + 0x28], 2
jne 0x14002208d
cmp rsi, qword [rsp + 0x20]
jle 0x140022410
mov rdx, qword [rsp + 0x20]
mov rcx, rdx
movzx eax, byte [rdi + rdx]
add rcx, 1
js 0x140021c50
cmp rcx, rdx
jb 0x140021c50
test rcx, rcx
js 0x140021ed0
cmp rcx, rsi
jge 0x140021ed0
movzx edx, byte [rdi + rdx + 1]
mov rcx, qword [rsp + 0x30]
test rbx, rbx
js 0x1400220b0
cmp rcx, rbx
jle 0x1400220b0
movzx esi, dl
shl eax, 0x10
mov rcx, r14
lea rdi, [0x1400482a0]
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 0x140021c50
mov rax, qword [rsp + 0x30]
test rbx, rbx
js 0x14002243c
cmp rbx, rax
jge 0x14002243c
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 0x140021c50
mov rax, qword [rsp + 0x30]
test r13, r13
js 0x14002243c
cmp rax, r13
jle 0x14002243c
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 0x140021c50
mov rax, qword [rsp + 0x30]
test r13, r13
js 0x14002243c
cmp r13, rax
jge 0x14002243c
mov rcx, r14
mov rbx, r13
call sym.nimPrepareStrMutationV2
mov rax, qword [rsp + 0x38]
add rbx, 1
mov byte [rax + r13 + 8], 0x3d
jo 0x140021c50
test rbx, rbx
js 0x140022423
mov rdx, rbx
mov rcx, r14
call sym.setLengthStrV2
jmp 0x140021c55
lea rdx, [rcx - 1]
mov rcx, rbx
call sym.raiseIndexError2
jmp 0x140021c55
cmp qword [rsp + 0x28], 1
je 0x140022321
cmp qword [rsp + 0x28], 2
jne 0x14002208d
cmp rsi, qword [rsp + 0x20]
jle 0x140022410
mov rdx, qword [rsp + 0x20]
mov rcx, rdx
movzx eax, byte [rdi + rdx]
add rcx, 1
js 0x140021c50
cmp rcx, rdx
jb 0x140021c50
test rcx, rcx
js 0x140021ed0
cmp rsi, rcx
jle 0x140021ed0
movzx ecx, byte [rdi + rdx + 1]
mov rdx, qword [rsp + 0x30]
test rbx, rbx
js 0x140021f00
cmp rbx, rdx
jge 0x140021f00
shl eax, 0x10
lea rbp, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__
mov edx, eax
movzx eax, cl
mov rcx, r14
shl eax, 8
or eax, edx
mov 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 0x140021c50
mov rax, qword [rsp + 0x30]
test rbx, rbx
js 0x14002243c
cmp rbx, rax
jge 0x14002243c
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 0x140021c50
mov rax, qword [rsp + 0x30]
test r13, r13
js 0x14002243c
cmp r13, rax
jge 0x14002243c
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
jno 0x140022056
jmp 0x140021c50
cmp rsi, qword [rsp + 0x20]
jle 0x140022410
mov rax, qword [rsp + 0x20]
movzx esi, byte [rdi + rax]
mov rdi, rax
add rax, 1
js 0x140021c50
cmp rax, rdi
jb 0x140021c50
mov rax, qword [rsp + 0x30]
test rbx, rbx
js 0x140022310
cmp rax, rbx
jle 0x140022310
mov rdx, qword [rsp + 0x38]
test rdx, rdx
je 0x14002224e
test byte [rdx + 7], 0x40
je 0x14002224e
mov rcx, r14
call sym.nimPrepareStrMutationImpl__system_u2386
mov rdx, qword [rsp + 0x38]
mov ebp, esi
shr esi, 2
lea rdi, [0x1400482a0]
mov eax, esi
shl ebp, 0x10
movzx eax, byte [rdi + rax]
mov byte [rdx + rbx + 8], al
add rbx, 1
jo 0x140021c50
mov rax, qword [rsp + 0x30]
test rbx, rbx
js 0x140022310
cmp rbx, rax
jge 0x140022310
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 0x140021c50
mov rax, qword [rsp + 0x30]
test rbx, rbx
js 0x140022310
cmp rax, rbx
jle 0x140022310
mov rcx, r14
call sym.nimPrepareStrMutationV2
mov rax, qword [rsp + 0x38]
mov byte [rax + rbx + 8], 0x3d
add rbx, 1
jo 0x140021c50
mov rax, qword [rsp + 0x30]
test rbx, rbx
js 0x140022310
cmp rbx, rax
jge 0x140022310
mov rcx, r14
call sym.nimPrepareStrMutationV2
mov rax, qword [rsp + 0x38]
mov byte [rax + rbx + 8], 0x3d
add rbx, 1
jno 0x14002208d
jmp 0x140021c50
lea rdx, [rax - 1]
mov rcx, rbx
call sym.raiseIndexError2
jmp 0x140021c55
cmp rsi, qword [rsp + 0x20]
jle 0x140022410
mov rax, qword [rsp + 0x20]
movzx esi, byte [rdi + rax]
mov rdi, rax
add rax, 1
js 0x140021c50
cmp rax, rdi
jb 0x140021c50
mov rax, qword [rsp + 0x30]
test rbx, rbx
js 0x140022310
cmp rbx, rax
jge 0x140022310
mov rdx, qword [rsp + 0x38]
test rdx, rdx
je 0x140022377
test byte [rdx + 7], 0x40
je 0x140022377
mov rcx, r14
call sym.nimPrepareStrMutationImpl__system_u2386
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 0x140021c50
mov rax, qword [rsp + 0x30]
test rbx, rbx
js 0x14002243c
cmp rbx, rax
jge 0x14002243c
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 0x140021c50
mov rax, qword [rsp + 0x30]
test r13, r13
js 0x14002243c
cmp r13, rax
jge 0x14002243c
mov rcx, r14
call sym.nimPrepareStrMutationV2
mov rax, qword [rsp + 0x38]
mov byte [rax + r13 + 8], 0x3d
add r13, 1
jno 0x140022056
jmp 0x140021c50
mov rcx, qword [rsp + 0x20]
lea rdx, [rsi - 1]
call sym.raiseIndexError2
jmp 0x140021c55
movabs r8, 0x7fffffffffffffff
xor edx, edx
mov rcx, rbx
call sym.raiseRangeErrorI
jmp 0x140021c55
lea rdx, [rax - 1]
mov rcx, r13
call sym.raiseIndexError2
jmp 0x140021c55