Function at 0x180027a50
Capabilities:
Parse credit card information

Disassembly:
push rbx
push rdi
push r15
sub rsp, 0x30
mov r9d, dword [rcx]
mov rdi, r8
mov rbx, rdx
mov r15, rcx
lea eax, [r9 - 1]
mov dword [rcx], eax
test r9d, r9d
je 0x180027fa4
mov rdx, qword [rcx + 0x18]
mov qword [rsp + 0x50], rbp
mov qword [rsp + 0x58], rsi
mov qword [rsp + 0x60], r12
mov qword [rsp + 0x28], r13
mov qword [rsp + 0x20], r14
cmp r8, rdx
je 0x180027f7c
mov r8, rdx
xor r12d, r12d
movabs r13, 0x8000240000000000
nop word [rax + rax]
movsx r10d, byte [rdi]
mov ecx, r10d
sub ecx, 0x24
je 0x180027ca0
sub ecx, 1
je 0x180027b12
sub ecx, 3
je 0x180027e20
cmp ecx, 1
jne 0x180027cad
mov r8d, dword [r15 + 0x28]
sub r8d, ecx
movsxd rcx, r8d
js 0x180027fb5
mov rax, rcx
lea rdx, [r15 + 0x38]
shl rax, 4
add rdx, rax
cmp qword [rdx], 0xffffffffffffffff
je 0x180027ddb
dec r8d
sub rdx, 0x10
sub rcx, 1
js 0x180027fb5
jmp 0x180027af5
movzx ecx, byte [rdi + 1]
movzx eax, cl
cmp cl, 0x30
jl 0x180027cad
cmp al, 0x39
jle 0x180027c2e
cmp al, 0x62
je 0x180027bbe
cmp al, 0x66
jne 0x180027cad
add rdi, 2
cmp byte [rdi], 0x5b
jne 0x180027fd7
cmp byte [rdi + 1], 0x5e
lea rcx, [rdi + 1]
cmovne rcx, rdi
inc rcx
cmp rcx, r8
je 0x180027fc6
movzx eax, byte [rcx]
inc rcx
cmp al, 0x25
jne 0x180027b71
cmp rcx, r8
jae 0x180027b71
inc rcx
cmp byte [rcx], 0x5d
jne 0x180027b56
lea rsi, [rcx + 1]
cmp rbx, qword [r15 + 8]
jne 0x180027b84
xor al, al
jmp 0x180027b88
movzx eax, byte [rbx - 1]
movzx ecx, al
lea r8, [rsi - 1]
mov rdx, rdi
call fcn.180027930
test eax, eax
jne 0x180027f79
movzx ecx, byte [rbx]
lea r8, [rsi - 1]
mov rdx, rdi
call fcn.180027930
test eax, eax
je 0x180027f79
mov rdi, rsi
jmp 0x180027dc6
lea rcx, [rdi + 2]
lea rax, [rdx - 1]
cmp rcx, rax
jae 0x180027fe8
movzx r8d, byte [rcx]
cmp byte [rbx], r8b
jne 0x180027f79
mov r9, qword [r15 + 0x10]
lea rax, [rbx + 1]
movzx r10d, byte [rcx + 1]
mov ecx, 1
cmp rax, r9
jae 0x180027f79
movzx edx, byte [rax]
cmp dl, r10b
jne 0x180027c1a
sub ecx, 1
jne 0x180027c21
lea rbx, [rax + 1]
test rbx, rbx
je 0x180027f7c
add rdi, 4
jmp 0x180027dc6
cmp dl, r8b
jne 0x180027c21
inc ecx
inc rax
cmp rax, r9
jb 0x180027bf7
jmp 0x180027f79
movzx eax, cl
lea r8d, [rax - 0x31]
test r8d, r8d
js 0x180027ff9
cmp r8d, dword [r15 + 0x28]
jge 0x180027ff9
mov ecx, eax
add rax, 0xffffffffffffffcf
add rax, rax
mov rsi, qword [r15 + rax*8 + 0x38]
cmp rsi, 0xffffffffffffffff
je 0x180027ff9
mov rax, qword [r15 + 0x10]
sub rax, rbx
cmp rax, rsi
jb 0x180027f79
add rcx, 0xffffffffffffffd2
mov r8, rsi
add rcx, rcx
mov rdx, rbx
mov rcx, qword [r15 + rcx*8]
call fcn.180059340
test eax, eax
jne 0x180027f79
add rbx, rsi
je 0x180027f7c
add rdi, 2
jmp 0x180027dc6
lea rax, [rdi + 1]
cmp rax, rdx
je 0x180027f71
lea r8, [rdi + 1]
cmp r10b, 0x25
je 0x180027cf8
cmp r10b, 0x5b
je 0x180027cc2
mov r14, r8
jmp 0x180027d05
cmp byte [r8], 0x5e
mov rcx, r12
sete cl
inc rcx
add rcx, rdi
cmp rcx, rdx
je 0x18002800d
movzx eax, byte [rcx]
inc rcx
cmp al, 0x25
jne 0x180027ced
cmp rcx, rdx
jae 0x180027ced
inc rcx
cmp byte [rcx], 0x5d
jne 0x180027cd2
lea r14, [rcx + 1]
jmp 0x180027d05
cmp r8, rdx
je 0x18002801e
lea r14, [rdi + 2]
cmp rbx, qword [r15 + 0x10]
jb 0x180027d10
mov ecx, r12d
jmp 0x180027d5b
movzx r9d, byte [rbx]
movzx eax, r10b
cmp r10b, 0x25
je 0x180027d4d
cmp al, 0x2e
je 0x180027d46
cmp al, 0x5b
je 0x180027d35
movzx eax, r10b
mov ecx, r12d
cmp eax, r9d
sete cl
jmp 0x180027d5b
lea r8, [r14 - 1]
mov rdx, rdi
mov ecx, r9d
call fcn.180027930
jmp 0x180027d59
mov ecx, 1
jmp 0x180027d5b
movzx edx, byte [r8]
mov ecx, r9d
call fcn.1800277d0
mov ecx, eax
movzx eax, byte [r14]
test ecx, ecx
jne 0x180027d7f
cmp al, 0x3f
ja 0x180027f79
movsx rax, al
bt r13, rax
jae 0x180027f79
lea rdi, [r14 + 1]
jmp 0x180027dc6
movsx ecx, al
sub ecx, 0x2a
je 0x180027ee8
sub ecx, 1
je 0x180027ee5
sub ecx, 2
je 0x180027e52
cmp ecx, 0x12
je 0x180027daa
inc rbx
mov rdi, r14
jmp 0x180027dc6
lea rdi, [r14 + 1]
mov rcx, r15
mov r8, rdi
lea rdx, [rbx + 1]
call fcn.180027a50
test rax, rax
jne 0x180027e4a
mov rdx, qword [r15 + 0x18]
mov r8, rdx
cmp rdi, rdx
jne 0x180027ab0
jmp 0x180027f7c
movsxd rcx, r8d
mov rax, rbx
mov rsi, rcx
lea r8, [rdi + 1]
add rcx, 3
add rsi, rsi
add rcx, rcx
mov rdx, rbx
sub rax, qword [r15 + rcx*8]
mov rcx, r15
mov qword [r15 + rsi*8 + 0x38], rax
call fcn.180027a50
mov rbx, rax
test rax, rax
jne 0x180027f7c
mov qword [r15 + rsi*8 + 0x38], 0xffffffffffffffff
jmp 0x180027f7c
cmp byte [rdi + 1], 0x29
mov r9d, r12d
mov rdx, rbx
mov rcx, r15
setne r9b
add r9d, 0xfffffffe
cmp byte [rdi + 1], 0x29
sete r12b
lea r8, [r12 + 1]
add r8, rdi
call fcn.1800279f0
mov rbx, rax
jmp 0x180027f7c
lea r8, [r14 + 1]
mov rdx, rbx
mov rcx, r15
mov rsi, rbx
call fcn.180027a50
mov rbx, rax
test rax, rax
jne 0x180027f7c
cmp rsi, qword [r15 + 0x10]
jae 0x180027f79
movzx ecx, byte [rdi]
movzx r9d, byte [rsi]
movzx eax, cl
cmp cl, 0x25
je 0x180027eb0
cmp al, 0x2e
je 0x180027ec6
cmp al, 0x5b
je 0x180027e9f
movzx eax, cl
mov ecx, r12d
cmp eax, r9d
sete cl
jmp 0x180027ebe
lea r8, [r14 - 1]
mov rdx, rdi
mov ecx, r9d
call fcn.180027930
jmp 0x180027ebc
movzx edx, byte [rdi + 1]
mov ecx, r9d
call fcn.1800277d0
mov ecx, eax
test ecx, ecx
je 0x180027f79
inc rsi
lea r8, [r14 + 1]
mov rdx, rsi
mov rcx, r15
call fcn.180027a50
mov rbx, rax
test rax, rax
je 0x180027e70
jmp 0x180027f7c
inc rbx
mov rsi, r12
mov rbp, rbx
nop
cmp rbp, qword [r15 + 0x10]
jae 0x180027f47
movzx ecx, byte [rdi]
movzx r9d, byte [rbp]
movzx eax, cl
cmp cl, 0x25
je 0x180027f2d
cmp al, 0x2e
je 0x180027f3f
cmp al, 0x5b
je 0x180027f1c
movzx eax, cl
mov ecx, r12d
cmp eax, r9d
sete cl
jmp 0x180027f3b
lea r8, [r14 - 1]
mov rdx, rdi
mov ecx, r9d
call fcn.180027930
jmp 0x180027f39
movzx edx, byte [rdi + 1]
mov ecx, r9d
call fcn.1800277d0
mov ecx, eax
test ecx, ecx
je 0x180027f47
inc rsi
inc rbp
jmp 0x180027ef0
test rsi, rsi
js 0x180027f79
nop dword [rax]
lea rdx, [rsi + rbx]
mov rcx, r15
lea r8, [r14 + 1]
call fcn.180027a50
test rax, rax
jne 0x180027e4a
sub rsi, 1
jns 0x180027f50
jmp 0x180027f79
cmp rbx, qword [r15 + 0x10]
cmove r12, rbx
mov rbx, r12
inc dword [r15]
mov rax, rbx
mov r13, qword [rsp + 0x28]
mov r12, qword [rsp + 0x60]
mov rsi, qword [rsp + 0x58]
mov rbp, qword [rsp + 0x50]
mov r14, qword [rsp + 0x20]
add rsp, 0x30
pop r15
pop rdi
pop rbx
ret
mov rcx, qword [rcx + 0x20]
lea rdx, str.pattern_too_complex
call sym.lua53_64.dll_luaL_error
int3
mov rcx, qword [r15 + 0x20]
lea rdx, str.invalid_pattern_capture
call sym.lua53_64.dll_luaL_error
int3
mov rcx, qword [r15 + 0x20]
lea rdx, str.malformed_pattern__missing___
call sym.lua53_64.dll_luaL_error
int3
mov rcx, qword [r15 + 0x20]
lea rdx, str.missing___after___f_in_pattern
call sym.lua53_64.dll_luaL_error
int3
mov rcx, qword [r15 + 0x20]
lea rdx, str.malformed_pattern__missing_arguments_to___b_
call sym.lua53_64.dll_luaL_error
int3
mov rcx, qword [r15 + 0x20]
lea rdx, str.invalid_capture_index____d
inc r8d
call sym.lua53_64.dll_luaL_error
int3
mov rcx, qword [r15 + 0x20]
lea rdx, str.malformed_pattern__missing___
call sym.lua53_64.dll_luaL_error
int3
mov rcx, qword [r15 + 0x20]
lea rdx, str.malformed_pattern__ends_with____
call sym.lua53_64.dll_luaL_error
int3