Function at 0x180173aa0
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 0x1801740b3
mov rcx, qword [rbx + 8]
lea rax, [rbx + 8]
sub rcx, rax
mov r8, qword [rcx + 0xce0]
test r8, r8
je 0x180173af9
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 0x18017408d
lea r14, [r12 + 0x10]
movabs r9, 0x8000240000000000
lea rsi, [0x180000000]
xor r11d, r11d
movzx r10d, byte [r13]
movsx ecx, r10b
sub ecx, 0x24
je 0x180173d0d
sub ecx, 1
je 0x180173b66
sub ecx, 3
je 0x180173ece
cmp ecx, 1
je 0x180173e4c
lea r15, [r13 + 1]
jmp case.0x180173b93.51
movzx r8d, byte [r13 + 1]
lea r15, [r13 + 1]
movsx eax, r8b
add eax, 0xffffffd0
cmp eax, 0x36
ja case.0x180173b93.51
cdqe
movzx eax, byte [rsi + rax + 0x174178]
mov ecx, dword [rsi + rax*4 + 0x174168]
add rcx, rsi
jmp rcx
lea rcx, [r13 + 2]
lea rax, [rdx - 1]
cmp rcx, rax
jae 0x1801740f9
movzx r9d, byte [rcx]
cmp byte [rbp], r9b
jne 0x18017408a
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 0x18017408a
movzx edx, byte [rax]
cmp dl, r10b
jne 0x180173bf8
sub ecx, 1
jne 0x180173bff
lea rbp, [rax + 1]
test rbp, rbp
je 0x18017408d
add r13, 4
jmp 0x180173e2f
cmp dl, r9b
jne 0x180173bff
inc ecx
inc rax
cmp rax, r8
jb 0x180173bd5
jmp 0x18017408a
cmp byte [r13 + 2], 0x5b
jne 0x18017411d
cmp byte [r13 + 3], 0x5e
lea rcx, [r13 + 3]
jne 0x180173c25
inc rcx
cmp rcx, rdx
je 0x18017410b
movzx eax, byte [rcx]
inc rcx
cmp al, 0x25
jne 0x180173c40
cmp rcx, rdx
jae 0x180173c40
inc rcx
cmp byte [rcx], 0x5d
jne 0x180173c25
lea rbx, [rcx + 1]
cmp rbp, qword [r12 + 8]
jne 0x180173c54
xor al, al
jmp 0x180173c58
movzx eax, byte [rbp - 1]
movzx ecx, al
lea r8, [rbx - 1]
lea rdx, [r13 + 2]
call fcn.1801739f0
test eax, eax
jne 0x18017407f
movzx ecx, byte [rbp]
lea r8, [rbx - 1]
lea rdx, [r13 + 2]
call fcn.1801739f0
test eax, eax
je 0x18017407f
mov r13, rbx
lea r14, [r12 + 0x10]
jmp 0x180173e2f
mov rax, r8
add r8d, 0xffffffcf
js 0x18017412f
cmp r8d, dword [r12 + 0x28]
jge 0x18017412f
mov rcx, rax
add rax, 0xffffffffffffffcf
add rax, rax
mov rbx, qword [r12 + rax*8 + 0x38]
cmp rbx, 0xffffffffffffffff
je 0x18017412f
mov rax, qword [r12 + 0x10]
lea r14, [r12 + 0x10]
sub rax, rbp
cmp rax, rbx
jb 0x18017408a
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 0x180173f4f
add rbp, rbx
je 0x18017408d
add r13, 2
jmp 0x180173e2f
lea r15, [r13 + 1]
cmp r15, rdx
je 0x180174083
mov rbx, r15
cmp r10b, 0x25
je 0x180173d54
cmp r10b, 0x5b
jne 0x180173d60
cmp byte [r15], 0x5e
jne 0x180173d32
inc rbx
cmp rbx, rdx
je 0x180174144
movzx eax, byte [rbx]
inc rbx
cmp al, 0x25
jne 0x180173d4d
cmp rbx, rdx
jae 0x180173d4d
inc rbx
cmp byte [rbx], 0x5d
jne 0x180173d32
jmp 0x180173d5d
cmp rbx, rdx
je 0x180174156
inc rbx
cmp rbp, qword [r12 + 0x10]
lea r14, [r12 + 0x10]
jb 0x180173d74
movzx eax, byte [rbx]
jmp 0x180173df7
movzx r9d, byte [rbp]
movzx eax, r10b
cmp r10b, 0x25
je 0x180173dd5
cmp al, 0x2e
je 0x180173da7
cmp al, 0x5b
je 0x180173d96
cmp r10d, r9d
mov ecx, r11d
sete cl
jmp 0x180173de6
lea r8, [rbx - 1]
mov rdx, r13
mov ecx, r9d
call fcn.1801739f0
jmp 0x180173de1
movzx eax, byte [rbx]
movsx ecx, al
sub ecx, 0x2a
je 0x180173ff7
sub ecx, 1
je 0x180173ff4
sub ecx, 2
je 0x180173f5f
cmp ecx, 0x12
je 0x180173e13
inc rbp
mov r13, rbx
jmp 0x180173e2f
movzx edx, byte [r15]
mov ecx, r9d
call fcn.180173880
xor r11d, r11d
mov ecx, eax
movzx eax, byte [rbx]
test ecx, ecx
jne 0x180173daa
movabs r9, 0x8000240000000000
cmp al, 0x3f
ja 0x18017408a
movsx rax, al
bt r9, rax
jae 0x18017408a
lea r13, [rbx + 1]
jmp 0x180173e39
lea r13, [rbx + 1]
mov rcx, r12
mov r8, r13
lea rdx, [rbp + 1]
call fcn.180173aa0
test rax, rax
jne 0x180173f57
movabs r9, 0x8000240000000000
mov rdx, qword [r12 + 0x18]
cmp r13, rdx
je 0x18017408d
jmp 0x180173b31
mov r8d, dword [r12 + 0x28]
sub r8d, 1
movsxd rcx, r8d
js 0x1801740c3
mov rdx, rcx
shl rdx, 4
add rdx, 0x38
add rdx, r12
nop dword [rax]
cmp qword [rdx], 0xffffffffffffffff
je 0x180173e89
dec r8d
sub rdx, 0x10
sub rcx, 1
js 0x1801740c3
jmp 0x180173e70
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.180173aa0
mov rbp, rax
test rax, rax
jne 0x18017408d
mov qword [r12 + rbx*8 + 0x38], 0xffffffffffffffff
jmp 0x18017408d
cmp byte [r13 + 1], 0x29
lea r8, [r13 + 1]
movsxd rdx, dword [r12 + 0x28]
jne 0x180173f03
cmp edx, 0x20
jge 0x1801740d5
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 0x180173f22
cmp edx, 0x20
jge 0x1801740e7
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.180173aa0
mov rbp, rax
test rax, rax
jne 0x18017408d
dec dword [r12 + 0x28]
jmp 0x18017408d
xor r11d, r11d
jmp 0x18017408a
mov rbp, rax
jmp 0x18017408d
lea r8, [rbx + 1]
mov rdx, rbp
mov rcx, r12
mov rdi, rbp
call fcn.180173aa0
mov rbp, rax
test rax, rax
jne 0x18017408d
nop dword [rax]
cmp rdi, qword [r14]
jae 0x18017407f
movzx ecx, byte [r13]
movzx r9d, byte [rdi]
movzx eax, cl
cmp cl, 0x25
je 0x180173fbf
cmp al, 0x2e
je 0x180173fd5
cmp al, 0x5b
je 0x180173fae
mov eax, ecx
xor ecx, ecx
cmp eax, r9d
sete cl
jmp 0x180173fcd
lea r8, [rbx - 1]
mov rdx, r13
mov ecx, r9d
call fcn.1801739f0
jmp 0x180173fcb
movzx edx, byte [r15]
mov ecx, r9d
call fcn.180173880
mov ecx, eax
test ecx, ecx
je 0x18017407f
inc rdi
lea r8, [rbx + 1]
mov rdx, rdi
mov rcx, r12
call fcn.180173aa0
mov rbp, rax
test rax, rax
je 0x180173f80
jmp 0x18017408d
inc rbp
mov rdi, r11
mov rsi, rbp
nop dword [rax]
cmp rsi, qword [r14]
jae 0x180174057
movzx ecx, byte [r13]
movzx r9d, byte [rsi]
movzx eax, cl
cmp cl, 0x25
je 0x18017403a
cmp al, 0x2e
je 0x18017404f
cmp al, 0x5b
je 0x180174029
cmp ecx, r9d
mov ecx, r11d
sete cl
jmp 0x18017404b
lea r8, [rbx - 1]
mov rdx, r13
mov ecx, r9d
call fcn.1801739f0
jmp 0x180174046
movzx edx, byte [r15]
mov ecx, r9d
call fcn.180173880
xor r11d, r11d
mov ecx, eax
test ecx, ecx
je 0x180174057
inc rdi
inc rsi
jmp 0x180174000
test rdi, rdi
js 0x18017407f
nop dword [rax]
lea rdx, [rdi + rbp]
mov rcx, r12
lea r8, [rbx + 1]
call fcn.180173aa0
test rax, rax
jne 0x180173f57
sub rdi, 1
jns 0x180174060
xor ebp, ebp
jmp 0x18017408d
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