Function at 0x14012a15c
Capabilities:
Parse credit card information

Disassembly:
mov rax, rsp
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rsi
mov qword [rax + 0x18], rdi
push rbp
push r14
push r15
lea rbp, [rax - 0x148]
sub rsp, 0x230
mov rax, qword [0x1401c2940]
xor r15d, r15d
mov r14, r8
mov qword [rsp + 0x20], r15
mov rdi, rcx
mov dword [rsp + 0x28], r15d
mov r8b, 0x41
mov qword [rsp + 0x50], r15
mov cl, byte [rax]
lea rsi, [rax + 1]
mov dword [rsp + 0x58], r15d
mov ebx, r15d
mov qword [0x1401c2940], rsi
cmp cl, r8b
jg 0x14012a3e8
je 0x14012a919
test cl, cl
je 0x14012a3ca
cmp cl, 0x2f
jle 0x14012a4fd
cmp cl, 0x31
jle 0x14012a28e
cmp cl, 0x39
jg 0x14012a4fd
movsx eax, byte [rsi - 1]
sub eax, 0x32
movsxd rdx, eax
lea rcx, [rsp + 0x20]
shl rdx, 4
lea rax, str._new
add rdx, rax
call fcn.140126570
cmp qword [rsp + 0x20], r15
je 0x14012a25f
lea rax, str.operator
mov dword [rsp + 0x48], 8
mov qword [rsp + 0x40], rax
lea rdx, [rbp + 0x20]
movaps xmm0, xmmword [rsp + 0x40]
lea rcx, [rbp + 0x120]
movdqa xmmword [rbp + 0x20], xmm0
call fcn.140126298
lea r8, [rsp + 0x20]
mov rcx, rax
lea rdx, [rbp - 0x20]
call fcn.14012660c
mov rax, qword [rbp - 0x20]
mov qword [rsp + 0x20], rax
mov eax, dword [rbp - 0x18]
mov dword [rsp + 0x28], eax
mov rax, qword [rsp + 0x20]
mov qword [rdi], rax
mov eax, dword [rsp + 0x28]
mov dword [rdi + 8], eax
lea r11, [rsp + 0x230]
mov rax, rdi
mov rbx, qword [r11 + 0x20]
mov rsi, qword [r11 + 0x28]
mov rdi, qword [r11 + 0x30]
mov rsp, r11
pop r15
pop r14
pop rbp
ret
mov qword [rsp + 0x30], rbx
mov dword [rsp + 0x38], r15d
test dl, dl
je 0x14012a349
lea rcx, [rbp + 0x30]
call fcn.14012ba68
mov dl, 0x3c
mov qword [rbp - 0x80], r15
lea rcx, [rbp - 0x80]
mov dword [rbp - 0x78], r15d
mov rbx, rax
call fcn.1401277fc
mov r8, rbx
lea rdx, [rbp - 0x10]
lea rcx, [rbp - 0x80]
call fcn.14012660c
lea rdx, [rbp - 0x10]
lea rcx, [rsp + 0x30]
call fcn.14012670c
mov rcx, qword [rsp + 0x30]
test rcx, rcx
je 0x14012a304
mov rax, qword [rcx]
mov rax, qword [rax + 8]
call qword [case.0x1400f18f9.0]
cmp al, 0x3e
jne 0x14012a304
mov dl, 0x20
lea rcx, [rsp + 0x30]
call fcn.140126750
mov dl, 0x3e
lea rcx, [rsp + 0x30]
call fcn.140126750
mov ebx, 1
test r14, r14
je 0x14012a31d
mov byte [r14], bl
mov rsi, qword [0x1401c2940]
cmp byte [rsi], r15b
jne 0x14012a33a
mov rax, qword [rsp + 0x30]
mov qword [rdi], rax
mov eax, dword [rsp + 0x38]
jmp 0x14012a26b
add rsi, rbx
mov rbx, qword [rsp + 0x30]
mov qword [0x1401c2940], rsi
xor r8d, r8d
lea rcx, [rbp + 0x40]
xor edx, edx
call fcn.14012cb40
mov rcx, qword [rax]
mov eax, dword [rax + 8]
mov qword [rsp + 0x20], rcx
mov dword [rsp + 0x28], eax
mov qword [0x1401c2940], rsi
test rcx, rcx
je 0x14012a3ad
cmp byte [rsi - 1], 0x31
jne 0x14012a3ad
mov dl, 0x7e
mov qword [rbp - 0x70], r15
lea rcx, [rbp - 0x70]
mov dword [rbp - 0x68], r15d
call fcn.1401277fc
lea r8, [rsp + 0x20]
lea rdx, [rbp - 0x50]
lea rcx, [rbp - 0x70]
call fcn.14012660c
mov rax, qword [rbp - 0x50]
mov qword [rsp + 0x20], rax
mov eax, dword [rbp - 0x48]
mov dword [rsp + 0x28], eax
test rbx, rbx
je 0x14012a25f
lea rdx, [rsp + 0x30]
lea rcx, [rsp + 0x20]
call fcn.14012670c
jmp 0x14012a25f
lea rax, [rsi - 1]
mov qword [0x1401c2940], rax
lea rax, [0x140173690]
mov qword [rdi], rax
mov dword [rdi + 8], r15d
jmp 0x14012a26e
cmp cl, 0x42
je 0x14012a914
jle 0x14012a4fd
cmp cl, 0x5a
jle 0x14012a919
cmp cl, 0x5f
jne 0x14012a4fd
movsx ecx, byte [rsi]
inc rsi
mov qword [0x1401c2940], rsi
cmp ecx, 0x4f
jg 0x14012a530
cmp ecx, 0x44
jge 0x14012a8fc
cmp ecx, 0x39
jg 0x14012a4b6
je 0x14012a47f
test ecx, ecx
je 0x14012a3ca
cmp ecx, 0x2f
jle 0x14012a4fd
cmp ecx, 0x36
jle 0x14012a473
cmp ecx, 0x38
jg 0x14012a4fd
movsx eax, byte [rsi - 1]
sub eax, 0xe
movsxd rdx, eax
mov rcx, rdi
shl rdx, 4
lea rax, str._new
add rdx, rax
call fcn.140126298
jmp 0x14012a26e
movsx eax, byte [rsi - 1]
sub eax, 0xe
jmp 0x14012a1ee
movsx eax, byte [rsi - 1]
lea rcx, [rbp - 0x40]
sub eax, 0xe
movsxd rdx, eax
lea rax, str._new
shl rdx, 4
add rdx, rax
call fcn.140126298
mov ecx, dword [rbp - 0x38]
mov rax, qword [rbp - 0x40]
bts ecx, 0xf
mov qword [rdi], rax
mov dword [rdi + 8], ecx
jmp 0x14012a26e
cmp ecx, 0x3f
je 0x14012a4e5
cmp ecx, 0x40
jle 0x14012a4fd
cmp ecx, 0x42
jle 0x14012a8fc
xor edx, edx
lea rcx, [rbp - 0x30]
lea r8d, [rdx + 1]
call fcn.14012b938
mov ecx, dword [rbp - 0x28]
mov rax, qword [rbp - 0x30]
bts ecx, 0xc
jmp 0x14012a4ab
mov al, byte [rsi]
inc rsi
mov qword [0x1401c2940], rsi
test al, al
je 0x14012a3ca
cmp al, 0x30
je 0x14012a50d
mov dword [rdi + 8], r15d
mov byte [rdi + 8], 2
mov qword [rdi], r15
jmp 0x14012a26e
xor r8d, r8d
lea rcx, [rsp + 0x40]
lea edx, [r8 + 1]
call fcn.14012b938
mov ecx, dword [rsp + 0x48]
mov rax, qword [rsp + 0x40]
bts ecx, 0xc
jmp 0x14012a4ab
cmp ecx, 0x54
jg 0x14012a774
cmp ecx, 0x53
jge 0x14012a8fc
sub ecx, 0x50
je 0x14012a71c
sub ecx, 1
je 0x14012a209
cmp ecx, 1
jne 0x14012a4fd
movsx eax, byte [rsi - 1]
lea rcx, [rsp + 0x20]
sub eax, 0x15
movsxd rdx, eax
lea rax, str._new
shl rdx, 4
add rdx, rax
call fcn.140126570
mov rax, qword [0x1401c2940]
movsx ecx, byte [rax]
test cl, cl
jne 0x14012a5a1
mov r8d, 1
lea rcx, [rsp + 0x20]
mov rdx, rdi
call fcn.140126664
jmp 0x14012a26e
mov eax, ecx
add eax, 0xffffffd0
js 0x14012a4fd
cmp eax, 5
jae 0x14012a4fd
lfence
movsxd rdx, eax
lea rcx, [rsp + 0x50]
shl rdx, 4
lea rax, str._Type_Descriptor
add rdx, rax
call fcn.140126570
mov rax, qword [0x1401c2940]
mov cl, byte [rax]
inc rax
mov qword [0x1401c2940], rax
cmp cl, 0x30
je 0x14012a6d5
cmp cl, 0x31
je 0x14012a607
jle 0x14012a5ff
cmp cl, 0x34
jle 0x14012a76d
dec rax
jmp 0x14012a3ce
lea r8, [rsp + 0x50]
lea rdx, [rsp + 0x60]
lea rcx, [rsp + 0x20]
call fcn.14012660c
lea rcx, [rbp + 0x50]
call fcn.14012b6f0
mov r8b, 0x2c
lea rdx, [rbp + 0x60]
mov rcx, rax
call fcn.140126638
mov rdx, rax
lea rcx, [rsp + 0x60]
call fcn.14012670c
lea rcx, [rbp + 0x70]
call fcn.14012b6f0
mov r8b, 0x2c
lea rdx, [rbp + 0x80]
mov rcx, rax
call fcn.140126638
mov rdx, rax
lea rcx, [rsp + 0x60]
call fcn.14012670c
lea rcx, [rbp + 0x90]
call fcn.14012b6f0
mov r8b, 0x2c
lea rdx, [rbp + 0xa0]
mov rcx, rax
call fcn.140126638
mov rdx, rax
lea rcx, [rsp + 0x60]
call fcn.14012670c
xor edx, edx
lea rcx, [rbp + 0xb0]
call fcn.1401291e8
mov r8b, 0x29
lea rdx, [rbp + 0xc0]
mov rcx, rax
call fcn.140126638
mov rdx, rax
lea rcx, [rsp + 0x60]
call fcn.14012670c
mov r8b, 0x27
lea rcx, [rsp + 0x60]
mov rdx, rdi
call fcn.140126638
jmp 0x14012a26e
xor edx, edx
lea rcx, [rbp]
call fcn.140128de4
mov r8b, 0x20
lea rdx, [rbp + 0xd0]
lea rcx, [rbp]
call fcn.140126638
lea r8, [rsp + 0x20]
mov rcx, rax
lea rdx, [rbp + 0xe0]
call fcn.14012660c
mov rcx, rax
mov rdx, rdi
lea r8, [rsp + 0x50]
call fcn.14012660c
jmp 0x14012a26e
movsx eax, byte [rsi - 1]
lea rcx, [rsp + 0x20]
sub eax, 0x15
movsxd rdx, eax
lea rax, str._new
shl rdx, 4
add rdx, rax
call fcn.140126570
xor r8d, r8d
lea rcx, [rbp + 0xf0]
xor edx, edx
call fcn.14012a15c
mov rcx, qword [rax]
mov edx, dword [rax + 8]
mov qword [rsp + 0x50], rcx
mov dword [rsp + 0x58], edx
test rcx, rcx
je 0x14012a76d
bt edx, 0xa
jb 0x14012a4fd
lea rcx, [rsp + 0x20]
jmp 0x14012a70a
cmp ecx, 0x56
jle 0x14012a908
cmp ecx, 0x57
jle 0x14012a4fd
cmp ecx, 0x59
jle 0x14012a8fc
cmp ecx, 0x5f
jne 0x14012a4fd
mov al, byte [rsi]
inc rsi
mov qword [0x1401c2940], rsi
cmp al, r8b
jl 0x14012a4fd
cmp al, 0x44
jle 0x14012a7ce
cmp al, 0x46
jle 0x14012a847
cmp al, 0x4a
jle 0x14012a7ce
cmp al, 0x4b
je 0x14012a7da
sub al, 0x4c
lea ebx, [rcx - 0x5e]
cmp al, bl
ja 0x14012a4fd
movsx eax, byte [rsi - 1]
add eax, 4
jmp 0x14012a455
movsx eax, byte [rsi - 1]
lea rcx, [rbp - 0x60]
add eax, 4
movsxd rdx, eax
lea rax, str._new
shl rdx, 4
add rdx, rax
call fcn.140126298
mov ebx, 1
jmp 0x14012a81c
cmp cl, 0x40
je 0x14012a82e
add rax, rbx
mov dl, cl
lea rcx, [rbp - 0x60]
mov qword [0x1401c2940], rax
call fcn.140126750
mov rax, qword [0x1401c2940]
mov cl, byte [rax]
test cl, cl
jne 0x14012a802
cmp cl, 0x40
jne 0x14012a838
add rax, rbx
mov qword [0x1401c2940], rax
mov rax, qword [rbp - 0x60]
mov qword [rdi], rax
mov eax, dword [rbp - 0x58]
jmp 0x14012a26b
movsx eax, byte [rsi - 1]
lea rcx, [rsp + 0x70]
add eax, 4
movsxd rdx, eax
lea rax, str._new
shl rdx, 4
add rdx, rax
call fcn.140126298
mov rax, qword [0x1401c2940]
cmp byte [rax], 0x3f
jne 0x14012a8a6
lea rcx, [rbp + 0x100]
call fcn.140128ef8
mov rdx, rax
lea rcx, [rsp + 0x70]
call fcn.14012670c
mov rax, qword [0x1401c2940]
cmp byte [rax], 0x40
jne 0x14012a8bf
inc rax
mov qword [0x1401c2940], rax
jmp 0x14012a8bf
lea rcx, [rbp + 0x110]
call fcn.14012ba1c
mov rdx, rax
lea rcx, [rsp + 0x70]
call fcn.14012670c
lea rax, [0x1401731e0]
mov dword [rsp + 0x48], 2
mov qword [rsp + 0x40], rax
lea rdx, [rbp + 0x10]
movaps xmm0, xmmword [rsp + 0x40]
lea rcx, [rsp + 0x70]
movdqa xmmword [rbp + 0x10], xmm0
call fcn.140126690
mov rax, qword [rsp + 0x70]
mov qword [rdi], rax
mov eax, dword [rsp + 0x78]
jmp 0x14012a26b
movsx eax, byte [rsi - 1]
sub eax, 0x15
jmp 0x14012a455
movsx eax, byte [rsi - 1]
sub eax, 0x15
jmp 0x14012a1ee
mov ebx, 1
movsx eax, byte [rsi - 1]
lea rcx, [rsp + 0x20]
sub eax, 0x39
movsxd rdx, eax
lea rax, str._new
shl rdx, 4
add rdx, rax
call fcn.140126570
test ebx, ebx
je 0x14012a209
cmp qword [rsp + 0x20], r15
je 0x14012a25f
bts dword [rsp + 0x28], 9
jmp 0x14012a25f