Function at 0x140078f30
Capabilities:
Parse credit card information

Disassembly:
push rsi
push r14
push r15
sub rsp, 0x30
mov r9d, dword [rcx + 0x20]
mov r15, r8
mov rsi, rdx
mov r14, rcx
lea eax, [r9 - 1]
mov dword [rcx + 0x20], eax
test r9d, r9d
je 0x1400794e6
mov rdx, qword [rcx + 0x10]
mov qword [rsp + 0x58], rbx
mov qword [rsp + 0x60], rbp
mov qword [rsp + 0x68], rdi
mov qword [rsp + 0x28], r12
mov qword [rsp + 0x20], r13
cmp r8, rdx
je 0x1400794bc
lea rbp, [0x140000000]
xor r13d, r13d
movabs r9, 0x8000240000000000
movzx r10d, byte [r15]
movsx ecx, r10b
sub ecx, 0x24
je 0x14007918b
sub ecx, 1
je 0x140078ffc
sub ecx, 3
je 0x140079303
cmp ecx, 1
jne case.0x140079025.51
movzx eax, byte [r14 + 0x24]
mov ecx, eax
sub rcx, 1
lea edx, [rax - 1]
js 0x1400794f7
lea rax, [rcx + 3]
shl rax, 4
add rax, r14
nop dword [rax + rax]
cmp qword [rax], 0xffffffffffffffff
je 0x1400792c2
dec edx
sub rax, 0x10
sub rcx, 1
js 0x1400794f7
jmp 0x140078fe0
movzx r8d, byte [r15 + 1]
movsx eax, r8b
add eax, 0xffffffd0
cmp eax, 0x36
ja case.0x140079025.51
cdqe
movzx eax, byte [rax + rbp + 0x795a4]
mov ecx, dword [rbp + rax*4 + 0x79594]
add rcx, rbp
jmp rcx
lea rcx, [r15 + 2]
lea rax, [rdx - 1]
cmp rcx, rax
jae 0x14007952a
movzx r9d, byte [rcx]
cmp byte [rsi], r9b
jne 0x1400794b9
mov r8, qword [r14 + 8]
lea rax, [rsi + 1]
movzx r10d, byte [rcx + 1]
mov ecx, 1
cmp rax, r8
jae 0x1400794b9
movzx edx, byte [rax]
cmp dl, r10b
jne 0x140079083
sub ecx, 1
jne 0x14007908a
lea rsi, [rax + 1]
test rsi, rsi
je 0x1400794bc
add r15, 4
jmp 0x1400792a6
cmp dl, r9b
jne 0x14007908a
inc ecx
inc rax
cmp rax, r8
jb 0x140079060
jmp 0x1400794b9
cmp byte [r15 + 2], 0x5b
jne 0x14007954c
cmp byte [r15 + 3], 0x5e
lea rax, [r15 + 3]
jne 0x1400790b0
inc rax
cmp rax, rdx
je 0x14007953b
movzx ecx, byte [rax]
inc rax
cmp cl, 0x25
jne 0x1400790cc
cmp rax, rdx
jae 0x1400790cc
inc rax
cmp byte [rax], 0x5d
jne 0x1400790b0
lea rbx, [rax + 1]
cmp rsi, qword [r14]
jne 0x1400790de
xor al, al
jmp 0x1400790e2
movzx eax, byte [rsi - 1]
movzx ecx, al
lea r8, [rbx - 1]
lea rdx, [r15 + 2]
call fcn.140078e80
test eax, eax
jne 0x1400794b9
movzx ecx, byte [rsi]
lea r8, [rbx - 1]
lea rdx, [r15 + 2]
call fcn.140078e80
test eax, eax
je 0x1400794b9
mov r15, rbx
jmp 0x1400792a6
mov rcx, r8
add r8d, 0xffffffcf
js 0x14007955d
movzx eax, byte [r14 + 0x24]
cmp r8d, eax
jge 0x14007955d
add rcx, 0xffffffffffffffcf
lea rax, [rcx + 3]
add rax, rax
mov rbx, qword [r14 + rax*8]
cmp rbx, 0xffffffffffffffff
je 0x14007955d
mov rax, qword [r14 + 8]
sub rax, rsi
cmp rax, rbx
jb 0x1400794b9
add rcx, rcx
mov r8, rbx
mov rdx, rsi
mov rcx, qword [r14 + rcx*8 + 0x28]
call sub.VCRUNTIME140.dll_memcmp
test eax, eax
jne 0x1400794b9
add rsi, rbx
je 0x1400794bc
add r15, 2
jmp 0x1400792a6
lea rax, [r15 + 1]
cmp rax, rdx
je 0x1400794b1
lea rbx, [r15 + 1]
cmp r10b, 0x25
je 0x1400791d4
cmp r10b, 0x5b
jne 0x1400791e0
cmp byte [r15 + 1], 0x5e
jne 0x1400791b2
inc rbx
cmp rbx, rdx
je 0x140079571
movzx eax, byte [rbx]
inc rbx
cmp al, 0x25
jne 0x1400791cd
cmp rbx, rdx
jae 0x1400791cd
inc rbx
cmp byte [rbx], 0x5d
jne 0x1400791b2
jmp 0x1400791dd
cmp rbx, rdx
je 0x140079582
inc rbx
cmp rsi, qword [r14 + 8]
jb 0x1400791ee
movzx eax, byte [rbx]
jmp 0x14007926e
movzx r9d, byte [rsi]
movzx eax, r10b
cmp r10b, 0x25
je 0x14007924e
cmp al, 0x2e
je 0x140079220
cmp al, 0x5b
je 0x14007920f
cmp r10d, r9d
mov ecx, r13d
sete cl
jmp 0x14007925d
lea r8, [rbx - 1]
mov rdx, r15
mov ecx, r9d
call fcn.140078e80
jmp 0x14007925b
movzx eax, byte [rbx]
movsx ecx, al
sub ecx, 0x2a
je 0x140079427
sub ecx, 1
je 0x140079424
sub ecx, 2
je 0x14007938c
cmp ecx, 0x12
je 0x14007928a
inc rsi
mov r15, rbx
jmp 0x1400792a6
movzx edx, byte [r15 + 1]
mov ecx, r9d
call fcn.140078d10
mov ecx, eax
movzx eax, byte [rbx]
test ecx, ecx
jne 0x140079223
movabs r9, 0x8000240000000000
cmp al, 0x3f
ja 0x1400794b9
movsx rax, al
bt r9, rax
jae 0x1400794b9
lea r15, [rbx + 1]
jmp 0x1400792b0
lea r15, [rbx + 1]
mov rcx, r14
mov r8, r15
lea rdx, [rsi + 1]
call fcn.140078f30
test rax, rax
jne 0x140079384
movabs r9, 0x8000240000000000
mov rdx, qword [r14 + 0x10]
cmp r15, rdx
jne 0x140078f91
jmp 0x1400794bc
movsxd rcx, edx
lea r8, [r15 + 1]
mov rax, rsi
mov rdx, rsi
lea rbx, [rcx + 3]
add rcx, rcx
add rbx, rbx
sub rax, qword [r14 + rcx*8 + 0x28]
mov rcx, r14
mov qword [r14 + rbx*8], rax
call fcn.140078f30
mov rsi, rax
test rax, rax
jne 0x1400794bc
mov qword [r14 + rbx*8], 0xffffffffffffffff
jmp 0x1400794bc
cmp byte [r15 + 1], 0x29
lea r8, [r15 + 1]
movzx edx, byte [r14 + 0x24]
jne 0x14007933b
cmp dl, 0x20
jae 0x140079508
mov eax, edx
lea r8, [r15 + 2]
add rax, rax
mov qword [r14 + rax*8 + 0x28], rsi
lea rax, [rdx + 3]
add rax, rax
mov qword [r14 + rax*8], 0xfffffffffffffffe
jmp 0x14007935e
cmp dl, 0x20
jae 0x140079519
mov rax, rdx
add rax, rax
mov qword [r14 + rax*8 + 0x28], rsi
lea rax, [rdx + 3]
add rax, rax
mov qword [r14 + rax*8], 0xffffffffffffffff
inc dl
mov rcx, r14
mov byte [r14 + 0x24], dl
mov rdx, rsi
call fcn.140078f30
mov rsi, rax
test rax, rax
jne 0x1400794bc
dec byte [r14 + 0x24]
jmp 0x1400794bc
mov rsi, rax
jmp 0x1400794bc
lea r8, [rbx + 1]
mov rdx, rsi
mov rcx, r14
mov rdi, rsi
call fcn.140078f30
mov rsi, rax
test rax, rax
jne 0x1400794bc
nop word [rax + rax]
cmp rdi, qword [r14 + 8]
jae 0x1400794b9
movzx ecx, byte [r15]
movzx r9d, byte [rdi]
movzx eax, cl
cmp cl, 0x25
je 0x1400793ee
cmp al, 0x2e
je 0x140079405
cmp al, 0x5b
je 0x1400793dd
cmp ecx, r9d
mov ecx, r13d
sete cl
jmp 0x1400793fd
lea r8, [rbx - 1]
mov rdx, r15
mov ecx, r9d
call fcn.140078e80
jmp 0x1400793fb
movzx edx, byte [r15 + 1]
mov ecx, r9d
call fcn.140078d10
mov ecx, eax
test ecx, ecx
je 0x1400794b9
inc rdi
lea r8, [rbx + 1]
mov rdx, rdi
mov rcx, r14
call fcn.140078f30
mov rsi, rax
test rax, rax
je 0x1400793b0
jmp 0x1400794bc
inc rsi
mov rdi, r13
mov rbp, rsi
nop dword [rax]
cmp rbp, qword [r14 + 8]
jae 0x140079486
movzx ecx, byte [r15]
movzx r9d, byte [rbp]
movzx eax, cl
cmp cl, 0x25
je 0x14007946b
cmp al, 0x2e
je 0x14007947e
cmp al, 0x5b
je 0x14007945a
cmp ecx, r9d
mov ecx, r13d
sete cl
jmp 0x14007947a
lea r8, [rbx - 1]
mov rdx, r15
mov ecx, r9d
call fcn.140078e80
jmp 0x140079478
movzx edx, byte [r15 + 1]
mov ecx, r9d
call fcn.140078d10
mov ecx, eax
test ecx, ecx
je 0x140079486
inc rdi
inc rbp
jmp 0x140079430
test rdi, rdi
js 0x1400794b9
nop dword [rax + rax]
lea rdx, [rdi + rsi]
mov rcx, r14
lea r8, [rbx + 1]
call fcn.140078f30
test rax, rax
jne 0x140079384
sub rdi, 1
jns 0x140079490
jmp 0x1400794b9
cmp rsi, qword [r14 + 8]
cmove r13, rsi
mov rsi, r13
inc dword [r14 + 0x20]
mov rax, rsi
mov r12, qword [rsp + 0x28]
mov rdi, qword [rsp + 0x68]
mov rbp, qword [rsp + 0x60]
mov rbx, qword [rsp + 0x58]
mov r13, qword [rsp + 0x20]
add rsp, 0x30
pop r15
pop r14
pop rsi
ret
mov rcx, qword [rcx + 0x18]
lea rdx, str.pattern_too_complex
call fcn.140053ac0
int3
mov rcx, qword [r14 + 0x18]
lea rdx, str.invalid_pattern_capture
call fcn.140053ac0
int3
mov rcx, qword [r14 + 0x18]
lea rdx, str.too_many_captures
call fcn.140053ac0
int3
mov rcx, qword [r14 + 0x18]
lea rdx, str.too_many_captures
call fcn.140053ac0
int3
mov rcx, qword [r14 + 0x18]
lea rdx, str.malformed_pattern__missing_arguments_to___b_
call fcn.140053ac0
int3
mov rcx, qword [r14 + 0x18]
lea rdx, str.malformed_pattern__missing___
call fcn.140053ac0
int3
mov rcx, qword [r14 + 0x18]
lea rdx, str.missing___after___f_in_pattern
call fcn.140053ac0
int3
mov rcx, qword [r14 + 0x18]
lea rdx, str.invalid_capture_index____d
inc r8d
call fcn.140053ac0
int3
mov rcx, qword [r14 + 0x18]
lea rdx, str.malformed_pattern__missing___
call fcn.140053ac0
int3
mov rcx, qword [r14 + 0x18]
lea rdx, str.malformed_pattern__ends_with____
call fcn.140053ac0
int3