Function at 0x14001b160
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
xor eax, eax
mov rbp, rcx
mov rsi, rdx
mov rbx, r8
mov qword [rsp + 0x50], 0
mov qword [rsp + 0x58], 0
imul rcx, r8, 4
seto al
test r9b, r9b
je 0x14001b430
test rax, rax
jne 0x14001b6d0
movabs rdi, 0x5555555555555556
mov rax, rcx
sar rcx, 0x3f
imul rdi
sub rdx, rcx
add rdx, 6
mov rcx, rdx
js 0x14001b710
lea rax, [rsp + 0x50]
mov rcx, rax
mov qword [rsp + 0x20], rax
call sym.setLengthStrV2
mov rax, rbx
imul rdi
mov rax, rbx
sar rax, 0x3f
sub rdx, rax
lea rax, [rdx + rdx*2]
mov rdx, rbx
sub rdx, rax
mov rax, rbx
sub rax, rdx
seto r13b
mov qword [rsp + 0x28], rax
mov r14, rax
movzx r13d, r13b
jo 0x14001b6d0
test rax, rax
je 0x14001bae8
test rbx, rbx
jle 0x14001b7e3
movzx eax, byte [rsi]
shl eax, 0x10
cmp rbx, 1
je 0x14001b953
movzx edi, byte [rsi + 1]
shl edi, 8
or edi, eax
cmp rbx, 2
je 0x14001b95d
lea r12, [0x14002c080]
xor r14d, r14d
mov qword [rsp + 0x48], rdx
mov qword [rsp + 0xb0], rbp
mov rbp, r14
mov r14, r13
movzx eax, byte [rsi + r14 + 2]
mov r15, r14
mov qword [rsp + 0x30], r14
add r14, 3
or edi, eax
mov rax, qword [rsp + 0x50]
cmp rax, rbp
jle 0x14001b798
mov rcx, qword [rsp + 0x58]
lea r13, [rbp + 1]
mov r9d, edi
shr r9d, 0x12
test rcx, rcx
je 0x14001b6a8
test byte [rcx + 7], 0x40
je 0x14001b6a8
mov rcx, qword [rsp + 0x20]
mov dword [rsp + 0x38], r9d
call sym.nimPrepareStrMutationImpl__system_u2380
mov r9d, dword [rsp + 0x38]
mov rax, qword [rsp + 0x58]
movzx ecx, byte [r12 + r9]
mov byte [rax + rbp + 8], cl
mov rax, qword [rsp + 0x50]
cmp rax, r13
jle 0x14001b760
mov rcx, qword [rsp + 0x58]
lea r9, [rbp + 2]
mov r11d, edi
shr r11d, 0xc
and r11d, 0x3f
test rcx, rcx
je 0x14001b6c0
test byte [rcx + 7], 0x40
je 0x14001b6c0
mov rcx, qword [rsp + 0x20]
mov qword [rsp + 0x40], r9
mov dword [rsp + 0x38], r11d
call sym.nimPrepareStrMutationImpl__system_u2380
mov r11d, dword [rsp + 0x38]
mov rax, qword [rsp + 0x58]
mov r9, qword [rsp + 0x40]
movzx ecx, byte [r12 + r11]
mov byte [rax + r13 + 8], cl
mov rax, qword [rsp + 0x50]
cmp r9, rax
jge 0x14001b77c
mov rcx, qword [rsp + 0x58]
lea r13, [rbp + 3]
mov r11d, edi
shr r11d, 6
and r11d, 0x3f
test rcx, rcx
je 0x14001b6f8
test byte [rcx + 7], 0x40
je 0x14001b6f8
mov rcx, qword [rsp + 0x20]
mov qword [rsp + 0x40], r9
mov dword [rsp + 0x38], r11d
call sym.nimPrepareStrMutationImpl__system_u2380
mov r11d, dword [rsp + 0x38]
mov rax, qword [rsp + 0x58]
mov r9, qword [rsp + 0x40]
movzx ecx, byte [r12 + r11]
mov byte [rax + r9 + 8], cl
mov rax, qword [rsp + 0x50]
cmp rax, r13
jle 0x14001b760
mov rax, qword [rsp + 0x58]
test rax, rax
je 0x14001b3bc
test byte [rax + 7], 0x40
je 0x14001b3bc
mov rcx, qword [rsp + 0x20]
call sym.nimPrepareStrMutationImpl__system_u2380
mov rax, qword [rsp + 0x58]
and edi, 0x3f
add rbp, 4
cmp qword [rsp + 0x28], r14
movzx ecx, byte [r12 + rdi]
mov byte [rax + r13 + 8], cl
je 0x14001b830
cmp r14, rbx
jge 0x14001b7d8
movzx eax, byte [rsi + r14]
lea rcx, [r15 + 4]
shl eax, 0x10
cmp rbx, rcx
jle 0x14001b7f8
movzx edi, byte [rsi + r14 + 1]
add r15, 5
shl edi, 8
or edi, eax
cmp rbx, r15
jg 0x14001b264
mov rbp, qword [rsp + 0xb0]
lea rdx, [rbx - 1]
mov rcx, r15
call sym.raiseIndexError2
jmp 0x14001b6d5
test rax, rax
jne 0x14001b6d0
movabs rdi, 0x5555555555555556
mov rax, rcx
sar rcx, 0x3f
imul rdi
sub rdx, rcx
add rdx, 6
mov rcx, rdx
js 0x14001b710
lea rax, [rsp + 0x50]
mov rcx, rax
mov qword [rsp + 0x20], rax
call sym.setLengthStrV2
mov rax, rbx
imul rdi
mov rax, rbx
sar rax, 0x3f
sub rdx, rax
lea rax, [rdx + rdx*2]
mov rdx, rbx
sub rdx, rax
mov rax, rbx
sub rax, rdx
seto r13b
mov qword [rsp + 0x28], rax
mov r14, rax
movzx r13d, r13b
jo 0x14001b6d0
test rax, rax
je 0x14001bbe8
test rbx, rbx
jle 0x14001b7e3
movzx eax, byte [rsi]
shl eax, 0x10
cmp rbx, 1
je 0x14001b953
movzx edi, byte [rsi + 1]
shl edi, 8
or edi, eax
cmp rbx, 2
je 0x14001b95d
lea r10, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__
xor r14d, r14d
mov qword [rsp + 0x38], rdx
mov r15, r14
mov qword [rsp + 0xb0], rbp
movzx eax, byte [rsi + r13 + 2]
mov r12, r13
add r13, 3
or edi, eax
mov rax, qword [rsp + 0x50]
cmp rax, r15
jle 0x14001b80e
mov rcx, qword [rsp + 0x58]
lea r14, [r15 + 1]
mov ebp, edi
shr ebp, 0x12
test rcx, rcx
je 0x14001b728
test byte [rcx + 7], 0x40
je 0x14001b728
mov rcx, qword [rsp + 0x20]
call sym.nimPrepareStrMutationImpl__system_u2380
mov r9d, ebp
mov rax, qword [rsp + 0x58]
lea r10, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__
movzx ecx, byte [r10 + r9]
mov byte [rax + r15 + 8], cl
mov rax, qword [rsp + 0x50]
cmp r14, rax
jge 0x14001b7b8
mov rcx, qword [rsp + 0x58]
lea rbp, [r15 + 2]
mov r11d, edi
shr r11d, 0xc
and r11d, 0x3f
test rcx, rcx
je 0x14001b740
test byte [rcx + 7], 0x40
je 0x14001b740
mov rcx, qword [rsp + 0x20]
mov dword [rsp + 0x30], r11d
call sym.nimPrepareStrMutationImpl__system_u2380
mov r11d, dword [rsp + 0x30]
lea r10, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__
mov rax, qword [rsp + 0x58]
movzx ecx, byte [r10 + r11]
mov byte [rax + r14 + 8], cl
mov rax, qword [rsp + 0x50]
cmp rbp, rax
jge 0x14001b779
mov rcx, qword [rsp + 0x58]
lea r14, [r15 + 3]
mov r11d, edi
shr r11d, 6
and r11d, 0x3f
test rcx, rcx
je 0x14001b750
test byte [rcx + 7], 0x40
je 0x14001b750
mov rcx, qword [rsp + 0x20]
mov dword [rsp + 0x30], r11d
call sym.nimPrepareStrMutationImpl__system_u2380
mov r11d, dword [rsp + 0x30]
lea r10, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__
mov rax, qword [rsp + 0x58]
movzx ecx, byte [r10 + r11]
mov byte [rax + rbp + 8], cl
mov rax, qword [rsp + 0x50]
cmp rax, r14
jle 0x14001b7b8
mov rax, qword [rsp + 0x58]
test rax, rax
je 0x14001b646
test byte [rax + 7], 0x40
je 0x14001b646
mov rcx, qword [rsp + 0x20]
call sym.nimPrepareStrMutationImpl__system_u2380
mov rax, qword [rsp + 0x58]
lea r10, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__
and edi, 0x3f
add r15, 4
movzx ecx, byte [r10 + rdi]
mov byte [rax + r14 + 8], cl
mov rax, qword [rsp + 0x28]
cmp r13, rax
je 0x14001b968
cmp r13, rbx
jge 0x14001ba04
movzx eax, byte [rsi + r13]
lea rcx, [r12 + 4]
shl eax, 0x10
cmp rbx, rcx
jle 0x14001b7f8
movzx edi, byte [rsi + r13 + 1]
add r12, 5
shl edi, 8
or edi, eax
cmp rbx, r12
jg 0x14001b4f4
mov r15, r12
jmp 0x14001b40e
movzx r9d, byte [r12 + r9]
mov byte [rcx + rbp + 8], r9b
jmp 0x14001b2d0
movzx r11d, byte [r12 + r11]
mov byte [rcx + r13 + 8], r11b
jmp 0x14001b332
call sym.raiseOverflow
movdqa xmm0, xmmword [rsp + 0x50]
mov rax, rbp
movups xmmword [rbp], xmm0
add rsp, 0x68
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
movzx r11d, byte [r12 + r11]
mov byte [rcx + r9 + 8], r11b
jmp 0x14001b394
movabs r8, 0x7fffffffffffffff
xor edx, edx
call sym.raiseRangeErrorI
jmp 0x14001b6d5
mov r9d, ebp
movzx r9d, byte [r10 + r9]
mov byte [rcx + r15 + 8], r9b
jmp 0x14001b55a
movzx r11d, byte [r10 + r11]
mov byte [rcx + r14 + 8], r11b
jmp 0x14001b5b9
movzx r11d, byte [r10 + r11]
mov byte [rcx + rbp + 8], r11b
jmp 0x14001b617
lea rdx, [rax - 1]
mov rcx, r13
mov rbp, qword [rsp + 0xb0]
call sym.raiseIndexError2
jmp 0x14001b6d5
mov r9, rbp
lea rdx, [rax - 1]
mov rcx, r9
mov rbp, qword [rsp + 0xb0]
call sym.raiseIndexError2
jmp 0x14001b6d5
lea rdx, [rax - 1]
mov r14, rbp
mov rbp, qword [rsp + 0xb0]
mov rcx, r14
call sym.raiseIndexError2
jmp 0x14001b6d5
lea rdx, [rax - 1]
mov rcx, r14
mov rbp, qword [rsp + 0xb0]
call sym.raiseIndexError2
jmp 0x14001b6d5
mov rbp, qword [rsp + 0xb0]
mov r13, r14
lea rdx, [rbx - 1]
mov rcx, r13
call sym.raiseIndexError2
jmp 0x14001b6d5
mov rbp, qword [rsp + 0xb0]
lea rdx, [rbx - 1]
call sym.raiseIndexError2
jmp 0x14001b6d5
lea rdx, [rax - 1]
mov rcx, r15
mov rbp, qword [rsp + 0xb0]
call sym.raiseIndexError2
jmp 0x14001b6d5
mov rdx, qword [rsp + 0x48]
mov r14, rbp
mov rbp, qword [rsp + 0xb0]
cmp rdx, 1
je 0x14001ba11
cmp rdx, 2
jne 0x14001b941
mov rax, qword [rsp + 0x28]
cmp rax, rbx
jge 0x14001bc40
mov rcx, qword [rsp + 0x30]
movzx eax, byte [rsi + rax]
add rcx, 4
cmp rbx, rcx
jle 0x14001b800
movzx edx, byte [rsi + rcx]
mov rcx, qword [rsp + 0x50]
cmp rcx, r14
jle 0x14001bc2f
mov rcx, qword [rsp + 0x20]
lea rdi, [r14 + 1]
movzx ebx, dl
shl eax, 0x10
lea rsi, [0x14002c080]
shl ebx, 8
or ebx, eax
call sym.nimPrepareStrMutationV2
mov eax, ebx
shr eax, 0x12
movzx edx, byte [rsi + rax]
mov rax, qword [rsp + 0x58]
mov byte [rax + r14 + 8], dl
mov rax, qword [rsp + 0x50]
cmp rax, rdi
jle 0x14001b9f3
mov rcx, qword [rsp + 0x20]
call sym.nimPrepareStrMutationV2
mov eax, ebx
shr eax, 0xc
and eax, 0x3f
movzx edx, byte [rsi + rax]
mov rax, qword [rsp + 0x58]
mov byte [rax + rdi + 8], dl
mov rax, qword [rsp + 0x50]
lea rdi, [r14 + 2]
cmp rax, rdi
jle 0x14001b9f3
mov rcx, qword [rsp + 0x20]
call sym.nimPrepareStrMutationV2
mov eax, ebx
lea rbx, [r14 + 3]
shr eax, 6
and eax, 0x3c
movzx edx, byte [rsi + rax]
mov rax, qword [rsp + 0x58]
mov byte [rax + rdi + 8], dl
mov rax, qword [rsp + 0x50]
cmp rax, rbx
jle 0x14001bad7
mov rcx, qword [rsp + 0x20]
add r14, 4
call sym.nimPrepareStrMutationV2
mov rax, qword [rsp + 0x58]
mov byte [rax + rbx + 8], 0x3d
mov rcx, qword [rsp + 0x20]
mov rdx, r14
call sym.setLengthStrV2
jmp 0x14001b6d5
mov ecx, 1
jmp 0x14001b800
mov r15d, 2
jmp 0x14001b416
mov rdx, qword [rsp + 0x38]
mov r14, r15
mov rbp, qword [rsp + 0xb0]
cmp rdx, 1
je 0x14001bb1a
cmp rdx, 2
jne 0x14001b941
cmp r13, rbx
jge 0x14001b7e3
lea rcx, [r13 + 1]
movzx eax, byte [rsi + r13]
cmp rcx, rbx
jge 0x14001b800
mov rdx, qword [rsp + 0x50]
movzx ebx, byte [rsi + rcx]
cmp r14, rdx
jge 0x14001bc53
mov rcx, qword [rsp + 0x20]
shl eax, 0x10
shl ebx, 8
lea rsi, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__
or ebx, eax
lea rdi, [r14 + 1]
call sym.nimPrepareStrMutationV2
mov eax, ebx
shr eax, 0x12
movzx edx, byte [rsi + rax]
mov rax, qword [rsp + 0x58]
mov byte [rax + r14 + 8], dl
mov rax, qword [rsp + 0x50]
cmp rdi, rax
jl 0x14001b8c7
lea rdx, [rax - 1]
mov rcx, rdi
call sym.raiseIndexError2
jmp 0x14001b6d5
mov rbp, qword [rsp + 0xb0]
jmp 0x14001b7e3
mov rax, qword [rsp + 0x28]
add rsi, rax
cmp rax, rbx
jge 0x14001bc10
mov rax, qword [rsp + 0x50]
movzx edx, byte [rsi]
cmp rax, r14
jle 0x14001bb09
mov rcx, qword [rsp + 0x58]
mov esi, edx
mov ebx, edx
shl esi, 0x10
shr ebx, 2
test rcx, rcx
je 0x14001bc18
test byte [rcx + 7], 0x40
je 0x14001bc18
mov rcx, qword [rsp + 0x20]
lea rdi, [0x14002c080]
call sym.nimPrepareStrMutationImpl__system_u2380
mov edx, ebx
mov rax, qword [rsp + 0x58]
movzx edx, byte [rdi + rdx]
mov byte [rax + r14 + 8], dl
mov rax, qword [rsp + 0x50]
lea rbx, [r14 + 1]
cmp rax, rbx
jle 0x14001bad7
mov rcx, qword [rsp + 0x20]
call sym.nimPrepareStrMutationV2
mov eax, esi
shr eax, 0xc
and eax, 0x30
movzx edx, byte [rdi + rax]
mov rax, qword [rsp + 0x58]
mov byte [rax + rbx + 8], dl
mov rax, qword [rsp + 0x50]
lea rbx, [r14 + 2]
cmp rax, rbx
jle 0x14001bad7
mov rcx, qword [rsp + 0x20]
call sym.nimPrepareStrMutationV2
mov rax, qword [rsp + 0x58]
mov byte [rax + rbx + 8], 0x3d
mov rax, qword [rsp + 0x50]
lea rbx, [r14 + 3]
cmp rax, rbx
jg 0x14001b929
lea rdx, [rax - 1]
mov rcx, rbx
call sym.raiseIndexError2
jmp 0x14001b6d5
cmp rdx, 1
je 0x14001ba22
cmp rdx, 2
jne 0x14001bc08
movzx eax, byte [rsi]
mov ecx, 1
jmp 0x14001b874
lea rdx, [rax - 1]
mov rcx, r14
call sym.raiseIndexError2
jmp 0x14001b6d5
cmp r13, rbx
jge 0x14001b7e3
add rsi, r13
mov rax, qword [rsp + 0x50]
movzx edx, byte [rsi]
cmp r14, rax
jge 0x14001bb09
mov rcx, qword [rsp + 0x58]
mov esi, edx
mov ebx, edx
shl esi, 0x10
shr ebx, 2
test rcx, rcx
je 0x14001bc64
test byte [rcx + 7], 0x40
je 0x14001bc64
mov rcx, qword [rsp + 0x20]
lea rdi, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__
call sym.nimPrepareStrMutationImpl__system_u2380
mov rax, qword [rsp + 0x58]
movzx edx, byte [rdi + rbx]
mov byte [rax + r14 + 8], dl
mov rax, qword [rsp + 0x50]
lea rbx, [r14 + 1]
cmp rax, rbx
jle 0x14001bad7
mov rcx, qword [rsp + 0x20]
call sym.nimPrepareStrMutationV2
mov eax, esi
shr eax, 0xc
and eax, 0x30
movzx edx, byte [rdi + rax]
mov rax, qword [rsp + 0x58]
mov byte [rax + rbx + 8], dl
mov rax, qword [rsp + 0x50]
lea rbx, [r14 + 2]
cmp rax, rbx
jle 0x14001bad7
mov rcx, qword [rsp + 0x20]
call sym.nimPrepareStrMutationV2
mov rax, qword [rsp + 0x58]
mov byte [rax + rbx + 8], 0x3d
mov rax, qword [rsp + 0x50]
lea rbx, [r14 + 3]
cmp rbx, rax
jge 0x14001bad7
jmp 0x14001b929
cmp rdx, 1
je 0x14001bb26
cmp rdx, 2
jne 0x14001bc08
movzx eax, byte [rsi]
xor r14d, r14d
mov ecx, 1
jmp 0x14001b9a3
xor r14d, r14d
jmp 0x14001b941
mov rcx, rax
jmp 0x14001b800
lea rdi, [0x14002c080]
mov edx, ebx
movzx edx, byte [rdi + rdx]
mov byte [rcx + r14 + 8], dl
jmp 0x14001ba7b
lea rdx, [rcx - 1]
mov rcx, r14
call sym.raiseIndexError2
jmp 0x14001b6d5
mov rcx, qword [rsp + 0x28]
lea rdx, [rbx - 1]
call sym.raiseIndexError2
jmp 0x14001b6d5
sub rdx, 1
mov rcx, r14
call sym.raiseIndexError2
jmp 0x14001b6d5
lea rdi, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__
movzx edx, byte [rdi + rbx]
mov byte [rcx + r14 + 8], dl
jmp 0x14001bb79