Function at 0x40a700
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 [0x005101c8], 1
mov r14, rdx
mov qword [rsp + 0xb0], r8
test al, al
je 0x40a765
cmp al, 0x28
mov rbx, rcx
je 0x40aa8c
mov r8, qword [0x00502570]
jmp 0x40a744
cmp al, 0x28
je 0x40a780
movzx edx, al
test byte [r8 + rdx*2], 0x8c
jne 0x40a75a
cmp al, 0x2d
je 0x40a75a
cmp al, 0x5f
jne 0x40aa93
add rbx, 1
movzx eax, byte [rbx]
test al, al
jne 0x40a740
mov rax, qword [0x00502670]
lea rdx, str.no_arguments_for_spec_function
mov ecx, dword [rax]
call fcn.00426b60
nop word [rax + rax]
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 0x40a7cb
mov rbx, rcx
xor edx, edx
jmp 0x40a7b5
cmp al, 0x28
sete al
add rbx, 1
movzx eax, al
add edx, eax
movzx eax, byte [rbx]
test al, al
je 0x40a7cb
cmp al, 0x29
jne 0x40a7a0
test edx, edx
je 0x40a7e0
add rbx, 1
movzx eax, byte [rbx]
sub edx, 1
test al, al
jne 0x40a7b5
mov rax, qword [0x00502670]
lea rdx, str.malformed_spec_function_arguments
mov ecx, dword [rax]
call fcn.00426b60
mov rdx, rbx
lea r12, str.getenv
add rbx, 1
sub rdx, rcx
call fcn.00401820
lea rcx, str.getenv
mov r13, rax
jmp 0x40a813
add r12, 0x10
mov rcx, qword [r12]
test rcx, rcx
je 0x40aa20
mov rdx, rsi
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x40a802
mov r9d, eax
mov rax, qword [0x005101c0]
mov rbp, qword [0x00510350]
mov r15, qword [0x005100b0]
mov qword [rsp + 0x28], rax
mov eax, dword [0x005100cc]
mov dword [rsp + 0x34], eax
mov eax, dword [0x005100c8]
mov dword [rsp + 0x38], eax
mov eax, dword [0x005100c4]
mov dword [rsp + 0x3c], eax
mov eax, dword [0x005100c0]
mov dword [rsp + 0x40], eax
mov eax, dword [0x005100bc]
mov dword [rsp + 0x44], eax
mov eax, dword [0x005100b8]
mov dword [rsp + 0x48], eax
mov rax, qword [0x00510358]
mov rdi, rax
sub rdi, rbp
test edi, edi
jle 0x40aa40
cmp rax, rbp
je 0x40aa80
mov rdx, qword [0x00510370]
mov rcx, qword [0x00510348]
add rax, rdx
not rdx
and rax, rdx
mov rdx, qword [0x00510360]
mov r10, rax
mov qword [0x00510358], rax
sub r10, rcx
mov r11, rdx
sub r11, rcx
cmp r10, r11
jbe 0x40a8d6
mov qword [0x00510358], rdx
mov rax, rdx
mov qword [0x00510350], rax
mov dword [rsp + 0x4c], r9d
call fcn.00404c40
mov rdx, qword [rsp + 0xb0]
mov rcx, r13
call fcn.0040a350
test eax, eax
mov r9d, dword [rsp + 0x4c]
js 0x40aaa8
mov rax, qword [0x005101c0]
xor edx, edx
mov r8, qword [r12 + 8]
test rax, rax
je 0x40a91f
mov r9d, dword [rax + 4]
lea rdx, [rax + 8]
mov ecx, r9d
call r8
mov rcx, qword [0x005101c0]
mov r12, rax
test rcx, rcx
je 0x40a945
cmp byte [rcx + 3], 0
jns 0x40aa50
mov dword [rcx + 4], 0
mov rax, qword [rsp + 0x28]
test edi, edi
mov qword [0x005100b0], r15
mov qword [0x005101c0], rax
mov eax, dword [rsp + 0x34]
mov dword [0x005100cc], eax
mov eax, dword [rsp + 0x38]
mov dword [0x005100c8], eax
mov eax, dword [rsp + 0x3c]
mov dword [0x005100c4], eax
mov eax, dword [rsp + 0x40]
mov dword [0x005100c0], eax
mov eax, dword [rsp + 0x44]
mov dword [0x005100bc], eax
mov eax, dword [rsp + 0x48]
mov dword [0x005100b8], eax
jle 0x40a9c7
mov rcx, qword [0x00510358]
mov rax, qword [0x00510360]
movsxd rdi, edi
sub rax, rcx
cmp rdi, rax
ja 0x40aa60
mov r8, rdi
mov rdx, rbp
call sub.msvcrt.dll_memcpy
add qword [0x00510358], rdi
test r12, r12
je 0x40a9e4
xor r8d, r8d
xor edx, edx
mov rcx, r12
call fcn.004089c0
test eax, eax
mov eax, 0
cmovs rbx, rax
test r14, r14
je 0x40a9f0
test r12, r12
setne byte [r14]
mov rcx, rsi
call fcn.00494cb8
mov rcx, r13
call fcn.00494cb8
sub dword [0x005101c8], 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 [0x00502670]
lea rdx, str.unknown_spec_function__qs
mov r8, rsi
mov ecx, dword [rax]
call fcn.00426b60
nop dword [rax + rax]
xor ebp, ebp
jmp 0x40a8dd
call fcn.00494cb8
jmp 0x40a945
lea rcx, [0x00510340]
mov rdx, rdi
call fcn.0047911e
mov rcx, qword [0x00510358]
jmp 0x40a9b5
or byte [0x00510390], 2
jmp 0x40a896
xor edx, edx
jmp 0x40a784
mov rax, qword [0x00502670]
lea rdx, str.malformed_spec_function_name
mov ecx, dword [rax]
call fcn.00426b60
mov rax, qword [0x00502670]
lea rdx, str.error_in_arguments_to_spec_function__qs
mov r8, rsi
mov ecx, dword [rax]
call fcn.00426b60
nop
nop dword [rax + rax]
nop word cs:[rax + rax]