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

Disassembly:
mov rax, rsp
mov qword [rax + 8], rbx
mov qword [rax + 0x18], rsi
mov qword [rax + 0x10], rdx
push rbp
push rdi
push r12
push r13
push r14
mov rbp, rsp
sub rsp, 0x60
movups xmm0, xmmword [rdx]
mov rbx, r8
mov rdi, rcx
movaps xmmword [rax - 0x38], xmm6
xorps xmm2, xmm2
movsd xmm6, qword [rdx + 0x10]
movq r9, xmm0
mov rax, r9
movsd qword [rbp - 0x28], xmm6
sub rax, qword [rbp - 0x28]
xorps xmm1, xmm1
movups xmmword [rbp - 0x38], xmm0
mov r13b, byte [r9]
mov r8d, 1
mov qword [rbp + 0x48], rax
cmp r13b, 0x2d
jne 0x180006d65
add r9, r8
mov qword [rbp - 0x38], r9
movsx ecx, byte [r9]
xor r10d, r10d
movsd xmm3, qword [0x1802d1b48]
xor r12b, r12b
xor edx, edx
lea r14d, [r10 + 0x30]
cmp cl, r14b
jne 0x180006d93
add r9, r8
xor esi, esi
mov qword [rbp - 0x38], r9
xor r11b, r11b
jmp 0x180006f29
lea eax, [rcx - 0x31]
cmp al, 8
ja 0x18000730f
add r9, r8
mov esi, ecx
sub esi, r14d
mov qword [rbp - 0x38], r9
mov al, byte [r9]
cmp r13b, 0x2d
jne 0x180006ded
cmp al, r14b
jl 0x180006e2d
mov r11d, 0xccccccc
cmp al, 0x39
ja 0x180006e2d
cmp esi, r11d
jb 0x180006dcd
jne 0x180006e27
cmp al, 0x38
ja 0x180006e27
add r9, r8
movzx eax, al
lea esi, [rsi + rsi*4]
mov qword [rbp - 0x38], r9
lea esi, [rsi - 0x18]
add edx, r8d
lea esi, [rax + rsi*2]
mov al, byte [r9]
cmp al, r14b
jge 0x180006dbe
jmp 0x180006e2d
cmp al, r14b
jl 0x180006e2d
mov r11d, 0x19999999
cmp al, 0x39
ja 0x180006e2d
cmp esi, r11d
jb 0x180006e07
jne 0x180006e27
cmp al, 0x35
ja 0x180006e27
add r9, r8
movzx eax, al
lea esi, [rsi + rsi*4]
mov qword [rbp - 0x38], r9
lea esi, [rsi - 0x18]
add edx, r8d
lea esi, [rax + rsi*2]
mov al, byte [r9]
cmp al, r14b
jge 0x180006df8
jmp 0x180006e2d
mov r12b, r8b
mov r10d, esi
xor r11b, r11b
test r12b, r12b
je 0x180006f29
mov al, byte [r9]
cmp r13b, 0x2d
jne 0x180006e9d
cmp al, r14b
jl 0x180006f29
movabs rcx, 0xccccccccccccccc
cmp al, 0x39
ja 0x180006f29
cmp r10, rcx
jb 0x180006e68
jne 0x180006e85
cmp al, 0x38
ja 0x180006e85
movzx ecx, al
add r9, r8
sub ecx, r14d
mov qword [rbp - 0x38], r9
lea rax, [r10 + r10*4]
add edx, r8d
lea r10, [rcx + rax*2]
mov al, byte [r9]
jmp 0x180006e42
mov rcx, r10
mov r11b, r8b
xorps xmm1, xmm1
test rcx, rcx
js 0x180006ee9
cvtsi2sd xmm1, rcx
jmp 0x180006f21
cmp al, r14b
jl 0x180006f29
movabs rcx, 0x1999999999999999
mov qword [rbp - 0x40], rcx
mov rcx, r10
cmp al, 0x39
ja 0x180006f29
cmp r10, qword [rbp - 0x40]
jb 0x180006ec7
jne 0x180006e88
cmp al, 0x35
ja 0x180006e88
movzx ecx, al
add r9, r8
sub ecx, r14d
mov qword [rbp - 0x38], r9
lea rax, [r10 + r10*4]
add edx, r8d
lea r10, [rcx + rax*2]
mov al, byte [r9]
cmp al, r14b
jge 0x180006eb4
jmp 0x180006f29
mov rax, rcx
and rcx, r8
shr rax, 1
or rax, rcx
cvtsi2sd xmm1, rax
addsd xmm1, xmm1
jmp 0x180006f21
cmp al, 0x39
ja 0x180006f29
add r9, r8
movzx eax, al
sub eax, r14d
mulsd xmm1, xmm3
mov qword [rbp - 0x38], r9
movd xmm0, eax
cvtdq2pd xmm0, xmm0
addsd xmm1, xmm0
mov al, byte [r9]
cmp al, r14b
jge 0x180006f00
xor r14d, r14d
cmp byte [r9], 0x2e
jne 0x180007009
inc r9
mov qword [rbp - 0x38], r9
mov al, byte [r9]
sub al, 0x30
cmp al, 9
ja 0x180007040
test r11b, r11b
jne 0x180007002
test r12b, r12b
jne 0x180006f91
mov r10d, esi
jmp 0x180006f91
movsx eax, byte [r9]
cmp al, 0x39
jg 0x180006f97
movabs rcx, 0x1fffffffffffff
cmp r10, rcx
ja 0x180006f97
lea ecx, [rax - 0x30]
add r9, r8
lea rax, [r10 + r10*4]
mov qword [rbp - 0x38], r9
lea r10, [rcx + rax*2]
sub r14d, r8d
test r10, r10
je 0x180006f91
add edx, r8d
cmp byte [r9], 0x30
jge 0x180006f5d
xorps xmm1, xmm1
test r10, r10
js 0x180006fa6
cvtsi2sd xmm1, r10
jmp 0x180006fbe
mov rcx, r10
mov rax, r10
shr rcx, 1
and rax, r8
or rcx, rax
cvtsi2sd xmm1, rcx
addsd xmm1, xmm1
mov r11b, r8b
jmp 0x180007002
cmp al, 0x39
ja 0x180007009
cmp edx, 0x11
jge 0x180006ffb
movsx eax, byte [r9]
sub r14d, r8d
sub eax, 0x30
mulsd xmm1, xmm3
add r9, r8
mov qword [rbp - 0x38], r9
movd xmm0, eax
cvtdq2pd xmm0, xmm0
addsd xmm0, xmm1
comisd xmm0, xmm2
movaps xmm1, xmm0
jbe 0x180007002
add edx, r8d
jmp 0x180007002
add r9, r8
mov qword [rbp - 0x38], r9
mov al, byte [r9]
cmp al, 0x30
jge 0x180006fc3
xor r8d, r8d
cmp byte [r9], 0x65
je 0x18000701c
cmp byte [r9], 0x45
jne 0x180007108
inc r9
mov qword [rbp - 0x38], r9
test r11b, r11b
jne 0x180007064
test r12b, r12b
mov ecx, esi
xorps xmm1, xmm1
cmovne rcx, r10
test rcx, rcx
js 0x18000704c
cvtsi2sd xmm1, rcx
jmp 0x180007061
mov dword [rdi + 0x30], 0xe
jmp 0x180007316
mov rax, rcx
and ecx, 1
shr rax, 1
or rax, rcx
cvtsi2sd xmm1, rax
addsd xmm1, xmm1
mov r11b, 1
mov al, byte [r9]
xor cl, cl
cmp al, 0x2b
je 0x180007073
cmp al, 0x2d
jne 0x18000707d
mov cl, 1
inc r9
mov qword [rbp - 0x38], r9
mov al, byte [r9]
cmp al, 0x30
jl 0x1800071c4
movsx eax, byte [r9]
cmp al, 0x39
jg 0x1800071c4
inc r9
lea r8d, [rax - 0x30]
mov qword [rbp - 0x38], r9
test cl, cl
je 0x180007177
lea ecx, [r14 + 0x7ffffff7]
mov eax, 0x66666667
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
cmp byte [r9], 0x30
jl 0x180007105
mov al, byte [r9]
cmp al, 0x39
ja 0x180007105
movsx eax, byte [r9]
lea r8d, [r8 + r8*4]
inc r9
lea r8d, [r8 - 0x18]
mov qword [rbp - 0x38], r9
lea r8d, [rax + r8*2]
cmp r8d, edx
jle 0x1800070fe
mov al, byte [r9]
cmp al, 0x30
jl 0x180007105
cmp al, 0x39
ja 0x1800070fa
inc r9
mov al, byte [r9]
cmp al, 0x30
jge 0x1800070ec
mov qword [rbp - 0x38], r9
mov al, byte [r9]
cmp al, 0x30
jge 0x1800070c5
neg r8d
test r11b, r11b
je 0x1800071f3
lea ecx, [r8 + r14]
mov edx, 0xfffffecc
cmp ecx, edx
jge 0x1800071d0
mulsd xmm1, qword [0x1802d19a8]
lea eax, [rcx + 0x134]
cmp eax, edx
jl 0x180007150
movsxd rax, ecx
lea rax, [rax*8 + 0x9a0]
lea rcx, [0x180102250]
movaps xmm2, xmm1
sub rcx, rax
divsd xmm2, qword [rcx]
comisd xmm2, xmmword [0x1802d1d28]
ja 0x1800071b0
cmp r13b, 0x2d
jne 0x180007167
xorps xmm2, xmmword [0x1802d2250]
movaps xmm1, xmm2
mov rcx, rbx
call fcn.180007718
jmp 0x1800072ff
mov edx, 0x134
sub edx, r14d
jmp 0x1800071a5
movsx eax, byte [r9]
cmp al, 0x39
jg 0x180007108
lea r8d, [r8 + r8*4]
inc r9
lea r8d, [r8 - 0x18]
mov qword [rbp - 0x38], r9
lea r8d, [rax + r8*2]
cmp r8d, edx
jg 0x1800071b0
cmp byte [r9], 0x30
jge 0x180007181
jmp 0x180007108
mov dword [rdi + 0x30], 0xd
mov rax, qword [rbp + 0x48]
mov qword [rdi + 0x38], rax
jmp 0x18000731e
mov dword [rdi + 0x30], 0xf
jmp 0x180007316
movsxd rax, ecx
shl rax, 3
test ecx, ecx
js 0x18000713f
lea rcx, [0x180102250]
movaps xmm2, xmm1
mulsd xmm2, qword [rax + rcx]
jmp 0x180007150
test r12b, r12b
je 0x18000721e
mov rcx, rbx
cmp r13b, 0x2d
jne 0x180007211
neg r10
mov rdx, r10
call fcn.180007918
jmp 0x1800072ff
mov rdx, r10
call fcn.180007800
jmp 0x1800072ff
cmp r13b, 0x2d
jne 0x1800072f5
mov rdx, qword [rbx + 0x40]
neg esi
mov rcx, qword [rbx + 0x38]
mov rax, rdx
sub rax, rcx
cmp rax, 0x10
jge 0x1800072cb
mov r8, qword [rbx + 0x30]
test r8, r8
jne 0x180007283
cmp qword [rbx + 0x20], r8
jne 0x18000727d
mov ecx, 0x810
call fcn.180078328
lea rcx, [rax + 0x10]
mov qword [rax], rcx
add rcx, 0x800
mov qword [rax + 8], rcx
mov rcx, qword [rbx + 0x38]
mov r8, qword [rbx + 0x30]
mov qword [rbx + 0x20], rax
mov qword [rbx + 0x28], rax
mov rdx, qword [rbx + 0x48]
jmp 0x180007290
sub rdx, r8
lea rax, [rdx + 1]
shr rax, 1
add rdx, rax
mov r9, qword [rbx + 0x20]
sub rcx, r8
lea r8, [rcx + 0x10]
cmp rdx, r8
cmovae r8, rdx
test r8, r8
je 0x1800072ba
mov rdx, qword [r9]
lea rax, [rdx + r8]
mov qword [r9], rax
cmp rax, qword [r9 + 8]
jbe 0x1800072bc
mov qword [r9], rdx
xor edx, edx
lea rax, [rdx + r8]
mov qword [rbx + 0x30], rdx
mov qword [rbx + 0x40], rax
add rcx, rdx
lea rax, [rcx + 0x10]
xorps xmm0, xmm0
mov qword [rbx + 0x38], rax
test esi, esi
movsxd rax, esi
mov edx, 0x1f6
movups xmmword [rcx], xmm0
mov qword [rcx], rax
mov eax, 0xb6
cmovns ax, dx
mov word [rcx + 0xe], ax
jmp 0x18000731e
mov edx, esi
mov rcx, rbx
call fcn.180007a40
test al, al
jne 0x18000731e
mov dword [rdi + 0x30], 0x10
jmp 0x1800071b7
mov dword [rdi + 0x30], 3
sub r9, qword [rbp - 0x28]
mov qword [rdi + 0x38], r9
mov rax, qword [rbp + 0x38]
lea r11, [rsp + 0x60]
movups xmm0, xmmword [rbp - 0x38]
mov rbx, qword [r11 + 0x30]
mov rsi, qword [r11 + 0x40]
movups xmmword [rax], xmm0
movsd qword [rax + 0x10], xmm6
movaps xmm6, xmmword [rsp + 0x50]
mov rsp, r11
pop r14
pop r13
pop r12
pop rdi
pop rbp
ret