Function at 0x140020170
Capabilities:
Encode data using base64

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x68
mov ebp, r9d
mov rdi, r8
mov rbx, rdx
mov rsi, rcx
lea rax, [0x140048df0]
mov qword [rsp + 0x40], rax
lea rax, str._home_neko_.choosenim_toolchains_nim_2.0.2_lib_pure_base64.nim
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x48], 0
mov word [rsp + 0x58], 0
mov eax, dword [0x140682508]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
lea r15, [rax + 0x2ac8]
mov rcx, qword [rax + 0x2ac8]
lea rax, [rsp + 0x38]
test rcx, rcx
je 0x140020204
movzx edx, word [rcx + 0x22]
add edx, 1
mov word [rsp + 0x5a], dx
mov qword [rsp + 0x38], rcx
mov qword [r15], rax
movzx eax, dx
cmp eax, 0x7d0
jne 0x140020217
call fcn.1400153a0
jmp 0x140020217
mov word [rsp + 0x5a], 0
mov qword [rsp + 0x38], 0
mov qword [r15], rax
lea rax, [rsi + 8]
mov qword [rsp + 0x20], rax
xorps xmm0, xmm0
movups xmmword [rsi], xmm0
mov qword [rsp + 0x48], 0x51
movabs rax, 0xe000000000000000
add rax, rdi
shr rax, 0x3e
test bpl, bpl
je 0x140020327
cmp eax, 2
jbe 0x14002032c
lea rax, [rdi*4]
movabs r14, 0x5555555555555556
imul r14
mov rax, rdx
shr rax, 0x3f
add rdx, rax
add rdx, 6
cmp rdi, 0xfffffffffffffffa
jle 0x14002035f
mov rcx, rsi
call fcn.140014090
mov rax, rdi
imul r14
mov rax, rdx
shr rax, 0x3f
add rax, rdx
lea rax, [rax + rax*2]
mov qword [rsp + 0x30], rax
test rax, rax
jne 0x1400204f0
xor r14d, r14d
xor ecx, ecx
mov r8, qword [rsp + 0x20]
mov rax, rdi
sub rax, qword [rsp + 0x30]
cmp rax, 2
je 0x1400208dd
cmp rax, 1
jne 0x140020a9a
mov qword [rsp + 0x48], 0x5e
cmp rcx, rdi
jge 0x140020ab0
movzx ebx, byte [rbx + rcx]
mov qword [rsp + 0x48], 0x63
mov rdx, qword [rsi]
cmp r14, rdx
jge 0x140020aca
mov rax, qword [r8]
test byte [rax + 7], 0x40
je 0x140020314
mov rcx, rsi
call fcn.140016830
mov r8, qword [rsp + 0x20]
mov rax, qword [rsi + 8]
mov rcx, rbx
shr rcx, 2
lea r12, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_encode
jmp 0x14002041b
cmp eax, 2
ja 0x140020336
call fcn.1400054b0
jmp 0x140020ae9
lea rax, [rdi*4]
movabs r14, 0x5555555555555556
imul r14
mov rax, rdx
shr rax, 0x3f
add rdx, rax
add rdx, 6
cmp rdi, 0xfffffffffffffffa
jg 0x140020378
movabs r8, 0x7fffffffffffffff
mov rcx, rdx
xor edx, edx
call fcn.14000d300
jmp 0x140020ae9
mov rcx, rsi
call fcn.140014090
mov rax, rdi
imul r14
mov rax, rdx
shr rax, 0x3f
add rax, rdx
lea rax, [rax + rax*2]
mov qword [rsp + 0x30], rax
test rax, rax
jne 0x1400206df
xor r14d, r14d
xor ecx, ecx
mov r8, qword [rsp + 0x20]
mov rax, rdi
sub rax, qword [rsp + 0x30]
cmp rax, 2
je 0x140020947
cmp rax, 1
jne 0x140020a9a
mov qword [rsp + 0x48], 0x5e
cmp rcx, rdi
jge 0x140020ab0
movzx ebx, byte [rbx + rcx]
mov qword [rsp + 0x48], 0x63
mov rdx, qword [rsi]
cmp r14, rdx
jge 0x140020aca
mov rax, qword [r8]
test byte [rax + 7], 0x40
je 0x14002040d
mov rcx, rsi
call fcn.140016830
mov r8, qword [rsp + 0x20]
mov rax, qword [rsi + 8]
mov rcx, rbx
shr rcx, 2
lea r12, [0x140048db0]
movzx ecx, byte [rcx + r12]
mov byte [rax + r14 + 8], cl
mov rdi, r14
or rdi, 1
mov qword [rsp + 0x48], 0x63
mov rdx, qword [rsi]
cmp rdi, rdx
jge 0x140020b2d
mov r13, r15
shl rbx, 4
movabs r15, 0x4000000000000000
mov rax, qword [r8]
test qword [rax], r15
je 0x14002046b
mov rcx, rsi
call fcn.140016830
mov r8, qword [rsp + 0x20]
mov rax, qword [rsi + 8]
and ebx, 0x30
movzx ecx, byte [rbx + r12]
mov byte [rax + rdi + 8], cl
mov rdi, r14
or rdi, 2
mov qword [rsp + 0x48], 0x67
mov rdx, qword [rsi]
cmp rdi, rdx
jge 0x140020b4c
mov rax, qword [r8]
test qword [rax], r15
je 0x1400204ac
mov rcx, rsi
call fcn.140016830
mov r8, qword [rsp + 0x20]
mov rax, qword [rsi + 8]
mov byte [rax + rdi + 8], 0x3d
mov rdi, r14
or rdi, 3
mov qword [rsp + 0x48], 0x67
mov rdx, qword [rsi]
cmp rdi, rdx
jge 0x140020b4c
mov rax, qword [r8]
test qword [rax], r15
je 0x1400204e1
mov rcx, rsi
call fcn.140016830
mov rax, qword [rsi + 8]
add rax, rdi
add rax, 8
mov r15, r13
jmp 0x140020a93
mov qword [rsp + 0x28], r15
movabs r9, 0x4000000000000000
xor r15d, r15d
lea r10, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_encode
xor r14d, r14d
mov r8, qword [rsp + 0x20]
jmp 0x140020546
mov qword [rsp + 0x48], 0x71
and ebp, 0x3f
movzx ecx, byte [rbp + r10]
mov byte [rax + r14 + 0xb], cl
add r14, 4
cmp qword [rsp + 0x30], r15
je 0x140020b0f
mov qword [rsp + 0x48], 0x5e
cmp r15, rdi
jge 0x140020abe
lea rcx, [r15 + 1]
cmp rcx, rdi
jge 0x1400208d4
lea rcx, [r15 + 2]
cmp rcx, rdi
jge 0x1400208d4
movzx r13d, byte [rbx + r15]
movzx r12d, byte [rbx + r15 + 1]
movzx ebp, byte [rbx + r15 + 2]
mov qword [rsp + 0x48], 0x63
mov rdx, qword [rsi]
cmp r14, rdx
jge 0x140020ad8
mov rax, qword [r8]
test qword [rax], r9
je 0x1400205c2
mov rcx, rsi
call fcn.140016830
lea r10, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_encode
movabs r9, 0x4000000000000000
mov r8, qword [rsp + 0x20]
mov rax, qword [rsi + 8]
mov rcx, r13
shr rcx, 2
movzx ecx, byte [rcx + r10]
mov byte [rax + r14 + 8], cl
lea rcx, [r14 + 1]
mov qword [rsp + 0x48], 0x63
mov rdx, qword [rsi]
cmp rcx, rdx
jge 0x1400208cb
shl r13, 0x10
shl r12, 8
or r13, r12
mov rax, qword [r8]
test qword [rax], r9
je 0x140020621
mov rcx, rsi
call fcn.140016830
lea r10, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_encode
movabs r9, 0x4000000000000000
mov r8, qword [rsp + 0x20]
mov rax, qword [rsi + 8]
shr r13d, 0xc
and r13d, 0x3f
movzx ecx, byte [r13 + r10]
mov byte [rax + r14 + 9], cl
lea rcx, [r14 + 2]
mov qword [rsp + 0x48], 0x63
mov rdx, qword [rsi]
cmp rcx, rdx
jge 0x1400208cb
mov r12d, r12d
or r12, rbp
mov rax, qword [r8]
test qword [rax], r9
je 0x14002067d
mov rcx, rsi
call fcn.140016830
lea r10, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_encode
movabs r9, 0x4000000000000000
mov r8, qword [rsp + 0x20]
mov rax, qword [rsi + 8]
shr r12d, 6
and r12d, 0x3f
movzx ecx, byte [r12 + r10]
mov byte [rax + r14 + 0xa], cl
lea rcx, [r14 + 3]
mov qword [rsp + 0x48], 0x63
mov rdx, qword [rsi]
cmp rcx, rdx
jge 0x1400208cb
add r15, 3
mov rax, qword [r8]
test qword [rax], r9
je 0x140020520
mov rcx, rsi
call fcn.140016830
lea r10, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_encode
movabs r9, 0x4000000000000000
mov r8, qword [rsp + 0x20]
mov rax, qword [rsi + 8]
jmp 0x140020520
mov qword [rsp + 0x28], r15
movabs r9, 0x4000000000000000
xor r15d, r15d
lea r10, [0x140048db0]
xor r14d, r14d
mov r8, qword [rsp + 0x20]
jmp 0x140020736
mov qword [rsp + 0x48], 0x71
and ebp, 0x3f
movzx ecx, byte [rbp + r10]
mov byte [rax + r14 + 0xb], cl
add r14, 4
cmp qword [rsp + 0x30], r15
je 0x140020b1e
mov qword [rsp + 0x48], 0x5e
cmp r15, rdi
jge 0x140020abe
lea rcx, [r15 + 1]
cmp rcx, rdi
jge 0x1400208d4
lea rcx, [r15 + 2]
cmp rcx, rdi
jge 0x1400208d4
movzx r13d, byte [rbx + r15]
movzx r12d, byte [rbx + r15 + 1]
movzx ebp, byte [rbx + r15 + 2]
mov qword [rsp + 0x48], 0x63
mov rdx, qword [rsi]
cmp r14, rdx
jge 0x140020ad8
mov rax, qword [r8]
test qword [rax], r9
je 0x1400207b2
mov rcx, rsi
call fcn.140016830
lea r10, [0x140048db0]
movabs r9, 0x4000000000000000
mov r8, qword [rsp + 0x20]
mov rax, qword [rsi + 8]
mov rcx, r13
shr rcx, 2
movzx ecx, byte [rcx + r10]
mov byte [rax + r14 + 8], cl
lea rcx, [r14 + 1]
mov qword [rsp + 0x48], 0x63
mov rdx, qword [rsi]
cmp rcx, rdx
jge 0x1400208cb
shl r13, 0x10
shl r12, 8
or r13, r12
mov rax, qword [r8]
test qword [rax], r9
je 0x140020811
mov rcx, rsi
call fcn.140016830
lea r10, [0x140048db0]
movabs r9, 0x4000000000000000
mov r8, qword [rsp + 0x20]
mov rax, qword [rsi + 8]
shr r13d, 0xc
and r13d, 0x3f
movzx ecx, byte [r13 + r10]
mov byte [rax + r14 + 9], cl
lea rcx, [r14 + 2]
mov qword [rsp + 0x48], 0x63
mov rdx, qword [rsi]
cmp rcx, rdx
jge 0x1400208cb
mov r12d, r12d
or r12, rbp
mov rax, qword [r8]
test qword [rax], r9
je 0x14002086d
mov rcx, rsi
call fcn.140016830
lea r10, [0x140048db0]
movabs r9, 0x4000000000000000
mov r8, qword [rsp + 0x20]
mov rax, qword [rsi + 8]
shr r12d, 6
and r12d, 0x3f
movzx ecx, byte [r12 + r10]
mov byte [rax + r14 + 0xa], cl
lea rcx, [r14 + 3]
mov qword [rsp + 0x48], 0x63
mov rdx, qword [rsi]
cmp rcx, rdx
jge 0x1400208cb
add r15, 3
mov rax, qword [r8]
test qword [rax], r9
je 0x140020710
mov rcx, rsi
call fcn.140016830
lea r10, [0x140048db0]
movabs r9, 0x4000000000000000
mov r8, qword [rsp + 0x20]
mov rax, qword [rsi + 8]
jmp 0x140020710
add rdx, 0xffffffffffffffff
jmp 0x140020adf
add rdi, 0xffffffffffffffff
jmp 0x140020ac5
mov qword [rsp + 0x48], 0x5e
cmp rcx, rdi
jge 0x140020ab0
lea rax, [rcx + 1]
cmp rax, rdi
jge 0x140020b06
movzx r12d, byte [rbx + rcx]
movzx ebx, byte [rbx + rax]
mov qword [rsp + 0x48], 0x63
mov rdx, qword [rsi]
cmp r14, rdx
jge 0x140020aca
mov rbp, r15
mov rax, qword [r8]
test byte [rax + 7], 0x40
je 0x140020937
mov rcx, rsi
call fcn.140016830
mov r8, qword [rsp + 0x20]
mov rax, qword [rsi + 8]
mov rcx, r12
shr rcx, 2
lea r15, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_encode
jmp 0x1400209af
mov qword [rsp + 0x48], 0x5e
cmp rcx, rdi
jge 0x140020ab0
lea rax, [rcx + 1]
cmp rax, rdi
jge 0x140020b06
movzx r12d, byte [rbx + rcx]
movzx ebx, byte [rbx + rax]
mov qword [rsp + 0x48], 0x63
mov rdx, qword [rsi]
cmp r14, rdx
jge 0x140020aca
mov rbp, r15
mov rax, qword [r8]
test byte [rax + 7], 0x40
je 0x1400209a1
mov rcx, rsi
call fcn.140016830
mov r8, qword [rsp + 0x20]
mov rax, qword [rsi + 8]
mov rcx, r12
shr rcx, 2
lea r15, [0x140048db0]
movzx ecx, byte [rcx + r15]
mov byte [rax + r14 + 8], cl
mov rdi, r14
or rdi, 1
mov qword [rsp + 0x48], 0x63
mov rdx, qword [rsi]
cmp rdi, rdx
jge 0x140020b3b
shl r12, 0x10
mov r13, rbx
shl r13, 8
or r13, r12
movabs r12, 0x4000000000000000
mov rax, qword [r8]
test qword [rax], r12
je 0x140020a06
mov rcx, rsi
call fcn.140016830
mov r8, qword [rsp + 0x20]
mov rax, qword [rsi + 8]
shr r13d, 0xc
and r13d, 0x3f
movzx ecx, byte [r13 + r15]
mov byte [rax + rdi + 8], cl
mov rdi, r14
or rdi, 2
mov qword [rsp + 0x48], 0x63
mov rdx, qword [rsi]
cmp rdi, rdx
jge 0x140020b3b
mov rax, qword [r8]
test qword [rax], r12
je 0x140020a4d
mov rcx, rsi
call fcn.140016830
mov r8, qword [rsp + 0x20]
mov rax, qword [rsi + 8]
and ebx, 0xf
movzx ecx, byte [r15 + rbx*4]
mov byte [rax + rdi + 8], cl
mov rdi, r14
or rdi, 3
mov qword [rsp + 0x48], 0x67
mov rdx, qword [rsi]
cmp rdi, rdx
jge 0x140020b3b
mov rax, qword [r8]
test qword [rax], r12
mov r15, rbp
je 0x140020a8c
mov rcx, rsi
call fcn.140016830
mov rax, qword [rsi + 8]
add rax, rdi
add rax, 8
mov byte [rax], 0x3d
add r14, 4
mov qword [rsp + 0x48], 0x82
mov rcx, rsi
mov rdx, r14
call fcn.140014090
jmp 0x140020ae9
add rdi, 0xffffffffffffffff
mov rdx, rdi
call fcn.140013bf0
jmp 0x140020ae9
add rdi, 0xffffffffffffffff
mov rcx, r15
mov rdx, rdi
jmp 0x140020adf
add rdx, 0xffffffffffffffff
mov rcx, r14
call fcn.140013bf0
jmp 0x140020ae9
add rdx, 0xffffffffffffffff
mov rcx, r14
call fcn.140013bf0
mov r15, qword [rsp + 0x28]
mov rax, qword [r15]
mov rax, qword [rax]
mov qword [r15], rax
mov rax, rsi
add rsp, 0x68
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
add rdi, 0xffffffffffffffff
mov rcx, rax
jmp 0x140020ab4
mov rcx, qword [rsp + 0x30]
mov r15, qword [rsp + 0x28]
jmp 0x1400202b3
mov rcx, qword [rsp + 0x30]
mov r15, qword [rsp + 0x28]
jmp 0x1400203ac
add rdx, 0xffffffffffffffff
mov rcx, rdi
call fcn.140013bf0
jmp 0x140020ae9
add rdx, 0xffffffffffffffff
mov rcx, rdi
call fcn.140013bf0
mov r15, rbp
jmp 0x140020ae9
add rdx, 0xffffffffffffffff
mov rcx, rdi
call fcn.140013bf0
mov r15, r13
jmp 0x140020ae9