Function at 0x40d2e0
Capabilities:
Parse credit card information

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xa8
mov rbp, qword [0x0058b0e0]
xor r11d, r11d
movabs r14, 0x200000024000f
mov esi, r11d
mov r13, rcx
mov byte [rsp + 0x86], 0
mov byte [rsp + 0x20], 0
mov byte [rsp + 0x85], 1
mov byte [rsp + 0x30], 0
mov byte [rsp + 0x2c], 0
mov qword [rsp + 0x58], 0
mov qword [rsp + 0x48], 0
mov qword [rsp + 0x68], 0
mov qword [rsp + 0x60], 0
mov qword [rsp + 0xf0], rcx
nop dword [rax + rax]
test sil, sil
movzx eax, byte [r13]
jne 0x40de79
cmp al, 9
mov byte [rsp + 0x9f], 0
sete dil
cmp al, 0x20
sete cl
or dil, cl
je 0x40d3a9
nop word cs:[rax + rax]
movzx eax, byte [r13 + 1]
add r13, 1
cmp al, 0x20
sete dl
cmp al, 9
sete cl
or dl, cl
jne 0x40d390
mov edi, edx
cmp al, 0x21
je 0x40d650
cmp al, 0x25
jne 0x40d418
xor r9d, r9d
xor r10d, r10d
cmp byte [r13 + 1], 0x3a
je 0x40d7a2
mov r12, r13
xor r8d, r8d
jmp 0x40d3d4
add r12, 1
movzx edx, byte [r12]
test word [rbp + rdx*2], 0x204
mov rax, rdx
jne 0x40d3f7
lea edx, [rdx - 0x2b]
cmp dl, 0x31
ja 0x40d620
bt r14, rdx
jae 0x40d430
cmp al, 0x5c
jne 0x40d3d0
cmp byte [r12 + 1], 0
je 0x40de41
add r12, 1
add r8d, 1
jmp 0x40d3d0
cmp al, 0x2e
jne 0x40d8ad
add r13, 1
xor r9d, r9d
mov r10d, 1
jmp 0x40d3c6
test r8d, r8d
jne 0x40d7e8
xor esi, esi
mov r15, r12
cmp al, 9
jne 0x40d456
nop word [rax + rax]
movzx eax, byte [r12 + 1]
add r12, 1
cmp al, 9
je 0x40d448
cmp al, 0x20
je 0x40d448
cmp al, 0x7c
je 0x40d474
jg 0x40d510
cmp al, 0x26
je 0x40d518
cmp al, 0x3a
jne 0x40de1a
cmp byte [rsp + 0x2c], 0
jne 0x40de1a
test r13, r13
setne cl
cmp r13, r15
sete r8b
and cl, r8b
je 0x40d686
movzx edx, byte [rsp + 0x20]
xor edx, 1
or dl, byte [rsp + 0x30]
jne 0x40de1a
cmp al, 0x7c
je 0x40de1a
test dil, dil
jne 0x40de1a
test r10b, r10b
jne 0x40de1a
or r9b, sil
mov byte [rsp + 0x85], r9b
jne 0x40de1a
movzx eax, byte [rsp + 0x86]
mov esi, ecx
xor eax, 1
mov byte [rsp + 0x30], al
movzx eax, byte [r12]
mov r11d, 1
cmp al, 0x3a
je 0x40d748
lea r13, [r12 + 1]
cmp al, 0x7d
jne 0x40d360
mov rsi, r13
jmp 0x40dbb5
cmp al, 0x7d
jne 0x40de1a
test r11b, r11b
jne 0x40de1a
cmp byte [rsp + 0x20], 0
jne 0x40de1a
test dil, dil
jne 0x40de1a
test r10b, r10b
jne 0x40de1a
cmp r13, r15
sete bl
or bl, r9b
mov r11d, ebx
jne 0x40de1a
mov ecx, dword [0x0059d164]
sub r15, r13
mov r8d, 0xffffffff
test sil, sil
cmovne r8d, r15d
test ecx, ecx
jle 0x40dba3
movsxd rax, r15d
mov r15, qword [0x0059d168]
xor ebx, ebx
mov qword [rsp + 0x38], r12
mov qword [rsp + 0x20], r13
mov r12, rax
mov byte [rsp + 0x40], r11b
mov dword [rsp + 0x2c], r8d
mov r13, r15
mov r15d, ebx
mov ebx, ecx
nop dword [rax]
mov rdi, qword [r13]
mov r8, r12
mov rdx, qword [rsp + 0x20]
mov rcx, rdi
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x40d5e0
test sil, sil
jne 0x40d5c4
cmp byte [rdi + r12], 0
jne 0x40d5e0
mov edx, dword [rsp + 0x2c]
mov ecx, r15d
call fcn.00403e50
test eax, eax
je 0x40d5e0
mov byte [r13 + 0x16], 1
nop dword [rax]
add r15d, 1
add r13, 0x18
cmp ebx, r15d
jne 0x40d5a0
mov r12, qword [rsp + 0x38]
movzx r11d, byte [rsp + 0x40]
cmp byte [r12], 0x7d
je 0x40db09
mov byte [rsp + 0x20], 0
xor esi, esi
mov byte [rsp + 0x2c], 1
lea r13, [r12 + 1]
jmp 0x40d360
test r8d, r8d
mov r15, r12
jne 0x40d7e8
cmp al, 0x2a
jne 0x40d43e
movzx eax, byte [r12 + 1]
mov esi, 1
add r12, 1
jmp 0x40d43e
mov rax, r13
add r13, 1
movzx eax, byte [rax + 1]
cmp al, 9
sete dil
cmp al, 0x20
sete cl
or dil, cl
je 0x40de10
nop
movzx eax, byte [r13 + 1]
add r13, 1
cmp al, 9
je 0x40d670
cmp al, 0x20
je 0x40d670
jmp 0x40d3b1
or r9b, r10b
je 0x40d8c7
test sil, sil
jne 0x40de1a
movzx eax, byte [rsp + 0x30]
or al, byte [rsp + 0x86]
mov byte [rsp + 0x85], al
jne 0x40db6c
test r13, r13
je 0x40dd67
test r10b, r10b
je 0x40dd0e
mov rbx, qword [0x0059d0d8]
xor r9d, r9d
test rbx, rbx
je 0x40d6fa
mov rsi, r15
mov rdx, r13
mov rcx, rbx
mov byte [rsp + 0x30], r9b
sub rsi, r13
mov r8, rsi
call sub.msvcrt.dll_strncmp
xor r9d, r9d
test eax, eax
jne 0x40d6fa
cmp byte [rbx + rsi], 0
sete r9b
mov byte [rsp + 0x9f], r9b
cmp dil, r9b
mov rax, qword [rsp + 0x58]
mov esi, 0
mov r11d, 1
cmovne rax, qword [rsp + 0x48]
cmove r15, qword [rsp + 0x68]
cmove r13, qword [rsp + 0x60]
mov qword [rsp + 0x58], rax
setne byte [rsp + 0x30]
movzx eax, byte [r12]
mov qword [rsp + 0x68], r15
mov qword [rsp + 0x60], r13
cmp al, 0x3a
jne 0x40d4f6
movzx r8d, byte [rsp + 0x86]
lea rdi, [r12 + 1]
xor ebx, ebx
mov edx, 1
mov r12, rdi
xor r8d, 1
and r8b, byte [rsp + 0x30]
jmp 0x40d794
cmp al, 0x7d
je 0x40da40
cmp al, 0x3b
je 0x40dad8
cmp al, 0x25
je 0x40daf0
test al, al
je 0x40de61
add r12, 1
movzx eax, byte [r12]
cmp al, 0x7b
jne 0x40d770
add edx, 1
jmp 0x40d790
lea rcx, [r13 + 2]
xor r8d, r8d
mov byte [rsp + 0x50], r11b
xor r15d, r15d
lea rdx, [rsp + 0x9f]
mov byte [rsp + 0x40], r9b
xor r13d, r13d
mov byte [rsp + 0x38], r10b
call fcn.0040ce90
movzx r10d, byte [rsp + 0x38]
mov r12, rax
movzx r9d, byte [rsp + 0x40]
movzx eax, byte [rax]
movzx r11d, byte [rsp + 0x50]
jmp 0x40d43e
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x40d82c
mov rax, qword [rsp + 0x58]
cmp rcx, rax
je 0x40d82c
mov byte [rsp + 0x50], r11b
mov byte [rsp + 0x48], r9b
mov byte [rsp + 0x40], r10b
mov dword [rsp + 0x38], r8d
call fcn.004a6450
movzx r11d, byte [rsp + 0x50]
movzx r9d, byte [rsp + 0x48]
movzx r10d, byte [rsp + 0x40]
mov r8d, dword [rsp + 0x38]
mov rcx, r12
movsxd r8, r8d
mov byte [rsp + 0x50], r11b
sub rcx, r13
mov byte [rsp + 0x40], r9b
sub rcx, r8
mov byte [rsp + 0x38], r10b
add rcx, 1
call fcn.0048c870
cmp r13, r12
movzx r10d, byte [rsp + 0x38]
movzx r9d, byte [rsp + 0x40]
mov qword [rsp + 0x48], rax
movzx r11d, byte [rsp + 0x50]
je 0x40dd7d
mov r15, rax
nop dword [rax + rax]
movzx eax, byte [r13]
cmp al, 0x5c
jne 0x40d88a
movzx eax, byte [r13 + 1]
add r13, 1
add r13, 1
mov byte [r15], al
add r15, 1
cmp r12, r13
jne 0x40d878
movzx eax, byte [r12]
mov byte [r15], 0
mov r13, qword [rsp + 0x48]
jmp 0x40d62c
cmp al, 0x2c
jne 0x40dbfa
add r13, 1
xor r10d, r10d
mov r9d, 1
jmp 0x40d3c6
movzx eax, byte [rsp + 0x30]
or al, byte [rsp + 0x86]
test sil, sil
je 0x40db79
test al, al
jne 0x40dd07
test r13, r13
je 0x40ddda
mov rax, r15
sub rax, r13
mov r11d, eax
mov r8d, dword [0x0059d164]
test r8d, r8d
jle 0x40d6fa
movsxd rbx, eax
sub eax, 1
xor ecx, ecx
mov byte [rsp + 0x38], dil
mov qword [rsp + 0x30], rbx
mov rbx, qword [0x0059d168]
cdqe
mov qword [rsp + 0x70], rax
lea rax, [r13 + 1]
mov qword [rsp + 0x40], r12
mov r12d, ecx
mov qword [rsp + 0x78], rax
mov rdi, rbx
mov qword [rsp + 0x50], r15
mov ebx, r8d
mov byte [rsp + 0x87], r9b
mov dword [rsp + 0x80], r11d
jmp 0x40d969
add r12d, 1
add rdi, 0x18
cmp ebx, r12d
je 0x40ddbd
mov r15, qword [rdi]
mov rdx, r13
mov r8, qword [rsp + 0x30]
mov rcx, r15
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x40d9a4
test sil, sil
jne 0x40d991
mov rax, qword [rsp + 0x30]
cmp byte [r15 + rax], 0
jne 0x40d9a4
mov edx, dword [rsp + 0x80]
mov ecx, r12d
call fcn.00403e50
test eax, eax
jne 0x40da22
mov rdx, qword [rdi + 8]
test rdx, rdx
je 0x40d958
movzx eax, byte [r15]
cmp al, 0x55
je 0x40d9b9
cmp al, 0x44
jne 0x40d958
cmp al, byte [r13]
jne 0x40d958
mov rcx, qword [rdx]
mov r8, qword [rsp + 0x70]
mov rdx, qword [rsp + 0x78]
mov qword [rsp + 0x88], rcx
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x40d958
test sil, sil
jne 0x40ddf0
cmp byte [r15 + 1], 0
jne 0x40d958
mov rax, qword [rsp + 0x30]
mov edx, 0xffffffff
mov rcx, qword [rsp + 0x88]
cmp byte [rcx + rax - 1], 0
jne 0x40d958
mov ecx, r12d
call fcn.00403e50
test eax, eax
je 0x40d958
movzx edi, byte [rsp + 0x38]
mov r9d, 1
mov r12, qword [rsp + 0x40]
mov r15, qword [rsp + 0x50]
jmp 0x40d6fa
sub edx, 1
jne 0x40d790
movzx edx, byte [r12 - 1]
cmp dl, 0x20
je 0x40da5d
cmp dl, 9
jne 0x40dde8
mov rdx, r12
movzx ecx, byte [rdx - 2]
sub rdx, 1
cmp cl, 9
je 0x40da60
cmp cl, 0x20
je 0x40da60
movzx ecx, byte [rsp + 0x85]
xor ecx, 1
and cl, bl
mov byte [rsp + 0x2c], cl
jne 0x40de61
test r8b, r8b
jne 0x40dc05
cmp al, 0x3b
mov r11d, 1
jne 0x40d4f6
movzx ebx, byte [rsp + 0x30]
mov byte [rsp + 0x20], 1
or byte [rsp + 0x86], bl
mov byte [rsp + 0x30], 0
mov byte [rsp + 0x85], 1
mov qword [rsp + 0x68], 0
mov qword [rsp + 0x60], 0
jmp 0x40d60f
cmp edx, 1
jne 0x40d790
jmp 0x40da49
cmp byte [r12 + 1], 0x2a
sete al
cmp edx, 1
sete cl
and al, cl
cmovne ebx, eax
jmp 0x40d790
xor edi, edi
xor esi, esi
mov ebx, r11d
jmp 0x40db27
add esi, 1
add rdi, 0x18
cmp esi, dword [0x0059d164]
jge 0x40db53
mov rax, qword [0x0059d168]
add rax, rdi
cmp byte [rax + 0x16], 0
je 0x40db18
xor edx, edx
mov ecx, esi
mov byte [rax + 0x16], 0
add esi, 1
call fcn.0040cd10
add rdi, 0x18
cmp esi, dword [0x0059d164]
jl 0x40db27
movzx eax, byte [r12]
mov r11d, ebx
mov byte [rsp + 0x20], 0
xor esi, esi
mov byte [rsp + 0x2c], 1
jmp 0x40d4f6
mov byte [rsp + 0x85], 0
jmp 0x40d4e3
test al, al
mov byte [rsp + 0x85], 0
jne 0x40d4e3
test r13, r13
je 0x40dd67
mov eax, r15d
mov r11d, 0xffffffff
sub eax, r13d
jmp 0x40d8f6
cmp byte [r12], 0x7d
jne 0x40d603
mov rsi, r12
add rsi, 1
mov rax, qword [rsp + 0x58]
test rax, rax
je 0x40dbd1
mov rbx, qword [rsp + 0x48]
cmp rax, rbx
je 0x40dbd1
mov rcx, rax
call fcn.004a6450
mov rax, qword [rsp + 0x48]
test rax, rax
je 0x40dbe3
mov rcx, rax
call fcn.004a6450
mov rax, rsi
add rsp, 0xa8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
xor r9d, r9d
xor r10d, r10d
jmp 0x40d3c6
sub rdx, rdi
lea ecx, [rdx + 1]
mov r15, rdx
movsxd rcx, ecx
movsxd r15, r15d
call fcn.0048c870
mov rdx, rdi
mov r8, r15
mov rcx, rax
mov rdi, rax
mov qword [rsp + 0x38], rax
call sub.msvcrt.dll_memcpy
test bl, bl
mov byte [rdi + r15], 0
je 0x40dd95
mov rax, qword [rsp + 0x68]
mov rbx, qword [rsp + 0x60]
mov ecx, dword [0x0059d164]
sub rax, rbx
test ecx, ecx
jle 0x40dcf3
xor r13d, r13d
mov qword [rsp + 0x50], r12
mov edi, eax
mov dword [rsp + 0x40], eax
mov r12, r13
jmp 0x40dc7d
add r12, 1
cmp dword [0x0059d164], r12d
jle 0x40dcee
mov rdx, qword [0x0059d168]
lea rax, [r12 + r12*2]
mov r8, rdi
lea rax, [rdx + rax*8]
mov rdx, rbx
mov r15, qword [rax]
mov rcx, r15
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x40dc70
mov edx, dword [rsp + 0x40]
mov ecx, r12d
call fcn.00403e50
test eax, eax
je 0x40dc70
mov rcx, qword [rsp + 0x38]
lea r8, [r15 + rdi]
xor edx, edx
call fcn.0040a970
test eax, eax
js 0x40ddac
mov ecx, r12d
mov edx, 1
add r12, 1
call fcn.0040cd10
cmp dword [0x0059d164], r12d
mov qword [0x0059d0b0], 0
jg 0x40dc7d
mov r12, qword [rsp + 0x50]
mov rcx, qword [rsp + 0x38]
call fcn.004a6450
movzx eax, byte [r12]
jmp 0x40da92
xor esi, esi
jmp 0x40d4e3
mov rax, qword [0x0059d0d0]
xor r9d, r9d
test rax, rax
je 0x40dd52
mov rbx, qword [rax]
xor r9d, r9d
test rbx, rbx
je 0x40dd52
cmp byte [rbx], 0
je 0x40dd52
lea rcx, [rbx + 1]
mov rsi, r15
mov rdx, r13
sub rsi, r13
mov r8, rsi
call sub.msvcrt.dll_strncmp
xor r9d, r9d
test eax, eax
jne 0x40dd52
cmp byte [rbx + rsi + 1], 0
sete r9b
mov byte [rsp + 0x9f], r9b
mov byte [rsp + 0x85], 0
jmp 0x40d702
movzx r9d, byte [rsp + 0x9f]
mov byte [rsp + 0x85], 0
jmp 0x40d702
mov r15, qword [rsp + 0x48]
movzx eax, byte [r12]
mov r13, qword [rsp + 0x48]
mov byte [r15], 0
jmp 0x40d62c
mov rcx, qword [rsp + 0x38]
xor r8d, r8d
xor edx, edx
call fcn.0040a970
test eax, eax
jns 0x40dcf3
mov rcx, qword [rsp + 0x38]
xor esi, esi
call fcn.004a6450
jmp 0x40dbb5
movzx edi, byte [rsp + 0x38]
mov r12, qword [rsp + 0x40]
mov r15, qword [rsp + 0x50]
movzx r9d, byte [rsp + 0x87]
jmp 0x40d6fa
movzx r9d, byte [rsp + 0x9f]
jmp 0x40d702
mov rdx, r12
jmp 0x40da72
mov edx, 1
mov ecx, r12d
call fcn.00403e50
test eax, eax
je 0x40d958
jmp 0x40da22
mov edi, 1
jmp 0x40d3b1
mov r13, qword [rsp + 0xf0]
mov rbx, r12
movsx r9d, byte [rbx]
mov r8, r13
mov rax, qword [0x0058b1e0]
lea rdx, str.braced_spec__qs_is_invalid_at__qc
mov ecx, dword [rax]
call fcn.00432e40
mov rax, qword [0x0058b1e0]
lea rdx, str.braced_spec__qs_ends_in_escape
mov r13, qword [rsp + 0xf0]
mov ecx, dword [rax]
mov r8, r13
call fcn.00432e40
mov rax, qword [0x0058b1e0]
mov r8, rdi
lea rdx, str.braced_spec_body__qs_is_invalid
mov ecx, dword [rax]
call fcn.00432e40
mov rsi, r13
mov r13, qword [rsp + 0xf0]
mov rbx, rsi
jmp 0x40de25