Function at 0x140078ac0
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 0x140078fd6
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 0x140078fac
lea rbp, [0x140000000]
xor r12d, r12d
movabs r13, 0x8000240000000000
movzx r10d, byte [r14]
movsx ecx, r10b
sub ecx, 0x24
je 0x140078cf7
sub ecx, 1
je 0x140078b8c
sub ecx, 3
je 0x140078e52
cmp ecx, 1
jne case.0x140078bb5.51
movzx eax, byte [r15 + 0x24]
mov ecx, eax
sub rcx, 1
lea edx, [rax - 1]
js 0x140078fe7
lea rax, [rcx + 3]
shl rax, 4
add rax, r15
nop dword [rax + rax]
cmp qword [rax], 0xffffffffffffffff
je 0x140078e11
dec edx
sub rax, 0x10
sub rcx, 1
js 0x140078fe7
jmp 0x140078b70
movzx r8d, byte [r14 + 1]
movsx eax, r8b
add eax, 0xffffffd0
cmp eax, 0x36
ja case.0x140078bb5.51
cdqe
movzx eax, byte [rax + rbp + 0x79060]
mov ecx, dword [rbp + rax*4 + 0x79050]
add rcx, rbp
jmp rcx
lea rcx, [r14 + 2]
lea rax, [rdx - 1]
cmp rcx, rax
jae 0x140078ff8
movzx r9d, byte [rcx]
cmp byte [rdi], r9b
jne 0x140078fa9
mov r8, qword [r15 + 8]
lea rax, [rdi + 1]
movzx r10d, byte [rcx + 1]
mov ecx, 1
cmp rax, r8
jae 0x140078fa9
movzx edx, byte [rax]
cmp dl, r10b
jne 0x140078c13
sub ecx, 1
jne 0x140078c1a
lea rdi, [rax + 1]
test rdi, rdi
je 0x140078fac
add r14, 4
jmp 0x140078dff
cmp dl, r9b
jne 0x140078c1a
inc ecx
inc rax
cmp rax, r8
jb 0x140078bf0
jmp 0x140078fa9
add r14, 2
cmp byte [r14], 0x5b
jne 0x140079009
mov rdx, r14
mov rcx, r15
call fcn.140078660
mov rbx, rax
cmp rdi, qword [r15]
jne 0x140078c4c
xor cl, cl
jmp 0x140078c50
movzx ecx, byte [rdi - 1]
movzx ecx, cl
lea r8, [rax - 1]
mov rdx, r14
call fcn.140078860
test eax, eax
jne 0x140078fa9
movzx ecx, byte [rdi]
lea r8, [rbx - 1]
mov rdx, r14
call fcn.140078860
test eax, eax
je 0x140078fa9
mov r14, rbx
jmp 0x140078dff
mov rcx, r8
add r8d, 0xffffffcf
js 0x14007901a
movzx eax, byte [r15 + 0x24]
cmp r8d, eax
jge 0x14007901a
add rcx, 0xffffffffffffffcf
lea rax, [rcx + 3]
add rax, rax
mov rbx, qword [r15 + rax*8]
cmp rbx, 0xffffffffffffffff
je 0x14007901a
mov rax, qword [r15 + 8]
sub rax, rdi
cmp rax, rbx
jb 0x140078fa9
add rcx, rcx
mov r8, rbx
mov rdx, rdi
mov rcx, qword [r15 + rcx*8 + 0x28]
call fcn.14008a204
test eax, eax
jne 0x140078fa9
add rdi, rbx
je 0x140078fac
add r14, 2
jmp 0x140078dff
lea rax, [r14 + 1]
cmp rax, rdx
je 0x140078fa1
lea rbx, [r14 + 1]
cmp r10b, 0x25
je 0x140078d42
cmp r10b, 0x5b
jne 0x140078d4e
cmp byte [r14 + 1], 0x5e
jne 0x140078d20
inc rbx
nop
cmp rbx, rdx
je 0x14007902e
movzx eax, byte [rbx]
inc rbx
cmp al, 0x25
jne 0x140078d3b
cmp rbx, rdx
jae 0x140078d3b
inc rbx
cmp byte [rbx], 0x5d
jne 0x140078d20
jmp 0x140078d4b
cmp rbx, rdx
je 0x14007903f
inc rbx
cmp rdi, qword [r15 + 8]
jb 0x140078d59
movzx eax, byte [rbx]
jmp 0x140078dcf
movzx r9d, byte [rdi]
movzx eax, r10b
cmp r10b, 0x25
je 0x140078db9
cmp al, 0x2e
je 0x140078d8b
cmp al, 0x5b
je 0x140078d7a
cmp r10d, r9d
mov ecx, r12d
sete cl
jmp 0x140078dc8
lea r8, [rbx - 1]
mov rdx, r14
mov ecx, r9d
call fcn.140078860
jmp 0x140078dc6
movzx eax, byte [rbx]
movsx ecx, al
sub ecx, 0x2a
je 0x140078f1b
sub ecx, 1
je 0x140078f18
sub ecx, 2
je 0x140078e86
cmp ecx, 0x12
je 0x140078de7
inc rdi
mov r14, rbx
jmp 0x140078dff
movzx edx, byte [r14 + 1]
mov ecx, r9d
call fcn.1400786f0
mov ecx, eax
movzx eax, byte [rbx]
test ecx, ecx
jne 0x140078d8e
cmp al, 0x3f
ja 0x140078fa9
bt r13, rax
jae 0x140078fa9
lea r14, [rbx + 1]
jmp 0x140078dff
lea r14, [rbx + 1]
mov rcx, r15
mov r8, r14
lea rdx, [rdi + 1]
call fcn.140078ac0
test rax, rax
jne 0x140078e7e
mov rdx, qword [r15 + 0x10]
cmp r14, rdx
jne 0x140078b21
jmp 0x140078fac
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.140078ac0
mov rdi, rax
test rax, rax
jne 0x140078fac
mov qword [r15 + rbx*8], 0xffffffffffffffff
jmp 0x140078fac
cmp byte [r14 + 1], 0x29
mov r9d, r12d
mov rdx, rdi
mov rcx, r15
setne r9b
add r9d, 0xfffffffe
cmp byte [r14 + 1], 0x29
sete r12b
lea r8, [r12 + 1]
add r8, r14
call fcn.140078a60
mov rdi, rax
jmp 0x140078fac
lea r8, [rbx + 1]
mov rdx, rdi
mov rcx, r15
mov rsi, rdi
call fcn.140078ac0
mov rdi, rax
test rax, rax
jne 0x140078fac
cmp rsi, qword [r15 + 8]
jae 0x140078fa9
movzx ecx, byte [r14]
movzx r9d, byte [rsi]
movzx eax, cl
cmp cl, 0x25
je 0x140078ee2
cmp al, 0x2e
je 0x140078ef9
cmp al, 0x5b
je 0x140078ed1
cmp ecx, r9d
mov ecx, r12d
sete cl
jmp 0x140078ef1
lea r8, [rbx - 1]
mov rdx, r14
mov ecx, r9d
call fcn.140078860
jmp 0x140078eef
movzx edx, byte [r14 + 1]
mov ecx, r9d
call fcn.1400786f0
mov ecx, eax
test ecx, ecx
je 0x140078fa9
inc rsi
lea r8, [rbx + 1]
mov rdx, rsi
mov rcx, r15
call fcn.140078ac0
mov rdi, rax
test rax, rax
je 0x140078ea4
jmp 0x140078fac
inc rdi
mov rsi, r12
mov rbp, rdi
cmp rbp, qword [r15 + 8]
jae 0x140078f77
movzx ecx, byte [r14]
movzx r9d, byte [rbp]
movzx eax, cl
cmp cl, 0x25
je 0x140078f5c
cmp al, 0x2e
je 0x140078f6f
cmp al, 0x5b
je 0x140078f4b
cmp ecx, r9d
mov ecx, r12d
sete cl
jmp 0x140078f6b
lea r8, [rbx - 1]
mov rdx, r14
mov ecx, r9d
call fcn.140078860
jmp 0x140078f69
movzx edx, byte [r14 + 1]
mov ecx, r9d
call fcn.1400786f0
mov ecx, eax
test ecx, ecx
je 0x140078f77
inc rsi
inc rbp
jmp 0x140078f21
test rsi, rsi
js 0x140078fa9
nop dword [rax]
lea rdx, [rsi + rdi]
mov rcx, r15
lea r8, [rbx + 1]
call fcn.140078ac0
test rax, rax
jne 0x140078e7e
sub rsi, 1
jns 0x140078f80
jmp 0x140078fa9
cmp rdi, qword [r15 + 8]
cmove r12, rdi
mov rdi, r12
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 sym.lua_language_server.exe_luaL_error
int3
mov rcx, qword [r15 + 0x18]
lea rdx, str.invalid_pattern_capture
call sym.lua_language_server.exe_luaL_error
int3
mov rcx, qword [r15 + 0x18]
lea rdx, str.malformed_pattern__missing_arguments_to___b_
call sym.lua_language_server.exe_luaL_error
int3
mov rcx, qword [r15 + 0x18]
lea rdx, str.missing___after___f_in_pattern
call sym.lua_language_server.exe_luaL_error
int3
mov rcx, qword [r15 + 0x18]
lea rdx, str.invalid_capture_index____d
inc r8d
call sym.lua_language_server.exe_luaL_error
int3
mov rcx, qword [r15 + 0x18]
lea rdx, str.malformed_pattern__missing___
call sym.lua_language_server.exe_luaL_error
int3
mov rcx, qword [r15 + 0x18]
lea rdx, str.malformed_pattern__ends_with____
call sym.lua_language_server.exe_luaL_error
int3