Function at 0x180173b70
Capabilities:
Parse credit card information

Disassembly:
push rbx
push rbp
push r12
push r13
sub rsp, 0x28
mov r9d, dword [rcx]
mov r13, r8
mov rbx, qword [rcx + 0x20]
mov rbp, rdx
mov r12, rcx
lea eax, [r9 - 1]
mov dword [rcx], eax
test r9d, r9d
je 0x180174183
mov rax, qword [rbx + 0x30]
mov r8, qword [rax + rbx + 0xd10]
test r8, r8
je 0x180173bc3
inc word [rbx + 0x50]
mov edx, 0xffffffff
mov rcx, rbx
call r8
mov eax, 0xffff
add word [rbx + 0x50], ax
mov rdx, qword [r12 + 0x18]
mov qword [rsp + 0x50], rsi
mov qword [rsp + 0x58], rdi
mov qword [rsp + 0x60], r14
mov qword [rsp + 0x20], r15
cmp r13, rdx
je 0x18017415d
lea r14, [r12 + 0x10]
movabs r9, 0x8000240000000000
lea rsi, [0x180000000]
xor r11d, r11d
nop
movzx r10d, byte [r13]
movsx ecx, r10b
sub ecx, 0x24
je 0x180173dd9
sub ecx, 1
je 0x180173c32
sub ecx, 3
je 0x180173f9e
cmp ecx, 1
je 0x180173f1a
lea r15, [r13 + 1]
jmp case.0x180173c5f.51
movzx r8d, byte [r13 + 1]
lea r15, [r13 + 1]
movsx eax, r8b
add eax, 0xffffffd0
cmp eax, 0x36
ja case.0x180173c5f.51
cdqe
movzx eax, byte [rsi + rax + 0x174248]
mov ecx, dword [rsi + rax*4 + 0x174238]
add rcx, rsi
jmp rcx
lea rcx, [r13 + 2]
lea rax, [rdx - 1]
cmp rcx, rax
jae 0x1801741c9
movzx r9d, byte [rcx]
cmp byte [rbp], r9b
jne 0x18017415a
mov r8, qword [r12 + 0x10]
lea r14, [r12 + 0x10]
movzx r10d, byte [rcx + 1]
lea rax, [rbp + 1]
mov ecx, 1
cmp rax, r8
jae 0x18017415a
movzx edx, byte [rax]
cmp dl, r10b
jne 0x180173cc4
sub ecx, 1
jne 0x180173ccb
lea rbp, [rax + 1]
test rbp, rbp
je 0x18017415d
add r13, 4
jmp 0x180173efd
cmp dl, r9b
jne 0x180173ccb
inc ecx
inc rax
cmp rax, r8
jb 0x180173ca1
jmp 0x18017415a
cmp byte [r13 + 2], 0x5b
jne 0x1801741ed
cmp byte [r13 + 3], 0x5e
lea rcx, [r13 + 3]
jne 0x180173cf1
inc rcx
cmp rcx, rdx
je 0x1801741db
movzx eax, byte [rcx]
inc rcx
cmp al, 0x25
jne 0x180173d0c
cmp rcx, rdx
jae 0x180173d0c
inc rcx
cmp byte [rcx], 0x5d
jne 0x180173cf1
lea rbx, [rcx + 1]
cmp rbp, qword [r12 + 8]
jne 0x180173d20
xor al, al
jmp 0x180173d24
movzx eax, byte [rbp - 1]
movzx ecx, al
lea r8, [rbx - 1]
lea rdx, [r13 + 2]
call fcn.180173ac0
test eax, eax
jne 0x18017414f
movzx ecx, byte [rbp]
lea r8, [rbx - 1]
lea rdx, [r13 + 2]
call fcn.180173ac0
test eax, eax
je 0x18017414f
mov r13, rbx
lea r14, [r12 + 0x10]
jmp 0x180173efd
mov rax, r8
add r8d, 0xffffffcf
js 0x1801741ff
cmp r8d, dword [r12 + 0x28]
jge 0x1801741ff
mov rcx, rax
add rax, 0xffffffffffffffcf
add rax, rax
mov rbx, qword [r12 + rax*8 + 0x38]
cmp rbx, 0xffffffffffffffff
je 0x1801741ff
mov rax, qword [r12 + 0x10]
lea r14, [r12 + 0x10]
sub rax, rbp
cmp rax, rbx
jb 0x18017415a
add rcx, 0xffffffffffffffd2
mov r8, rbx
add rcx, rcx
mov rdx, rbp
mov rcx, qword [r12 + rcx*8]
call sub.VCRUNTIME140.dll_memcmp
test eax, eax
jne 0x18017401f
add rbp, rbx
je 0x18017415d
add r13, 2
jmp 0x180173efd
lea r15, [r13 + 1]
cmp r15, rdx
je 0x180174153
mov rbx, r15
cmp r10b, 0x25
je 0x180173e22
cmp r10b, 0x5b
jne 0x180173e2e
cmp byte [r15], 0x5e
jne 0x180173e00
inc rbx
nop
cmp rbx, rdx
je 0x180174214
movzx eax, byte [rbx]
inc rbx
cmp al, 0x25
jne 0x180173e1b
cmp rbx, rdx
jae 0x180173e1b
inc rbx
cmp byte [rbx], 0x5d
jne 0x180173e00
jmp 0x180173e2b
cmp rbx, rdx
je 0x180174226
inc rbx
cmp rbp, qword [r12 + 0x10]
lea r14, [r12 + 0x10]
jb 0x180173e42
movzx eax, byte [rbx]
jmp 0x180173ec5
movzx r9d, byte [rbp]
movzx eax, r10b
cmp r10b, 0x25
je 0x180173ea3
cmp al, 0x2e
je 0x180173e75
cmp al, 0x5b
je 0x180173e64
cmp r10d, r9d
mov ecx, r11d
sete cl
jmp 0x180173eb4
lea r8, [rbx - 1]
mov rdx, r13
mov ecx, r9d
call fcn.180173ac0
jmp 0x180173eaf
movzx eax, byte [rbx]
movsx ecx, al
sub ecx, 0x2a
je 0x1801740c7
sub ecx, 1
je 0x1801740c4
sub ecx, 2
je 0x18017402f
cmp ecx, 0x12
je 0x180173ee1
inc rbp
mov r13, rbx
jmp 0x180173efd
movzx edx, byte [r15]
mov ecx, r9d
call fcn.180173950
xor r11d, r11d
mov ecx, eax
movzx eax, byte [rbx]
test ecx, ecx
jne 0x180173e78
movabs r9, 0x8000240000000000
cmp al, 0x3f
ja 0x18017415a
movsx rax, al
bt r9, rax
jae 0x18017415a
lea r13, [rbx + 1]
jmp 0x180173f07
lea r13, [rbx + 1]
mov rcx, r12
mov r8, r13
lea rdx, [rbp + 1]
call fcn.180173b70
test rax, rax
jne 0x180174027
movabs r9, 0x8000240000000000
mov rdx, qword [r12 + 0x18]
cmp r13, rdx
je 0x18017415d
jmp 0x180173bfb
mov r8d, dword [r12 + 0x28]
sub r8d, 1
movsxd rcx, r8d
js 0x180174193
mov rdx, rcx
shl rdx, 4
add rdx, 0x38
add rdx, r12
nop word [rax + rax]
cmp qword [rdx], 0xffffffffffffffff
je 0x180173f59
dec r8d
sub rdx, 0x10
sub rcx, 1
js 0x180174193
jmp 0x180173f40
movsxd rcx, r8d
mov rax, rbp
mov rbx, rcx
lea r8, [r13 + 1]
add rcx, 3
add rbx, rbx
add rcx, rcx
mov rdx, rbp
sub rax, qword [r12 + rcx*8]
mov rcx, r12
mov qword [r12 + rbx*8 + 0x38], rax
call fcn.180173b70
mov rbp, rax
test rax, rax
jne 0x18017415d
mov qword [r12 + rbx*8 + 0x38], 0xffffffffffffffff
jmp 0x18017415d
cmp byte [r13 + 1], 0x29
lea r8, [r13 + 1]
movsxd rdx, dword [r12 + 0x28]
jne 0x180173fd3
cmp edx, 0x20
jge 0x1801741a5
lea rax, [rdx + 3]
mov rcx, rdx
add rax, rax
lea r8, [r13 + 2]
add rcx, rcx
mov qword [r12 + rcx*8 + 0x38], 0xfffffffffffffffe
jmp 0x180173ff2
cmp edx, 0x20
jge 0x1801741b7
lea rax, [rdx + 3]
mov rcx, rdx
add rax, rax
add rcx, rcx
mov qword [r12 + rcx*8 + 0x38], 0xffffffffffffffff
mov qword [r12 + rax*8], rbp
mov rcx, r12
lea eax, [rdx + 1]
mov rdx, rbp
mov dword [r12 + 0x28], eax
call fcn.180173b70
mov rbp, rax
test rax, rax
jne 0x18017415d
dec dword [r12 + 0x28]
jmp 0x18017415d
xor r11d, r11d
jmp 0x18017415a
mov rbp, rax
jmp 0x18017415d
lea r8, [rbx + 1]
mov rdx, rbp
mov rcx, r12
mov rdi, rbp
call fcn.180173b70
mov rbp, rax
test rax, rax
jne 0x18017415d
nop dword [rax]
cmp rdi, qword [r14]
jae 0x18017414f
movzx ecx, byte [r13]
movzx r9d, byte [rdi]
movzx eax, cl
cmp cl, 0x25
je 0x18017408f
cmp al, 0x2e
je 0x1801740a5
cmp al, 0x5b
je 0x18017407e
mov eax, ecx
xor ecx, ecx
cmp eax, r9d
sete cl
jmp 0x18017409d
lea r8, [rbx - 1]
mov rdx, r13
mov ecx, r9d
call fcn.180173ac0
jmp 0x18017409b
movzx edx, byte [r15]
mov ecx, r9d
call fcn.180173950
mov ecx, eax
test ecx, ecx
je 0x18017414f
inc rdi
lea r8, [rbx + 1]
mov rdx, rdi
mov rcx, r12
call fcn.180173b70
mov rbp, rax
test rax, rax
je 0x180174050
jmp 0x18017415d
inc rbp
mov rdi, r11
mov rsi, rbp
nop dword [rax]
cmp rsi, qword [r14]
jae 0x180174127
movzx ecx, byte [r13]
movzx r9d, byte [rsi]
movzx eax, cl
cmp cl, 0x25
je 0x18017410a
cmp al, 0x2e
je 0x18017411f
cmp al, 0x5b
je 0x1801740f9
cmp ecx, r9d
mov ecx, r11d
sete cl
jmp 0x18017411b
lea r8, [rbx - 1]
mov rdx, r13
mov ecx, r9d
call fcn.180173ac0
jmp 0x180174116
movzx edx, byte [r15]
mov ecx, r9d
call fcn.180173950
xor r11d, r11d
mov ecx, eax
test ecx, ecx
je 0x180174127
inc rdi
inc rsi
jmp 0x1801740d0
test rdi, rdi
js 0x18017414f
nop dword [rax]
lea rdx, [rdi + rbp]
mov rcx, r12
lea r8, [rbx + 1]
call fcn.180173b70
test rax, rax
jne 0x180174027
sub rdi, 1
jns 0x180174130
xor ebp, ebp
jmp 0x18017415d
cmp rbp, qword [r14]
cmove r11, rbp
mov rbp, r11
inc dword [r12]
mov rax, rbp
mov r14, qword [rsp + 0x60]
mov rdi, qword [rsp + 0x58]
mov rsi, qword [rsp + 0x50]
mov r15, qword [rsp + 0x20]
add rsp, 0x28
pop r13
pop r12
pop rbp
pop rbx
ret
lea rdx, str.pattern_too_complex
mov rcx, rbx
call fcn.180164d90
int3
mov rcx, qword [r12 + 0x20]
lea rdx, str.invalid_pattern_capture
call fcn.180164d90
int3
mov rcx, qword [r12 + 0x20]
lea rdx, str.too_many_captures
call fcn.180164d90
int3
mov rcx, qword [r12 + 0x20]
lea rdx, str.too_many_captures
call fcn.180164d90
int3
mov rcx, qword [r12 + 0x20]
lea rdx, str.malformed_pattern__missing_arguments_to___b_
call fcn.180164d90
int3
mov rcx, qword [r12 + 0x20]
lea rdx, str.malformed_pattern__missing___
call fcn.180164d90
int3
mov rcx, qword [r12 + 0x20]
lea rdx, str.missing___after___f_in_pattern
call fcn.180164d90
int3
mov rcx, qword [r12 + 0x20]
lea rdx, str.invalid_capture_index____d
inc r8d
call fcn.180164d90
int3
mov rcx, qword [r12 + 0x20]
lea rdx, str.malformed_pattern__missing___
call fcn.180164d90
int3
mov rcx, qword [r12 + 0x20]
lea rdx, str.malformed_pattern__ends_with____
call fcn.180164d90
int3