Function at 0x140049004
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 0x140048824
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 0x14004891f
cmp byte [rax], 0x5d
jne 0x140048886
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 0x14004891f
mov r8, rsi
mov rdx, rbx
mov rcx, rdi
xor ebp, ebp
call fcn.140049004
cmp dword [rdi + 0x30], ebp
jne 0x14004891f
mov rcx, qword [rbx]
inc ebp
call fcn.14001d330
mov qword [rbx], rax
cmp dword [rdi + 0x30], 0
jne 0x14004891f
cmp byte [rax], 0x2c
jne 0x1400488e2
lea rcx, [rax + 1]
mov qword [rbx], rcx
call fcn.14001d330
mov qword [rbx], rax
cmp dword [rdi + 0x30], 0
jne 0x14004891f
mov r8, rsi
mov rdx, rbx
mov rcx, rdi
call fcn.140049004
cmp dword [rdi + 0x30], 0
je 0x14004889f
jmp 0x14004891f
cmp byte [rax], 0x5d
jne 0x140048910
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 0x14004891f
sub rax, qword [rbx + 8]
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 0x140048970
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 0x140048ad1
cmp byte [rax], 0x7d
jne 0x1400489d2
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 0x140048ad1
xor ebp, ebp
cmp byte [rax], 0x22
jne 0x140048ac2
mov r9b, 1
mov r8, rsi
mov rdx, rbx
mov rcx, rdi
call fcn.140048bbc
cmp dword [rdi + 0x30], 0
jne 0x140048ad1
mov rcx, qword [rbx]
call fcn.14001d330
mov qword [rbx], rax
cmp dword [rdi + 0x30], 0
jne 0x140048ad1
cmp byte [rax], 0x3a
jne 0x140048ab5
lea rcx, [rax + 1]
mov qword [rbx], rcx
call fcn.14001d330
mov qword [rbx], rax
cmp dword [rdi + 0x30], 0
jne 0x140048ad1
mov r8, rsi
mov rdx, rbx
mov rcx, rdi
call fcn.140049004
cmp dword [rdi + 0x30], 0
jne 0x140048ad1
mov rcx, qword [rbx]
call fcn.14001d330
mov qword [rbx], rax
cmp dword [rdi + 0x30], 0
jne 0x140048ad1
inc ebp
cmp byte [rax], 0x2c
jne 0x140048a7a
lea rcx, [rax + 1]
mov qword [rbx], rcx
call fcn.14001d330
mov qword [rbx], rax
cmp dword [rdi + 0x30], 0
je 0x1400489d4
jmp 0x140048ad1
cmp byte [rax], 0x7d
je 0x140048a8c
sub rax, qword [rbx + 8]
mov dword [rdi + 0x30], 6
jmp 0x140048acd
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 0x140048ad1
sub rax, qword [rbx + 8]
mov dword [rdi + 0x30], 5
jmp 0x140048acd
sub rax, qword [rbx + 8]
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 0x140049042
cmp byte [rax], 0x5b
je 0x14004903d
cmp byte [rax], 0x66
je 0x140049038
cmp byte [rax], 0x6e
je 0x140049033
cmp byte [rax], 0x74
je 0x14004902e
cmp byte [rax], 0x7b
jne fcn.14001b4f0
jmp 0x140048934
jmp fcn.14001c2fc
jmp fcn.14001b478
jmp fcn.14001b37c
jmp 0x1400487e8
xor r9d, r9d
jmp fcn.140048bbc