Function at 0x40aad0
Capabilities:
Parse credit card information

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xb8
mov r13, qword [0x00502570]
movabs r12, 0x200000024000b
mov qword [rsp + 0x100], rcx
mov r15, rcx
mov byte [rsp + 0x83], 0
mov byte [rsp + 0x48], 0
mov byte [rsp + 0x82], 1
mov byte [rsp + 0x40], 0
mov byte [rsp + 0x68], 0
mov byte [rsp + 0x30], 0
mov qword [rsp + 0x60], 0
mov qword [rsp + 0x38], 0
mov qword [rsp + 0x58], 0
mov qword [rsp + 0x50], 0
mov byte [rsp + 0xaf], 0
movzx eax, byte [r15]
cmp al, 0x20
jne 0x40ab6c
nop word [rax + rax]
add r15, 1
movzx eax, byte [r15]
cmp al, 0x20
je 0x40ab60
cmp al, 9
je 0x40ab60
cmp al, 0x21
jne 0x40b170
movzx eax, byte [r15 + 1]
lea rdi, [r15 + 1]
cmp al, 0x20
setne sil
cmp al, 9
setne dl
and sil, dl
jne 0x40aba8
add rdi, 1
movzx eax, byte [rdi]
cmp al, 9
setne dl
cmp al, 0x20
setne cl
and dl, cl
je 0x40ab91
mov esi, edx
cmp al, 0x25
jne 0x40ae2a
xor r11d, r11d
xor r15d, r15d
cmp byte [rdi + 1], 0x3a
je 0x40b05a
movzx eax, byte [rdi]
mov rbx, rdi
xor ebp, ebp
nop dword [rax + rax]
movzx edx, al
test word [r13 + rdx*2], 0x204
jne 0x40ad4f
cmp al, 0x2d
je 0x40ad80
lea edx, [rax - 0x2b]
cmp dl, 0x31
jbe 0x40ad45
test ebp, ebp
mov r9, rbx
jne 0x40ae44
cmp al, 0x2a
mov byte [rsp + 0x28], 0
jne 0x40ac16
movzx eax, byte [rbx + 1]
mov byte [rsp + 0x28], 1
add rbx, 1
cmp al, 0x20
je 0x40ac20
cmp al, 9
jne 0x40ac2f
nop
add rbx, 1
movzx eax, byte [rbx]
cmp al, 9
je 0x40ac20
cmp al, 0x20
je 0x40ac20
cmp al, 0x3a
je 0x40ad8d
jle 0x40b011
cmp al, 0x7c
je 0x40ad8d
cmp al, 0x7d
jne 0x40b019
cmp byte [rsp + 0x68], 0
jne 0x40b019
cmp byte [rsp + 0x48], 0
jne 0x40b019
test r15b, r15b
jne 0x40b019
test sil, sil
jne 0x40b019
cmp rdi, r9
sete al
or al, r11b
mov byte [rsp + 0x68], al
jne 0x40b019
sub r9, rdi
cmp byte [rsp + 0x28], 0
mov eax, 0xffffffff
lea r15, [rbx + 1]
cmovne eax, r9d
mov dword [rsp + 0x30], eax
mov eax, dword [0x00510164]
test eax, eax
jle 0x40b17e
mov r14, qword [0x00510168]
xor esi, esi
mov qword [rsp + 0x70], rbx
mov qword [rsp + 0x78], r15
movsxd rbp, r9d
mov ebx, eax
mov qword [rsp + 0x48], r14
mov r15, r14
mov r14d, esi
mov rsi, qword [r15]
mov r8, rbp
mov rdx, rdi
mov rcx, rsi
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x40ad10
cmp byte [rsp + 0x28], 0
jne 0x40acf4
cmp byte [rsi + rbp], 0
jne 0x40ad10
mov edx, dword [rsp + 0x30]
mov ecx, r14d
call fcn.00401950
test eax, eax
je 0x40ad10
mov byte [r15 + 0x16], 1
nop dword [rax]
add r14d, 1
add r15, 0x18
cmp r14d, ebx
jne 0x40acd2
mov rbx, qword [rsp + 0x70]
mov r15, qword [rsp + 0x78]
cmp byte [rbx], 0x7d
je 0x40b197
mov byte [rsp + 0x48], 0
mov r14d, 1
mov byte [rsp + 0x30], r14b
jmp 0x40ab47
bt r12, rdx
jae 0x40abf5
cmp al, 0x5c
movzx edx, byte [rbx + 1]
lea rcx, [rbx + 1]
je 0x40ad65
mov eax, edx
mov rbx, rcx
jmp 0x40abd0
test dl, dl
je 0x40b2b1
movzx eax, byte [rbx + 2]
add ebp, 1
add rbx, 2
jmp 0x40abd0
movzx eax, byte [rbx + 1]
add rbx, 1
jmp 0x40abd0
cmp byte [rsp + 0x30], 0
jne 0x40b019
test rdi, rdi
setne r14b
cmp rdi, r9
sete dl
and r14b, dl
je 0x40aecc
movzx edx, byte [rsp + 0x48]
movzx edi, byte [rsp + 0x40]
xor edx, 1
or dil, dl
jne 0x40b019
cmp al, 0x7c
je 0x40b019
test r15b, r15b
jne 0x40b019
test sil, sil
jne 0x40b019
or r11b, byte [rsp + 0x28]
mov byte [rsp + 0x82], r11b
jne 0x40b019
movzx eax, byte [rsp + 0x83]
xor eax, 1
mov byte [rsp + 0x40], al
movzx eax, byte [rbx]
lea r15, [rbx + 1]
cmp al, 0x3a
je 0x40afa0
cmp al, 0x7d
je 0x40b1d7
test r14b, r14b
jne 0x40b140
mov byte [rsp + 0x68], 1
jmp 0x40ad3b
cmp al, 0x2e
jne 0x40b040
add rdi, 1
xor r11d, r11d
mov r15d, 1
jmp 0x40abc0
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x40ae68
mov rax, qword [rsp + 0x60]
cmp rcx, rax
je 0x40ae68
mov byte [rsp + 0x28], r11b
call fcn.00494cb8
movzx r11d, byte [rsp + 0x28]
mov rcx, rbx
movsxd rbp, ebp
mov byte [rsp + 0x28], r11b
sub rcx, rdi
sub rcx, rbp
add rcx, 1
call fcn.0047c0a6
cmp rdi, rbx
mov qword [rsp + 0x38], rax
movzx r11d, byte [rsp + 0x28]
je 0x40b290
mov r9, rax
movzx eax, byte [rdi]
lea rdx, [rdi + 1]
cmp al, 0x5c
jne 0x40aeac
movzx eax, byte [rdi + 1]
lea rdx, [rdi + 2]
mov byte [r9], al
add r9, 1
cmp rbx, rdx
mov rdi, rdx
jne 0x40ae99
mov byte [r9], 0
mov rdi, qword [rsp + 0x38]
movzx eax, byte [rbx]
jmp 0x40ac00
test r15b, r15b
jne 0x40b08e
test r11b, r11b
jne 0x40b08e
movzx eax, byte [rsp + 0x82]
cmp byte [rsp + 0x28], 0
cmove eax, r11d
mov byte [rsp + 0x82], al
movzx eax, byte [rsp + 0x40]
or al, byte [rsp + 0x83]
jne 0x40ae00
test rdi, rdi
je 0x40b218
test r15b, r15b
je 0x40b226
mov rbp, qword [0x005100d8]
xor r15d, r15d
test rbp, rbp
je 0x40af55
mov r14, r9
mov rdx, rdi
mov rcx, rbp
sub r14, rdi
mov qword [rsp + 0x28], r9
mov r8, r14
call sub.msvcrt.dll_strncmp
test eax, eax
mov r9, qword [rsp + 0x28]
jne 0x40af55
cmp byte [rbp + r14], 0
sete r15b
mov byte [rsp + 0xaf], r15b
cmp sil, r15b
mov rax, qword [rsp + 0x60]
cmovne rax, qword [rsp + 0x38]
cmove r9, qword [rsp + 0x58]
cmove rdi, qword [rsp + 0x50]
mov r14d, 0
setne byte [rsp + 0x40]
lea r15, [rbx + 1]
mov qword [rsp + 0x60], rax
movzx eax, byte [rbx]
mov qword [rsp + 0x58], r9
mov qword [rsp + 0x50], rdi
cmp al, 0x3a
jne 0x40ae0f
movzx r8d, byte [rsp + 0x83]
movzx eax, byte [rbx + 1]
mov rbp, r15
mov edx, 1
movzx r10d, byte [rsp + 0x30]
xor r8d, 1
and r8b, byte [rsp + 0x40]
jmp 0x40b004
cmp al, 0x7d
je 0x40b0a2
cmp al, 0x3b
je 0x40b0b0
cmp al, 0x25
jne 0x40b150
movzx eax, byte [rbp + 1]
cmp edx, 1
sete cl
cmp al, 0x2a
sete r9b
and cl, r9b
cmovne r10d, ecx
nop
add rbp, 1
cmp al, 0x7b
jne 0x40afd0
add edx, 1
movzx eax, byte [rbp + 1]
jmp 0x40b000
cmp al, 0x26
je 0x40ac4d
mov rax, qword [0x00502670]
movsx r9d, byte [rbx]
lea rdx, str.braced_spec__qs_is_invalid_at__qc
mov r8, qword [rsp + 0x100]
mov ecx, dword [rax]
call fcn.00426b60
nop word [rax + rax]
cmp al, 0x2c
jne 0x40b2a6
add rdi, 1
mov r11d, 1
xor r15d, r15d
jmp 0x40abc0
lea rcx, [rdi + 2]
lea rdx, [rsp + 0xaf]
xor r8d, r8d
mov byte [rsp + 0x70], r11b
xor edi, edi
call fcn.0040a700
mov byte [rsp + 0x28], 0
mov rbx, rax
xor r9d, r9d
movzx eax, byte [rax]
movzx r11d, byte [rsp + 0x70]
jmp 0x40ac16
cmp byte [rsp + 0x28], 0
jne 0x40b019
mov byte [rsp + 0x82], 0
jmp 0x40aef6
sub edx, 1
je 0x40b0b5
movzx eax, byte [rbp + 1]
jmp 0x40b000
cmp edx, 1
jne 0x40b0a7
movzx edx, byte [rbp - 1]
mov byte [rsp + 0x30], r10b
cmp dl, 0x20
je 0x40b0cc
cmp dl, 9
jne 0x40b54a
mov rdx, rbp
sub rdx, 1
movzx ecx, byte [rdx - 1]
cmp cl, 9
je 0x40b0cf
cmp cl, 0x20
je 0x40b0cf
movzx ecx, byte [rsp + 0x82]
xor ecx, 1
test byte [rsp + 0x30], cl
jne 0x40b158
test r8b, r8b
jne 0x40b2ce
cmp al, 0x3b
lea r15, [rbp + 1]
jne 0x40ae0f
movzx eax, byte [rsp + 0x40]
mov byte [rsp + 0x48], 1
or byte [rsp + 0x83], al
test r14b, r14b
mov byte [rsp + 0x40], 0
mov byte [rsp + 0x82], 1
mov qword [rsp + 0x58], 0
mov qword [rsp + 0x50], 0
je 0x40ae20
mov rbx, r15
jmp 0x40b019
test al, al
jne 0x40b0a7
mov rax, qword [0x00502670]
lea rdx, str.braced_spec_body__qs_is_invalid
mov r8, r15
mov ecx, dword [rax]
call fcn.00426b60
movzx eax, byte [r15]
mov rdi, r15
xor esi, esi
jmp 0x40aba8
cmp byte [rbx], 0x7d
je 0x40b1d7
movzx eax, byte [rsp + 0x68]
mov r14d, 1
mov byte [rsp + 0x48], al
jmp 0x40ad3b
xor edi, edi
xor esi, esi
mov rax, qword [rsp + 0x48]
jmp 0x40b1a9
mov rax, qword [0x00510168]
add rax, rdi
cmp byte [rax + 0x16], 0
je 0x40b1bf
mov byte [rax + 0x16], 0
xor edx, edx
mov ecx, esi
call fcn.0040a580
add esi, 1
add rdi, 0x18
cmp dword [0x00510164], esi
jg 0x40b1a2
cmp byte [rbx], 0x7d
jne 0x40ad30
mov rax, qword [rsp + 0x60]
test rax, rax
je 0x40b1ef
mov rsi, qword [rsp + 0x38]
cmp rax, rsi
jne 0x40b53d
mov rax, qword [rsp + 0x38]
test rax, rax
je 0x40b201
mov rcx, rax
call fcn.00494cb8
mov rax, r15
add rsp, 0xb8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
movzx r15d, byte [rsp + 0xaf]
jmp 0x40af5d
test r11b, r11b
je 0x40b3a0
mov rax, qword [0x005100d0]
test rax, rax
je 0x40af55
mov rbp, qword [rax]
test rbp, rbp
je 0x40af55
cmp byte [rbp], 0
je 0x40af55
mov r14, r9
lea rcx, [rbp + 1]
mov rdx, rdi
sub r14, rdi
mov qword [rsp + 0x28], r9
mov r8, r14
call sub.msvcrt.dll_strncmp
test eax, eax
mov r9, qword [rsp + 0x28]
jne 0x40af55
cmp byte [rbp + r14 + 1], 0
sete r15b
jmp 0x40af55
mov r9, qword [rsp + 0x38]
mov rdi, qword [rsp + 0x38]
mov byte [r9], 0
movzx eax, byte [rbx]
jmp 0x40ac00
xor r11d, r11d
xor r15d, r15d
jmp 0x40abc0
mov rax, qword [0x00502670]
mov r8, qword [rsp + 0x100]
lea rdx, str.braced_spec__qs_ends_in_escape
mov ecx, dword [rax]
call fcn.00426b60
sub rdx, r15
mov rcx, r15
call fcn.00401820
cmp byte [rsp + 0x30], 0
mov rsi, rax
je 0x40b518
mov rax, qword [rsp + 0x58]
mov edx, dword [0x00510164]
sub rax, qword [rsp + 0x50]
test edx, edx
mov qword [rsp + 0x30], rax
jle 0x40b38f
mov eax, eax
xor edi, edi
xor ebx, ebx
mov qword [rsp + 0x28], rax
jmp 0x40b320
add ebx, 1
add rdi, 0x18
cmp dword [0x00510164], ebx
jle 0x40b38f
mov r15, qword [0x00510168]
mov r8, qword [rsp + 0x28]
mov rdx, qword [rsp + 0x50]
add r15, rdi
mov rcx, qword [r15]
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x40b311
mov edx, dword [rsp + 0x30]
mov ecx, ebx
call fcn.00401950
test eax, eax
je 0x40b311
mov r8, qword [rsp + 0x28]
add r8, qword [r15]
xor edx, edx
mov rcx, rsi
call fcn.004089c0
test eax, eax
js 0x40b52d
mov ecx, ebx
mov edx, 1
add ebx, 1
call fcn.0040a580
add rdi, 0x18
cmp dword [0x00510164], ebx
mov qword [0x005100b0], 0
jg 0x40b320
mov rcx, rsi
call fcn.00494cb8
movzx eax, byte [rbp]
jmp 0x40b0fb
mov rdx, r9
mov ecx, 0xffffffff
sub rdx, rdi
cmp byte [rsp + 0x28], 0
mov eax, edx
cmovne ecx, edx
mov dword [rsp + 0x70], ecx
mov ecx, dword [0x00510164]
test ecx, ecx
mov dword [rsp + 0x78], ecx
jle 0x40b510
cmp byte [rsp + 0x28], 1
mov r14, qword [0x00510168]
lea rbp, [rdi + 1]
mov qword [rsp + 0x68], r9
sbb ecx, ecx
sub eax, 1
xor r15d, r15d
or ecx, 1
cdqe
mov dword [rsp + 0x84], ecx
movsxd rcx, edx
mov qword [rsp + 0x88], rax
mov qword [rsp + 0x40], rcx
jmp 0x40b41d
cmp al, 0x55
je 0x40b47f
add r15d, 1
add r14, 0x18
cmp r15d, dword [rsp + 0x78]
je 0x40b50b
mov r9, qword [r14]
mov r8, qword [rsp + 0x40]
mov rdx, rdi
mov rcx, r9
mov qword [rsp + 0x90], r9
call sub.msvcrt.dll_strncmp
test eax, eax
mov r9, qword [rsp + 0x90]
jne 0x40b46b
cmp byte [rsp + 0x28], 0
jne 0x40b457
mov rax, qword [rsp + 0x40]
cmp byte [r9 + rax], 0
jne 0x40b46b
mov edx, dword [rsp + 0x70]
mov ecx, r15d
call fcn.00401950
test eax, eax
jne 0x40b4fb
mov rdx, qword [r14 + 8]
test rdx, rdx
je 0x40b40a
mov r10, qword [r14]
movzx eax, byte [r10]
cmp al, 0x44
jne 0x40b406
cmp al, byte [rdi]
jne 0x40b40a
mov r9, qword [rdx]
mov r8, qword [rsp + 0x88]
mov rdx, rbp
mov qword [rsp + 0x98], r10
mov rcx, r9
mov qword [rsp + 0x90], r9
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x40b40a
cmp byte [rsp + 0x28], 0
jne 0x40b4e4
mov r10, qword [rsp + 0x98]
cmp byte [r10 + 1], 0
jne 0x40b40a
mov rax, qword [rsp + 0x40]
mov r9, qword [rsp + 0x90]
cmp byte [r9 + rax - 1], 0
jne 0x40b40a
mov edx, dword [rsp + 0x84]
mov ecx, r15d
call fcn.00401950
test eax, eax
je 0x40b40a
mov r9, qword [rsp + 0x68]
mov r15d, 1
jmp 0x40af55
mov r9, qword [rsp + 0x68]
xor r15d, r15d
jmp 0x40af55
xor r8d, r8d
xor edx, edx
mov rcx, rax
call fcn.004089c0
test eax, eax
jns 0x40b38f
mov rcx, rsi
xor r15d, r15d
call fcn.00494cb8
jmp 0x40b1d7
mov rcx, rax
call fcn.00494cb8
jmp 0x40b1ef
mov rdx, rbp
jmp 0x40b0e1