Function at 0x40cd90
Capabilities:
Parse credit card information

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x58
movzx eax, byte [rcx]
add dword [0x004ee1c0], 1
mov r14, rdx
test al, al
je 0x40cdea
cmp al, 0x28
mov rbx, rcx
je 0x40d12e
mov r8, qword [0x004e1c40]
jmp 0x40cdc9
cmp al, 0x28
je 0x40ce00
movzx edx, al
test byte [r8 + rdx*2], 0x8c
jne 0x40cddf
cmp al, 0x2d
je 0x40cddf
cmp al, 0x5f
jne 0x40d135
add rbx, 1
movzx eax, byte [rbx]
test al, al
jne 0x40cdc5
mov rax, qword [0x004e1d60]
lea rdx, str.no_arguments_for_spec_function
mov ecx, dword [rax]
call fcn.004246b0
nop
mov edx, ebx
sub edx, ecx
call fcn.00401820
mov rsi, rax
movzx eax, byte [rbx + 1]
lea rcx, [rbx + 1]
test al, al
je 0x40ce4b
mov rbx, rcx
xor edx, edx
jmp 0x40ce35
cmp al, 0x28
sete al
add rbx, 1
movzx eax, al
add edx, eax
movzx eax, byte [rbx]
test al, al
je 0x40ce4b
cmp al, 0x29
jne 0x40ce20
test edx, edx
je 0x40ce60
add rbx, 1
movzx eax, byte [rbx]
sub edx, 1
test al, al
jne 0x40ce35
mov rax, qword [0x004e1d60]
lea rdx, str.malformed_spec_function_arguments
mov ecx, dword [rax]
call fcn.004246b0
mov rdx, rbx
lea r12, str.getenv
add rbx, 1
sub rdx, rcx
call fcn.00401820
lea rcx, str.getenv
mov r13, rax
jmp 0x40ce93
add r12, 0x10
mov rcx, qword [r12]
test rcx, rcx
je 0x40d0c4
mov rdx, rsi
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x40ce82
mov r8d, eax
mov rax, qword [0x004ee1b8]
mov rbp, qword [0x004ee350]
mov r15, qword [0x004ee0b0]
mov qword [rsp + 0x28], rax
mov eax, dword [0x004ee0cc]
mov dword [rsp + 0x34], eax
mov eax, dword [0x004ee0c8]
mov dword [rsp + 0x38], eax
mov eax, dword [0x004ee0c4]
mov dword [rsp + 0x3c], eax
mov eax, dword [0x004ee0c0]
mov dword [rsp + 0x40], eax
mov eax, dword [0x004ee0bc]
mov dword [rsp + 0x44], eax
mov eax, dword [0x004ee0b8]
mov dword [rsp + 0x48], eax
mov rax, qword [0x004ee358]
mov rdi, rax
sub rdi, rbp
test edi, edi
jle 0x40d0f0
cmp rax, rbp
je 0x40d122
mov rdx, qword [0x004ee370]
mov rcx, qword [0x004ee360]
add rax, rdx
not rdx
mov r10, rcx
and rax, rdx
mov rdx, qword [0x004ee348]
mov r9, rax
mov qword [0x004ee358], rax
sub r9, rdx
sub r10, rdx
cmp r9, r10
jbe 0x40cf56
mov qword [0x004ee358], rcx
mov rax, rcx
mov qword [0x004ee350], rax
xor ecx, ecx
mov edx, 0x58
mov dword [rsp + 0x4c], r8d
mov qword [0x004ee1b8], 0
call fcn.0046ab70
mov edx, dword [rax]
mov qword [0x004ee1b8], rax
mov rcx, r13
mov dword [rax + 4], 0
and edx, 0x80000000
or edx, 0xa
mov dword [rax], edx
mov byte [rax + 3], 0
call fcn.0040ca20
test eax, eax
mov r8d, dword [rsp + 0x4c]
js 0x40d14a
mov rax, qword [0x004ee1b8]
mov r9, qword [r12 + 8]
test rax, rax
je 0x40d11b
mov r8d, dword [rax + 4]
lea rdx, [rax + 8]
mov ecx, r8d
call r9
mov rcx, qword [0x004ee1b8]
mov r12, rax
test rcx, rcx
je 0x40cfee
cmp byte [rcx + 3], 0
js 0x40d0e0
call fcn.00483488
mov rax, qword [rsp + 0x28]
test edi, edi
mov qword [0x004ee0b0], r15
mov qword [0x004ee1b8], rax
mov eax, dword [rsp + 0x34]
mov dword [0x004ee0cc], eax
mov eax, dword [rsp + 0x38]
mov dword [0x004ee0c8], eax
mov eax, dword [rsp + 0x3c]
mov dword [0x004ee0c4], eax
mov eax, dword [rsp + 0x40]
mov dword [0x004ee0c0], eax
mov eax, dword [rsp + 0x44]
mov dword [0x004ee0bc], eax
mov eax, dword [rsp + 0x48]
mov dword [0x004ee0b8], eax
jle 0x40d070
mov rcx, qword [0x004ee358]
mov rax, qword [0x004ee360]
movsxd rdi, edi
sub rax, rcx
cmp rdi, rax
ja 0x40d100
mov r8, rdi
mov rdx, rbp
call sub.msvcrt.dll_memcpy
add qword [0x004ee358], rdi
test r12, r12
je 0x40d08d
xor r8d, r8d
xor edx, edx
mov rcx, r12
call fcn.0040afd0
test eax, eax
mov eax, 0
cmovs rbx, rax
test r14, r14
je 0x40d099
test r12, r12
setne byte [r14]
mov rcx, rsi
call fcn.00483488
mov rcx, r13
call fcn.00483488
sub dword [0x004ee1c0], 1
mov rax, rbx
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rax, qword [0x004e1d60]
lea rdx, str.unknown_spec_function__qs
mov r8, rsi
mov ecx, dword [rax]
call fcn.004246b0
nop dword [rax]
mov dword [rcx + 4], 0
jmp 0x40cfee
xor ebp, ebp
jmp 0x40cf5d
lea rcx, [0x004ee340]
mov rdx, rdi
call fcn.004682f0
mov rcx, qword [0x004ee358]
jmp 0x40d05e
xor edx, edx
jmp 0x40cfca
or byte [0x004ee390], 2
jmp 0x40cf16
xor edx, edx
jmp 0x40ce04
mov rax, qword [0x004e1d60]
lea rdx, str.malformed_spec_function_name
mov ecx, dword [rax]
call fcn.004246b0
mov rax, qword [0x004e1d60]
lea rdx, str.error_in_args_to_spec_function__qs
mov r8, rsi
mov ecx, dword [rax]
call fcn.004246b0
nop
nop dword [rax]
nop word cs:[rax + rax]