Function at 0x140031280
Capabilities:
Encode data using base64

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x68
lea rax, [0x14010c4a0]
mov rdi, r8
test r9b, r9b
lea r8, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_
mov r14, rcx
mov qword [rsp + 0x50], 0
cmovne rax, r8
imul rcx, rdi, 4
mov r12, rdx
mov qword [rsp + 0x58], 0
mov r15, rax
jo 0x140031520
movabs rbx, 0x5555555555555556
mov rax, rcx
sar rcx, 0x3f
imul rbx
sub rdx, rcx
add rdx, 6
mov rcx, rdx
js 0x140031580
lea rax, [rsp + 0x50]
mov r13, rdi
xor ebp, ebp
mov rcx, rax
mov qword [rsp + 0x28], rax
call sym.setLengthStrV2
mov rax, rdi
mov r8, rdi
imul rbx
mov rax, rdi
sar rax, 0x3f
sub rdx, rax
lea rax, [rdx + rdx*2]
sub r13, rax
sub r8, r13
seto bpl
jo 0x140031520
test r8, r8
je 0x140031781
xor esi, esi
mov qword [rsp + 0xb0], r14
mov r14, rbp
mov qword [rsp + 0x48], r13
mov qword [rsp + 0x30], r8
cmp rdi, rsi
jle 0x140031506
movzx eax, byte [r12 + rsi]
shl eax, 0x10
mov ecx, eax
lea rax, [rsi + 1]
cmp rdi, rax
jle 0x1400315f8
movzx eax, byte [r12 + rsi + 1]
lea r9, [rsi + 2]
shl eax, 8
cmp rdi, r9
jle 0x140031618
movzx r13d, byte [r12 + rsi + 2]
or eax, ecx
lea rbx, [rsi + 3]
or r13d, eax
mov rax, qword [rsp + 0x50]
cmp rax, r14
jle 0x1400315b8
mov r8d, r13d
mov rcx, qword [rsp + 0x58]
lea rbp, [r14 + 1]
shr r8d, 0x12
add r8, r15
test rcx, rcx
je 0x140031548
test byte [rcx + 7], 0x40
je 0x140031548
mov rcx, qword [rsp + 0x28]
mov qword [rsp + 0x38], r8
call sym.nimPrepareStrMutationImpl__system_u2390
mov r8, qword [rsp + 0x38]
mov rax, qword [rsp + 0x58]
movzx ecx, byte [r8]
mov byte [rax + r14 + 8], cl
mov rax, qword [rsp + 0x50]
cmp rax, rbp
jle 0x140031598
mov r8d, r13d
mov rcx, qword [rsp + 0x58]
lea r10, [r14 + 2]
shr r8d, 0xc
and r8d, 0x3f
add r8, r15
test rcx, rcx
je 0x140031560
test byte [rcx + 7], 0x40
je 0x140031560
mov rcx, qword [rsp + 0x28]
mov qword [rsp + 0x40], r10
mov qword [rsp + 0x38], r8
call sym.nimPrepareStrMutationImpl__system_u2390
mov r8, qword [rsp + 0x38]
mov rax, qword [rsp + 0x58]
mov r10, qword [rsp + 0x40]
movzx ecx, byte [r8]
mov byte [rax + rbp + 8], cl
mov rax, qword [rsp + 0x50]
cmp rax, r10
jle 0x1400315d8
mov r8d, r13d
mov rcx, qword [rsp + 0x58]
lea rbp, [r14 + 3]
shr r8d, 6
and r8d, 0x3f
add r8, r15
test rcx, rcx
je 0x140031570
test byte [rcx + 7], 0x40
je 0x140031570
mov rcx, qword [rsp + 0x28]
mov qword [rsp + 0x40], r10
mov qword [rsp + 0x38], r8
call sym.nimPrepareStrMutationImpl__system_u2390
mov r8, qword [rsp + 0x38]
mov rax, qword [rsp + 0x58]
mov r10, qword [rsp + 0x40]
movzx ecx, byte [r8]
mov byte [rax + r10 + 8], cl
mov rax, qword [rsp + 0x50]
cmp rax, rbp
jle 0x140031598
mov rax, qword [rsp + 0x58]
test rax, rax
je 0x1400314de
test byte [rax + 7], 0x40
je 0x1400314de
mov rcx, qword [rsp + 0x28]
call sym.nimPrepareStrMutationImpl__system_u2390
mov rax, qword [rsp + 0x58]
and r13d, 0x3f
add r14, 4
movzx ecx, byte [r15 + r13]
mov byte [rax + rbp + 8], cl
cmp qword [rsp + 0x30], rbx
je 0x140031638
mov rsi, rbx
cmp rdi, rsi
jg 0x140031358
lea rdx, [rdi - 1]
mov rcx, rsi
mov r14, qword [rsp + 0xb0]
call sym.raiseIndexError2
jmp 0x140031525
call sym.raiseOverflow
movdqa xmm0, xmmword [rsp + 0x50]
mov rax, r14
movups xmmword [r14], xmm0
add rsp, 0x68
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
movzx r8d, byte [r8]
mov byte [rcx + r14 + 8], r8b
jmp 0x1400313ef
movzx r8d, byte [r8]
mov byte [rcx + rbp + 8], r8b
jmp 0x140031452
movzx r8d, byte [r8]
mov byte [rcx + r10 + 8], r8b
jmp 0x1400314b6
movabs r8, 0x7fffffffffffffff
xor edx, edx
call sym.raiseRangeErrorI
jmp 0x140031525
lea rdx, [rax - 1]
mov rcx, rbp
mov r14, qword [rsp + 0xb0]
call sym.raiseIndexError2
jmp 0x140031525
mov rbp, r14
lea rdx, [rax - 1]
mov r14, qword [rsp + 0xb0]
mov rcx, rbp
call sym.raiseIndexError2
jmp 0x140031525
lea rdx, [rax - 1]
mov rcx, r10
mov r14, qword [rsp + 0xb0]
call sym.raiseIndexError2
jmp 0x140031525
lea rdx, [rdi - 1]
mov rcx, rax
mov r14, qword [rsp + 0xb0]
call sym.raiseIndexError2
jmp 0x140031525
lea rdx, [rdi - 1]
mov rcx, r9
mov r14, qword [rsp + 0xb0]
call sym.raiseIndexError2
jmp 0x140031525
mov r13, qword [rsp + 0x48]
mov rbp, r14
mov r8, qword [rsp + 0x30]
mov r14, qword [rsp + 0xb0]
cmp r13, 1
je 0x14003166f
cmp r13, 2
je 0x14003185e
mov rcx, qword [rsp + 0x28]
mov rdx, rbp
call sym.setLengthStrV2
jmp 0x140031525
cmp rdi, r8
jle 0x140031879
add r12, r8
mov rax, qword [rsp + 0x50]
cmp rax, rbp
jle 0x140031770
movzx edx, byte [r12]
mov rcx, qword [rsp + 0x58]
lea rdi, [rbp + 1]
mov esi, edx
shr edx, 2
shl esi, 0x10
lea rbx, [r15 + rdx]
test rcx, rcx
je 0x1400318ac
test byte [rcx + 7], 0x40
je 0x1400318ac
mov rcx, qword [rsp + 0x28]
call sym.nimPrepareStrMutationImpl__system_u2390
mov rax, qword [rsp + 0x58]
movzx edx, byte [rbx]
mov byte [rax + rbp + 8], dl
mov rax, qword [rsp + 0x50]
cmp rdi, rax
jge 0x14003188a
shr esi, 0xc
mov rdx, qword [rsp + 0x58]
lea rbx, [rbp + 2]
and esi, 0x30
add rsi, r15
test rdx, rdx
je 0x1400318d7
test byte [rdx + 7], 0x40
je 0x1400318d7
mov rcx, qword [rsp + 0x28]
call sym.nimPrepareStrMutationImpl__system_u2390
mov rax, qword [rsp + 0x58]
movzx edx, byte [rsi]
mov byte [rax + rdi + 8], dl
mov rax, qword [rsp + 0x50]
cmp rbx, rax
jge 0x14003184d
mov rcx, qword [rsp + 0x28]
call sym.nimPrepareStrMutationV2
mov rax, qword [rsp + 0x58]
mov byte [rax + rbx + 8], 0x3d
mov rax, qword [rsp + 0x50]
lea rbx, [rbp + 3]
cmp rax, rbx
jle 0x14003184d
mov rcx, qword [rsp + 0x28]
add rbp, 4
call sym.nimPrepareStrMutationV2
mov rax, qword [rsp + 0x58]
mov byte [rax + rbx + 8], 0x3d
jmp 0x14003165d
lea rdx, [rax - 1]
mov rcx, rbp
call sym.raiseIndexError2
jmp 0x140031525
cmp r13, 1
je 0x14003167b
cmp r13, 2
jne 0x14003165d
movzx eax, byte [r12]
mov ecx, 1
shl eax, 0x10
mov rdx, qword [rsp + 0x50]
cmp rdx, rbp
jle 0x14003189b
movzx ebx, byte [r12 + rcx]
mov rcx, qword [rsp + 0x28]
lea rsi, [rbp + 1]
shl ebx, 8
or ebx, eax
call sym.nimPrepareStrMutationV2
mov eax, ebx
shr eax, 0x12
movzx edx, byte [r15 + rax]
mov rax, qword [rsp + 0x58]
mov byte [rax + rbp + 8], dl
mov rax, qword [rsp + 0x50]
cmp rax, rsi
jle 0x1400318b8
mov rcx, qword [rsp + 0x28]
call sym.nimPrepareStrMutationV2
mov eax, ebx
shr eax, 0xc
and eax, 0x3f
movzx edx, byte [r15 + rax]
mov rax, qword [rsp + 0x58]
mov byte [rax + rsi + 8], dl
mov rax, qword [rsp + 0x50]
lea rsi, [rbp + 2]
cmp rax, rsi
jle 0x1400318b8
mov rcx, qword [rsp + 0x28]
call sym.nimPrepareStrMutationV2
mov eax, ebx
lea rbx, [rbp + 3]
shr eax, 6
and eax, 0x3c
movzx edx, byte [r15 + rax]
mov rax, qword [rsp + 0x58]
mov byte [rax + rsi + 8], dl
mov rax, qword [rsp + 0x50]
cmp rax, rbx
jg 0x140031749
lea rdx, [rax - 1]
mov rcx, rbx
call sym.raiseIndexError2
jmp 0x140031525
cmp rdi, r8
jle 0x140031879
lea rcx, [rsi + 4]
cmp rdi, rcx
jle 0x1400318c9
movzx eax, byte [r12 + r8]
shl eax, 0x10
jmp 0x1400317a2
lea rdx, [rdi - 1]
mov rcx, r8
call sym.raiseIndexError2
jmp 0x140031525
lea rdx, [rax - 1]
mov rcx, rdi
call sym.raiseIndexError2
jmp 0x140031525
sub rdx, 1
mov rcx, rbp
call sym.raiseIndexError2
jmp 0x140031525
movzx edx, byte [rbx]
mov byte [rcx + rbp + 8], dl
jmp 0x1400316d1
lea rdx, [rax - 1]
mov rcx, rsi
call sym.raiseIndexError2
jmp 0x140031525
lea rdx, [rdi - 1]
call sym.raiseIndexError2
jmp 0x140031525
movzx ecx, byte [rsi]
mov byte [rdx + rdi + 8], cl
jmp 0x14003171a