Function at 0x140030c70
Capabilities:
Parse credit card information

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x38
mov rbx, r8
mov r15, rdx
mov rsi, rcx
sub dword [rcx + 0x20], 1
jb 0x140031358
lea rax, [r15 + 1]
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x30], r15
jmp 0x140030cb9
test dil, dil
je 0x14003129d
mov rax, qword [rsi + 0x10]
cmp rbx, rax
je 0x1400311a0
mov r14, rbx
movzx ecx, byte [rbx]
movsx edx, cl
cmp edx, 0x25
jne 0x140030ee3
movsx ecx, byte [r14 + 1]
cmp ecx, 0x66
jne 0x140030d60
cmp byte [r14 + 2], 0x5b
jne 0x140030fdd
lea r12, [r14 + 3]
lea rbx, [r14 + 4]
cmp byte [r14 + 3], 0x5e
cmovne rbx, r12
jmp 0x140030d08
mov rbx, rax
cmp byte [rbx], 0x5d
je 0x140030d40
cmp rbx, qword [rsi + 0x10]
je 0x140030d28
lea rax, [rbx + 1]
cmp byte [rbx], 0x25
jne 0x140030d00
cmp rax, qword [rsi + 0x10]
jae 0x140030d00
add rbx, 2
cmp byte [rbx], 0x5d
jne 0x140030d08
jmp 0x140030d40
mov rcx, qword [rsi + 0x18]
lea rdx, str.malformed_pattern__missing___
call fcn.140005840
jmp 0x140030d0e
add rbx, 1
add r14, 2
cmp r15, qword [rsi]
je 0x140030d90
movzx r15d, byte [r15 - 1]
jmp 0x140030d93
lea edx, [rcx - 0x30]
cmp edx, 0xa
jb 0x140031050
cmp ecx, 0x62
je 0x1400310e4
lea rcx, [r14 + 1]
cmp rcx, rax
je 0x14003101b
lea rbx, [r14 + 2]
jmp 0x140030f6c
xor r15d, r15d
lea r13, [rbx - 1]
cmp byte [r12], 0x5e
sete byte [rsp + 0x27]
setne al
cmove r14, r12
lea r12, [r14 + 1]
cmp r12, r13
jae 0x14003129d
mov byte [rsp + 0x26], al
movzx ebp, r15b
mov rax, r12
mov rdi, r14
jmp 0x140030de1
cmp cl, r15b
je 0x140030e30
mov rdi, rax
add rax, 1
cmp rax, r13
jae 0x140030e40
movzx ecx, byte [rdi + 1]
movzx edx, byte [rdi + 2]
cmp cl, 0x25
jne 0x140030e10
mov ecx, ebp
call fcn.140031460
test eax, eax
jne 0x140030e30
add rdi, 2
mov rax, rdi
jmp 0x140030dd5
cmp dl, 0x2d
jne 0x140030dd0
add rdi, 3
cmp rdi, r13
jae 0x140030dd0
cmp cl, r15b
jbe 0x140030e28
mov rax, rdi
jmp 0x140030dd5
mov rax, rdi
cmp byte [rdi], r15b
jb 0x140030dd5
movzx edi, byte [rsp + 0x26]
mov eax, edi
jmp 0x140030e4a
movzx eax, byte [rsp + 0x27]
movzx edi, byte [rsp + 0x26]
test al, al
mov r15, qword [rsp + 0x30]
jne 0x14003129d
movzx ebp, byte [r15]
jmp 0x140030e75
cmp al, bpl
je 0x140030cb0
mov r14, r12
add r12, 1
cmp r12, r13
jae 0x140030ed0
movzx eax, byte [r14 + 1]
movzx edx, byte [r14 + 2]
cmp al, 0x25
jne 0x140030ea0
mov ecx, ebp
call fcn.140031460
test eax, eax
jne 0x140030cb0
add r14, 2
mov r12, r14
jmp 0x140030e69
cmp dl, 0x2d
jne 0x140030e60
add r14, 3
cmp r14, r13
jae 0x140030e60
cmp al, bpl
jbe 0x140030eb8
mov r12, r14
jmp 0x140030e69
mov r12, r14
cmp byte [r14], bpl
jb 0x140030e69
jmp 0x140030cb0
movzx edi, byte [rsp + 0x27]
test dil, dil
jne 0x140030cb9
jmp 0x14003129d
cmp edx, 0x24
je 0x140030f5a
cmp edx, 0x29
je 0x1400311a8
cmp edx, 0x28
je 0x1400311c9
lea rbx, [r14 + 1]
cmp cl, 0x5b
jne 0x140030f6c
lea rax, [r14 + 2]
cmp byte [r14 + 1], 0x5e
cmove rbx, rax
jmp 0x140030f28
mov rbx, rax
cmp byte [rbx], 0x5d
je 0x140030f68
cmp rbx, qword [rsi + 0x10]
je 0x140030f48
lea rax, [rbx + 1]
cmp byte [rbx], 0x25
jne 0x140030f20
cmp rax, qword [rsi + 0x10]
jae 0x140030f20
add rbx, 2
cmp byte [rbx], 0x5d
jne 0x140030f28
jmp 0x140030f68
mov rcx, qword [rsi + 0x18]
lea rdx, str.malformed_pattern__missing___
call fcn.140005840
jmp 0x140030f2e
lea rbx, [r14 + 1]
cmp rbx, rax
jne 0x140030f6c
jmp 0x140031349
add rbx, 1
mov rcx, rsi
mov rdx, r15
mov r8, r14
mov r9, rbx
call fcn.140031370
movsx ecx, byte [rbx]
test eax, eax
je 0x140030faf
cmp ecx, 0x3f
jne 0x140031166
add rbx, 1
mov rcx, rsi
mov rdx, qword [rsp + 0x28]
mov r8, rbx
call fcn.140030c70
test rax, rax
je 0x140030cb9
jmp 0x14003129f
cmp cl, 0x3f
ja 0x14003129d
movzx eax, cl
movabs rcx, 0x8000240000000000
bt rcx, rax
mov eax, 0
jae 0x14003129f
add rbx, 1
jmp 0x140030cb9
mov rcx, qword [rsi + 0x18]
lea rdx, str.missing___after___f_in_pattern
call fcn.140005840
movsx eax, byte [r14 + 2]
lea r12, [r14 + 3]
cmp eax, 0x5b
je 0x140030cf1
cmp eax, 0x25
jne 0x140031013
cmp r12, qword [rsi + 0x10]
je 0x140031030
lea rbx, [r14 + 4]
jmp 0x140030d44
mov rbx, r12
jmp 0x140030d44
mov rcx, qword [rsi + 0x18]
lea rdx, str.malformed_pattern__ends_with____
call fcn.140005840
jmp 0x140030d82
mov rcx, qword [rsi + 0x18]
lea rdx, str.malformed_pattern__ends_with____
call fcn.140005840
jmp 0x14003100a
movzx r8d, cl
cmp r8b, 0x31
jb 0x140031080
lea eax, [r8 - 0x31]
movzx ecx, byte [rsi + 0x24]
cmp eax, ecx
jae 0x140031080
mov ecx, eax
shl rcx, 4
cmp qword [rsi + rcx + 0x30], 0xffffffffffffffff
jne 0x140031094
nop word cs:[rax + rax]
nop
mov rcx, qword [rsi + 0x18]
add r8d, 0xffffffd0
lea rdx, str.invalid_capture_index____d
call fcn.140005840
cdqe
shl rax, 4
mov rbx, qword [rsi + rax + 0x30]
mov rcx, qword [rsi + 8]
sub rcx, r15
cmp rcx, rbx
jb 0x14003129d
mov rcx, qword [rsi + rax + 0x28]
mov rdx, r15
mov r8, rbx
call fcn.140017a10
test eax, eax
jne 0x14003129d
mov eax, 0
test r15, r15
je 0x14003129f
add r15, rbx
add r14, 2
mov rbx, r14
jmp 0x140030c93
lea rdi, [r14 + 2]
add rax, 0xffffffffffffffff
cmp rax, rdi
jbe 0x14003118b
movzx eax, byte [r15]
cmp al, byte [rdi]
jne 0x14003129d
mov rdx, qword [rsi + 8]
lea rcx, [r15 + 1]
cmp rcx, rdx
jae 0x14003129d
movzx ecx, byte [r14 + 3]
lea r9, [r15 + 2]
not r15
add r15, rdx
mov edx, 1
mov r8, r15
mov r15, r9
jmp 0x14003114b
xor r10d, r10d
cmp r9b, al
sete r10b
add edx, r10d
add r15, 1
add r8, 0xffffffffffffffff
je 0x14003129d
movzx r9d, byte [r15 - 1]
cmp r9b, cl
jne 0x140031130
add edx, 0xffffffff
jne 0x14003113d
add r14, 4
mov rbx, r14
jmp 0x140030c93
cmp ecx, 0x2a
je 0x1400312b8
cmp ecx, 0x2b
je 0x1400312b4
cmp ecx, 0x2d
je 0x14003130f
mov r15, qword [rsp + 0x28]
jmp 0x140030c93
mov rcx, qword [rsi + 0x18]
lea rdx, str.malformed_pattern__missing_arguments_to___b_
call fcn.140005840
jmp 0x1400310f5
mov rax, r15
jmp 0x14003129f
add r14, 1
movzx eax, byte [rsi + 0x24]
test rax, rax
jle 0x140031205
add rax, 0xffffffffffffffff
mov ecx, eax
shl rcx, 4
cmp qword [rsi + rcx + 0x30], 0xffffffffffffffff
jne 0x1400311b0
jmp 0x140031215
cmp byte [r14 + 1], 0x29
jne 0x14003124d
add r14, 2
movzx edi, byte [rsi + 0x24]
cmp rdi, 0x20
jb 0x1400311ee
mov rcx, qword [rsi + 0x18]
lea rdx, [0x1400d939b]
call fcn.140005840
mov rax, rdi
shl rax, 4
mov qword [rsi + rax + 0x28], r15
mov qword [rsi + rax + 0x30], 0xfffffffffffffffe
jmp 0x140031280
mov rcx, qword [rsi + 0x18]
lea rdx, str.invalid_pattern_capture
call fcn.140005840
movsxd rdi, eax
shl rdi, 4
mov rax, r15
sub rax, qword [rsi + rdi + 0x28]
mov qword [rsi + rdi + 0x30], rax
mov rcx, rsi
mov rdx, r15
mov r8, r14
call fcn.140030c70
test rax, rax
jne 0x14003129f
lea rax, [rsi + rdi]
add rax, 0x30
mov qword [rax], 0xffffffffffffffff
jmp 0x14003129d
add r14, 1
movzx edi, byte [rsi + 0x24]
cmp rdi, 0x20
jb 0x14003126b
mov rcx, qword [rsi + 0x18]
lea rdx, [0x1400d939b]
call fcn.140005840
mov rax, rdi
shl rax, 4
mov qword [rsi + rax + 0x28], r15
mov qword [rsi + rax + 0x30], 0xffffffffffffffff
lea eax, [rdi + 1]
mov byte [rsi + 0x24], al
mov rcx, rsi
mov rdx, r15
mov r8, r14
call fcn.140030c70
test rax, rax
jne 0x14003129f
add byte [rsi + 0x24], 0xff
xor eax, eax
add dword [rsi + 0x20], 1
add rsp, 0x38
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
add r15, 1
mov rdi, 0xffffffffffffffff
nop
lea rdx, [rdi + r15]
add rdx, 1
mov rcx, rsi
mov r8, r14
mov r9, rbx
call fcn.140031370
add rdi, 1
test eax, eax
jne 0x1400312c0
add rbx, 1
nop word cs:[rax + rax]
nop dword [rax]
test rdi, rdi
js 0x14003129d
lea rdx, [r15 + rdi]
mov rcx, rsi
mov r8, rbx
call fcn.140030c70
add rdi, 0xffffffffffffffff
test rax, rax
je 0x1400312f0
jmp 0x14003129f
lea rdi, [rbx + 1]
mov rcx, rsi
mov rdx, r15
mov r8, rdi
call fcn.140030c70
test rax, rax
jne 0x14003129f
mov rcx, rsi
mov rdx, r15
mov r8, r14
mov r9, rbx
call fcn.140031370
test eax, eax
je 0x14003129d
add r15, 1
jmp 0x140031313
xor eax, eax
cmp r15, qword [rsi + 8]
cmove rax, r15
jmp 0x14003129f
mov rcx, qword [rsi + 0x18]
lea rdx, str.pattern_too_complex
call fcn.140005840
jmp 0x140030c93