Function at 0x18003aa3c
Capabilities:
Parse credit card information

Disassembly:
mov rax, rsp
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rsi
mov qword [rax + 0x18], rdi
mov qword [rax + 0x20], r12
push rbp
push r14
push r15
lea rbp, [rax - 0x148]
sub rsp, 0x230
mov rax, qword [0x18008bd08]
xor r12d, r12d
mov r15, r8
mov qword [rsp + 0x20], r12
mov rdi, rcx
mov dword [rsp + 0x28], r12d
mov r8b, 0x41
mov qword [rsp + 0x50], r12
mov cl, byte [rax]
lea rsi, [rax + 1]
mov dword [rsp + 0x58], r12d
mov ebx, r12d
mov qword [0x18008bd08], rsi
cmp cl, r8b
jg 0x18003ad52
je 0x18003b2e0
test cl, cl
je 0x18003ad34
cmp cl, 0x2f
jle 0x18003ae74
cmp cl, 0x31
jle 0x18003ab7a
cmp cl, 0x39
jg 0x18003ae74
movsx rdx, byte [rsi - 1]
sub rdx, 0x32
add rdx, rdx
lea rax, str._new
lea rcx, [rsp + 0x20]
mov r8d, dword [rax + rdx*8 + 8]
mov rdx, qword [rax + rdx*8]
call fcn.18003694c
cmp qword [rsp + 0x20], r12
je 0x18003ab47
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.180036b38
lea r8, [rsp + 0x20]
mov rcx, rax
lea rdx, [rbp - 0x20]
call fcn.180036dbc
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 r12, qword [r11 + 0x38]
mov rsp, r11
pop r15
pop r14
pop rbp
ret
mov qword [rsp + 0x30], r12
mov r14, r12
mov dword [rsp + 0x38], r12d
test dl, dl
je 0x18003acb3
lea rcx, [rbp + 0x30]
call fcn.18003c4a0
mov dl, 0x3c
mov qword [rbp - 0x80], r12
lea rcx, [rbp - 0x80]
mov dword [rbp - 0x78], r12d
mov rbx, rax
call fcn.180037fc4
mov r8, rbx
lea rdx, [rbp - 0x10]
lea rcx, [rbp - 0x80]
call fcn.180036dbc
lea rdx, [rbp - 0x10]
lea rcx, [rsp + 0x30]
call fcn.180036ec0
mov r14, qword [rsp + 0x30]
lea rsi, vtable.charNode.0
mov ebx, 1
test r14, r14
je 0x18003ac32
mov rax, qword [r14]
mov rcx, r14
mov rax, qword [rax + 0x10]
call qword [0x180064308]
cmp al, 0x3e
jne 0x18003ac32
cmp byte [rsp + 0x38], bl
jg 0x18003ac89
lea edx, [rbx + 0xf]
lea rcx, [0x18008bd30]
call fcn.18003a8d4
test rax, rax
je 0x18003ac1d
mov qword [rax], rsi
mov byte [rax + 8], 0x20
jmp 0x18003ac20
mov rax, r12
mov rdx, rax
lea rcx, [rsp + 0x30]
call fcn.1800368e8
mov r14, qword [rsp + 0x30]
cmp byte [rsp + 0x38], bl
jg 0x18003ac89
test r14, r14
jne 0x18003ac55
mov dl, 0x3e
mov qword [rsp + 0x30], r12
lea rcx, [rsp + 0x30]
mov dword [rsp + 0x38], r12d
call fcn.180037fc4
jmp 0x18003ac84
mov edx, 0x10
lea rcx, [0x18008bd30]
call fcn.18003a8d4
test rax, rax
je 0x18003ac74
mov qword [rax], rsi
mov byte [rax + 8], 0x3e
jmp 0x18003ac77
mov rax, r12
mov rdx, rax
lea rcx, [rsp + 0x30]
call fcn.1800368e8
mov r14, qword [rsp + 0x30]
test r15, r15
je 0x18003ac91
mov byte [r15], bl
mov rsi, qword [0x18008bd08]
cmp byte [rsi], r12b
jne 0x18003aca9
mov eax, dword [rsp + 0x38]
mov qword [rdi], r14
jmp 0x18003ab53
add rsi, rbx
mov qword [0x18008bd08], rsi
xor r8d, r8d
lea rcx, [rbp + 0x40]
xor edx, edx
call fcn.18003d9ec
mov rcx, qword [rax]
mov eax, dword [rax + 8]
mov qword [rsp + 0x20], rcx
mov dword [rsp + 0x28], eax
mov qword [0x18008bd08], rsi
test rcx, rcx
je 0x18003ad17
cmp byte [rsi - 1], 0x31
jne 0x18003ad17
mov dl, 0x7e
mov qword [rbp - 0x70], r12
lea rcx, [rbp - 0x70]
mov dword [rbp - 0x68], r12d
call fcn.180037fc4
lea r8, [rsp + 0x20]
lea rdx, [rbp - 0x50]
lea rcx, [rbp - 0x70]
call fcn.180036dbc
mov rax, qword [rbp - 0x50]
mov qword [rsp + 0x20], rax
mov eax, dword [rbp - 0x48]
mov dword [rsp + 0x28], eax
test r14, r14
je 0x18003ab47
lea rdx, [rsp + 0x30]
lea rcx, [rsp + 0x20]
call fcn.180036ec0
jmp 0x18003ab47
lea rax, [rsi - 1]
mov qword [0x18008bd08], rax
lea rax, [0x180069070]
mov dword [rdi + 8], r12d
mov qword [rdi], rax
jmp 0x18003ab56
cmp cl, 0x42
je 0x18003b2db
jle 0x18003ae74
cmp cl, 0x5a
jle 0x18003b2e0
cmp cl, 0x5f
jne 0x18003ae74
movsx ecx, byte [rsi]
lea rdx, [rsi + 1]
mov qword [0x18008bd08], rdx
cmp ecx, 0x4f
jg 0x18003aeb0
cmp ecx, 0x44
jge 0x18003b2c1
cmp ecx, 0x39
jg 0x18003ae2f
je 0x18003adf8
test ecx, ecx
je 0x18003adec
cmp ecx, 0x2f
jle 0x18003ae74
cmp ecx, 0x36
jle 0x18003adde
cmp ecx, 0x38
jg 0x18003ae74
movsx eax, byte [rdx - 1]
sub eax, 0xe
movsxd rdx, eax
mov rcx, rdi
shl rdx, 4
lea rax, str._new
add rdx, rax
call fcn.180036b38
jmp 0x18003ab56
movsx rdx, byte [rdx - 1]
sub rdx, 0xe
jmp 0x18003aad4
mov qword [0x18008bd08], rsi
jmp 0x18003ad3f
movsx eax, byte [rdx - 1]
lea rcx, [rbp - 0x40]
sub eax, 0xe
movsxd rdx, eax
lea rax, str._new
shl rdx, 4
add rdx, rax
call fcn.180036b38
mov ecx, dword [rbp - 0x38]
mov rax, qword [rbp - 0x40]
bts ecx, 0xf
mov qword [rdi], rax
mov dword [rdi + 8], ecx
jmp 0x18003ab56
cmp ecx, 0x3f
je 0x18003ae5e
cmp ecx, 0x40
jle 0x18003ae74
cmp ecx, 0x42
jle 0x18003b2c1
xor edx, edx
lea rcx, [rbp - 0x30]
lea r8d, [rdx + 1]
call fcn.18003c308
mov ecx, dword [rbp - 0x28]
mov rax, qword [rbp - 0x30]
bts ecx, 0xc
jmp 0x18003ae24
mov cl, byte [rdx]
lea rax, [rdx + 1]
mov qword [0x18008bd08], rax
test cl, cl
je 0x18003aea4
cmp cl, 0x30
je 0x18003ae84
mov dword [rdi + 8], r12d
mov byte [rdi + 8], 2
mov qword [rdi], r12
jmp 0x18003ab56
xor r8d, r8d
lea rcx, [rsp + 0x40]
lea edx, [r8 + 1]
call fcn.18003c308
mov ecx, dword [rsp + 0x48]
mov rax, qword [rsp + 0x40]
bts ecx, 0xc
jmp 0x18003ae24
mov qword [0x18008bd08], rdx
jmp 0x18003ad3f
cmp ecx, 0x54
jg 0x18003b109
cmp ecx, 0x53
jge 0x18003b2c1
sub ecx, 0x50
je 0x18003b0ad
sub ecx, 1
je 0x18003aaf1
cmp ecx, 1
jne 0x18003ae74
movsx rdx, byte [rdx - 1]
lea rax, str._new
sub rdx, 0x15
lea rcx, [rsp + 0x20]
add rdx, rdx
mov r8d, dword [rax + rdx*8 + 8]
mov rdx, qword [rax + rdx*8]
call fcn.18003694c
mov rax, qword [0x18008bd08]
movsx rcx, byte [rax]
test cl, cl
jne 0x18003af26
mov r8d, 1
lea rcx, [rsp + 0x20]
mov rdx, rdi
call fcn.180036e14
jmp 0x18003ab56
cmp cl, 0x30
jl 0x18003ae74
lea rax, [rcx - 0x30]
mov rdx, rcx
cmp rax, 5
jae 0x18003ae74
lfence
add rdx, 0xffffffffffffffd0
lea rax, str._Type_Descriptor
add rdx, rdx
lea rcx, [rsp + 0x50]
mov r8d, dword [rax + rdx*8 + 8]
mov rdx, qword [rax + rdx*8]
call fcn.18003694c
mov rax, qword [0x18008bd08]
mov cl, byte [rax]
inc rax
mov qword [0x18008bd08], rax
cmp cl, 0x30
je 0x18003b066
cmp cl, 0x31
je 0x18003af98
jle 0x18003af90
cmp cl, 0x34
jle 0x18003b102
dec rax
jmp 0x18003ad38
lea r8, [rsp + 0x50]
lea rdx, [rsp + 0x60]
lea rcx, [rsp + 0x20]
call fcn.180036dbc
lea rcx, [rbp + 0x50]
call fcn.18003c16c
mov r8b, 0x2c
lea rdx, [rbp + 0x60]
mov rcx, rax
call fcn.180036de8
mov rdx, rax
lea rcx, [rsp + 0x60]
call fcn.180036ec0
lea rcx, [rbp + 0x70]
call fcn.18003c16c
mov r8b, 0x2c
lea rdx, [rbp + 0x80]
mov rcx, rax
call fcn.180036de8
mov rdx, rax
lea rcx, [rsp + 0x60]
call fcn.180036ec0
lea rcx, [rbp + 0x90]
call fcn.18003c16c
mov r8b, 0x2c
lea rdx, [rbp + 0xa0]
mov rcx, rax
call fcn.180036de8
mov rdx, rax
lea rcx, [rsp + 0x60]
call fcn.180036ec0
xor edx, edx
lea rcx, [rbp + 0xb0]
call fcn.180039a24
mov r8b, 0x29
lea rdx, [rbp + 0xc0]
mov rcx, rax
call fcn.180036de8
mov rdx, rax
lea rcx, [rsp + 0x60]
call fcn.180036ec0
mov r8b, 0x27
lea rcx, [rsp + 0x60]
mov rdx, rdi
call fcn.180036de8
jmp 0x18003ab56
xor edx, edx
lea rcx, [rbp]
call fcn.18003962c
mov r8b, 0x20
lea rdx, [rbp + 0xd0]
lea rcx, [rbp]
call fcn.180036de8
lea r8, [rsp + 0x20]
mov rcx, rax
lea rdx, [rbp + 0xe0]
call fcn.180036dbc
mov rcx, rax
mov rdx, rdi
lea r8, [rsp + 0x50]
call fcn.180036dbc
jmp 0x18003ab56
movsx rdx, byte [rdx - 1]
lea rax, str._new
sub rdx, 0x15
lea rcx, [rsp + 0x20]
add rdx, rdx
mov r8d, dword [rax + rdx*8 + 8]
mov rdx, qword [rax + rdx*8]
call fcn.18003694c
xor r8d, r8d
lea rcx, [rbp + 0xf0]
xor edx, edx
call fcn.18003aa3c
mov rcx, qword [rax]
mov edx, dword [rax + 8]
mov qword [rsp + 0x50], rcx
mov dword [rsp + 0x58], edx
test rcx, rcx
je 0x18003b102
bt edx, 0xa
jb 0x18003ae74
lea rcx, [rsp + 0x20]
jmp 0x18003b09b
cmp ecx, 0x56
jle 0x18003b2cd
cmp ecx, 0x57
jle 0x18003ae74
cmp ecx, 0x59
jle 0x18003b2c1
cmp ecx, 0x5f
jne 0x18003ae74
mov al, byte [rdx]
inc rdx
mov qword [0x18008bd08], rdx
cmp al, 0x4b
jg 0x18003b28e
je 0x18003b221
cmp al, r8b
jl 0x18003ae74
cmp al, 0x44
jle 0x18003b160
cmp al, 0x46
jle 0x18003b16c
cmp al, 0x4a
jg 0x18003ae74
movsx eax, byte [rdx - 1]
add eax, 4
jmp 0x18003adc0
movsx eax, byte [rdx - 1]
lea rcx, [rsp + 0x70]
add eax, 4
movsxd rdx, eax
lea rax, str._new
shl rdx, 4
add rdx, rax
call fcn.180036b38
mov rax, qword [0x18008bd08]
cmp byte [rax], 0x3f
jne 0x18003b1cb
lea rcx, [rbp + 0x100]
call fcn.180039740
mov rdx, rax
lea rcx, [rsp + 0x70]
call fcn.180036ec0
mov rax, qword [0x18008bd08]
cmp byte [rax], 0x40
jne 0x18003b1e4
inc rax
mov qword [0x18008bd08], rax
jmp 0x18003b1e4
lea rcx, [rbp + 0x110]
call fcn.18003c454
mov rdx, rax
lea rcx, [rsp + 0x70]
call fcn.180036ec0
lea rax, [0x180068a68]
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.180036e40
mov rax, qword [rsp + 0x70]
mov qword [rdi], rax
mov eax, dword [rsp + 0x78]
jmp 0x18003ab53
movsx eax, byte [rdx - 1]
lea rcx, [rbp - 0x60]
add eax, 4
movsxd rdx, eax
lea rax, str._new
shl rdx, 4
add rdx, rax
call fcn.180036b38
mov ebx, 1
jmp 0x18003b263
cmp cl, 0x40
je 0x18003b275
add rax, rbx
mov dl, cl
lea rcx, [rbp - 0x60]
mov qword [0x18008bd08], rax
call fcn.180036f74
mov rax, qword [0x18008bd08]
mov cl, byte [rax]
test cl, cl
jne 0x18003b249
cmp cl, 0x40
jne 0x18003b27f
add rax, rbx
mov qword [0x18008bd08], rax
mov rax, qword [rbp - 0x60]
mov qword [rdi], rax
mov eax, dword [rbp - 0x58]
jmp 0x18003ab53
cmp al, 0x4d
jle 0x18003b160
cmp al, 0x4e
jne 0x18003ae74
mov cl, byte [rdx]
lea rax, [rdx + 1]
mov qword [0x18008bd08], rax
cmp cl, 0x32
jne 0x18003ae74
mov rcx, rdi
call fcn.18003d618
jmp 0x18003ab56
movsx eax, byte [rdx - 1]
sub eax, 0x15
jmp 0x18003adc0
movsx rdx, byte [rdx - 1]
sub rdx, 0x15
jmp 0x18003aad4
mov ebx, 1
movsx rdx, byte [rsi - 1]
lea rax, str._new
sub rdx, 0x39
lea rcx, [rsp + 0x20]
add rdx, rdx
mov r8d, dword [rax + rdx*8 + 8]
mov rdx, qword [rax + rdx*8]
call fcn.18003694c
test ebx, ebx
je 0x18003aaf1
cmp qword [rsp + 0x20], r12
je 0x18003ab47
bts dword [rsp + 0x28], 9
jmp 0x18003ab47