Function at 0x18002fa00
Capabilities:
Parse credit card information

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
mov qword [rsp + 0x20], rdi
push r12
push r14
push r15
sub rsp, 0x20
mov rbx, qword [rcx + 0x40]
xor r12d, r12d
movzx esi, byte [rdx]
mov r14, rdx
mov rbp, rcx
mov edi, r12d
movsx r8d, byte [rbx + 0x3cd]
test r8d, r8d
je 0x18002fb60
sub r8d, 1
je 0x18002fb3a
cmp r8d, 1
jne 0x18002fa94
movzx ecx, sil
call fcn.18002c9d0
test al, al
js 0x18002fc25
movzx ecx, byte [rbx + 0x3ce]
call fcn.18002c9d0
movzx edi, al
movzx ecx, sil
shl dil, 4
call fcn.18002c9d0
movzx esi, al
or sil, dil
lea edi, [r12 + 1]
mov byte [r14], sil
mov byte [rbx + 0x3cd], r12b
test sil, sil
jne 0x18002fab3
cmp byte [rbx + 0x374], r12b
je 0x18002fdc1
cmp byte [rbx + 0x3cf], r12b
je 0x18002fdc1
movsx ecx, byte [rbx + 0x3cc]
mov r15d, 0xffff
test ecx, ecx
je 0x18002fca5
sub ecx, 1
je 0x18002fc78
sub ecx, 1
je 0x18002fc2f
cmp ecx, 1
jne 0x18002fbf9
lea eax, [rsi - 0x2f]
test al, 0xef
je 0x18002fb78
mov dl, 0x2e
mov rcx, rbp
call fcn.18002eca0
test eax, eax
js 0x18002fdc1
mov dl, 0x2e
mov rcx, rbp
call fcn.18002eca0
test eax, eax
js 0x18002fdc1
mov byte [rbx + 0x3cc], r12b
xor eax, eax
mov rbx, qword [rsp + 0x40]
mov rbp, qword [rsp + 0x48]
mov rsi, qword [rsp + 0x50]
mov rdi, qword [rsp + 0x58]
add rsp, 0x20
pop r15
pop r14
pop r12
ret
movzx ecx, sil
call fcn.18002c9d0
test al, al
js 0x18002fc25
mov byte [rbx + 0x3ce], sil
mov eax, 1
mov byte [rbx + 0x3cd], 2
jmp 0x18002fb1b
cmp sil, 0x25
jne 0x18002fa94
mov byte [rbx + 0x3cd], 1
mov eax, 1
jmp 0x18002fb1b
movzx r8d, byte [rbx + 0x3cb]
cmp word [rbx + r8*8 + 0x20], 2
lea rcx, [rbx + r8*8]
jbe 0x18002fbe2
dec dword [rbx + 0x3ac]
add word [rcx + 0x20], r15w
movzx edx, byte [rbx + 0x3cb]
add rdx, 4
lea rdx, [rbx + rdx*8]
nop word [rax + rax]
dec dword [rbx + 0x3ac]
add word [rdx], r15w
lea rdx, [rbx + 0x20]
movzx r8d, byte [rbx + 0x3cb]
cmp word [rdx + r8*8], 1
lea rdx, [rdx + r8*8]
jbe 0x18002fbe2
mov ecx, dword [rbx + 0x3ac]
mov rax, qword [rbx + 0x10]
cmp byte [rcx + rax], 0x2f
jne 0x18002fbb0
movzx eax, r8b
mov byte [rbx + 0x3cc], 1
cmp word [rbx + rax*8 + 0x20], 1
jbe 0x18002fe40
cmp sil, 0x3f
jne 0x18002fb19
test edi, edi
jne 0x18002fb19
cmp byte [rbx + 0x374], r12b
jne 0x18002fb19
cmp byte [rbx + 0x3cd], r12b
je 0x18002fdb3
mov eax, 2
jmp 0x18002fb1b
cmp sil, 0x2e
jne 0x18002fc46
mov byte [rbx + 0x3cc], 3
mov eax, 1
jmp 0x18002fb1b
cmp sil, 0x2f
jne 0x18002fc5d
mov byte [rbx + 0x3cc], 1
mov eax, 1
jmp 0x18002fb1b
mov dl, 0x2e
mov byte [rbx + 0x3cc], r12b
mov rcx, rbp
call fcn.18002eca0
test eax, eax
js 0x18002fdc1
jmp 0x18002fbf9
cmp sil, 0x2f
je 0x18002fe40
cmp sil, 0x2e
jne 0x18002fc99
mov byte [rbx + 0x3cc], 2
mov eax, 1
jmp 0x18002fb1b
mov byte [rbx + 0x3cc], r12b
jmp 0x18002fbf9
cmp sil, 0x26
je 0x18002fcb5
cmp sil, 0x3b
jne 0x18002fd40
test edi, edi
jne 0x18002fd40
xor edx, edx
mov rcx, rbp
call fcn.18002eca0
test eax, eax
js 0x18002fdc1
mov rcx, qword [rbp + 0x40]
movzx eax, byte [rcx + 0x3cb]
add word [rcx + rax*8 + 0x20], r15w
movzx ecx, byte [rbx + 0x3cb]
lea eax, [rcx + 1]
mov byte [rbx + rcx*8 + 0x22], al
movzx eax, byte [rbx + 0x3cb]
inc al
mov byte [rbx + 0x3cb], al
cmp al, 0x60
jae 0x18002fdef
inc dword [rbx + 0x3ac]
mov ecx, dword [rbx + 0x3ac]
movzx eax, al
mov byte [rbx + 0x3cf], r12b
mov dword [rbx + rax*8 + 0x1c], ecx
movzx eax, byte [rbx + 0x3cb]
mov word [rbx + rax*8 + 0x20], r12w
movzx eax, byte [rbx + 0x3cb]
mov byte [rbx + rax*8 + 0x22], r12b
lea eax, [rdi + 1]
jmp 0x18002fb1b
cmp sil, 0x3d
jne 0x18002fd79
test edi, edi
je 0x18002fd6d
cmp byte [rbx + 0x374], r12b
je 0x18002fb19
cmp byte [rbx + 0x3cf], r12b
jne 0x18002fb19
mov byte [r14], 0x5f
jmp 0x18002fb19
mov byte [rbx + 0x3cf], 1
jmp 0x18002fb19
cmp sil, 0x2b
jne 0x18002fd90
test edi, edi
jne 0x18002fb19
mov byte [r14], 0x20
jmp 0x18002fb19
cmp sil, 0x2f
jne 0x18002fbf9
cmp byte [rbx + 0x374], r12b
jne 0x18002fb19
mov byte [rbx + 0x3cc], 1
jmp 0x18002fb19
xor edx, edx
mov rcx, rbp
call fcn.18002eca0
test eax, eax
jns 0x18002fdcb
mov eax, 0xffffffff
jmp 0x18002fb1b
mov rcx, qword [rbp + 0x40]
movzx eax, byte [rcx + 0x3cb]
add word [rcx + rax*8 + 0x20], r15w
movzx eax, byte [rbx + 0x3cb]
inc al
mov byte [rbx + 0x3cb], al
cmp al, 0x60
jb 0x18002fdf9
mov eax, 3
jmp 0x18002fb1b
inc dword [rbx + 0x3ac]
mov edx, dword [rbx + 0x3ac]
movzx ecx, al
mov dword [rbx + rcx*8 + 0x1c], edx
movzx ecx, byte [rbx + 0x3cb]
mov word [rbx + rcx*8 + 0x20], r12w
movzx ecx, byte [rbx + 0x3cb]
mov byte [rbx + rcx*8 + 0x22], r12b
movzx ecx, byte [rbx + 0x3cb]
mov byte [rbx + 0x374], cl
mov byte [rbx + 0x3cf], r12b
mov byte [rbx + 0x3cc], r12b
mov eax, 1
jmp 0x18002fb1b