Function at 0x405e60
Capabilities:
Validate payment card number using luhn algorithm

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x78
xor r13d, r13d
mov r14, qword [rcx + 8]
mov rbp, qword [rcx]
test r14, r14
je 0x405e83
lea r13, [r14 + 8]
test rbp, rbp
jle 0x405f4b
mov al, byte [r13]
or r15, 0xffffffffffffffff
cmp al, 0x2b
je 0x405ea4
xor esi, esi
cmp al, 0x2d
jne 0x405eb3
mov r15d, 1
cmp rbp, 1
je 0x405f4b
mov esi, 1
mov al, byte [r13 + rsi]
xor ebx, ebx
sub eax, 0x30
cmp al, 9
ja 0x405f4d
movabs rdi, 0x7fffffffffffffd0
lea r12, [0x004111c0]
movzx ecx, byte [r13 + rsi]
lea eax, [rcx - 0x30]
cmp al, 9
jbe 0x405eeb
cmp r15, 0xffffffffffffffff
jne 0x405f3e
jmp 0x405f30
lea rax, [rcx + rdi]
mov r10d, 0xa
cqo
idiv r10
cmp rax, rbx
jle 0x405f13
call fcn.00405dfb
mov rcx, r12
call fcn.0040bfc0
cmp byte [rax], 0
je 0x405f1e
jmp 0x405f4d
imul rbx, rbx, 0xa
sub rcx, 0x30
sub rbx, rcx
inc rsi
cmp rbp, rsi
jle 0x405ee3
cmp byte [r13 + rsi], 0x5f
je 0x405f1e
jmp 0x405ed6
mov eax, 1
shl rax, 0x3f
cmp rbx, rax
je 0x405f44
imul rbx, r15
jmp 0x405f4f
call fcn.00405dfb
jmp 0x405f4d
xor ebx, ebx
xor esi, esi
lea rcx, [0x004111c0]
xor edi, edi
call fcn.0040bfc0
cmp byte [rax], 0
mov r15, rax
jne 0x406100
mov rax, 0xffffffffffffffff
test rsi, rsi
mov qword [rsp + 0x48], 0
mov qword [rsp + 0x50], 0
lea r12, [0x00413a00]
cmove rbx, rax
lea rax, [rsp + 0x30]
mov qword [rsp + 0x20], rax
lea rax, [rsp + 0x48]
lea r13, [rsp + 0x58]
mov qword [rsp + 0x28], rax
mov edx, 0x18
mov rcx, r13
mov rdi, r13
call fcn.00403a82
mov edx, 0x18
mov rcx, r13
mov rsi, r12
call fcn.00403a82
mov ecx, 6
mov rdx, qword [rsp + 0x20]
rep movsd dword [rdi], dword [rsi]
mov rcx, qword [rsp + 0x28]
mov rsi, qword [rsp + 0x58]
movups xmm0, xmmword [rsp + 0x60]
movaps xmmword [rsp + 0x30], xmm0
call fcn.00404b93
cmp rsi, rbx
je 0x4060b7
mov r11, qword [rsp + 0x48]
xor r8d, r8d
xor edx, edx
mov rcx, qword [rsp + 0x50]
cmp r11, rdx
jg 0x406019
mov r9b, 0
jne 0x406085
cmp rbp, r8
sete r9b
jmp 0x406085
cmp rbp, r8
jle 0x406082
mov al, byte [rcx + rdx + 8]
cmp al, 0x2d
je 0x40602a
cmp al, 0x5f
jne 0x40602d
inc rdx
mov al, byte [r14 + r8 + 8]
cmp al, 0x2d
je 0x40603e
cmp al, 0x5f
jne 0x4060f8
inc r8
cmp r11, rdx
jle 0x40607a
cmp rbp, r8
jle 0x40607a
mov r10b, byte [rcx + rdx + 8]
lea eax, [r10 - 0x41]
cmp al, 0x19
ja 0x40605c
xor r10d, 0x20
mov r9b, byte [r15]
test r9b, r9b
jne 0x406082
mov al, byte [r14 + r8 + 8]
lea edi, [rax - 0x41]
cmp dil, 0x19
ja 0x406075
xor eax, 0x20
cmp r10b, al
jne 0x406085
inc rdx
inc r8
jmp 0x406006
xor r9d, r9d
cmp byte [r15], 0
je 0x406094
xor edi, edi
test rcx, rcx
jne 0x4060d8
jmp 0x406100
test r9b, r9b
jne 0x4060b4
lea rax, [0x00414948]
add r12, 0x18
cmp rax, r12
jne 0x405fa9
test rcx, rcx
je 0x4060f3
jmp 0x4060d8
mov rbx, rsi
mov rcx, qword [rsp + 0x50]
mov edi, ebx
test rcx, rcx
je 0x406100
mov eax, 1
shl rax, 0x3e
test qword [rcx], rax
jne 0x406100
call fcn.00404b55
jmp 0x406100
mov eax, 1
shl rax, 0x3e
test qword [rcx], rax
jne 0x4060eb
call fcn.00404b55
xor edi, edi
cmp byte [r15], 0
jne 0x406100
or edi, 0xffffffff
jmp 0x406100
cmp r11, rdx
jmp 0x406049
mov eax, edi
add rsp, 0x78
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret