Function at 0x140021760
Capabilities:
Encode data using base64

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x38
mov rsi, rcx
test dl, dl
jne 0x140021990
test rcx, rcx
je 0x140021bb0
imul rbx, qword [rcx], 4
jo 0x140022116
movabs rdx, 0x5555555555555556
mov rax, rbx
sar rbx, 0x3f
imul rdx
sub rdx, rbx
lea r12, [rdx + 6]
test r12, r12
js 0x140021ef0
xor ecx, ecx
mov rdx, r12
call sym.setLengthStr
mov rcx, qword [rsi]
movabs rdx, 0x5555555555555556
mov r13, rax
mov rax, rcx
mov r15, rcx
imul rdx
mov rax, rcx
sar rax, 0x3f
sub rdx, rax
mov rax, rcx
lea rdx, [rdx + rdx*2]
sub rax, rdx
sub r15, rax
jo 0x140022120
test r15, r15
je 0x1400221a2
test r13, r13
lea rbp, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__scheme
setne byte [rsp + 0x2f]
xor r12d, r12d
xor ebx, ebx
jmp 0x140021974
cmp rcx, rbx
jle 0x14002197d
movzx edi, byte [rsi + rbx + 0x10]
shl edi, 0x10
add rbx, 1
jo 0x1400220bc
mov rdx, qword [rsi]
test rbx, rbx
js 0x140021840
cmp rbx, rdx
jl 0x14002184c
sub rdx, 1
mov rcx, rbx
call sym.raiseIndexError2
movzx r14d, byte [rsi + rbx + 0x10]
shl r14d, 8
or r14d, edi
add rbx, 1
jo 0x1400220c6
mov rdx, qword [rsi]
test rbx, rbx
js 0x140021870
cmp rbx, rdx
jl 0x14002187c
sub rdx, 1
mov rcx, rbx
call sym.raiseIndexError2
movzx edi, byte [rsi + rbx + 0x10]
or edi, r14d
add rbx, 1
mov r14, rbx
jo 0x140021dd0
test r12, r12
js 0x140021c08
cmp byte [rsp + 0x2f], 0
je 0x140021c08
mov rdx, qword [r13]
cmp rdx, r12
jle 0x140021c18
mov eax, edi
shr eax, 0x12
movzx eax, byte [rbp + rax]
mov byte [r13 + r12 + 0x10], al
add r12, 1
jo 0x1400220d0
mov rdx, qword [r13]
test r12, r12
js 0x1400218d9
cmp r12, rdx
jl 0x1400218e5
sub rdx, 1
mov rcx, r12
call sym.raiseIndexError2
mov eax, edi
shr eax, 0xc
and eax, 0x3f
movzx eax, byte [rbp + rax]
mov byte [r13 + r12 + 0x10], al
add r12, 1
jo 0x1400220da
mov rdx, qword [r13]
test r12, r12
js 0x14002190f
cmp r12, rdx
jl 0x14002191b
sub rdx, 1
mov rcx, r12
call sym.raiseIndexError2
mov eax, edi
shr eax, 6
and eax, 0x3f
movzx eax, byte [rbp + rax]
mov byte [r13 + r12 + 0x10], al
add r12, 1
jo 0x1400220e4
mov rdx, qword [r13]
test r12, r12
js 0x140021945
cmp r12, rdx
jl 0x140021951
sub rdx, 1
mov rcx, r12
call sym.raiseIndexError2
and edi, 0x3f
movzx eax, byte [rbp + rdi]
mov byte [r13 + r12 + 0x10], al
add r12, 1
jo 0x140021de0
cmp r15, r14
je 0x140021dee
mov rcx, qword [rsi]
test rbx, rbx
jns 0x140021818
lea rdx, [rcx - 1]
mov rcx, rbx
call sym.raiseIndexError2
jmp 0x140021821
test rcx, rcx
je 0x140021bb0
imul rbx, qword [rcx], 4
jo 0x14002218a
movabs rdx, 0x5555555555555556
mov rax, rbx
sar rbx, 0x3f
imul rdx
sub rdx, rbx
lea r12, [rdx + 6]
test r12, r12
js 0x140021f10
xor ecx, ecx
mov rdx, r12
call sym.setLengthStr
mov rcx, qword [rsi]
movabs rdx, 0x5555555555555556
mov r13, rax
mov rax, rcx
mov r15, rcx
imul rdx
mov rax, rcx
sar rax, 0x3f
sub rdx, rax
mov rax, rcx
lea rdx, [rdx + rdx*2]
sub rax, rdx
sub r15, rax
jo 0x140022137
test r15, r15
je 0x140022144
test r13, r13
lea rbp, [0x14003a700]
setne byte [rsp + 0x2f]
xor r12d, r12d
xor ebx, ebx
jmp 0x140021b8c
cmp rbx, rcx
jge 0x140021b95
movzx edi, byte [rsi + rbx + 0x10]
shl edi, 0x10
add rbx, 1
jo 0x1400220ee
mov rdx, qword [rsi]
test rbx, rbx
js 0x140021a58
cmp rbx, rdx
jl 0x140021a64
sub rdx, 1
mov rcx, rbx
call sym.raiseIndexError2
movzx r14d, byte [rsi + rbx + 0x10]
shl r14d, 8
or r14d, edi
add rbx, 1
jo 0x1400220f8
mov rdx, qword [rsi]
test rbx, rbx
js 0x140021a88
cmp rbx, rdx
jl 0x140021a94
sub rdx, 1
mov rcx, rbx
call sym.raiseIndexError2
movzx edi, byte [rsi + rbx + 0x10]
or edi, r14d
add rbx, 1
mov r14, rbx
jo 0x140021c30
test r12, r12
js 0x140021be0
cmp byte [rsp + 0x2f], 0
je 0x140021be0
mov rdx, qword [r13]
cmp rdx, r12
jle 0x140021bf0
mov eax, edi
shr eax, 0x12
movzx eax, byte [rbp + rax]
mov byte [r13 + r12 + 0x10], al
add r12, 1
jo 0x140022102
mov rdx, qword [r13]
test r12, r12
js 0x140021af1
cmp r12, rdx
jl 0x140021afd
sub rdx, 1
mov rcx, r12
call sym.raiseIndexError2
mov eax, edi
shr eax, 0xc
and eax, 0x3f
movzx eax, byte [rbp + rax]
mov byte [r13 + r12 + 0x10], al
add r12, 1
jo 0x14002210c
mov rdx, qword [r13]
test r12, r12
js 0x140021b27
cmp r12, rdx
jl 0x140021b33
sub rdx, 1
mov rcx, r12
call sym.raiseIndexError2
mov eax, edi
shr eax, 6
and eax, 0x3f
movzx eax, byte [rbp + rax]
mov byte [r13 + r12 + 0x10], al
add r12, 1
jo 0x1400220b2
mov rdx, qword [r13]
test r12, r12
js 0x140021b5d
cmp r12, rdx
jl 0x140021b69
sub rdx, 1
mov rcx, r12
call sym.raiseIndexError2
and edi, 0x3f
movzx eax, byte [rbp + rdi]
mov byte [r13 + r12 + 0x10], al
add r12, 1
jo 0x140021c40
cmp r15, r14
je 0x140021c4e
mov rcx, qword [rsi]
test rbx, rbx
jns 0x140021a30
lea rdx, [rcx - 1]
mov rcx, rbx
call sym.raiseIndexError2
jmp 0x140021a39
mov edx, 6
xor ecx, ecx
xor r12d, r12d
call sym.setLengthStr
mov r13, rax
mov rdx, r12
mov rcx, r13
add rsp, 0x38
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
jmp sym.setLengthStr
mov rdx, 0xffffffffffffffff
test r13, r13
je 0x140021bf4
mov rdx, qword [r13]
sub rdx, 1
mov rcx, r12
call sym.raiseIndexError2
jmp 0x140021aca
mov rdx, 0xffffffffffffffff
test r13, r13
je 0x140021c1c
mov rdx, qword [r13]
sub rdx, 1
mov rcx, r12
call sym.raiseIndexError2
jmp 0x1400218b2
call sym.raiseOverflow
jmp 0x140021aa9
call sym.raiseOverflow
cmp r15, r14
jne 0x140021b89
movabs rdx, 0x5555555555555556
mov r8, qword [rsi]
mov rax, r8
imul rdx
mov rax, r8
sar rax, 0x3f
sub rdx, rax
lea rax, [rdx + rdx*2]
mov rdx, r8
sub rdx, rax
cmp rdx, 1
je 0x140021fa0
cmp rdx, 2
jne 0x140021dab
test r15, r15
js 0x140021f38
cmp r15, r8
jge 0x140021f38
movzx edi, byte [rsi + rbx + 0x10]
shl edi, 0x10
add rbx, 1
mov r14, rbx
jo 0x1400220a8
mov rcx, qword [rsi]
test rbx, rbx
js 0x140021cbd
cmp r14, rcx
jl 0x140021cc9
lea rdx, [rcx - 1]
mov rcx, r14
call sym.raiseIndexError2
movzx ebx, byte [rsi + r14 + 0x10]
shl ebx, 8
or ebx, edi
add r14, 1
jo 0x14002212d
test r13, r13
je 0x140021f78
test r12, r12
js 0x140021f78
mov rdx, qword [r13]
cmp rdx, r12
jle 0x140021f88
mov eax, ebx
shr eax, 0x12
movzx eax, byte [rbp + rax]
mov byte [r13 + r12 + 0x10], al
add r12, 1
jo 0x14002220a
mov rdx, qword [r13]
test r12, r12
js 0x140021d24
cmp r12, rdx
jl 0x140021d30
sub rdx, 1
mov rcx, r12
call sym.raiseIndexError2
mov eax, ebx
shr eax, 0xc
and eax, 0x3f
movzx eax, byte [rbp + rax]
mov byte [r13 + r12 + 0x10], al
add r12, 1
jo 0x140022200
mov rdx, qword [r13]
test r12, r12
js 0x140021d5a
cmp r12, rdx
jl 0x140021d66
sub rdx, 1
mov rcx, r12
call sym.raiseIndexError2
shr ebx, 6
and ebx, 0x3c
movzx eax, byte [rbp + rbx]
mov byte [r13 + r12 + 0x10], al
add r12, 1
jo 0x140021edd
mov rdx, qword [r13]
test r12, r12
js 0x140021d8e
cmp r12, rdx
jl 0x140021d9a
sub rdx, 1
mov rcx, r12
call sym.raiseIndexError2
mov byte [r13 + r12 + 0x10], 0x3d
add r12, 1
jno 0x140021dab
call sym.raiseOverflow
test r12, r12
jns 0x140021bc2
movabs r8, 0x7fffffffffffffff
xor edx, edx
mov rcx, r12
call sym.raiseRangeErrorI
jmp 0x140021bc2
call sym.raiseOverflow
jmp 0x140021891
call sym.raiseOverflow
cmp r15, r14
jne 0x140021971
movabs rdx, 0x5555555555555556
mov r8, qword [rsi]
mov rax, r8
imul rdx
mov rax, r8
sar rax, 0x3f
sub rdx, rax
lea rax, [rdx + rdx*2]
mov rdx, r8
sub rdx, rax
cmp rdx, 1
jne 0x140021c7f
test r15, r15
js 0x140022090
cmp r15, r8
jge 0x140022090
movzx eax, byte [rsi + rbx + 0x10]
shl eax, 0x10
add rbx, 1
mov esi, eax
jo 0x140022214
test r13, r13
je 0x140021f50
test r12, r12
js 0x140021f50
mov rdx, qword [r13]
cmp rdx, r12
jle 0x140021f60
mov edx, esi
shr edx, 0x12
movzx eax, byte [rbp + rdx]
mov byte [r13 + r12 + 0x10], al
add r12, 1
jo 0x140022234
mov rdx, qword [r13]
test r12, r12
js 0x140021e8b
cmp r12, rdx
jl 0x140021e97
sub rdx, 1
mov rcx, r12
call sym.raiseIndexError2
mov eax, esi
shr eax, 0xc
and eax, 0x30
movzx eax, byte [rbp + rax]
mov byte [r13 + r12 + 0x10], al
add r12, 1
jo 0x140022024
mov rdx, qword [r13]
test r12, r12
js 0x140021ec1
cmp r12, rdx
jl 0x140021ecd
sub rdx, 1
mov rcx, r12
call sym.raiseIndexError2
mov byte [r13 + r12 + 0x10], 0x3d
add r12, 1
jno 0x140021d80
call sym.raiseOverflow
jmp 0x140021d80
movabs r8, 0x7fffffffffffffff
xor edx, edx
mov rcx, r12
call sym.raiseRangeErrorI
jmp 0x1400217b2
movabs r8, 0x7fffffffffffffff
xor edx, edx
mov rcx, r12
call sym.raiseRangeErrorI
jmp 0x1400219c7
xor ebx, ebx
lea rbp, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__scheme
nop word [rax + rax]
lea rdx, [r8 - 1]
mov rcx, rbx
call sym.raiseIndexError2
jmp 0x140021c9b
mov rdx, 0xffffffffffffffff
test r13, r13
je 0x140021f64
mov rdx, qword [r13]
sub rdx, 1
mov rcx, r12
call sym.raiseIndexError2
jmp 0x140021e64
mov rdx, 0xffffffffffffffff
test r13, r13
je 0x140021f8c
mov rdx, qword [r13]
sub rdx, 1
mov rcx, r12
call sym.raiseIndexError2
jmp 0x140021cfd
test r15, r15
js 0x140022068
cmp r15, r8
jge 0x140022068
movzx esi, byte [rsi + rbx + 0x10]
shl esi, 0x10
add rbx, 1
jo 0x1400221f6
test r12, r12
js 0x140022030
test r13, r13
je 0x140022030
mov rdx, qword [r13]
cmp rdx, r12
jle 0x140022040
mov eax, esi
shr eax, 0x12
movzx eax, byte [rbp + rax]
mov byte [r13 + r12 + 0x10], al
add r12, 1
jo 0x1400221ec
mov rdx, qword [r13]
test r12, r12
js 0x140021ffe
cmp r12, rdx
jl 0x14002200a
sub rdx, 1
mov rcx, r12
call sym.raiseIndexError2
shr esi, 0xc
and esi, 0x30
movzx eax, byte [rbp + rsi]
mov byte [r13 + r12 + 0x10], al
add r12, 1
jno 0x140021eb3
call sym.raiseOverflow
jmp 0x140021eb3
mov rdx, 0xffffffffffffffff
test r13, r13
je 0x140022044
mov rdx, qword [r13]
sub rdx, 1
mov rcx, r12
call sym.raiseIndexError2
jmp 0x140021fd7
test rcx, rcx
jg 0x14002221e
xor ebx, ebx
xor r12d, r12d
lea rbp, [0x14003a700]
nop dword [rax + rax]
lea rdx, [r8 - 1]
mov rcx, rbx
call sym.raiseIndexError2
jmp 0x140021fb2
test rcx, rcx
jg 0x14002223e
xor r12d, r12d
xor ebx, ebx
lea rbp, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__scheme
nop
lea rdx, [r8 - 1]
mov rcx, rbx
call sym.raiseIndexError2
jmp 0x140021e31
call sym.raiseOverflow
jmp 0x140021cb0
call sym.raiseOverflow
jmp 0x140021b4f
call sym.raiseOverflow
jmp 0x140021833
call sym.raiseOverflow
jmp 0x140021863
call sym.raiseOverflow
jmp 0x1400218cb
call sym.raiseOverflow
jmp 0x140021901
call sym.raiseOverflow
jmp 0x140021937
call sym.raiseOverflow
jmp 0x140021a4b
call sym.raiseOverflow
jmp 0x140021a7b
call sym.raiseOverflow
jmp 0x140021ae3
call sym.raiseOverflow
jmp 0x140021b19
call sym.raiseOverflow
jmp 0x14002178e
call sym.raiseOverflow
mov rcx, qword [rsi]
jmp 0x1400217f2
call sym.raiseOverflow
jmp 0x140021cde
call sym.raiseOverflow
mov rcx, qword [rsi]
jmp 0x140021a07
mov rax, rcx
mov r9d, 3
mov r8, rcx
cqo
idiv r9
cmp rdx, 1
je 0x14002204e
xor r12d, r12d
cmp rdx, 2
jne 0x140021bc2
test rcx, rcx
jle 0x140022194
movzx edi, byte [rsi + 0x10]
mov r14d, 1
lea rbp, [0x14003a700]
shl edi, 0x10
jmp 0x140021cb8
call sym.raiseOverflow
jmp 0x1400219a3
xor ebx, ebx
lea rbp, [0x14003a700]
jmp 0x140021f38
mov rax, rcx
mov r9d, 3
mov r8, rcx
cqo
idiv r9
cmp rdx, 1
je 0x140022079
xor r12d, r12d
cmp rdx, 2
jne 0x140021bc2
test rcx, rcx
jle 0x140021f29
movzx edi, byte [rsi + 0x10]
mov r14d, 1
lea rbp, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__scheme
shl edi, 0x10
jmp 0x140021cb8
call sym.raiseOverflow
jmp 0x140021ff0
call sym.raiseOverflow
jmp 0x140021fc4
call sym.raiseOverflow
jmp 0x140021d4c
call sym.raiseOverflow
jmp 0x140021d16
call sym.raiseOverflow
jmp 0x140021e45
movzx esi, byte [rsi + 0x10]
xor r12d, r12d
lea rbp, [0x14003a700]
shl esi, 0x10
jmp 0x140021fc4
call sym.raiseOverflow
jmp 0x140021e7d
movzx eax, byte [rsi + 0x10]
xor r12d, r12d
lea rbp, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__scheme
shl eax, 0x10
mov esi, eax
jmp 0x140021e45