Function at 0x180066910
Capabilities:
Parse credit card information

Disassembly:
push rdi
push r14
push r15
sub rsp, 0x30
mov r9d, dword [rcx]
mov r14, r8
mov rdi, rdx
mov r15, rcx
lea eax, [r9 - 1]
mov dword [rcx], eax
test r9d, r9d
je 0x180066ec7
mov rdx, qword [rcx + 0x18]
mov qword [rsp + 0x50], rbx
mov qword [rsp + 0x58], rbp
mov qword [rsp + 0x60], rsi
mov qword [rsp + 0x28], r12
mov qword [rsp + 0x20], r13
cmp r8, rdx
je 0x180066e9e
lea r12, [rcx + 0x10]
movabs rbp, 0x8000240000000000
xor r11d, r11d
nop dword [rax]
movzx r8d, byte [r14]
movsx ecx, r8b
sub ecx, 0x24
je 0x180066b7b
sub ecx, 1
je 0x1800669d3
sub ecx, 3
je 0x180066ce3
cmp ecx, 1
jne 0x180066b88
mov r8d, dword [r15 + 0x28]
sub r8d, ecx
movsxd rcx, r8d
js 0x180066ed8
mov rdx, rcx
shl rdx, 4
add rdx, 0x38
add rdx, r15
cmp qword [rdx], 0xffffffffffffffff
je 0x180066c9e
dec r8d
sub rdx, 0x10
sub rcx, 1
js 0x180066ed8
jmp 0x1800669b6
movzx ecx, byte [r14 + 1]
movzx eax, cl
cmp cl, 0x30
jl 0x180066b88
cmp al, 0x39
jle 0x180066b07
cmp al, 0x62
je 0x180066a8f
cmp al, 0x66
jne 0x180066b88
cmp byte [r14 + 2], 0x5b
jne 0x180066f1c
cmp byte [r14 + 3], 0x5e
lea rax, [r14 + 3]
jne 0x180066a15
inc rax
mov rdx, qword [r15 + 0x18]
nop dword [rax]
cmp rax, rdx
je 0x180066f0b
movzx ecx, byte [rax]
inc rax
cmp cl, 0x25
jne 0x180066a3c
cmp rax, rdx
jae 0x180066a3c
inc rax
cmp byte [rax], 0x5d
jne 0x180066a20
lea rbx, [rax + 1]
cmp rdi, qword [r15 + 8]
jne 0x180066a4f
xor al, al
jmp 0x180066a53
movzx eax, byte [rdi - 1]
movzx ecx, al
lea r8, [rbx - 1]
lea rdx, [r14 + 2]
call fcn.180066860
test eax, eax
jne 0x180066e8f
movzx ecx, byte [rdi]
lea r8, [rbx - 1]
lea rdx, [r14 + 2]
call fcn.180066860
test eax, eax
je 0x180066e8f
mov r14, rbx
lea r12, [r15 + 0x10]
jmp 0x180066c8c
lea rcx, [r14 + 2]
lea rax, [rdx - 1]
cmp rcx, rax
jae 0x180066f2d
movzx r8d, byte [rcx]
cmp byte [rdi], r8b
jne 0x180066e9b
mov r9, qword [r15 + 0x10]
lea r12, [r15 + 0x10]
movzx r10d, byte [rcx + 1]
lea rax, [rdi + 1]
mov ecx, 1
cmp rax, r9
jae 0x180066e9b
nop dword [rax]
movzx edx, byte [rax]
cmp dl, r10b
jne 0x180066af3
sub ecx, 1
jne 0x180066afa
lea rdi, [rax + 1]
test rdi, rdi
je 0x180066e9e
add r14, 4
jmp 0x180066c8c
cmp dl, r8b
jne 0x180066afa
inc ecx
inc rax
cmp rax, r9
jb 0x180066ad0
jmp 0x180066e9b
lea r8d, [rcx - 0x31]
mov rax, rcx
test r8d, r8d
js 0x180066f3e
cmp r8d, dword [r15 + 0x28]
jge 0x180066f3e
add rax, 0xffffffffffffffcf
add rax, rax
mov rbx, qword [r15 + rax*8 + 0x38]
cmp rbx, 0xffffffffffffffff
je 0x180066f3e
mov rax, qword [r15 + 0x10]
lea r12, [r15 + 0x10]
sub rax, rdi
cmp rax, rbx
jb 0x180066e9b
add rcx, 0xffffffffffffffd2
mov r8, rbx
add rcx, rcx
mov rdx, rdi
mov rcx, qword [r15 + rcx*8]
call sub.VCRUNTIME140.dll_memcmp
test eax, eax
jne 0x180066d61
add rdi, rbx
je 0x180066e9e
add r14, 2
jmp 0x180066c8c
lea rax, [r14 + 1]
cmp rax, rdx
je 0x180066e93
lea rbx, [r14 + 1]
cmp r8b, 0x25
je 0x180066bc4
cmp r8b, 0x5b
jne 0x180066bd0
cmp byte [r14 + 1], 0x5e
jne 0x180066ba2
inc rbx
cmp rbx, rdx
je 0x180066f52
movzx eax, byte [rbx]
inc rbx
cmp al, 0x25
jne 0x180066bbd
cmp rbx, rdx
jae 0x180066bbd
inc rbx
cmp byte [rbx], 0x5d
jne 0x180066ba2
jmp 0x180066bcd
cmp rbx, rdx
je 0x180066f63
inc rbx
cmp rdi, qword [r15 + 0x10]
lea r12, [r15 + 0x10]
jb 0x180066bdf
movzx eax, byte [rbx]
jmp 0x180066c58
movzx r9d, byte [rdi]
movzx eax, r8b
cmp r8b, 0x25
je 0x180066c3f
cmp al, 0x2e
je 0x180066c11
cmp al, 0x5b
je 0x180066c00
cmp r8d, r9d
mov ecx, r11d
sete cl
jmp 0x180066c51
lea r8, [rbx - 1]
mov rdx, r14
mov ecx, r9d
call fcn.180066860
jmp 0x180066c4c
movzx eax, byte [rbx]
movsx ecx, al
sub ecx, 0x2a
je 0x180066e08
sub ecx, 1
je 0x180066e05
sub ecx, 2
je 0x180066d71
cmp ecx, 0x12
je 0x180066c70
inc rdi
mov r14, rbx
jmp 0x180066c8c
movzx edx, byte [r14 + 1]
mov ecx, r9d
call fcn.1800666f0
xor r11d, r11d
mov ecx, eax
movzx eax, byte [rbx]
test ecx, ecx
jne 0x180066c14
cmp al, 0x3f
ja 0x180066e9b
bt rbp, rax
jae 0x180066e9b
lea r14, [rbx + 1]
jmp 0x180066c8c
lea r14, [rbx + 1]
mov rcx, r15
mov r8, r14
lea rdx, [rdi + 1]
call fcn.180066910
test rax, rax
jne 0x180066d69
mov rdx, qword [r15 + 0x18]
cmp r14, rdx
je 0x180066e9e
jmp 0x180066969
movsxd rcx, r8d
mov rax, rdi
mov rbx, rcx
lea r8, [r14 + 1]
add rcx, 3
add rbx, rbx
add rcx, rcx
mov rdx, rdi
sub rax, qword [r15 + rcx*8]
mov rcx, r15
mov qword [r15 + rbx*8 + 0x38], rax
call fcn.180066910
mov rdi, rax
test rax, rax
jne 0x180066e9e
mov qword [r15 + rbx*8 + 0x38], 0xffffffffffffffff
jmp 0x180066e9e
cmp byte [r14 + 1], 0x29
lea r8, [r14 + 1]
movsxd rdx, dword [r15 + 0x28]
jne 0x180066d17
cmp edx, 0x20
jge 0x180066ee9
lea rax, [rdx + 3]
mov rcx, rdx
add rax, rax
lea r8, [r14 + 2]
add rcx, rcx
mov qword [r15 + rcx*8 + 0x38], 0xfffffffffffffffe
jmp 0x180066d36
cmp edx, 0x20
jge 0x180066efa
lea rax, [rdx + 3]
mov rcx, rdx
add rax, rax
add rcx, rcx
mov qword [r15 + rcx*8 + 0x38], 0xffffffffffffffff
mov qword [r15 + rax*8], rdi
mov rcx, r15
lea eax, [rdx + 1]
mov rdx, rdi
mov dword [r15 + 0x28], eax
call fcn.180066910
mov rdi, rax
test rax, rax
jne 0x180066e9e
dec dword [r15 + 0x28]
jmp 0x180066e9e
xor r11d, r11d
jmp 0x180066e9b
mov rdi, rax
jmp 0x180066e9e
lea r8, [rbx + 1]
mov rdx, rdi
mov rcx, r15
mov rsi, rdi
call fcn.180066910
mov rdi, rax
test rax, rax
jne 0x180066e9e
nop
cmp rsi, qword [r12]
jae 0x180066e8f
movzx ecx, byte [r14]
movzx r9d, byte [rsi]
movzx eax, cl
cmp cl, 0x25
je 0x180066dcf
cmp al, 0x2e
je 0x180066de6
cmp al, 0x5b
je 0x180066dbe
mov eax, ecx
xor ecx, ecx
cmp eax, r9d
sete cl
jmp 0x180066dde
lea r8, [rbx - 1]
mov rdx, r14
mov ecx, r9d
call fcn.180066860
jmp 0x180066ddc
movzx edx, byte [r14 + 1]
mov ecx, r9d
call fcn.1800666f0
mov ecx, eax
test ecx, ecx
je 0x180066e8f
inc rsi
lea r8, [rbx + 1]
mov rdx, rsi
mov rcx, r15
call fcn.180066910
mov rdi, rax
test rax, rax
je 0x180066d90
jmp 0x180066e9e
inc rdi
mov rsi, r11
mov rbp, rdi
nop
cmp rbp, qword [r12]
jae 0x180066e69
movzx ecx, byte [r14]
movzx r9d, byte [rbp]
movzx eax, cl
cmp cl, 0x25
je 0x180066e4b
cmp al, 0x2e
je 0x180066e61
cmp al, 0x5b
je 0x180066e3a
cmp ecx, r9d
mov ecx, r11d
sete cl
jmp 0x180066e5d
lea r8, [rbx - 1]
mov rdx, r14
mov ecx, r9d
call fcn.180066860
jmp 0x180066e58
movzx edx, byte [r14 + 1]
mov ecx, r9d
call fcn.1800666f0
xor r11d, r11d
mov ecx, eax
test ecx, ecx
je 0x180066e69
inc rsi
inc rbp
jmp 0x180066e10
test rsi, rsi
js 0x180066e8f
nop
lea rdx, [rsi + rdi]
mov rcx, r15
lea r8, [rbx + 1]
call fcn.180066910
test rax, rax
jne 0x180066d69
sub rsi, 1
jns 0x180066e70
xor edi, edi
jmp 0x180066e9e
cmp rdi, qword [r12]
cmove r11, rdi
mov rdi, r11
inc dword [r15]
mov rax, rdi
mov r12, qword [rsp + 0x28]
mov rsi, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x58]
mov rbx, qword [rsp + 0x50]
mov r13, qword [rsp + 0x20]
add rsp, 0x30
pop r15
pop r14
pop rdi
ret
mov rcx, qword [rcx + 0x20]
lea rdx, str.pattern_too_complex
call fcn.18004fe30
int3
mov rcx, qword [r15 + 0x20]
lea rdx, str.invalid_pattern_capture
call fcn.18004fe30
int3
mov rcx, qword [r15 + 0x20]
lea rdx, str.too_many_captures
call fcn.18004fe30
int3
mov rcx, qword [r15 + 0x20]
lea rdx, str.too_many_captures
call fcn.18004fe30
int3
mov rcx, qword [r15 + 0x20]
lea rdx, str.malformed_pattern__missing___
call fcn.18004fe30
int3
mov rcx, qword [r15 + 0x20]
lea rdx, str.missing___after___f_in_pattern
call fcn.18004fe30
int3
mov rcx, qword [r15 + 0x20]
lea rdx, str.malformed_pattern__missing_arguments_to___b_
call fcn.18004fe30
int3
mov rcx, qword [r15 + 0x20]
lea rdx, str.invalid_capture_index____d
inc r8d
call fcn.18004fe30
int3
mov rcx, qword [r15 + 0x20]
lea rdx, str.malformed_pattern__missing___
call fcn.18004fe30
int3
mov rcx, qword [r15 + 0x20]
lea rdx, str.malformed_pattern__ends_with____
call fcn.18004fe30
int3