Function at 0x40fc80
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 0x40fccd
jmp 0x40fd25
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 0x40fd25
movsx edx, dil
lea rcx, str.:___r_n_t___
call sym.strchr
mov r15, rax
test rax, rax
jne 0x40fcb0
cmp dil, 0x25
je 0x40fd40
mov rax, qword [rsi]
mov r8d, 1
cmp dil, 0x5f
je 0x40fee0
and edi, 0xffffffdf
sub edi, 0x41
cmp dil, 0x19
jbe 0x40fee0
mov rdx, rbx
add rbx, 1
mov rcx, rsi
call rax
movzx edi, byte [rbx]
add r12d, eax
test dil, dil
jne 0x40fccd
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 0x410068
cmp al, 0x7a
je 0x40ff48
cmp al, 0x4d
je 0x410040
cmp al, 0x42
je 0x4101f9
cmp al, 0x48
je 0x410106
cmp al, 0x56
jne 0x410284
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, [0x004330e7]
call qword [rsi]
add r12d, eax
test ebp, ebp
jle 0x410183
xor r15d, r15d
xor edi, edi
lea r13, [rsp + 0x60]
jmp 0x40feb7
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 0x40fde9
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 0x4101b8
cmp eax, 0x33
jle 0x4101f1
cmp eax, 0x3d
jg 0x41024e
sub eax, 4
mov byte [rsp + 0x60], al
mov eax, edx
shl eax, 4
and eax, 0x30
or eax, r11d
cmp eax, 0x19
jle 0x4101d0
cmp eax, 0x33
jle 0x4101e0
cmp eax, 0x3d
jg 0x410272
sub eax, 4
mov byte [rsp + 0x61], al
cmp ecx, 0x19
jle 0x4101c0
cmp ecx, 0x33
jle 0x4101d8
cmp ecx, 0x3d
jg 0x410260
sub ecx, 4
mov byte [rsp + 0x62], cl
cmp r8d, 0x19
jle 0x4101a8
cmp r8d, 0x33
jle 0x4101e8
cmp r8d, 0x3d
jg 0x410239
sub r8d, 4
mov byte [rsp + 0x63], r8b
cmp ebp, r10d
jg 0x40fe90
mov byte [rsp + 0x62], 0x3d
cmp ebp, r9d
jg 0x40fe9a
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 0x4102f7
lea r10d, [r15 + 1]
movzx edx, byte [r14 + r15]
mov r9d, r15d
cmp ebp, r10d
jg 0x40fdb8
xor ecx, ecx
xor r11d, r11d
jmp 0x40fdcb
lea rdx, [0x004330e7]
mov rcx, rsi
call rax
add r12d, eax
jmp 0x40ff0d
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 0x40fef8
mov edx, eax
and edx, 0xffffffdf
sub edx, 0x41
cmp dl, 0x19
jbe 0x40fef8
sub eax, 0x30
cmp eax, 9
jbe 0x40fef8
mov r8d, 1
lea rdx, [0x004330e7]
mov rcx, rsi
call qword [rsi]
add r12d, eax
jmp 0x40fcc5
cmp byte [rbx + 2], 0x75
je 0x4102ff
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 0x410376
mov rbp, qword [rsp + 0x38]
mov r15, r13
cmp eax, 0x14
jg 0x410450
cmp dword [rsp + 0x20], 4
je 0x410424
cmp dword [r14], 0x732a2e25
je 0x410488
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 0x40ffed
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 0x41005c
mov rcx, r15
call sym.free
jmp 0x41005c
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 0x40fcc5
cmp byte [rbx + 2], 0x6c
jne 0x40ff52
movzx eax, byte [rbx + 3]
cmp al, 0x64
je 0x410082
cmp al, 0x75
jne 0x40ff52
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 0x4100b8
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 0x41005c
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, [0x004330e7]
call qword [rsi]
add r12d, eax
test edi, edi
jle 0x410183
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 0x410140
mov r8d, 1
lea rdx, [0x004330e7]
mov rcx, rsi
mov edi, 2
call qword [rsi]
add r12d, eax
jmp 0x41005c
add r8d, 0x41
jmp 0x40fe81
add eax, 0x41
jmp 0x40fe0c
add ecx, 0x41
jmp 0x40fe5b
add eax, 0x41
jmp 0x40fe39
add ecx, 0x47
jmp 0x40fe5b
add eax, 0x47
jmp 0x40fe39
add r8d, 0x47
jmp 0x40fe81
add eax, 0x47
jmp 0x40fe0c
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 0x41005c
cmp r8d, 0x3e
setne r8b
lea r8d, [r8*4 + 0x2b]
jmp 0x40fe81
cmp eax, 0x3e
setne al
lea eax, [rax*4 + 0x2b]
jmp 0x40fe0c
cmp ecx, 0x3e
setne cl
lea ecx, [rcx*4 + 0x2b]
jmp 0x40fe5b
cmp eax, 0x3e
setne al
lea eax, [rax*4 + 0x2b]
jmp 0x40fe39
cmp al, 0x51
jne 0x4103e6
lea rax, [rbp + 8]
mov edi, 2
mov qword [rsp + 0x38], rax
mov r13, qword [rbp]
test r13, r13
je 0x4103cc
mov rcx, r13
mov edi, 2
call sym.strlen
mov rbp, rax
mov r8d, 1
lea rdx, [0x004330e7]
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, [0x004330e7]
mov rcx, rsi
add r12d, eax
call qword [rsi]
add r12d, eax
jmp 0x41005c
add r12d, edi
jmp 0x410183
lea r13, [rsp + 0x60]
mov r9d, dword [rbp]
lea rax, [rbp + 8]
mov edx, 0x15
lea r8, [0x004335a8]
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 0x410328
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 0x41005c
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 0x4104ae
mov r8, r14
mov rdx, r12
mov rcx, rax
call sym.cs_win_vsnprintf
test eax, eax
js 0x410380
mov r12d, dword [rsp + 0x28]
mov rbp, qword [rsp + 0x38]
jmp 0x40ffc9
mov edi, 4
mov r8d, 4
lea rdx, str.null
mov rcx, rsi
call qword [rsi]
add r12d, eax
jmp 0x41005c
cmp al, 0x2e
jne 0x40ff52
cmp byte [rbx + 2], 0x2a
jne 0x40ff52
cmp byte [rbx + 3], 0x51
jne 0x40ff52
mov r13, qword [rbp + 8]
lea rdx, [rbp + 0x10]
mov eax, dword [rbp]
mov qword [rsp + 0x38], rdx
test r13, r13
je 0x4103c7
movsxd rbp, eax
mov edi, 4
jmp 0x4102b7
cmp dword [r14], 0x34364925
je 0x4104a1
cmp dword [r14], 0x34364925
jne 0x40ffd4
cmp word [r14 + 4], 0x75
jne 0x40ffd4
jmp 0x40ffe1
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 0x4104c3
mov r9, rbp
mov r8, r14
mov rcx, rax
call sym.cs_win_vsnprintf
mov rbp, qword [rsp + 0x38]
jmp 0x40ffc9
cmp byte [r14 + 4], 0
jne 0x40ffe1
lea r9, [rbp + 0x10]
mov qword [rsp + 0x38], r9
jmp 0x40ffea
cmp word [r14 + 4], 0x64
jne 0x41042d
jmp 0x40ffe1
mov r12d, dword [rsp + 0x28]
mov byte [rsp + 0x60], 0
mov rbp, r9
mov r15, r13
jmp 0x40ffc9
mov r9, qword [rsp + 0x38]
jmp 0x4104b3