Function at 0x14001ce2c
Capabilities:
Encode data using base64
Get disk size
Validate payment card number using luhn algorithm

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rbp
push rsi
push rdi
push r14
sub rsp, 0x30
mov r10d, dword [0x1401a3d80]
mov rbx, rdx
mov r14, r9
lea eax, [r10 + 1]
lea r11d, [r10 + 2]
mov rsi, r8
mov rdi, rcx
imul r11d, eax
mov eax, 0x66666667
imul r11d, r10d
imul r11d
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [rdx + rdx*4]
add eax, eax
sub r11d, eax
cmp r11d, 7
jne 0x14001ce95
lea ecx, [r11 - 3]
call fcn.1400bb888
mov rcx, rax
mov eax, dword [0x1401a3d80]
mov dword [rcx], eax
mov rcx, rbx
call fcn.14001cd5c
mov rbp, rax
test rdi, rdi
je 0x14001d0b7
test rsi, rsi
je 0x14001d0b7
cmp rax, r14
ja 0x14001d0b7
xor edx, edx
lea r10, [0x140000000]
test rbx, rbx
je 0x14001cf67
mov r8, rsi
cmp rdx, rbx
jae 0x14001cede
movzx eax, byte [rdx + rdi]
inc rdx
jmp 0x14001cee0
xor eax, eax
cmp rdx, rbx
jae 0x14001ceef
movzx r9d, byte [rdx + rdi]
inc rdx
jmp 0x14001cef2
xor r9d, r9d
cmp rdx, rbx
jae 0x14001cf00
movzx ecx, byte [rdx + rdi]
inc rdx
jmp 0x14001cf02
xor ecx, ecx
shl eax, 8
add eax, r9d
shl eax, 8
add eax, ecx
mov ecx, eax
shr rax, 0x12
and eax, 0x3f
mov al, byte [rax + r10 + 0x19ed50]
mov byte [r8], al
mov eax, ecx
add r8, 4
shr rax, 0xc
and eax, 0x3f
mov al, byte [rax + r10 + 0x19ed50]
mov byte [r8 - 3], al
mov eax, ecx
and ecx, 0x3f
shr rax, 6
and eax, 0x3f
mov al, byte [rax + r10 + 0x19ed50]
mov byte [r8 - 2], al
mov al, byte [rcx + r10 + 0x19ed50]
mov byte [r8 - 1], al
cmp rdx, rbx
jb 0x14001ced5
movabs rax, 0xaaaaaaaaaaaaaaab
xor ecx, ecx
mul rbx
shr rdx, 1
lea rax, [rdx + rdx*2]
sub rbx, rax
cmp dword [r10 + rbx*4 + 0x134500], ecx
jle 0x14001cfa3
lea rax, [rsi - 1]
add rax, rbp
mov byte [rax], 0x3d
inc ecx
dec rax
cmp ecx, dword [r10 + rbx*4 + 0x134500]
jl 0x14001cf91
mov r8d, dword [0x1401a3d80]
lea eax, [r8 + 1]
lea ecx, [r8 + 2]
imul ecx, eax
mov eax, 0x2aaaaaab
imul ecx, r8d
imul ecx
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [rdx + rdx*2]
add eax, eax
sub ecx, eax
cmp ecx, 3
jne 0x14001d021
mov eax, dword [str.m2eQ0]
or r8, 0xffffffffffffffff
lea rdx, [rsp + 0x50]
mov dword [rsp + 0x50], eax
movzx eax, word [0x140134510]
mov rcx, r8
mov word [rsp + 0x54], ax
inc rcx
cmp byte [rdx + rcx], 0
jne 0x14001cff5
mov eax, 4
mul rcx
cmovo rax, r8
mov rcx, rax
call fcn.1400ba748
mov rcx, rax
call fcn.1400bc20c
mov r8d, dword [0x1401a3d80]
mov rax, qword [rsp + 0x70]
mov ecx, r8d
mov qword [rax], rbp
mov eax, 0x6bca1af3
imul ecx, r8d
imul ecx, r8d
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add edx, eax
imul edx, edx, 0x13
sub ecx, edx
cmp ecx, 6
jne 0x14001d0b3
lea r9d, [r8 + 1]
imul r9d, r8d
mov r8d, 0x2e8ba2e9
mov eax, r8d
imul r9d
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov ecx, r9d
imul edx, edx, 0xb
sub ecx, edx
cmp ecx, 3
je 0x14001d0ab
mov eax, r8d
imul r9d
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
imul edx, edx, 0x16
sub r9d, edx
cmp r9d, 9
jne 0x14001d0ab
and qword [rsp + 0x20], 0
xor r9d, r9d
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceW]
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetFileType]
mov al, 1
jmp 0x14001d0b9
xor al, al
mov rbx, qword [rsp + 0x58]
mov rbp, qword [rsp + 0x60]
add rsp, 0x30
pop r14
pop rdi
pop rsi
ret