Function at 0x140087060
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 0x1400872e8
add rax, r8
jo 0x1400872c0
add rax, 6
jo 0x1400872c0
test rax, rax
js 0x140087500
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 0x1400872c0
xor ebx, ebx
lea rbp, [0x1401a36c0]
cmp qword [rsp + 0x20], r15
je 0x1400875a0
cmp rsi, r15
jle 0x140087588
movzx eax, byte [rdi + r15]
mov rcx, r15
shl eax, 0x10
mov r9d, eax
add rcx, 1
js 0x1400872c0
cmp rcx, r15
jb 0x1400872c0
test rcx, rcx
js 0x140087540
cmp rcx, rsi
jge 0x140087540
movzx edx, byte [rdi + rcx]
lea rcx, [r15 + 2]
shl edx, 8
cmp rsi, rcx
jle 0x140087540
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 0x140087570
cmp rdx, rbx
jle 0x140087570
mov rdx, qword [rsp + 0x38]
test rdx, rdx
je 0x1400871b2
test byte [rdx + 7], 0x40
je 0x1400871b2
mov rcx, r14
call sym.nimPrepareStrMutationImpl__system_u2380
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 0x1400872c0
mov rdx, qword [rsp + 0x30]
test rbx, rbx
js 0x140087520
cmp rdx, rbx
jle 0x14008752a
mov rdx, qword [rsp + 0x38]
test rdx, rdx
je 0x140087202
test byte [rdx + 7], 0x40
je 0x140087202
mov rcx, r14
call sym.nimPrepareStrMutationImpl__system_u2380
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 0x1400872c0
mov rdx, qword [rsp + 0x30]
test rbx, rbx
js 0x140087520
cmp rbx, rdx
jge 0x14008752a
mov rdx, qword [rsp + 0x38]
test rdx, rdx
je 0x140087255
test byte [rdx + 7], 0x40
je 0x140087255
mov rcx, r14
call sym.nimPrepareStrMutationImpl__system_u2380
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 0x1400872c0
mov rdx, qword [rsp + 0x30]
test rbx, rbx
js 0x140087520
cmp rbx, rdx
jge 0x14008752a
mov rdx, qword [rsp + 0x38]
test rdx, rdx
je 0x1400872a4
test byte [rdx + 7], 0x40
je 0x1400872a4
mov rcx, r14
call sym.nimPrepareStrMutationImpl__system_u2380
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 0x140087111
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 0x1400872c0
add rax, 6
jo 0x1400872c0
test rax, rax
js 0x140087500
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 0x1400872c0
xor ebx, ebx
lea rbp, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__
cmp qword [rsp + 0x20], r15
je 0x140087731
cmp rsi, r15
jle 0x140087588
movzx eax, byte [rdi + r15]
mov rcx, r15
shl eax, 0x10
mov r8d, eax
add rcx, 1
js 0x1400872c0
cmp rcx, r15
jb 0x1400872c0
test rcx, rcx
js 0x140087540
cmp rcx, rsi
jge 0x140087540
movzx eax, byte [rdi + rcx]
lea rcx, [r15 + 2]
shl eax, 8
cmp rcx, rsi
jge 0x140087540
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 0x140087720
cmp rbx, rcx
jge 0x140087720
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x1400873da
test byte [rcx + 7], 0x40
je 0x1400873da
mov rcx, r14
call sym.nimPrepareStrMutationImpl__system_u2380
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 0x1400872c0
mov rcx, qword [rsp + 0x30]
test rbx, rbx
js 0x140087550
cmp rbx, rcx
jge 0x14008755a
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x14008742d
test byte [rcx + 7], 0x40
je 0x14008742d
mov rcx, r14
call sym.nimPrepareStrMutationImpl__system_u2380
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 0x1400872c0
mov rcx, qword [rsp + 0x30]
test rbx, rbx
js 0x140087550
cmp rbx, rcx
jge 0x14008755a
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x140087484
test byte [rcx + 7], 0x40
je 0x140087484
mov rcx, r14
call sym.nimPrepareStrMutationImpl__system_u2380
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 0x1400872c0
mov rcx, qword [rsp + 0x30]
test rbx, rbx
js 0x140087550
cmp rbx, rcx
jge 0x14008755a
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x1400874db
test byte [rcx + 7], 0x40
je 0x1400874db
mov rcx, r14
call sym.nimPrepareStrMutationImpl__system_u2380
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 0x140087339
jmp 0x1400872c0
movabs r8, 0x7fffffffffffffff
xor edx, edx
mov rcx, rax
call sym.raiseRangeErrorI
jmp 0x1400872c5
movabs rcx, 0x8000000000000000
sub rdx, 1
call sym.raiseIndexError2
jmp 0x1400872c5
lea rdx, [rsi - 1]
call sym.raiseIndexError2
jmp 0x1400872c5
movabs r8, 0x8000000000000000
lea rdx, [rcx - 1]
mov rcx, r8
call sym.raiseIndexError2
jmp 0x1400872c5
sub rdx, 1
mov rcx, rbx
call sym.raiseIndexError2
jmp 0x1400872c5
lea rdx, [rsi - 1]
mov rcx, r15
call sym.raiseIndexError2
jmp 0x1400872c5
cmp qword [rsp + 0x28], 1
je 0x140087860
cmp qword [rsp + 0x28], 2
jne 0x1400876fd
cmp rsi, qword [rsp + 0x20]
jle 0x140087a80
mov rdx, qword [rsp + 0x20]
mov rcx, rdx
movzx eax, byte [rdi + rdx]
add rcx, 1
js 0x1400872c0
cmp rcx, rdx
jb 0x1400872c0
test rcx, rcx
js 0x140087540
cmp rcx, rsi
jge 0x140087540
movzx edx, byte [rdi + rdx + 1]
mov rcx, qword [rsp + 0x30]
test rbx, rbx
js 0x140087720
cmp rcx, rbx
jle 0x140087720
movzx esi, dl
shl eax, 0x10
mov rcx, r14
lea rdi, [0x1401a36c0]
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 0x1400872c0
mov rax, qword [rsp + 0x30]
test rbx, rbx
js 0x140087aac
cmp rbx, rax
jge 0x140087aac
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 0x1400872c0
mov rax, qword [rsp + 0x30]
test r13, r13
js 0x140087aac
cmp rax, r13
jle 0x140087aac
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 0x1400872c0
mov rax, qword [rsp + 0x30]
test r13, r13
js 0x140087aac
cmp r13, rax
jge 0x140087aac
mov rcx, r14
mov rbx, r13
call sym.nimPrepareStrMutationV2
mov rax, qword [rsp + 0x38]
add rbx, 1
mov byte [rax + r13 + 8], 0x3d
jo 0x1400872c0
test rbx, rbx
js 0x140087a93
mov rdx, rbx
mov rcx, r14
call sym.setLengthStrV2
jmp 0x1400872c5
lea rdx, [rcx - 1]
mov rcx, rbx
call sym.raiseIndexError2
jmp 0x1400872c5
cmp qword [rsp + 0x28], 1
je 0x140087991
cmp qword [rsp + 0x28], 2
jne 0x1400876fd
cmp rsi, qword [rsp + 0x20]
jle 0x140087a80
mov rdx, qword [rsp + 0x20]
mov rcx, rdx
movzx eax, byte [rdi + rdx]
add rcx, 1
js 0x1400872c0
cmp rcx, rdx
jb 0x1400872c0
test rcx, rcx
js 0x140087540
cmp rsi, rcx
jle 0x140087540
movzx ecx, byte [rdi + rdx + 1]
mov rdx, qword [rsp + 0x30]
test rbx, rbx
js 0x140087570
cmp rbx, rdx
jge 0x140087570
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 0x1400872c0
mov rax, qword [rsp + 0x30]
test rbx, rbx
js 0x140087aac
cmp rbx, rax
jge 0x140087aac
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 0x1400872c0
mov rax, qword [rsp + 0x30]
test r13, r13
js 0x140087aac
cmp r13, rax
jge 0x140087aac
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 0x1400876c6
jmp 0x1400872c0
cmp rsi, qword [rsp + 0x20]
jle 0x140087a80
mov rax, qword [rsp + 0x20]
movzx esi, byte [rdi + rax]
mov rdi, rax
add rax, 1
js 0x1400872c0
cmp rax, rdi
jb 0x1400872c0
mov rax, qword [rsp + 0x30]
test rbx, rbx
js 0x140087980
cmp rax, rbx
jle 0x140087980
mov rdx, qword [rsp + 0x38]
test rdx, rdx
je 0x1400878be
test byte [rdx + 7], 0x40
je 0x1400878be
mov rcx, r14
call sym.nimPrepareStrMutationImpl__system_u2380
mov rdx, qword [rsp + 0x38]
mov ebp, esi
shr esi, 2
lea rdi, [0x1401a36c0]
mov eax, esi
shl ebp, 0x10
movzx eax, byte [rdi + rax]
mov byte [rdx + rbx + 8], al
add rbx, 1
jo 0x1400872c0
mov rax, qword [rsp + 0x30]
test rbx, rbx
js 0x140087980
cmp rbx, rax
jge 0x140087980
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 0x1400872c0
mov rax, qword [rsp + 0x30]
test rbx, rbx
js 0x140087980
cmp rax, rbx
jle 0x140087980
mov rcx, r14
call sym.nimPrepareStrMutationV2
mov rax, qword [rsp + 0x38]
mov byte [rax + rbx + 8], 0x3d
add rbx, 1
jo 0x1400872c0
mov rax, qword [rsp + 0x30]
test rbx, rbx
js 0x140087980
cmp rbx, rax
jge 0x140087980
mov rcx, r14
call sym.nimPrepareStrMutationV2
mov rax, qword [rsp + 0x38]
mov byte [rax + rbx + 8], 0x3d
add rbx, 1
jno 0x1400876fd
jmp 0x1400872c0
lea rdx, [rax - 1]
mov rcx, rbx
call sym.raiseIndexError2
jmp 0x1400872c5
cmp rsi, qword [rsp + 0x20]
jle 0x140087a80
mov rax, qword [rsp + 0x20]
movzx esi, byte [rdi + rax]
mov rdi, rax
add rax, 1
js 0x1400872c0
cmp rax, rdi
jb 0x1400872c0
mov rax, qword [rsp + 0x30]
test rbx, rbx
js 0x140087980
cmp rbx, rax
jge 0x140087980
mov rdx, qword [rsp + 0x38]
test rdx, rdx
je 0x1400879e7
test byte [rdx + 7], 0x40
je 0x1400879e7
mov rcx, r14
call sym.nimPrepareStrMutationImpl__system_u2380
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 0x1400872c0
mov rax, qword [rsp + 0x30]
test rbx, rbx
js 0x140087aac
cmp rbx, rax
jge 0x140087aac
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 0x1400872c0
mov rax, qword [rsp + 0x30]
test r13, r13
js 0x140087aac
cmp r13, rax
jge 0x140087aac
mov rcx, r14
call sym.nimPrepareStrMutationV2
mov rax, qword [rsp + 0x38]
mov byte [rax + r13 + 8], 0x3d
add r13, 1
jno 0x1400876c6
jmp 0x1400872c0
mov rcx, qword [rsp + 0x20]
lea rdx, [rsi - 1]
call sym.raiseIndexError2
jmp 0x1400872c5
movabs r8, 0x7fffffffffffffff
xor edx, edx
mov rcx, rbx
call sym.raiseRangeErrorI
jmp 0x1400872c5
lea rdx, [rax - 1]
mov rcx, r13
call sym.raiseIndexError2
jmp 0x1400872c5