Function at 0x140027bc0
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
lea rdi, [0x140059dc0]
lea rax, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_scheme
test r8b, r8b
mov r12, rcx
mov rbp, rdx
cmovne rdi, rax
imul rbx, rdx, 4
jo 0x140028202
movabs rdx, 0x5555555555555556
mov rax, rbx
sar rbx, 0x3f
imul rdx
sub rdx, rbx
add rdx, 6
mov r13, rdx
js 0x140027f90
xor ecx, ecx
mov rdx, r13
call sym.setLengthStr
mov rcx, rbp
movabs rdx, 0x5555555555555556
mov r14, rax
mov rax, rbp
imul rdx
mov rax, rbp
sar rax, 0x3f
sub rdx, rax
lea rax, [rdx + rdx*2]
sub rcx, rax
mov rax, rbp
sub rax, rcx
mov qword [rsp + 0x38], rcx
mov qword [rsp + 0x20], rax
jo 0x14002820c
cmp qword [rsp + 0x20], 0
je 0x140028160
test r14, r14
lea rax, [rbp - 1]
setne byte [rsp + 0x33]
xor r15d, r15d
xor ebx, ebx
mov qword [rsp + 0x28], rax
jmp 0x140027c93
cmp qword [rsp + 0x20], r13
je 0x140027ded
test rbx, rbx
js 0x140027e50
cmp rbx, rbp
jge 0x140027e50
movzx esi, byte [r12 + rbx]
mov eax, esi
shl eax, 0x10
add rbx, 1
mov r13, rbx
jo 0x1400281f0
test r13, r13
js 0x140027e90
cmp r13, rbp
jge 0x140027e90
movzx esi, byte [r12 + r13]
shl esi, 8
or esi, eax
add r13, 1
jo 0x1400281e6
test r13, r13
js 0x140027e78
cmp r13, rbp
jge 0x140027e78
movzx eax, byte [r12 + r13]
or esi, eax
add r13, 1
mov rbx, r13
jo 0x140027e68
test r15, r15
js 0x140027e30
cmp byte [rsp + 0x33], 0
je 0x140027e30
mov rdx, qword [r14]
cmp rdx, r15
jle 0x140027e3f
mov eax, esi
shr eax, 0x12
movzx eax, byte [rdi + rax]
mov byte [r14 + r15 + 0x10], al
add r15, 1
jo 0x1400281dc
mov rdx, qword [r14]
test r15, r15
js 0x140027d4d
cmp r15, rdx
jl 0x140027d59
sub rdx, 1
mov rcx, r15
call sym.raiseIndexError2
mov eax, esi
shr eax, 0xc
and eax, 0x3f
movzx eax, byte [rdi + rax]
mov byte [r14 + r15 + 0x10], al
add r15, 1
jo 0x1400281d2
mov rdx, qword [r14]
test r15, r15
js 0x140027d81
cmp r15, rdx
jl 0x140027d8d
sub rdx, 1
mov rcx, r15
call sym.raiseIndexError2
mov eax, esi
shr eax, 6
and eax, 0x3f
movzx eax, byte [rdi + rax]
mov byte [r14 + r15 + 0x10], al
add r15, 1
jo 0x1400281c8
mov rdx, qword [r14]
test r15, r15
js 0x140027db5
cmp r15, rdx
jl 0x140027dc1
sub rdx, 1
mov rcx, r15
call sym.raiseIndexError2
and esi, 0x3f
mov r9, r15
movzx eax, byte [rdi + rsi]
add r9, 1
mov byte [r14 + r15 + 0x10], al
mov r15, r9
jno 0x140027c88
call sym.raiseOverflow
cmp qword [rsp + 0x20], r13
jne 0x140027c93
cmp qword [rsp + 0x38], 1
je 0x140027eb0
cmp qword [rsp + 0x38], 2
je 0x140027fd0
test r15, r15
js 0x140027fb0
mov rdx, r15
mov rcx, r14
add rsp, 0x48
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
jmp sym.setLengthStr
mov rdx, 0xffffffffffffffff
test r14, r14
je 0x140027e43
mov rdx, qword [r14]
sub rdx, 1
mov rcx, r15
call sym.raiseIndexError2
jmp 0x140027d28
mov rdx, qword [rsp + 0x28]
mov rcx, rbx
call sym.raiseIndexError2
jmp 0x140027ca5
call sym.raiseOverflow
jmp 0x140027d08
mov rdx, qword [rsp + 0x28]
mov rcx, r13
call sym.raiseIndexError2
jmp 0x140027cf4
mov rdx, qword [rsp + 0x28]
mov rcx, r13
mov dword [rsp + 0x34], eax
call sym.raiseIndexError2
mov eax, dword [rsp + 0x34]
jmp 0x140027cce
mov rax, qword [rsp + 0x20]
test rax, rax
js 0x140028148
cmp rax, rbp
jge 0x140028148
movzx esi, byte [r12 + rbx]
shl esi, 0x10
add rbx, 1
jo 0x140028220
test r15, r15
js 0x1400280f8
test r14, r14
je 0x1400280f8
mov rdx, qword [r14]
cmp rdx, r15
jle 0x140028107
mov eax, esi
mov rbx, r15
shr eax, 0x12
add rbx, 1
movzx eax, byte [rdi + rax]
mov byte [r14 + r15 + 0x10], al
jo 0x140028234
mov rdx, qword [r14]
test rbx, rbx
js 0x140027f1f
cmp rbx, rdx
jl 0x140027f2b
sub rdx, 1
mov rcx, rbx
call sym.raiseIndexError2
shr esi, 0xc
and esi, 0x30
movzx eax, byte [rdi + rsi]
mov byte [r14 + rbx + 0x10], al
add rbx, 1
jo 0x14002822a
mov rdx, qword [r14]
test rbx, rbx
js 0x140027f51
cmp rbx, rdx
jl 0x140027f5d
sub rdx, 1
mov rcx, rbx
call sym.raiseIndexError2
mov byte [r14 + rbx + 0x10], 0x3d
add rbx, 1
jo 0x140028216
mov rdx, qword [r14]
test rbx, rbx
js 0x140027f7e
cmp rbx, rdx
jl 0x1400280d8
sub rdx, 1
mov rcx, rbx
call sym.raiseIndexError2
jmp 0x1400280d8
movabs r8, 0x7fffffffffffffff
xor edx, edx
mov rcx, r13
call sym.raiseRangeErrorI
jmp 0x140027c19
movabs r8, 0x7fffffffffffffff
xor edx, edx
mov rcx, r15
call sym.raiseRangeErrorI
jmp 0x140027e0e
mov rax, qword [rsp + 0x20]
test rax, rax
js 0x1400281a2
cmp rax, rbp
jge 0x1400281a2
movzx esi, byte [r12 + rbx]
shl esi, 0x10
add rbx, 1
jno 0x140027ffa
call sym.raiseOverflow
test rbx, rbx
js 0x14002818f
cmp rbp, rbx
jle 0x14002818f
movzx eax, byte [r12 + rbx]
shl eax, 8
or esi, eax
add rbx, 1
jo 0x14002825c
test r14, r14
je 0x140028120
test r15, r15
js 0x140028120
mov rdx, qword [r14]
cmp rdx, r15
jle 0x14002812f
mov eax, esi
mov rbx, r15
shr eax, 0x12
add rbx, 1
movzx eax, byte [rdi + rax]
mov byte [r14 + r15 + 0x10], al
jo 0x140028252
mov rax, qword [r14]
test rbx, rbx
js 0x140028066
cmp rbx, rax
jl 0x140028072
lea rdx, [rax - 1]
mov rcx, rbx
call sym.raiseIndexError2
mov eax, esi
shr eax, 0xc
and eax, 0x3f
movzx eax, byte [rdi + rax]
mov byte [r14 + rbx + 0x10], al
add rbx, 1
jo 0x140028248
mov rax, qword [r14]
test rbx, rbx
js 0x14002809a
cmp rbx, rax
jl 0x1400280a6
lea rdx, [rax - 1]
mov rcx, rbx
call sym.raiseIndexError2
shr esi, 6
and esi, 0x3c
movzx eax, byte [rdi + rsi]
mov byte [r14 + rbx + 0x10], al
add rbx, 1
jo 0x14002823e
mov rax, qword [r14]
test rbx, rbx
js 0x1400280cc
cmp rbx, rax
jl 0x1400280d8
lea rdx, [rax - 1]
mov rcx, rbx
call sym.raiseIndexError2
mov byte [r14 + rbx + 0x10], 0x3d
add rbx, 1
mov r15, rbx
jno 0x140027e05
call sym.raiseOverflow
jmp 0x140027e05
mov rdx, 0xffffffffffffffff
test r14, r14
je 0x14002810b
mov rdx, qword [r14]
sub rdx, 1
mov rcx, r15
call sym.raiseIndexError2
jmp 0x140027ef7
mov rdx, 0xffffffffffffffff
test r14, r14
je 0x140028133
mov rdx, qword [r14]
sub rdx, 1
mov rcx, r15
call sym.raiseIndexError2
jmp 0x14002803e
xor r15d, r15d
xor ebx, ebx
nop dword [rax]
lea rdx, [rbp - 1]
mov rcx, rbx
call sym.raiseIndexError2
jmp 0x140027ec7
mov rax, qword [rsp + 0x38]
cmp rax, 1
je 0x1400281b3
xor r15d, r15d
cmp rax, 2
jne 0x140027e0e
test rbp, rbp
jle 0x1400281a0
movzx esi, byte [r12]
mov ebx, 1
shl esi, 0x10
jmp 0x140027ffa
lea rdx, [rbp - 1]
mov rcx, rbx
call sym.raiseIndexError2
jmp 0x14002800c
xor ebx, ebx
lea rdx, [rbp - 1]
mov rcx, rbx
call sym.raiseIndexError2
jmp 0x140027fe7
test rbp, rbp
jle 0x140028140
movzx esi, byte [r12]
xor r15d, r15d
shl esi, 0x10
jmp 0x140027ed9
call sym.raiseOverflow
jmp 0x140027da8
call sym.raiseOverflow
jmp 0x140027d74
call sym.raiseOverflow
jmp 0x140027d40
call sym.raiseOverflow
jmp 0x140027ce2
mov dword [rsp + 0x34], eax
call sym.raiseOverflow
mov eax, dword [rsp + 0x34]
jmp 0x140027cbc
call sym.raiseOverflow
jmp 0x140027bf5
call sym.raiseOverflow
jmp 0x140027c60
call sym.raiseOverflow
jmp 0x140027f6d
call sym.raiseOverflow
jmp 0x140027ed9
call sym.raiseOverflow
jmp 0x140027f44
call sym.raiseOverflow
jmp 0x140027f12
call sym.raiseOverflow
jmp 0x1400280bf
call sym.raiseOverflow
jmp 0x14002808d
call sym.raiseOverflow
jmp 0x140028059
call sym.raiseOverflow
jmp 0x140028020