Function at 0x40f9e0
Capabilities:
Encode data using base64
Parse credit card information

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x88
xor r12d, r12d
movzx edi, byte [rdx]
mov qword [rsp + 0x38], r8
mov rsi, rcx
mov rbx, rdx
test dil, dil
jne 0x40fa2d
jmp 0x40fa85
mov rdx, rbx
mov r8d, 1
mov rcx, rsi
add rbx, 1
call qword [rsi]
add r12d, eax
movzx edi, byte [rbx]
test dil, dil
je 0x40fa85
movsx edx, dil
lea rcx, str.:___r_n_t___
call sym.strchr
mov r15, rax
test rax, rax
jne 0x40fa10
cmp dil, 0x25
je 0x40faa0
mov rax, qword [rsi]
mov r8d, 1
cmp dil, 0x5f
je 0x40fc40
and edi, 0xffffffdf
sub edi, 0x41
cmp dil, 0x19
jbe 0x40fc40
mov rdx, rbx
add rbx, 1
mov rcx, rsi
call rax
movzx edi, byte [rbx]
add r12d, eax
test dil, dil
jne 0x40fa2d
mov eax, r12d
add rsp, 0x88
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
movzx eax, byte [rbx + 1]
mov rbp, qword [rsp + 0x38]
cmp al, 0x6c
je 0x40fdc8
cmp al, 0x7a
je 0x40fca8
cmp al, 0x4d
je 0x40fda0
cmp al, 0x42
je 0x40ff59
cmp al, 0x48
je 0x40fe66
cmp al, 0x56
jne 0x40ffe4
mov r14, qword [rbp]
lea rax, [rbp + 0x10]
mov ebp, dword [rbp + 8]
mov rcx, rsi
mov qword [rsp + 0x38], rax
mov r8d, 1
lea rdx, [0x004330f7]
call qword [rsi]
add r12d, eax
test ebp, ebp
jle 0x40fee3
xor r15d, r15d
xor edi, edi
lea r13, [rsp + 0x60]
jmp 0x40fc17
movzx ecx, byte [r14 + r15 + 1]
mov r11d, ecx
shl ecx, 2
sar r11d, 4
and ecx, 0x3c
add r9d, 2
xor r8d, r8d
cmp ebp, r9d
jle 0x40fb49
movzx eax, byte [r14 + r15 + 2]
mov r8d, eax
sar eax, 6
or ecx, eax
and r8d, 0x3f
mov eax, edx
sar eax, 2
cmp edx, 0x67
jbe 0x40ff18
cmp eax, 0x33
jle 0x40ff51
cmp eax, 0x3d
jg 0x40ffae
sub eax, 4
mov byte [rsp + 0x60], al
mov eax, edx
shl eax, 4
and eax, 0x30
or eax, r11d
cmp eax, 0x19
jle 0x40ff30
cmp eax, 0x33
jle 0x40ff40
cmp eax, 0x3d
jg 0x40ffd2
sub eax, 4
mov byte [rsp + 0x61], al
cmp ecx, 0x19
jle 0x40ff20
cmp ecx, 0x33
jle 0x40ff38
cmp ecx, 0x3d
jg 0x40ffc0
sub ecx, 4
mov byte [rsp + 0x62], cl
cmp r8d, 0x19
jle 0x40ff08
cmp r8d, 0x33
jle 0x40ff48
cmp r8d, 0x3d
jg 0x40ff99
sub r8d, 4
mov byte [rsp + 0x63], r8b
cmp ebp, r10d
jg 0x40fbf0
mov byte [rsp + 0x62], 0x3d
cmp ebp, r9d
jg 0x40fbfa
mov byte [rsp + 0x63], 0x3d
mov r8d, 4
mov rdx, r13
mov rcx, rsi
add r15, 3
call qword [rsi]
add edi, eax
cmp ebp, r15d
jle 0x410057
lea r10d, [r15 + 1]
movzx edx, byte [r14 + r15]
mov r9d, r15d
cmp ebp, r10d
jg 0x40fb18
xor ecx, ecx
xor r11d, r11d
jmp 0x40fb2b
lea rdx, [0x004330f7]
mov rcx, rsi
call rax
add r12d, eax
jmp 0x40fc6d
mov rdx, rbx
mov r8d, 1
mov rcx, rsi
add rbx, 1
call qword [rsi]
add r12d, eax
movsx eax, byte [rbx]
cmp al, 0x5f
je 0x40fc58
mov edx, eax
and edx, 0xffffffdf
sub edx, 0x41
cmp dl, 0x19
jbe 0x40fc58
sub eax, 0x30
cmp eax, 9
jbe 0x40fc58
mov r8d, 1
lea rdx, [0x004330f7]
mov rcx, rsi
call qword [rsi]
add r12d, eax
jmp 0x40fa25
cmp byte [rbx + 2], 0x75
je 0x41005f
lea rcx, [rbx + 1]
lea rdx, str.sdfFeEgGlhuIcx._0123456789
call sym.strspn
lea r14, [rsp + 0x40]
mov rdx, rbx
lea r13, [rsp + 0x60]
movsxd r8, eax
mov qword [rsp + 0x20], rax
mov rdi, rax
mov rcx, r14
add r8, 1
cmp eax, 0x14
lea edi, [rdi + 1]
mov eax, 0x14
cmovge r8, rax
movsxd rdi, edi
call sym.strncpy
mov r9, rbp
mov r8, r14
mov edx, 0x15
mov rcx, r13
mov byte [rsp + rdi + 0x40], 0
call sym.cs_win_vsnprintf
test eax, eax
js 0x4100d6
mov rbp, qword [rsp + 0x38]
mov r15, r13
cmp eax, 0x14
jg 0x4101b0
cmp dword [rsp + 0x20], 4
je 0x410184
cmp dword [r14], 0x732a2e25
je 0x4101e8
lea r9, [rbp + 8]
mov qword [rsp + 0x38], r9
mov r8, r15
mov edx, dword [r8]
add r8, 4
lea eax, [rdx - 0x1010101]
not edx
and eax, edx
and eax, 0x80808080
je 0x40fd4d
mov edx, eax
shr edx, 0x10
test eax, 0x8080
cmove eax, edx
lea rdx, [r8 + 2]
cmove r8, rdx
mov rdx, r15
mov ecx, eax
add cl, al
mov rcx, rsi
sbb r8, 3
sub r8, r15
call qword [rsi]
add r12d, eax
cmp r15, r13
je 0x40fdbc
mov rcx, r15
call sym.free
jmp 0x40fdbc
lea rax, [rbp + 8]
lea rdx, [rsp + 0x38]
mov rcx, rsi
mov edi, 2
mov qword [rsp + 0x38], rax
call qword [rbp]
add r12d, eax
add rbx, rdi
jmp 0x40fa25
cmp byte [rbx + 2], 0x6c
jne 0x40fcb2
movzx eax, byte [rbx + 3]
cmp al, 0x64
je 0x40fde2
cmp al, 0x75
jne 0x40fcb2
cmp al, 0x75
lea rdx, [rbp + 8]
lea r13, [rsp + 0x60]
mov r9, qword [rbp]
lea rax, str._I64d
lea r8, str._I64u
mov qword [rsp + 0x38], rdx
mov rcx, r13
cmovne r8, rax
mov edx, 0x15
call sym.cs_win_snprintf
mov r8, r13
mov edx, dword [r8]
add r8, 4
lea eax, [rdx - 0x1010101]
not edx
and eax, edx
and eax, 0x80808080
je 0x40fe18
mov edx, eax
mov rcx, rsi
shr edx, 0x10
test eax, 0x8080
cmove eax, edx
lea rdx, [r8 + 2]
cmove r8, rdx
mov rdx, r13
mov edi, eax
add dil, al
mov edi, 4
sbb r8, 3
sub r8, r13
call qword [rsi]
add r12d, eax
jmp 0x40fdbc
mov edi, dword [rbp]
lea rax, [rbp + 0x10]
mov r8d, 1
mov rcx, rsi
mov qword [rsp + 0x38], rax
mov rbp, qword [rbp + 8]
lea rdx, [0x004330f7]
call qword [rsi]
add r12d, eax
test edi, edi
jle 0x40fee3
lea eax, [rdi - 1]
lea rdi, [rbp + rax + 1]
nop word [rax + rax]
movzx edx, byte [rbp]
mov r8d, 1
mov rcx, rsi
add rbp, 1
lea r14, str.0123456789abcdef
shr dl, 4
movzx edx, dl
add rdx, r14
call qword [rsi]
movzx edx, byte [rbp - 1]
mov r8d, 1
mov rcx, rsi
add r12d, eax
and edx, 0xf
add rdx, r14
call qword [rsi]
add r12d, eax
cmp rbp, rdi
jne 0x40fea0
mov r8d, 1
lea rdx, [0x004330f7]
mov rcx, rsi
mov edi, 2
call qword [rsi]
add r12d, eax
jmp 0x40fdbc
add r8d, 0x41
jmp 0x40fbe1
add eax, 0x41
jmp 0x40fb6c
add ecx, 0x41
jmp 0x40fbbb
add eax, 0x41
jmp 0x40fb99
add ecx, 0x47
jmp 0x40fbbb
add eax, 0x47
jmp 0x40fb99
add r8d, 0x47
jmp 0x40fbe1
add eax, 0x47
jmp 0x40fb6c
mov edx, dword [rbp]
cmp dword [rbp], 1
lea rax, [rbp + 8]
mov edi, 2
mov qword [rsp + 0x38], rax
sbb rax, rax
lea rcx, str.false
test edx, edx
not rax
lea rdx, str.true
cmove rdx, rcx
lea r8, [rax + 5]
mov rcx, rsi
call qword [rsi]
add r12d, eax
jmp 0x40fdbc
cmp r8d, 0x3e
setne r8b
lea r8d, [r8*4 + 0x2b]
jmp 0x40fbe1
cmp eax, 0x3e
setne al
lea eax, [rax*4 + 0x2b]
jmp 0x40fb6c
cmp ecx, 0x3e
setne cl
lea ecx, [rcx*4 + 0x2b]
jmp 0x40fbbb
cmp eax, 0x3e
setne al
lea eax, [rax*4 + 0x2b]
jmp 0x40fb99
cmp al, 0x51
jne 0x410146
lea rax, [rbp + 8]
mov edi, 2
mov qword [rsp + 0x38], rax
mov r13, qword [rbp]
test r13, r13
je 0x41012c
mov rcx, r13
mov edi, 2
call sym.strlen
mov rbp, rax
mov r8d, 1
lea rdx, [0x004330f7]
mov rcx, rsi
call qword [rsi]
mov r8, rbp
mov rdx, r13
mov rcx, rsi
add r12d, eax
call sym.json_escape
mov r8d, 1
lea rdx, [0x004330f7]
mov rcx, rsi
add r12d, eax
call qword [rsi]
add r12d, eax
jmp 0x40fdbc
add r12d, edi
jmp 0x40fee3
lea r13, [rsp + 0x60]
mov r9d, dword [rbp]
lea rax, [rbp + 8]
mov edx, 0x15
lea r8, [0x004335b8]
mov rcx, r13
mov qword [rsp + 0x38], rax
call sym.cs_win_snprintf
mov r8, r13
mov edx, dword [r8]
add r8, 4
lea eax, [rdx - 0x1010101]
not edx
and eax, edx
and eax, 0x80808080
je 0x410088
mov edx, eax
mov rcx, rsi
shr edx, 0x10
test eax, 0x8080
cmove eax, edx
lea rdx, [r8 + 2]
cmove r8, rdx
mov rdx, r13
mov edi, eax
add dil, al
mov edi, 3
sbb r8, 3
sub r8, r13
call qword [rsi]
add r12d, eax
jmp 0x40fdbc
mov dword [rsp + 0x28], r12d
mov ebp, 0x15
add ebp, ebp
mov rcx, r15
call sym.free
movsxd r12, ebp
mov rcx, r12
call sym.malloc
mov r9, qword [rsp + 0x38]
mov r15, rax
test rax, rax
je 0x41020e
mov r8, r14
mov rdx, r12
mov rcx, rax
call sym.cs_win_vsnprintf
test eax, eax
js 0x4100e0
mov r12d, dword [rsp + 0x28]
mov rbp, qword [rsp + 0x38]
jmp 0x40fd29
mov edi, 4
mov r8d, 4
lea rdx, str.null
mov rcx, rsi
call qword [rsi]
add r12d, eax
jmp 0x40fdbc
cmp al, 0x2e
jne 0x40fcb2
cmp byte [rbx + 2], 0x2a
jne 0x40fcb2
cmp byte [rbx + 3], 0x51
jne 0x40fcb2
mov r13, qword [rbp + 8]
lea rdx, [rbp + 0x10]
mov eax, dword [rbp]
mov qword [rsp + 0x38], rdx
test r13, r13
je 0x410127
movsxd rbp, eax
mov edi, 4
jmp 0x410017
cmp dword [r14], 0x34364925
je 0x410201
cmp dword [r14], 0x34364925
jne 0x40fd34
cmp word [r14 + 4], 0x75
jne 0x40fd34
jmp 0x40fd41
add eax, 1
movsxd rdx, eax
mov rcx, rdx
mov qword [rsp + 0x28], rdx
call sym.malloc
mov rdx, qword [rsp + 0x28]
test rax, rax
mov r15, rax
je 0x410223
mov r9, rbp
mov r8, r14
mov rcx, rax
call sym.cs_win_vsnprintf
mov rbp, qword [rsp + 0x38]
jmp 0x40fd29
cmp byte [r14 + 4], 0
jne 0x40fd41
lea r9, [rbp + 0x10]
mov qword [rsp + 0x38], r9
jmp 0x40fd4a
cmp word [r14 + 4], 0x64
jne 0x41018d
jmp 0x40fd41
mov r12d, dword [rsp + 0x28]
mov byte [rsp + 0x60], 0
mov rbp, r9
mov r15, r13
jmp 0x40fd29
mov r9, qword [rsp + 0x38]
jmp 0x410213