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

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
sub rsp, 0x20
inc qword [rdx]
mov rsi, r8
mov rax, qword [r8 + 0x40]
mov rbx, rdx
sub rax, qword [r8 + 0x38]
mov rdi, rcx
cmp rax, 0x10
jge 0x1400282f8
mov edx, 1
lea rcx, [r8 + 0x20]
call fcn.14001b03c
mov rcx, qword [rsi + 0x38]
xorps xmm0, xmm0
mov ebp, 4
lea rax, [rcx + 0x10]
mov qword [rsi + 0x38], rax
movups xmmword [rcx], xmm0
mov word [rcx + 0xe], bp
mov rcx, qword [rbx]
call fcn.14001d330
mov qword [rbx], rax
cmp dword [rdi + 0x30], 0
jne 0x1400283f3
cmp byte [rax], 0x5d
jne 0x14002835a
inc rax
movabs rcx, 0xffff000000000000
mov qword [rbx], rax
mov rax, qword [rsi + 0x38]
mov qword [rsi + 0x38], rax
and dword [rax - 0xc], 0
mov word [rax - 2], bp
and qword [rax - 8], rcx
and dword [rax - 0x10], 0
jmp 0x1400283f3
mov r8, rsi
mov rdx, rbx
mov rcx, rdi
xor ebp, ebp
call fcn.14002929c
cmp dword [rdi + 0x30], ebp
jne 0x1400283f3
mov rcx, qword [rbx]
inc ebp
call fcn.14001d330
mov qword [rbx], rax
cmp dword [rdi + 0x30], 0
jne 0x1400283f3
cmp byte [rax], 0x2c
jne 0x1400283b6
lea rcx, [rax + 1]
mov qword [rbx], rcx
call fcn.14001d330
mov qword [rbx], rax
cmp dword [rdi + 0x30], 0
jne 0x1400283f3
mov r8, rsi
mov rdx, rbx
mov rcx, rdi
call fcn.14002929c
cmp dword [rdi + 0x30], 0
je 0x140028373
jmp 0x1400283f3
cmp byte [rax], 0x5d
jne 0x1400283e4
inc rax
mov r8d, ebp
mov qword [rbx], rax
mov eax, ebp
neg rax
shl rax, 4
add qword [rsi + 0x38], rax
mov rdx, qword [rsi + 0x38]
mov r9, qword [rsi + 0x10]
lea rcx, [rdx - 0x10]
call fcn.14001d124
jmp 0x1400283f3
sub rax, qword [rbx + 0x10]
mov qword [rdi + 0x38], rax
mov dword [rdi + 0x30], 7
mov rbx, qword [rsp + 0x30]
mov rbp, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x40]
add rsp, 0x20
pop rdi
ret
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
sub rsp, 0x20
inc qword [rdx]
mov rsi, r8
mov rax, qword [r8 + 0x40]
mov rbx, rdx
sub rax, qword [r8 + 0x38]
mov rdi, rcx
cmp rax, 0x10
jge 0x140028c64
mov edx, 1
lea rcx, [r8 + 0x20]
call fcn.14001b03c
mov rcx, qword [rsi + 0x38]
xorps xmm0, xmm0
mov ebp, 3
lea rax, [rcx + 0x10]
mov qword [rsi + 0x38], rax
movups xmmword [rcx], xmm0
mov word [rcx + 0xe], bp
mov rcx, qword [rbx]
call fcn.14001d330
mov qword [rbx], rax
cmp dword [rdi + 0x30], 0
jne 0x140028dc5
cmp byte [rax], 0x7d
jne 0x140028cc6
inc rax
movabs rcx, 0xffff000000000000
mov qword [rbx], rax
mov rax, qword [rsi + 0x38]
mov qword [rsi + 0x38], rax
and dword [rax - 0xc], 0
mov word [rax - 2], bp
and qword [rax - 8], rcx
and dword [rax - 0x10], 0
jmp 0x140028dc5
xor ebp, ebp
cmp byte [rax], 0x22
jne 0x140028db6
mov r9b, 1
mov r8, rsi
mov rdx, rbx
mov rcx, rdi
call fcn.140028eb0
cmp dword [rdi + 0x30], 0
jne 0x140028dc5
mov rcx, qword [rbx]
call fcn.14001d330
mov qword [rbx], rax
cmp dword [rdi + 0x30], 0
jne 0x140028dc5
cmp byte [rax], 0x3a
jne 0x140028da9
lea rcx, [rax + 1]
mov qword [rbx], rcx
call fcn.14001d330
mov qword [rbx], rax
cmp dword [rdi + 0x30], 0
jne 0x140028dc5
mov r8, rsi
mov rdx, rbx
mov rcx, rdi
call fcn.14002929c
cmp dword [rdi + 0x30], 0
jne 0x140028dc5
mov rcx, qword [rbx]
call fcn.14001d330
mov qword [rbx], rax
cmp dword [rdi + 0x30], 0
jne 0x140028dc5
inc ebp
cmp byte [rax], 0x2c
jne 0x140028d6e
lea rcx, [rax + 1]
mov qword [rbx], rcx
call fcn.14001d330
mov qword [rbx], rax
cmp dword [rdi + 0x30], 0
je 0x140028cc8
jmp 0x140028dc5
cmp byte [rax], 0x7d
je 0x140028d80
sub rax, qword [rbx + 0x10]
mov dword [rdi + 0x30], 6
jmp 0x140028dc1
inc rax
mov r8d, ebp
mov qword [rbx], rax
mov eax, ebp
neg rax
shl rax, 5
add qword [rsi + 0x38], rax
mov rdx, qword [rsi + 0x38]
mov r9, qword [rsi + 0x10]
lea rcx, [rdx - 0x10]
call fcn.14001d1b0
jmp 0x140028dc5
sub rax, qword [rbx + 0x10]
mov dword [rdi + 0x30], 5
jmp 0x140028dc1
sub rax, qword [rbx + 0x10]
mov dword [rdi + 0x30], 4
mov qword [rdi + 0x38], rax
mov rbx, qword [rsp + 0x30]
mov rbp, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x40]
add rsp, 0x20
pop rdi
ret
mov rax, qword [rdx]
cmp byte [rax], 0x22
je 0x1400292da
cmp byte [rax], 0x5b
je 0x1400292d5
cmp byte [rax], 0x66
je 0x1400292d0
cmp byte [rax], 0x6e
je 0x1400292cb
cmp byte [rax], 0x74
je 0x1400292c6
cmp byte [rax], 0x7b
jne fcn.14002850c
jmp 0x140028c28
jmp fcn.14002921c
jmp fcn.140028494
jmp fcn.140028408
jmp 0x1400282bc
xor r9d, r9d
jmp fcn.140028eb0