Function at 0x40d0c0
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 [0x005cfd20]
xor edi, edi
movabs r14, 0x200000024000b
mov qword [rsp + 0x100], rcx
mov rsi, rcx
mov byte [rsp + 0x7b], 0
mov byte [rsp + 0x4c], 0
mov byte [rsp + 0x4b], 1
mov byte [rsp + 0x38], 0
mov byte [rsp + 0x60], 0
mov qword [rsp + 0x50], 0
mov qword [rsp + 0x30], 0
mov qword [rsp + 0x58], 0
mov qword [rsp + 0x40], 0
mov byte [rsp + 0xaf], 0
movzx eax, byte [rsi]
cmp al, 0x20
jne 0x40d14b
nop dword [rax]
add rsi, 1
movzx eax, byte [rsi]
cmp al, 0x20
je 0x40d140
cmp al, 9
je 0x40d140
cmp al, 0x21
jne 0x40d7a6
movzx eax, byte [rsi + 1]
lea r13, [rsi + 1]
cmp al, 0x20
setne bl
cmp al, 9
setne dl
and bl, dl
jne 0x40d189
nop dword [rax]
add r13, 1
movzx eax, byte [r13]
cmp al, 9
setne dl
cmp al, 0x20
setne cl
and dl, cl
je 0x40d170
mov ebx, edx
cmp al, 0x25
jne 0x40d420
xor r8d, r8d
xor esi, esi
cmp byte [r13 + 1], 0x3a
je 0x40d571
movzx eax, byte [r13]
mov r15, r13
xor ebp, ebp
nop dword [rax + rax]
movzx edx, al
test word [r12 + rdx*2], 0x204
jne 0x40d2c6
cmp al, 0x2d
je 0x40d300
lea edx, [rax - 0x2b]
cmp dl, 0x31
jbe 0x40d2c0
test ebp, ebp
jne 0x40d5a2
mov rbp, r15
cmp al, 0x2a
mov byte [rsp + 0x28], 0
jne 0x40d1f6
movzx eax, byte [r15 + 1]
mov byte [rsp + 0x28], 1
add r15, 1
cmp al, 0x20
je 0x40d200
cmp al, 9
jne 0x40d210
nop
add r15, 1
movzx eax, byte [r15]
cmp al, 9
je 0x40d200
cmp al, 0x20
je 0x40d200
cmp al, 0x3a
je 0x40d222
jle 0x40d40d
cmp al, 0x7c
jne 0x40d323
test dil, dil
jne 0x40d415
test r13, r13
setne dl
cmp r13, rbp
sete cl
and dl, cl
mov byte [rsp + 0x60], dl
je 0x40d439
movzx edx, byte [rsp + 0x4c]
movzx ecx, byte [rsp + 0x38]
xor edx, 1
or cl, dl
jne 0x40d415
cmp al, 0x7c
je 0x40d415
test bl, bl
jne 0x40d415
test sil, sil
jne 0x40d415
or r8b, byte [rsp + 0x28]
mov byte [rsp + 0x4b], r8b
jne 0x40d415
movzx eax, byte [rsp + 0x7b]
xor eax, 1
mov byte [rsp + 0x38], al
movzx eax, byte [r15]
lea rsi, [r15 + 1]
cmp al, 0x3a
je 0x40d50c
cmp al, 0x7d
je 0x40d765
cmp byte [rsp + 0x60], 0
jne 0x40daf1
xor edi, edi
mov byte [rsp + 0x60], 1
jmp 0x40d12e
bt r14, rdx
jae 0x40d30e
movzx edx, byte [r15 + 1]
lea rcx, [r15 + 1]
cmp al, 0x5c
je 0x40d2e0
mov eax, edx
mov r15, rcx
jmp 0x40d1b0
test dl, dl
je 0x40d82f
movzx eax, byte [r15 + 2]
add ebp, 1
add r15, 2
jmp 0x40d1b0
movzx eax, byte [r15 + 1]
add r15, 1
jmp 0x40d1b0
test ebp, ebp
jne 0x40d5a2
mov rbp, r15
mov byte [rsp + 0x28], 0
jmp 0x40d210
cmp al, 0x7d
jne 0x40d415
cmp byte [rsp + 0x60], 0
jne 0x40d415
cmp byte [rsp + 0x4c], 0
jne 0x40d415
test bl, bl
jne 0x40d415
test sil, sil
jne 0x40d415
cmp r13, rbp
sete al
or al, r8b
mov byte [rsp + 0x60], al
jne 0x40d415
mov rsi, rbp
mov ebx, dword [0x005de164]
mov eax, 0xffffffff
sub rsi, r13
cmp byte [rsp + 0x28], 0
cmovne eax, esi
test ebx, ebx
mov dword [rsp + 0x4c], eax
jle 0x40d757
mov rbp, qword [0x005de168]
mov qword [rsp + 0x70], r15
movsxd rsi, esi
xor edi, edi
mov qword [rsp + 0x68], rbp
mov r15, rbp
mov rbp, qword [r15]
mov r8, rsi
mov rdx, r13
mov rcx, rbp
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x40d3e0
cmp byte [rsp + 0x28], 0
jne 0x40d3c6
cmp byte [rbp + rsi], 0
jne 0x40d3e0
mov edx, dword [rsp + 0x4c]
mov ecx, edi
call fcn.00401840
test eax, eax
je 0x40d3e0
mov byte [r15 + 0x16], 1
nop word [rax + rax]
add edi, 1
add r15, 0x18
cmp edi, ebx
jne 0x40d3a3
mov r15, qword [rsp + 0x70]
cmp byte [r15], 0x7d
je 0x40d6f8
lea rsi, [r15 + 1]
mov byte [rsp + 0x4c], 0
mov edi, 1
jmp 0x40d12e
cmp al, 0x26
je 0x40d32b
mov rbx, r15
jmp 0x40daf4
cmp al, 0x2e
jne 0x40d62e
add r13, 1
xor r8d, r8d
mov esi, 1
jmp 0x40d1a1
test sil, sil
jne 0x40d647
test r8b, r8b
jne 0x40d647
movzx eax, byte [rsp + 0x4b]
cmp byte [rsp + 0x28], 0
cmove eax, r8d
mov byte [rsp + 0x4b], al
movzx eax, byte [rsp + 0x38]
or al, byte [rsp + 0x7b]
jne 0x40d28d
test r13, r13
je 0x40d822
test sil, sil
je 0x40d7b3
mov r10, qword [0x005de0d8]
xor esi, esi
test r10, r10
je 0x40d4c1
mov r9, rbp
mov rdx, r13
mov rcx, r10
mov qword [rsp + 0x28], r10
sub r9, r13
mov r8, r9
mov qword [rsp + 0x38], r9
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x40d4c1
mov r10, qword [rsp + 0x28]
mov r9, qword [rsp + 0x38]
cmp byte [r10 + r9], 0
sete sil
mov byte [rsp + 0xaf], sil
cmp bl, sil
mov rax, qword [rsp + 0x50]
mov byte [rsp + 0x60], 0
cmovne rax, qword [rsp + 0x30]
lea rsi, [r15 + 1]
cmove rbp, qword [rsp + 0x58]
cmove r13, qword [rsp + 0x40]
mov qword [rsp + 0x50], rax
setne byte [rsp + 0x38]
movzx eax, byte [r15]
mov qword [rsp + 0x58], rbp
mov qword [rsp + 0x40], r13
cmp al, 0x3a
jne 0x40d29d
movzx r8d, byte [rsp + 0x7b]
mov edx, 1
movzx eax, byte [r15 + 1]
mov r15, rsi
xor r8d, 1
and r8b, byte [rsp + 0x38]
jmp 0x40d563
cmp al, 0x7d
je 0x40d65c
cmp edx, 1
sete cl
cmp al, 0x3b
jne 0x40d54a
test cl, cl
jne 0x40d665
cmp al, 0x25
je 0x40d6e2
test al, al
je 0x40db15
movzx eax, byte [r15 + 1]
add r15, 1
cmp al, 0x7b
jne 0x40d530
add edx, 1
movzx eax, byte [r15 + 1]
jmp 0x40d55f
lea rcx, [r13 + 2]
mov byte [rsp + 0x68], r8b
xor ebp, ebp
xor r13d, r13d
lea rdx, [rsp + 0xaf]
call fcn.0040ccd0
mov byte [rsp + 0x28], 0
movzx r8d, byte [rsp + 0x68]
mov r15, rax
movzx eax, byte [rax]
jmp 0x40d1f6
mov rcx, qword [rsp + 0x30]
test rcx, rcx
je 0x40d5c6
mov rax, qword [rsp + 0x50]
cmp rcx, rax
je 0x40d5c6
mov byte [rsp + 0x28], r8b
call fcn.0049a918
movzx r8d, byte [rsp + 0x28]
mov rcx, r15
movsxd rbp, ebp
mov byte [rsp + 0x28], r8b
sub rcx, r13
sub rcx, rbp
add rcx, 1
call fcn.00482890
cmp r13, r15
movzx r8d, byte [rsp + 0x28]
mov qword [rsp + 0x30], rax
je 0x40d90b
mov rbp, rax
movzx eax, byte [r13]
lea rdx, [r13 + 1]
cmp al, 0x5c
jne 0x40d60d
movzx eax, byte [r13 + 1]
lea rdx, [r13 + 2]
mov byte [rbp], al
add rbp, 1
cmp r15, rdx
mov r13, rdx
jne 0x40d5f7
mov byte [rbp], 0
mov r13, qword [rsp + 0x30]
movzx eax, byte [r15]
jmp 0x40d1df
cmp al, 0x2c
jne 0x40dae7
add r13, 1
mov r8d, 1
xor esi, esi
jmp 0x40d1a1
cmp byte [rsp + 0x28], 0
jne 0x40d415
mov byte [rsp + 0x4b], 0
jmp 0x40d45d
sub edx, 1
jne 0x40d55a
movzx edx, byte [r15 - 1]
cmp dl, 0x20
je 0x40d678
cmp dl, 9
jne 0x40da99
mov rdx, r15
sub rdx, 1
movzx ecx, byte [rdx - 1]
cmp cl, 9
je 0x40d67b
cmp cl, 0x20
je 0x40d67b
movzx ecx, byte [rsp + 0x4b]
xor ecx, 1
test cl, dil
jne 0x40db15
test r8b, r8b
jne 0x40d84c
lea rsi, [r15 + 1]
cmp al, 0x3b
jne 0x40d29d
movzx eax, byte [rsp + 0x38]
mov byte [rsp + 0x4c], 1
or byte [rsp + 0x7b], al
mov byte [rsp + 0x38], 0
mov byte [rsp + 0x4b], 1
mov qword [rsp + 0x58], 0
mov qword [rsp + 0x40], 0
jmp 0x40d2a5
movzx eax, byte [r15 + 1]
cmp al, 0x2a
sete r9b
and cl, r9b
cmovne edi, ecx
jmp 0x40d55f
xor edi, edi
xor esi, esi
mov rax, qword [rsp + 0x68]
jmp 0x40d719
add esi, 1
add rdi, 0x18
cmp dword [0x005de164], esi
jle 0x40d73e
mov rax, qword [0x005de168]
add rax, rdi
cmp byte [rax + 0x16], 0
je 0x40d703
xor edx, edx
mov ecx, esi
mov byte [rax + 0x16], 0
add esi, 1
call fcn.0040cb60
add rdi, 0x18
cmp dword [0x005de164], esi
jg 0x40d712
cmp byte [r15], 0x7d
lea rsi, [r15 + 1]
je 0x40d765
mov byte [rsp + 0x4c], 0
mov edi, 1
jmp 0x40d12e
cmp byte [r15], 0x7d
jne 0x40d3fa
lea rsi, [r15 + 1]
mov rax, qword [rsp + 0x50]
test rax, rax
je 0x40d77d
mov rbx, qword [rsp + 0x30]
cmp rax, rbx
jne 0x40dacc
mov rax, qword [rsp + 0x30]
test rax, rax
je 0x40d78f
mov rcx, rax
call fcn.0049a918
mov rax, rsi
add rsp, 0xb8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
movzx eax, byte [rsi]
mov r13, rsi
xor ebx, ebx
jmp 0x40d189
test r8b, r8b
je 0x40d922
mov rax, qword [0x005de0d0]
test rax, rax
je 0x40d4c1
mov r10, qword [rax]
test r10, r10
je 0x40d4c1
cmp byte [r10], 0
je 0x40d4c1
lea rcx, [r10 + 1]
mov r9, rbp
mov rdx, r13
mov qword [rsp + 0x38], r10
sub r9, r13
mov r8, r9
mov qword [rsp + 0x28], r9
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x40d4c1
mov r9, qword [rsp + 0x28]
mov r10, qword [rsp + 0x38]
cmp byte [r10 + r9 + 1], 0
sete sil
jmp 0x40d4c1
movzx esi, byte [rsp + 0xaf]
jmp 0x40d4c9
mov rax, qword [0x005cfe40]
lea rdx, str.braced_spec__qs_ends_in_escape
mov r8, qword [rsp + 0x100]
mov ecx, dword [rax]
call fcn.00428180
sub rdx, rsi
mov rcx, rsi
call fcn.00401810
test dil, dil
mov rsi, rax
je 0x40daa8
mov eax, dword [0x005de164]
mov rbp, qword [rsp + 0x58]
sub rbp, qword [rsp + 0x40]
test eax, eax
jle 0x40d8fa
mov edi, ebp
xor ebx, ebx
jmp 0x40d88d
add rbx, 1
cmp dword [0x005de164], ebx
jle 0x40d8fa
mov rdx, qword [0x005de168]
lea rax, [rbx + rbx*2]
mov r8, rdi
lea r13, [rdx + rax*8]
mov rdx, qword [rsp + 0x40]
mov rcx, qword [r13]
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x40d881
mov edx, ebp
mov ecx, ebx
call fcn.00401840
test eax, eax
je 0x40d881
mov r8, qword [r13]
xor edx, edx
mov rcx, rsi
add r8, rdi
call fcn.0040afa0
test eax, eax
js 0x40dabd
mov ecx, ebx
mov edx, 1
add rbx, 1
call fcn.0040cb60
cmp dword [0x005de164], ebx
mov qword [0x005de0b0], 0
jg 0x40d88d
mov rcx, rsi
call fcn.0049a918
movzx eax, byte [r15]
jmp 0x40d6a7
mov rbp, qword [rsp + 0x30]
mov r13, qword [rsp + 0x30]
mov byte [rbp], 0
movzx eax, byte [r15]
jmp 0x40d1df
mov rdx, rbp
mov esi, dword [0x005de164]
mov ecx, 0xffffffff
sub rdx, r13
cmp byte [rsp + 0x28], 0
mov eax, edx
mov dword [rsp + 0x68], esi
cmovne ecx, edx
test esi, esi
mov dword [rsp + 0x70], ecx
jle 0x40daa1
cmp byte [rsp + 0x28], 1
mov dword [rsp + 0x38], 0
sbb esi, esi
sub eax, 1
or esi, 1
cdqe
mov dword [rsp + 0x7c], esi
movsxd rsi, edx
mov qword [rsp + 0x80], rax
lea rax, [r13 + 1]
mov qword [rsp + 0x60], rsi
mov rsi, qword [0x005de168]
mov qword [rsp + 0x88], rax
jmp 0x40d9ab
cmp al, 0x55
je 0x40da0e
add dword [rsp + 0x38], 1
add rsi, 0x18
mov eax, dword [rsp + 0x38]
cmp dword [rsp + 0x68], eax
je 0x40daa1
mov r9, qword [rsi]
mov rdx, r13
mov r8, qword [rsp + 0x60]
mov rcx, r9
mov qword [rsp + 0x90], r9
call sub.msvcrt.dll_strncmp
mov r9, qword [rsp + 0x90]
test eax, eax
jne 0x40d9fa
cmp byte [rsp + 0x28], 0
jne 0x40d9e5
mov rax, qword [rsp + 0x60]
cmp byte [r9 + rax], 0
jne 0x40d9fa
mov edx, dword [rsp + 0x70]
mov ecx, dword [rsp + 0x38]
call fcn.00401840
test eax, eax
jne 0x40da8f
mov rdx, qword [rsi + 8]
test rdx, rdx
je 0x40d994
mov r10, qword [rsi]
movzx eax, byte [r10]
cmp al, 0x44
jne 0x40d990
cmp al, byte [r13]
jne 0x40d994
mov r9, qword [rdx]
mov qword [rsp + 0x98], r10
mov r8, qword [rsp + 0x80]
mov rdx, qword [rsp + 0x88]
mov rcx, r9
mov qword [rsp + 0x90], r9
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x40d994
cmp byte [rsp + 0x28], 0
jne 0x40da7a
mov r10, qword [rsp + 0x98]
cmp byte [r10 + 1], 0
jne 0x40d994
mov rax, qword [rsp + 0x60]
mov r9, qword [rsp + 0x90]
cmp byte [r9 + rax - 1], 0
jne 0x40d994
mov edx, dword [rsp + 0x7c]
mov ecx, dword [rsp + 0x38]
call fcn.00401840
test eax, eax
je 0x40d994
mov esi, 1
jmp 0x40d4c1
mov rdx, r15
jmp 0x40d68d
xor esi, esi
jmp 0x40d4c1
xor r8d, r8d
xor edx, edx
mov rcx, rax
call fcn.0040afa0
test eax, eax
jns 0x40d8fa
mov rcx, rsi
xor esi, esi
call fcn.0049a918
jmp 0x40d765
mov rcx, rax
call fcn.0049a918
mov rax, qword [rsp + 0x30]
test rax, rax
jne 0x40d787
jmp 0x40d78f
xor r8d, r8d
xor esi, esi
jmp 0x40d1a1
mov rbx, rsi
mov rax, qword [0x005cfe40]
lea rdx, str.braced_spec__qs_is_invalid_at__qc
movsx r9d, byte [rbx]
mov r8, qword [rsp + 0x100]
mov ecx, dword [rax]
call fcn.00428180
mov rax, qword [0x005cfe40]
mov r8, rsi
lea rdx, str.braced_spec_body__qs_is_invalid
mov ecx, dword [rax]
call fcn.00428180
nop
nop
sub rsp, 0x28
test ecx, ecx
jne 0x40dbd0
mov eax, dword [0x005de074]
test eax, eax
jns 0x40dba0
lea rcx, str._cS:_o:_
call fcn.0040c970
xor r8d, r8d
xor edx, edx
lea rcx, [0x004a20ac]
call fcn.0040afa0
mov rax, qword [0x005de1b8]
test rax, rax
je 0x40db76
mov edx, dword [rax + 4]
test edx, edx
jne 0x40dbb0
mov qword [0x005de088], 0
mov rdx, qword [0x005de068]
xor r8d, r8d
lea rcx, str.__o___MD___MMD___MF___MG___MP___MQ___MT___fdump_final_insns__w__S__o__j___fcompare_debug_second:_fcompare_debug_second
add rsp, 0x28
jmp fcn.0047df30
xor eax, eax
add rsp, 0x28
ret
lea rcx, [0x004a4438]
sub edx, 1
xor r8d, r8d
mov rdx, qword [rax + rdx*8 + 8]
call fcn.0047df30
mov qword [0x005de088], rax
jmp 0x40db81
mov rax, qword [0x005cfe40]
lea rdx, str.too_many_arguments_to___:compare_debug_self_opt
mov ecx, dword [rax]
call fcn.00428180
nop
nop word cs:[rax + rax]
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x58
test ecx, ecx
mov rbx, rdx
jne 0x40de48
lea rcx, str._fdump_final_insns:_
call fcn.0040c970
xor r8d, r8d
xor edx, edx
lea rcx, [0x004a20ac]
call fcn.0040afa0
mov rax, qword [0x005de1b8]
test rax, rax
je 0x40dc80
mov eax, dword [rax + 4]
test eax, eax
je 0x40dc80
lea rdi, [0x004a20aa]
sub eax, 1
mov ecx, 2
mov rdx, qword [rbx + rax*8]
mov rsi, rdx
repe cmpsb byte [rsi], byte [rdi]
seta al
sbb al, 0
test al, al
je 0x40de30
mov ecx, dword [0x005de074]
xor eax, eax
test ecx, ecx
je 0x40dd24
mov rcx, rdx
xor edi, edi
call fcn.004829c0
mov rsi, rax
jmp 0x40dcf3
mov eax, dword [0x005de074]
test eax, eax
je 0x40de22
lea rcx, str._g.gkd
xor ebx, ebx
call fcn.0040c970
lea rcx, [0x004a20ac]
xor r8d, r8d
xor edx, edx
call fcn.0040afa0
mov rax, qword [0x005de1b8]
test rax, rax
je 0x49f23b
mov edx, dword [rax + 4]
test edx, edx
je 0x49f23b
sub edx, 1
xor r8d, r8d
mov rcx, qword [rax + rdx*8 + 8]
mov rdx, rbx
call fcn.0047df30
lea rcx, [0x004a4521]
xor r8d, r8d
mov rdx, rax
mov rsi, rax
call fcn.0047df30
mov rdi, rax
mov ebx, dword [0x005de074]
lea rdx, [0x005de130]
mov eax, ebx
shr eax, 0x1f
test ebx, ebx
mov qword [rdx + rax*8], rsi
jns 0x40dd30
cmp byte [0x005de090], 0
jne 0x40ddd7
mov byte [0x005de090], 0
mov rax, rdi
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
ret
lea rcx, str._dev_urandom
xor edx, edx
mov qword [rsp + 0x40], 0
call sub.msvcrt.dll__open_1
test eax, eax
mov esi, eax
js 0x40dd70
lea rdx, [rsp + 0x40]
mov r8d, 8
mov ecx, eax
call sub.msvcrt.dll__read_1
mov ecx, esi
call sub.msvcrt.dll__close_1
mov r8, qword [rsp + 0x40]
test r8, r8
jne 0x40ddb4
lea rcx, [rsp + 0x48]
xor edx, edx
call fcn.0048edb0
mov r8d, dword [rsp + 0x4c]
mov edx, 0x10624dd3
imul ecx, dword [rsp + 0x48], 0x3e8
mov eax, r8d
sar r8d, 0x1f
imul edx
sar edx, 6
sub edx, r8d
add edx, ecx
movsxd rdx, edx
mov qword [rsp + 0x40], rdx
call sub.msvcrt.dll__getpid
movsxd r8, eax
xor r8, qword [rsp + 0x40]
lea rdx, [0x004a4542]
lea rcx, [0x005de090]
call fcn.0049afb0
cmp byte [0x005de090], 0
mov rax, rdi
je 0x40dd24
lea r8, [0x004a4548]
mov r9, rdi
mov qword [rsp + 0x20], 0
lea rdx, [0x005de090]
lea rcx, str.__frandom_seed:_frandom_seed
call fcn.0047df30
mov rcx, rdi
mov rbp, rax
mov qword [rsp + 0x38], rax
call fcn.0049a918
test ebx, ebx
mov rax, qword [rsp + 0x38]
jns 0x40dd24
mov rdi, rbp
jmp 0x40dd1a
xor eax, eax
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
ret
lea rcx, str._o:___o:__S:_b_O_S:_b.s
call fcn.0040c970
lea rbx, str..gkd
jmp 0x40dc9c
mov rax, qword [0x005cfe40]
lea rdx, str.too_many_arguments_to___:compare_debug_dump_opt
mov ecx, dword [rax]
call fcn.00428180
nop dword [rax]