Function at 0x14004f820
Capabilities:
Parse credit card information

Disassembly:
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x30
mov rax, qword [rcx + 0xb0]
mov rdi, qword [rcx + 0xc0]
lea rdx, [rax + 1]
mov qword [rcx + 0xb0], rdx
movzx ebp, byte [rax]
mov rbx, rcx
movsx edx, byte [rdi + rbp + 0x139]
mov rsi, rbp
test dl, dl
jne 0x14004f880
mov rax, qword [rdi]
lea rcx, [method.std::ctype_char_.do_narrow_char__char__const]
movsx edx, bpl
mov r9, qword [rax + 0x40]
mov eax, ebp
cmp r9, rcx
jne 0x14004faf0
cmp al, 0x20
je 0x14004f880
mov byte [rdi + rbp + 0x139], al
mov rcx, qword [rbx + 0xa0]
call sym.strchr
test rax, rax
je 0x14004fab0
cmp sil, 0x5c
je 0x14004f970
cmp sil, 0x28
je 0x14004f948
cmp sil, 0x29
je 0x14004fa98
cmp sil, 0x5b
je 0x14004fb08
cmp sil, 0x7b
je 0x14004fa48
test sil, sil
je 0x14004fba0
mov eax, esi
and eax, 0xffffffdf
cmp al, 0x5d
je 0x14004fab0
mov rbp, qword [rbx + 0xc0]
movzx r12d, sil
mov rdi, rbx
movzx eax, byte [rbp + r12 + 0x139]
test al, al
jne 0x14004f91a
mov rax, qword [rbp]
lea rdx, [method.std::ctype_char_.do_narrow_char__char__const]
mov rax, qword [rax + 0x40]
cmp rax, rdx
jne 0x14004fb60
mov byte [rbp + r12 + 0x139], sil
mov eax, esi
movzx edx, byte [rbx]
test dl, dl
jne 0x14004f934
jmp 0x14004f963
movzx edx, byte [rdi + 8]
add rdi, 8
test dl, dl
je 0x14004f963
cmp dl, al
jne 0x14004f928
mov eax, dword [rdi + 4]
mov dword [rbx + 0x90], eax
jmp 0x14004f963
mov eax, dword [rbx + 0x8c]
test al, 0x10
jne 0x14004f9c0
test al, 2
setne al
movzx eax, al
add eax, 5
mov dword [rbx + 0x90], eax
add rsp, 0x30
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
mov rax, qword [rbx + 0xb0]
cmp rax, qword [rbx + 0xb8]
je 0x14004fc2c
test dword [rbx + 0x8c], 0x120
je 0x14004fa68
movzx edx, byte [rax]
lea ecx, [rdx - 0x28]
cmp cl, 1
jbe 0x14004f9a8
cmp dl, 0x7b
jne 0x14004fa68
lea rdx, [rax + 1]
mov qword [rbx + 0xb0], rdx
movzx esi, byte [rax]
jmp 0x14004f89f
mov rdx, qword [rbx + 0xb0]
cmp byte [rdx], 0x3f
jne 0x14004f952
lea rax, [rdx + 1]
mov qword [rbx + 0xb0], rax
cmp rax, qword [rbx + 0xb8]
je 0x14004fc18
movzx eax, byte [rdx + 1]
cmp al, 0x3a
je 0x14004fb80
cmp al, 0x3d
je 0x14004fbdb
cmp al, 0x21
jne 0x14004fc3d
add rdx, 2
lea rcx, [rbx + 0xc8]
mov dword [rbx + 0x90], 7
mov r9d, 1
mov qword [rbx + 0xb0], rdx
xor edx, edx
mov dword [rsp + 0x20], 0x6e
mov r8, qword [rbx + 0xd0]
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::_M_replace_aux_unsigned_long_long__unsigned_long_long__unsigned_long_long__char_
jmp 0x14004f963
mov dword [rbx + 0x88], 1
mov dword [rbx + 0x90], 0xc
jmp 0x14004f963
mov rax, qword [rbx + 0xe8]
add rbx, qword [rbx + 0xf0]
mov rcx, rbx
test al, 1
je 0x14004fa85
mov rdx, qword [rbx]
mov rax, qword [rdx + rax - 1]
add rsp, 0x30
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
jmp rax
mov dword [rbx + 0x90], 8
add rsp, 0x30
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
movsx esi, sil
lea rcx, [rbx + 0xc8]
mov r9d, 1
xor edx, edx
mov dword [rbx + 0x90], 1
mov dword [rsp + 0x20], esi
mov r8, qword [rbx + 0xd0]
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::_M_replace_aux_unsigned_long_long__unsigned_long_long__unsigned_long_long__char_
nop
add rsp, 0x30
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
mov r8d, 0x20
mov rcx, rdi
call r9
movsx edx, al
jmp 0x14004f875
mov byte [rbx + 0xa8], 1
mov rax, qword [rbx + 0xb0]
mov dword [rbx + 0x88], 2
cmp rax, qword [rbx + 0xb8]
je 0x14004fb2e
cmp byte [rax], 0x5e
je 0x14004fb40
mov dword [rbx + 0x90], 9
jmp 0x14004f963
mov dword [rbx + 0x90], 0xa
add rax, 1
mov qword [rbx + 0xb0], rax
jmp 0x14004f963
xor r8d, r8d
movsx edx, sil
mov rcx, rbp
call rax
test al, al
je 0x14004f91a
mov esi, eax
jmp 0x14004f910
mov dword [rbx + 0x90], 6
add rdx, 2
mov qword [rbx + 0xb0], rdx
jmp 0x14004f963
test byte [rbx + 0x8c], 0x10
je 0x14004fc22
lea rcx, [rbx + 0xc8]
mov r9d, 1
xor edx, edx
mov dword [rbx + 0x90], 1
mov dword [rsp + 0x20], 0
mov r8, qword [rbx + 0xd0]
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::_M_replace_aux_unsigned_long_long__unsigned_long_long__unsigned_long_long__char_
jmp 0x14004f963
add rdx, 2
lea rcx, [rbx + 0xc8]
mov dword [rbx + 0x90], 7
mov r9d, 1
mov qword [rbx + 0xb0], rdx
xor edx, edx
mov dword [rsp + 0x20], 0x70
mov r8, qword [rbx + 0xd0]
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::_M_replace_aux_unsigned_long_long__unsigned_long_long__unsigned_long_long__char_
jmp 0x14004f963
mov ecx, 5
call sym.std::__throw_regex_error_std::regex_constants::error_type_
mov ecx, 0xd
call sym.std::__throw_regex_error_std::regex_constants::error_type_
lea rdx, str.Invalid_escape_at_end_of_regular_expression
mov ecx, 2
call method.std.__throw_regex_error_std::regex_constants::error_type__char_const_
lea rdx, str.Invalid___...__zero_width_assertion_in_regular_expression
mov ecx, 5
call method.std.__throw_regex_error_std::regex_constants::error_type__char_const_
nop
nop