Function at 0x140031e50
Capabilities:
Parse credit card information

Disassembly:
push rdi
push r14
push r15
sub rsp, 0x30
mov r9d, dword [rcx + 0x20]
mov r14, r8
mov rdi, rdx
mov r15, rcx
lea eax, [r9 - 1]
mov dword [rcx + 0x20], eax
test r9d, r9d
je 0x140032386
mov rdx, qword [rcx + 0x10]
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 0x14003235c
lea rbp, [0x140000000]
xor r13d, r13d
movabs r9, 0x8000240000000000
movzx r10d, byte [r14]
movsx ecx, r10b
sub ecx, 0x24
je 0x140032087
sub ecx, 1
je 0x140031f1c
sub ecx, 3
je 0x140032201
cmp ecx, 1
jne case.0x140031f45.51
movzx eax, byte [r15 + 0x24]
mov ecx, eax
sub rcx, 1
lea edx, [rax - 1]
js 0x140032397
lea rax, [rcx + 3]
shl rax, 4
add rax, r15
nop dword [rax + rax]
cmp qword [rax], 0xffffffffffffffff
je 0x1400321c0
dec edx
sub rax, 0x10
sub rcx, 1
js 0x140032397
jmp 0x140031f00
movzx r8d, byte [r14 + 1]
movsx eax, r8b
add eax, 0xffffffd0
cmp eax, 0x36
ja case.0x140031f45.51
cdqe
movzx eax, byte [rax + rbp + 0x32410]
mov ecx, dword [rbp + rax*4 + 0x32400]
add rcx, rbp
jmp rcx
lea rcx, [r14 + 2]
lea rax, [rdx - 1]
cmp rcx, rax
jae 0x1400323a8
movzx r9d, byte [rcx]
cmp byte [rdi], r9b
jne 0x140032359
mov r8, qword [r15 + 8]
lea rax, [rdi + 1]
movzx r10d, byte [rcx + 1]
mov ecx, 1
cmp rax, r8
jae 0x140032359
movzx edx, byte [rax]
cmp dl, r10b
jne 0x140031fa3
sub ecx, 1
jne 0x140031faa
lea rdi, [rax + 1]
test rdi, rdi
je 0x14003235c
add r14, 4
jmp 0x1400321a4
cmp dl, r9b
jne 0x140031faa
inc ecx
inc rax
cmp rax, r8
jb 0x140031f80
jmp 0x140032359
add r14, 2
cmp byte [r14], 0x5b
jne 0x1400323b9
mov rdx, r14
mov rcx, r15
call fcn.1400319f0
mov rbx, rax
cmp rdi, qword [r15]
jne 0x140031fdc
xor cl, cl
jmp 0x140031fe0
movzx ecx, byte [rdi - 1]
movzx ecx, cl
lea r8, [rax - 1]
mov rdx, r14
call fcn.140031bf0
test eax, eax
jne 0x140032359
movzx ecx, byte [rdi]
lea r8, [rbx - 1]
mov rdx, r14
call fcn.140031bf0
test eax, eax
je 0x140032359
mov r14, rbx
jmp 0x1400321a4
mov rcx, r8
add r8d, 0xffffffcf
js 0x1400323ca
movzx eax, byte [r15 + 0x24]
cmp r8d, eax
jge 0x1400323ca
add rcx, 0xffffffffffffffcf
lea rax, [rcx + 3]
add rax, rax
mov rbx, qword [r15 + rax*8]
cmp rbx, 0xffffffffffffffff
je 0x1400323ca
mov rax, qword [r15 + 8]
sub rax, rdi
cmp rax, rbx
jb 0x140032359
add rcx, rcx
mov r8, rbx
mov rdx, rdi
mov rcx, qword [r15 + rcx*8 + 0x28]
call sub.VCRUNTIME140.dll_memcmp
test eax, eax
jne 0x140032359
add rdi, rbx
je 0x14003235c
add r14, 2
jmp 0x1400321a4
lea rax, [r14 + 1]
cmp rax, rdx
je 0x140032351
lea rbx, [r14 + 1]
cmp r10b, 0x25
je 0x1400320d2
cmp r10b, 0x5b
jne 0x1400320de
cmp byte [r14 + 1], 0x5e
jne 0x1400320b0
inc rbx
nop
cmp rbx, rdx
je 0x1400323de
movzx eax, byte [rbx]
inc rbx
cmp al, 0x25
jne 0x1400320cb
cmp rbx, rdx
jae 0x1400320cb
inc rbx
cmp byte [rbx], 0x5d
jne 0x1400320b0
jmp 0x1400320db
cmp rbx, rdx
je 0x1400323ef
inc rbx
cmp rdi, qword [r15 + 8]
jb 0x1400320ec
movzx eax, byte [rbx]
jmp 0x14003216c
movzx r9d, byte [rdi]
movzx eax, r10b
cmp r10b, 0x25
je 0x14003214c
cmp al, 0x2e
je 0x14003211e
cmp al, 0x5b
je 0x14003210d
cmp r10d, r9d
mov ecx, r13d
sete cl
jmp 0x14003215b
lea r8, [rbx - 1]
mov rdx, r14
mov ecx, r9d
call fcn.140031bf0
jmp 0x140032159
movzx eax, byte [rbx]
movsx ecx, al
sub ecx, 0x2a
je 0x1400322c9
sub ecx, 1
je 0x1400322c6
sub ecx, 2
je 0x140032234
cmp ecx, 0x12
je 0x140032188
inc rdi
mov r14, rbx
jmp 0x1400321a4
movzx edx, byte [r14 + 1]
mov ecx, r9d
call fcn.140031a80
mov ecx, eax
movzx eax, byte [rbx]
test ecx, ecx
jne 0x140032121
movabs r9, 0x8000240000000000
cmp al, 0x3f
ja 0x140032359
movsx rax, al
bt r9, rax
jae 0x140032359
lea r14, [rbx + 1]
jmp 0x1400321ae
lea r14, [rbx + 1]
mov rcx, r15
mov r8, r14
lea rdx, [rdi + 1]
call fcn.140031e50
test rax, rax
jne 0x14003222c
movabs r9, 0x8000240000000000
mov rdx, qword [r15 + 0x10]
cmp r14, rdx
jne 0x140031eb1
jmp 0x14003235c
movsxd rcx, edx
lea r8, [r14 + 1]
mov rax, rdi
mov rdx, rdi
lea rbx, [rcx + 3]
add rcx, rcx
add rbx, rbx
sub rax, qword [r15 + rcx*8 + 0x28]
mov rcx, r15
mov qword [r15 + rbx*8], rax
call fcn.140031e50
mov rdi, rax
test rax, rax
jne 0x14003235c
mov qword [r15 + rbx*8], 0xffffffffffffffff
jmp 0x14003235c
cmp byte [r14 + 1], 0x29
mov r9d, r13d
mov rdx, rdi
mov rcx, r15
setne r9b
add r9d, 0xfffffffe
cmp byte [r14 + 1], 0x29
sete r13b
lea r8, [r13 + 1]
add r8, r14
call fcn.140031df0
mov rdi, rax
jmp 0x14003235c
lea r8, [rbx + 1]
mov rdx, rdi
mov rcx, r15
mov rsi, rdi
call fcn.140031e50
mov rdi, rax
test rax, rax
jne 0x14003235c
cmp rsi, qword [r15 + 8]
jae 0x140032359
movzx ecx, byte [r14]
movzx r9d, byte [rsi]
movzx eax, cl
cmp cl, 0x25
je 0x140032290
cmp al, 0x2e
je 0x1400322a7
cmp al, 0x5b
je 0x14003227f
cmp ecx, r9d
mov ecx, r13d
sete cl
jmp 0x14003229f
lea r8, [rbx - 1]
mov rdx, r14
mov ecx, r9d
call fcn.140031bf0
jmp 0x14003229d
movzx edx, byte [r14 + 1]
mov ecx, r9d
call fcn.140031a80
mov ecx, eax
test ecx, ecx
je 0x140032359
inc rsi
lea r8, [rbx + 1]
mov rdx, rsi
mov rcx, r15
call fcn.140031e50
mov rdi, rax
test rax, rax
je 0x140032252
jmp 0x14003235c
inc rdi
mov rsi, r13
mov rbp, rdi
nop
cmp rbp, qword [r15 + 8]
jae 0x140032326
movzx ecx, byte [r14]
movzx r9d, byte [rbp]
movzx eax, cl
cmp cl, 0x25
je 0x14003230b
cmp al, 0x2e
je 0x14003231e
cmp al, 0x5b
je 0x1400322fa
cmp ecx, r9d
mov ecx, r13d
sete cl
jmp 0x14003231a
lea r8, [rbx - 1]
mov rdx, r14
mov ecx, r9d
call fcn.140031bf0
jmp 0x140032318
movzx edx, byte [r14 + 1]
mov ecx, r9d
call fcn.140031a80
mov ecx, eax
test ecx, ecx
je 0x140032326
inc rsi
inc rbp
jmp 0x1400322d0
test rsi, rsi
js 0x140032359
nop dword [rax + rax]
lea rdx, [rsi + rdi]
mov rcx, r15
lea r8, [rbx + 1]
call fcn.140031e50
test rax, rax
jne 0x14003222c
sub rsi, 1
jns 0x140032330
jmp 0x140032359
cmp rdi, qword [r15 + 8]
cmove r13, rdi
mov rdi, r13
inc dword [r15 + 0x20]
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 + 0x18]
lea rdx, str.pattern_too_complex
call fcn.140005f60
int3
mov rcx, qword [r15 + 0x18]
lea rdx, str.invalid_pattern_capture
call fcn.140005f60
int3
mov rcx, qword [r15 + 0x18]
lea rdx, str.malformed_pattern__missing_arguments_to___b_
call fcn.140005f60
int3
mov rcx, qword [r15 + 0x18]
lea rdx, str.missing___after___f_in_pattern
call fcn.140005f60
int3
mov rcx, qword [r15 + 0x18]
lea rdx, str.invalid_capture_index____d
inc r8d
call fcn.140005f60
int3
mov rcx, qword [r15 + 0x18]
lea rdx, str.malformed_pattern__missing___
call fcn.140005f60
int3
mov rcx, qword [r15 + 0x18]
lea rdx, str.malformed_pattern__ends_with____
call fcn.140005f60
int3