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

Disassembly:
jmp 0x140028660
push rbp
push rbx
push rsi
push rdi
push r14
mov rbp, rsp
sub rsp, 0x50
mov rbx, rdx
mov rdi, rcx
cmp dword [rcx + 0x36c], 0
je 0x140028d45
cmp qword [rcx + 0x370], 0
je 0x140028d45
lea rcx, [rbp - 0x18]
call fcn.1400047e6
nop
xor esi, esi
mov dword [rbp + 0x48], esi
mov rdx, rbx
lea rcx, [rbp - 0x18]
call fcn.140003364
test al, al
je 0x140028d2c
lea r8d, [rsi + 4]
lea rdx, str.RIFFWAVEfmt_datasmplLISTINFO
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
lea r8d, [rsi + 4]
lea rdx, [rbp + 0x48]
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
lea r8d, [rsi + 4]
lea rdx, [0x140150f4c]
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
lea rcx, [rdi + 0x120]
lea rbx, [rsi - 1]
test rcx, rcx
je 0x140028740
mov rax, rbx
inc rax
cmp byte [rcx + rax], sil
jne 0x140028716
cmp eax, 7
jl 0x140028740
movsxd rdx, eax
cmp byte [rdx + rcx - 2], 0x3b
jne 0x140028740
movsx r8d, byte [rdx + rcx - 1]
lea eax, [r8 - 0x30]
cmp al, 9
ja 0x140028740
lea ebx, [r8 - 0x30]
add dword [rbp + 0x48], 4
mov r8d, 4
lea rdx, [0x140150f50]
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
mov dword [rbp + 0x30], 0x10
mov r8d, 4
lea rdx, [rbp + 0x30]
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
add dword [rbp + 0x48], 8
mov eax, dword [rdi + 0x334]
shr eax, 0x1e
and ax, 2
or ax, 1
mov word [rbp + 0x40], ax
mov r8d, 2
lea rdx, [rbp + 0x40]
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
add dword [rbp + 0x48], 2
movzx eax, word [rdi + 0x338]
mov word [rbp + 0x40], ax
mov r8d, 2
lea rdx, [rbp + 0x40]
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
add dword [rbp + 0x48], 2
mov eax, dword [rdi + 0x330]
mov dword [rbp - 0x30], eax
mov r8d, 4
lea rdx, [rbp - 0x30]
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
add dword [rbp + 0x48], 4
mov ecx, dword [rdi + 0x334]
shr ecx, 3
and ecx, 0xfffffff
imul ecx, dword [rdi + 0x338]
mov eax, dword [rbp - 0x30]
imul eax, ecx
mov dword [rbp - 0x30], eax
mov r8d, 4
lea rdx, [rbp - 0x30]
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
add dword [rbp + 0x48], 4
mov eax, dword [rdi + 0x334]
shr eax, 3
movzx ecx, word [rdi + 0x338]
movzx edx, ax
imul edx, ecx
mov word [rbp + 0x40], dx
mov r8d, 2
lea rdx, [rbp + 0x40]
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
add dword [rbp + 0x48], 2
movzx eax, word [rdi + 0x334]
mov word [rbp + 0x40], ax
mov word [rbp + 0x30], ax
mov r8d, 2
lea rdx, [rbp + 0x30]
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
add dword [rbp + 0x48], 2
mov r8d, 4
lea rdx, [0x140150f54]
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
mov r8d, 4
lea rdx, [rdi + 0x36c]
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
add dword [rbp + 0x48], 8
mov r8d, dword [rdi + 0x334]
shr r8d, 3
and r8d, 0xfffffff
mov dword [rbp - 0x30], r8d
xor edx, edx
mov eax, dword [rdi + 0x36c]
div r8d
imul r8d, eax
mov rdx, qword [rdi + 0x370]
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
mov eax, dword [rdi + 0x36c]
add dword [rbp + 0x48], eax
test al, 1
je 0x14002895f
mov byte [rbp + 0x30], sil
mov r8d, 1
lea rdx, [rbp + 0x30]
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
inc dword [rbp + 0x48]
mov r8d, 4
lea rdx, [0x140150f58]
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
mov eax, dword [rdi + 0x358]
lea ecx, [rax + rax*2]
lea ecx, [rcx*8 + 0x24]
mov dword [rbp - 0x28], ecx
mov r8d, 4
lea rdx, [rbp - 0x28]
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
add dword [rbp + 0x48], 8
mov dword [rbp - 0x30], esi
movd xmm0, dword [rdi + 0x348]
cvtdq2pd xmm0, xmm0
divsd xmm0, qword [0x14011e130]
cvttsd2si eax, xmm0
mov ecx, esi
test ebx, ebx
cmovs ecx, eax
mov r8d, 0xc8
cmp ecx, r8d
jle 0x1400289e5
mov dword [rbp + 0x30], 0x1d
jmp 0x140028a08
mov r8d, 0xffffff38
cmp ecx, r8d
jl 0x1400289fe
mov dword [rbp + 0x30], 0x1d
mov r8d, ecx
test ecx, ecx
jns 0x140028a08
mov dword [rbp + 0x30], 0x1e
neg r8d
mov eax, 0x66666667
imul r8d
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
movzx eax, dl
shl al, 2
lea ecx, [rax + rdx]
add cl, cl
sub r8b, cl
movzx eax, r8b
add al, al
add r8b, al
movsx ecx, r8b
movsx eax, dl
shl eax, 8
or ecx, eax
mov dword [rbp - 0x1c], ecx
movd xmm0, dword [rdi + 0x344]
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [0x14011e140]
divsd xmm0, qword [0x14011e120]
addsd xmm0, qword [0x14011da78]
cvttsd2si eax, xmm0
mov dword [rbp - 0x20], eax
mov r8d, 4
lea rdx, [rbp - 0x30]
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
mov r8d, 4
lea rdx, [rbp - 0x30]
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
mov r8d, 4
lea rdx, [rbp - 0x30]
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
lea rdx, [rdi + 0x340]
mov r8d, 4
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
mov r8d, 4
lea rdx, [rbp - 0x20]
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
mov r8d, 4
lea rdx, [rbp + 0x30]
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
mov r8d, 4
lea rdx, [rbp - 0x1c]
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
mov r8d, 4
lea rdx, [rdi + 0x358]
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
mov r8d, 4
lea rdx, [rbp - 0x30]
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
add dword [rbp + 0x48], 0x24
mov eax, dword [rdi + 0x358]
test eax, eax
je 0x140028c37
mov rbx, qword [rdi + 0x360]
nop dword [rax]
mov r8d, 4
mov rdx, rbx
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
mov r8d, 4
lea rdx, [rbp - 0x30]
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
lea rdx, [rbx + 4]
mov r8d, 4
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
lea rdx, [rbx + 8]
mov r8d, 4
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
mov r8d, 4
lea rdx, [rbp - 0x30]
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
lea rdx, [rbx + 0xc]
mov r8d, 4
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
add dword [rbp + 0x48], 0x18
inc esi
add rbx, 0x10
cmp esi, dword [rdi + 0x358]
jb 0x140028b80
cmp dword [rdi + 0x480], 0
je 0x140028cff
mov r8d, 4
lea rdx, [0x140150f5c]
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
mov eax, dword [rdi + 0x480]
add eax, 4
mov dword [rbp + 0x30], eax
mov r8d, 4
lea rdx, [rbp + 0x30]
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
add dword [rbp + 0x48], 8
mov r8d, 4
lea rdx, [0x140150f60]
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
add dword [rbp + 0x48], 4
lea rdx, [rdi + 0x378]
test rdx, rdx
je 0x140028d2c
mov r8d, dword [rdx + 0x108]
test r8d, r8d
je 0x140028d2c
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
mov eax, dword [rdi + 0x480]
add dword [rbp + 0x48], eax
test al, 1
je 0x140028cff
mov byte [rbp + 0x30], 0
mov r8d, 1
lea rdx, [rbp + 0x30]
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
inc dword [rbp + 0x48]
mov edx, 4
lea rcx, [rbp - 0x18]
call fcn.1400030a8
test al, al
je 0x140028d2c
mov r8d, 4
lea rdx, [rbp + 0x48]
lea rcx, [rbp - 0x18]
call fcn.140005b00
test al, al
je 0x140028d2c
mov bl, 1
jmp 0x140028d2e
xor bl, bl
lea rcx, [rbp - 0x18]
call fcn.1400028a6
movzx eax, bl
add rsp, 0x50
pop r14
pop rdi
pop rsi
pop rbx
pop rbp
ret
xor al, al
add rsp, 0x50
pop r14
pop rdi
pop rsi
pop rbx
pop rbp
ret