Function at 0x40d170
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 r12, qword [0x004e1c40]
movabs r13, 0x200000024000b
lea rax, [rsp + 0xaf]
mov qword [rsp + 0x100], rcx
mov rbx, rcx
mov byte [rsp + 0x73], 0
mov byte [rsp + 0x3c], 0
mov byte [rsp + 0x72], 1
mov byte [rsp + 0x28], 0
mov byte [rsp + 0x40], 0
mov byte [rsp + 0x38], 0
mov qword [rsp + 0x60], 0
mov qword [rsp + 0x30], 0
mov qword [rsp + 0x58], 0
mov qword [rsp + 0x48], 0
mov qword [rsp + 0x88], rax
mov byte [rsp + 0xaf], 0
movzx eax, byte [rbx]
cmp al, 9
je 0x40d204
cmp al, 0x20
jne 0x40d213
add rbx, 1
movzx eax, byte [rbx]
cmp al, 0x20
je 0x40d204
cmp al, 9
je 0x40d204
cmp al, 0x21
jne 0x40d729
movzx eax, byte [rbx + 1]
lea r14, [rbx + 1]
cmp al, 9
setne sil
cmp al, 0x20
setne dl
and sil, dl
jne 0x40d24b
add r14, 1
movzx eax, byte [r14]
cmp al, 9
setne dl
cmp al, 0x20
setne cl
and dl, cl
je 0x40d233
mov esi, edx
cmp al, 0x25
je 0x40d5c4
cmp al, 0x2e
je 0x40d5b2
xor r8d, r8d
xor r15d, r15d
cmp al, 0x2c
jne 0x40d26f
add r14, 1
mov r8d, 1
mov rbx, r14
xor ebp, ebp
movzx edx, byte [rbx]
test word [r12 + rdx*2], 0x204
mov rax, rdx
jne 0x40d46c
cmp dl, 0x2d
je 0x40d484
lea edx, [rdx - 0x2b]
cmp dl, 0x31
jbe 0x40d462
test ebp, ebp
mov rdi, rbx
je 0x40d33c
mov rax, qword [rsp + 0x30]
test rax, rax
je 0x40d2ce
mov rdi, qword [rsp + 0x60]
cmp rax, rdi
je 0x40d2ce
mov rcx, rax
mov byte [rsp + 0x30], r8b
call fcn.00483488
movzx r8d, byte [rsp + 0x30]
mov rcx, rbx
movsxd rbp, ebp
mov byte [rsp + 0x50], r8b
sub rcx, r14
sub rcx, rbp
add rcx, 1
call fcn.0046aaf0
cmp r14, rbx
mov qword [rsp + 0x30], rax
movzx r8d, byte [rsp + 0x50]
je 0x40d7dd
mov rdi, rax
jmp 0x40d310
add r14, 1
mov byte [rdi], al
add rdi, 1
cmp rbx, r14
je 0x40d331
movzx eax, byte [r14]
cmp al, 0x5c
jne 0x40d301
movzx eax, byte [r14 + 1]
add r14, 1
add rdi, 1
add r14, 1
mov byte [rdi - 1], al
cmp rbx, r14
jne 0x40d310
mov byte [rdi], 0
movzx eax, byte [rbx]
mov r14, qword [rsp + 0x30]
xor ebp, ebp
cmp al, 0x2a
je 0x40d5a0
cmp al, 0x20
je 0x40d350
cmp al, 9
jne 0x40d35f
nop
add rbx, 1
movzx eax, byte [rbx]
cmp al, 9
je 0x40d350
cmp al, 0x20
je 0x40d350
cmp al, 0x3a
je 0x40d51a
jle 0x40d4f1
cmp al, 0x7c
je 0x40d51a
cmp al, 0x7d
jne 0x40d4f9
cmp byte [rsp + 0x40], 0
jne 0x40d4f9
cmp byte [rsp + 0x3c], 0
jne 0x40d4f9
test r15b, r15b
jne 0x40d4f9
test sil, sil
jne 0x40d4f9
cmp r14, rdi
sete al
or al, r8b
mov byte [rsp + 0x40], al
jne 0x40d4f9
mov rsi, rdi
mov eax, 0xffffffff
sub rsi, r14
test bpl, bpl
cmovne eax, esi
mov dword [rsp + 0x3c], eax
mov eax, dword [0x004ee164]
test eax, eax
mov dword [rsp + 0x38], eax
jle 0x40d7bd
movsxd rax, esi
xor r15d, r15d
mov qword [rsp + 0x68], rbx
mov rsi, rax
mov rax, qword [0x004ee168]
mov edi, r15d
mov qword [rsp + 0x50], rax
mov r15, rax
nop
mov rbx, qword [r15]
mov r8, rsi
mov rdx, r14
mov rcx, rbx
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x40d434
test bpl, bpl
jne 0x40d420
cmp byte [rbx + rsi], 0
jne 0x40d434
mov edx, dword [rsp + 0x3c]
mov ecx, edi
call fcn.00401940
test eax, eax
je 0x40d434
mov byte [r15 + 0x16], 1
add edi, 1
add r15, 0x18
cmp edi, dword [rsp + 0x38]
jne 0x40d400
mov rbx, qword [rsp + 0x68]
xor edi, edi
xor esi, esi
cmp byte [rbx], 0x7d
je 0x40d4b5
add rbx, 1
mov byte [rsp + 0x3c], 0
mov byte [rsp + 0x38], 1
jmp 0x40d1f1
bt r13, rdx
jae 0x40d29c
cmp al, 0x5c
jne 0x40d484
cmp byte [rbx + 1], 0
lea rax, [rbx + 1]
je 0x40d7a0
add ebp, 1
mov rbx, rax
add rbx, 1
jmp 0x40d274
xor edx, edx
mov ecx, esi
mov byte [rax + 0x16], 0
call fcn.0040cc30
add esi, 1
add rdi, 0x18
cmp dword [0x004ee164], esi
jle 0x40d4d2
mov rax, qword [0x004ee168]
mov qword [rsp + 0x50], rax
mov rax, qword [rsp + 0x50]
add rax, rdi
cmp byte [rax + 0x16], 0
jne 0x40d48d
add esi, 1
add rdi, 0x18
cmp dword [0x004ee164], esi
jg 0x40d4a9
cmp byte [rbx], 0x7d
lea rax, [rbx + 1]
je 0x40d9ce
mov byte [rsp + 0x3c], 0
mov rbx, rax
mov byte [rsp + 0x38], 1
jmp 0x40d1f1
cmp al, 0x26
je 0x40d37d
mov rax, qword [0x004e1d60]
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.004246b0
cmp byte [rsp + 0x38], 0
jne 0x40d4f9
test r14, r14
setne cl
cmp r14, rdi
sete dl
and cl, dl
mov byte [rsp + 0x50], cl
je 0x40d603
movzx edx, byte [rsp + 0x3c]
movzx edi, byte [rsp + 0x28]
xor edx, 1
or dil, dl
jne 0x40d4f9
cmp al, 0x7c
je 0x40d4f9
test r15b, r15b
jne 0x40d4f9
test sil, sil
jne 0x40d4f9
or r8b, bpl
mov byte [rsp + 0x72], r8b
jne 0x40d4f9
movzx eax, byte [rsp + 0x73]
xor eax, 1
mov byte [rsp + 0x28], al
movzx eax, byte [rbx]
cmp al, 0x3a
je 0x40d6d0
add rbx, 1
cmp al, 0x7d
je 0x40d989
cmp byte [rsp + 0x50], 0
jne 0x40d4f9
mov byte [rsp + 0x38], 0
mov byte [rsp + 0x40], 1
jmp 0x40d1f1
movzx eax, byte [rbx + 1]
mov ebp, 1
add rbx, 1
jmp 0x40d346
add r14, 1
xor r8d, r8d
mov r15d, 1
jmp 0x40d26f
xor r8d, r8d
xor r15d, r15d
cmp byte [r14 + 1], 0x3a
jne 0x40d26f
mov rdx, qword [rsp + 0x88]
lea rcx, [r14 + 2]
mov byte [rsp + 0x50], r8b
xor ebp, ebp
xor edi, edi
xor r14d, r14d
call fcn.0040cd90
movzx r8d, byte [rsp + 0x50]
mov rbx, rax
movzx eax, byte [rax]
jmp 0x40d346
test r15b, r15b
jne 0x40d736
test r8b, r8b
jne 0x40d736
movzx eax, byte [rsp + 0x72]
test bpl, bpl
cmove eax, r8d
mov byte [rsp + 0x72], al
movzx eax, byte [rsp + 0x28]
or al, byte [rsp + 0x73]
jne 0x40d56f
test r14, r14
je 0x40d9f3
test r15b, r15b
jne 0x40d749
test r8b, r8b
je 0x40da09
mov rax, qword [0x004ee0d0]
test rax, rax
je 0x40d696
mov rbp, qword [rax]
test rbp, rbp
je 0x40d696
cmp byte [rbp], 0
je 0x40d696
mov r9, rdi
lea rcx, [rbp + 1]
mov rdx, r14
sub r9, r14
mov r8, r9
mov qword [rsp + 0x28], r9
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x40d696
mov r9, qword [rsp + 0x28]
cmp byte [rbp + r9 + 1], 0
sete r15b
mov byte [rsp + 0xaf], r15b
cmp sil, r15b
je 0x40d791
mov rax, qword [rsp + 0x30]
mov byte [rsp + 0x50], 0
mov qword [rsp + 0x58], rdi
mov qword [rsp + 0x48], r14
mov byte [rsp + 0x28], 1
mov qword [rsp + 0x60], rax
movzx eax, byte [rbx]
cmp al, 0x3a
jne 0x40d57a
movzx ecx, byte [rsp + 0x73]
lea r10, [rbx + 1]
movzx eax, byte [rbx + 1]
mov edx, 1
movzx r11d, byte [rsp + 0x38]
mov rbx, r10
xor ecx, 1
and cl, byte [rsp + 0x28]
jmp 0x40d71c
cmp al, 0x7d
je 0x40d7f2
cmp al, 0x3b
je 0x40d880
cmp al, 0x25
je 0x40d890
test al, al
je 0x40d9d3
movzx eax, byte [rbx + 1]
add rbx, 1
cmp al, 0x7b
jne 0x40d6f4
add edx, 1
movzx eax, byte [rbx + 1]
jmp 0x40d718
movzx eax, byte [rbx]
mov r14, rbx
xor esi, esi
jmp 0x40d24b
test bpl, bpl
jne 0x40d4f9
mov byte [rsp + 0x72], 0
jmp 0x40d625
mov rbp, qword [0x004ee0d8]
test rbp, rbp
je 0x40da01
mov r9, rdi
mov rdx, r14
mov rcx, rbp
sub r9, r14
xor r15d, r15d
mov r8, r9
mov qword [rsp + 0x28], r9
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x40d696
mov r9, qword [rsp + 0x28]
cmp byte [rbp + r9], 0
sete r15b
jmp 0x40d696
mov byte [rsp + 0x28], 0
mov byte [rsp + 0x50], 0
jmp 0x40d56f
mov rax, qword [0x004e1d60]
mov r8, qword [rsp + 0x100]
lea rdx, str.braced_spec__qs_ends_in_escape
mov ecx, dword [rax]
call fcn.004246b0
cmp byte [rbx], 0x7d
je 0x40db72
movzx eax, byte [rsp + 0x40]
add rbx, 1
mov byte [rsp + 0x38], 1
mov byte [rsp + 0x3c], al
jmp 0x40d1f1
mov rdi, qword [rsp + 0x30]
mov r14, qword [rsp + 0x30]
mov byte [rdi], 0
movzx eax, byte [rbx]
jmp 0x40d33c
sub edx, 1
jne 0x40d714
movzx edx, byte [rbx - 1]
mov byte [rsp + 0x38], r11b
cmp dl, 9
je 0x40d812
cmp dl, 0x20
jne 0x40d9eb
mov rdx, rbx
sub rdx, 1
movzx r8d, byte [rdx - 1]
cmp r8b, 9
je 0x40d815
cmp r8b, 0x20
je 0x40d815
movzx r8d, byte [rsp + 0x72]
xor r8d, 1
test byte [rsp + 0x38], r8b
jne 0x40d9d3
test cl, cl
jne 0x40d8ad
cmp al, 0x3b
jne 0x40d57a
movzx eax, byte [rsp + 0x28]
add rbx, 1
mov byte [rsp + 0x28], 0
or byte [rsp + 0x73], al
mov byte [rsp + 0x3c], 1
mov byte [rsp + 0x72], 1
mov qword [rsp + 0x58], 0
mov qword [rsp + 0x48], 0
jmp 0x40d586
cmp edx, 1
jne 0x40d714
jmp 0x40d7fb
movzx eax, byte [rbx + 1]
cmp al, 0x2a
sete r8b
cmp edx, 1
sete r9b
and r8b, r9b
cmovne r11d, r8d
jmp 0x40d718
sub rdx, r10
mov rcx, r10
call fcn.00401820
cmp byte [rsp + 0x38], 0
mov qword [rsp + 0x40], rax
je 0x40d95a
mov eax, dword [0x004ee164]
mov r14, qword [rsp + 0x58]
sub r14, qword [rsp + 0x48]
test eax, eax
jle 0x40d96b
mov ebp, r14d
xor edi, edi
xor esi, esi
jmp 0x40d8ff
add esi, 1
add rdi, 0x18
cmp dword [0x004ee164], esi
jle 0x40d96b
mov r15, rdi
add r15, qword [0x004ee168]
mov rdx, qword [rsp + 0x48]
mov r8, rbp
mov rcx, qword [r15]
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x40d8f0
mov edx, r14d
mov ecx, esi
call fcn.00401940
test eax, eax
je 0x40d8f0
mov r8, rbp
add r8, qword [r15]
mov rcx, qword [rsp + 0x40]
xor edx, edx
call fcn.0040afd0
test eax, eax
js 0x40d97d
mov edx, 1
mov ecx, esi
call fcn.0040cc30
mov qword [0x004ee0b0], 0
jmp 0x40d8f0
xor r8d, r8d
xor edx, edx
mov rcx, rax
call fcn.0040afd0
test eax, eax
js 0x40d97d
mov rcx, qword [rsp + 0x40]
call fcn.00483488
movzx eax, byte [rbx]
jmp 0x40d843
mov rcx, qword [rsp + 0x40]
xor ebx, ebx
call fcn.00483488
mov rax, qword [rsp + 0x60]
test rax, rax
je 0x40d9a5
mov rsi, qword [rsp + 0x30]
cmp rax, rsi
je 0x40d9a5
mov rcx, rax
call fcn.00483488
mov rax, qword [rsp + 0x30]
test rax, rax
je 0x40d9b7
mov rcx, rax
call fcn.00483488
mov rax, rbx
add rsp, 0xb8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rbx, rax
jmp 0x40d989
mov rax, qword [0x004e1d60]
lea rdx, str.braced_spec_body__qs_is_invalid
mov r8, r10
mov ecx, dword [rax]
call fcn.004246b0
mov rdx, rbx
jmp 0x40d82a
movzx r15d, byte [rsp + 0xaf]
jmp 0x40d69e
xor r15d, r15d
jmp 0x40d696
mov rdx, rdi
mov ecx, 0xffffffff
sub rdx, r14
test bpl, bpl
cmovne ecx, edx
mov eax, edx
mov dword [rsp + 0x50], ecx
mov ecx, dword [0x004ee164]
test ecx, ecx
mov dword [rsp + 0x68], ecx
jle 0x40da01
cmp bpl, 1
movsxd rcx, edx
mov r15, qword [0x004ee168]
mov qword [rsp + 0x40], rcx
sbb ecx, ecx
sub eax, 1
cdqe
or ecx, 1
mov dword [rsp + 0x28], 0
mov qword [rsp + 0x78], rax
lea rax, [r14 + 1]
mov dword [rsp + 0x74], ecx
mov qword [rsp + 0x80], rax
jmp 0x40da8b
cmp al, 0x55
je 0x40daec
add dword [rsp + 0x28], 1
add r15, 0x18
mov eax, dword [rsp + 0x28]
cmp eax, dword [rsp + 0x68]
je 0x40da01
mov r9, qword [r15]
mov r8, qword [rsp + 0x40]
mov rdx, r14
mov rcx, r9
mov qword [rsp + 0x90], r9
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x40dad8
test bpl, bpl
jne 0x40dac3
mov rax, qword [rsp + 0x40]
mov r9, qword [rsp + 0x90]
cmp byte [r9 + rax], 0
jne 0x40dad8
mov edx, dword [rsp + 0x50]
mov ecx, dword [rsp + 0x28]
call fcn.00401940
test eax, eax
jne 0x40db67
mov rdx, qword [r15 + 8]
test rdx, rdx
je 0x40da74
mov r9, qword [r15]
movzx eax, byte [r9]
cmp al, 0x44
jne 0x40da70
cmp al, byte [r14]
jne 0x40da74
mov r10, qword [rdx]
mov r8, qword [rsp + 0x78]
mov rdx, qword [rsp + 0x80]
mov qword [rsp + 0x98], r9
mov rcx, r10
mov qword [rsp + 0x90], r10
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x40da74
test bpl, bpl
jne 0x40db52
mov r9, qword [rsp + 0x98]
cmp byte [r9 + 1], 0
jne 0x40da74
mov rax, qword [rsp + 0x40]
mov r10, qword [rsp + 0x90]
cmp byte [r10 + rax - 1], 0
jne 0x40da74
mov edx, dword [rsp + 0x74]
mov ecx, dword [rsp + 0x28]
call fcn.00401940
test eax, eax
je 0x40da74
mov r15d, 1
jmp 0x40d696
add rbx, 1
jmp 0x40d989