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

Disassembly:
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x220
test rdx, rdx
mov r9, rcx
mov rax, rdx
mov rsi, r8
jle 0x140006ef5
mov dl, byte [rcx]
lea ecx, [rdx - 0x2b]
and cl, 0xfd
jne 0x140006ef5
cmp dl, 0x2d
movsd xmm2, qword [0x140028b30]
mov r11b, 1
je 0x140006f04
movsd xmm2, qword [0x140028b28]
jmp 0x140006f04
movsd xmm2, qword [0x140028b28]
xor r11d, r11d
xor ebx, ebx
jmp 0x140006f09
mov ebx, 1
cmp rbx, 1
sbb rdx, rdx
add rdx, 3
cmp rdx, rax
jl 0x140006f2b
or r8, 0xffffffffffffffff
cmp rbx, rax
jge 0x14000703e
jmp 0x140007029
mov dl, byte [r9 + rbx]
mov rcx, rbx
mov r8d, edx
and r8d, 0xffffffdf
cmp r8b, 0x4e
je 0x140006f46
cmp dl, 0x49
jne 0x140006fbb
jmp 0x140006fc0
mov dl, byte [r9 + rbx + 1]
and edx, 0xffffffdf
cmp dl, 0x41
jne 0x14000738e
mov dl, byte [r9 + rbx + 2]
and edx, 0xffffffdf
cmp dl, 0x4e
jne 0x14000738e
add rbx, 3
cmp rbx, rax
jge 0x140006f9b
mov al, byte [r9 + rcx + 3]
mov edx, eax
and edx, 0xffffffdf
sub edx, 0x41
cmp dl, 0x19
jbe 0x14000738e
lea edx, [rax - 0x30]
cmp dl, 9
jbe 0x14000738e
cmp al, 0x5f
je 0x14000738e
movsd xmm0, qword [0x140028b38]
xorps xmm1, xmm1
mulsd xmm0, xmm0
cvtsd2ss xmm0, xmm0
mulss xmm0, xmm1
cvtss2sd xmm0, xmm0
jmp 0x140007205
cmp dl, 0x69
jne 0x140007029
mov dl, byte [r9 + rbx + 1]
and edx, 0xffffffdf
cmp dl, 0x4e
jne 0x14000738e
mov dl, byte [r9 + rbx + 2]
and edx, 0xffffffdf
cmp dl, 0x46
jne 0x14000738e
add rbx, 3
cmp rbx, rax
jge 0x140007015
mov al, byte [r9 + rcx + 3]
mov edx, eax
and edx, 0xffffffdf
sub edx, 0x41
cmp dl, 0x19
jbe 0x14000738e
lea edx, [rax - 0x30]
cmp dl, 9
jbe 0x14000738e
cmp al, 0x5f
je 0x14000738e
movsd xmm0, qword [0x140028b28]
xorps xmm1, xmm1
divsd xmm0, xmm1
jmp 0x14000720e
movsx rdx, byte [r9 + rbx]
or r8, 0xffffffffffffffff
lea ecx, [rdx - 0x30]
cmp cl, 9
ja 0x14000703e
lea r8, [rdx - 0x30]
xor edx, edx
xor edi, edi
cmp rbx, rax
jge 0x14000710d
movsx rcx, byte [r9 + rbx]
lea r10d, [rcx - 0x30]
cmp r10b, 9
ja 0x14000707b
imul rdx, rdx, 0xa
inc rdi
lea rdx, [rdx + rcx - 0x30]
inc rbx
cmp rbx, rax
jge 0x14000710d
cmp byte [r9 + rbx], 0x5f
je 0x140007066
jmp 0x140007042
cmp byte [r9 + rbx], 0x2e
jne 0x14000710d
inc rbx
xor r10d, r10d
test rdi, rdi
jne 0x1400070b5
cmp rbx, rax
jge 0x1400070b5
cmp byte [r9 + rbx], 0x30
jne 0x140007392
inc r10
inc rbx
cmp rbx, rax
jge 0x1400070b5
cmp byte [r9 + rbx], 0x5f
je 0x1400070a4
jmp 0x140007091
cmp r8, 0xffffffffffffffff
jne 0x1400070d6
cmp rbx, rax
jge 0x1400070d6
movsx rcx, byte [r9 + rbx]
or r8, 0xffffffffffffffff
lea ebp, [rcx - 0x30]
cmp bpl, 9
ja 0x1400070d6
lea r8, [rcx - 0x30]
xor ecx, ecx
lea r12, [r10 + rcx]
cmp rbx, rax
jge 0x140007112
movsx rbp, byte [r9 + rbx]
lea r13d, [rbp - 0x30]
cmp r13b, 9
ja 0x140007112
imul rdx, rdx, 0xa
inc rcx
lea rdx, [rdx + rbp - 0x30]
inc rbx
cmp rbx, rax
jge 0x1400070d8
cmp byte [r9 + rbx], 0x5f
je 0x1400070fc
jmp 0x1400070d8
xor r12d, r12d
xor ecx, ecx
mov rbp, rdi
add rbp, rcx
jne 0x140007132
test rbx, rbx
je 0x1400073a1
cmp rbx, 1
jne 0x140007132
test r11b, r11b
jne 0x14000738e
lea r10, [rbx + 1]
cmp r10, rax
jge 0x1400071ba
mov r11b, byte [r9 + rbx]
and r11d, 0xffffffdf
cmp r11b, 0x45
jne 0x1400071ba
mov r11b, byte [r9 + r10]
lea r13d, [r11 - 0x2b]
and r13b, 0xfd
jne 0x14000716e
cmp r11b, 0x2d
setne r11b
add rbx, 2
movzx r11d, r11b
lea r11, [r11 + r11 - 1]
jmp 0x140007177
mov rbx, r10
mov r11d, 1
mov r14b, byte [r9 + rbx]
lea r10d, [r14 - 0x30]
cmp r10b, 9
ja 0x14000738e
xor r10d, r10d
cmp rbx, rax
jge 0x1400071c3
movsx r13, byte [r9 + rbx]
lea r14d, [r13 - 0x30]
cmp r14b, 9
ja 0x1400071c3
imul r10, r10, 0xa
lea r10, [r10 + r13 - 0x30]
inc rbx
cmp rbx, rax
jge 0x1400071c3
cmp byte [r9 + rbx], 0x5f
je 0x1400071a9
jmp 0x14000718c
mov r11d, 1
xor r10d, r10d
imul r10, r11
sub r10, r12
mov r11, r10
neg r11
cmovs r11, r10
cmp r11, 0x3e7
jg 0x1400071e5
cmp rbp, 0xf
jg 0x140007214
jmp 0x140007228
test rdx, rdx
xorps xmm0, xmm0
je 0x140007205
test r10, r10
js 0x14000720e
movsd xmm1, qword [0x140028b28]
divsd xmm1, xmm0
mulsd xmm1, xmm2
movaps xmm0, xmm1
movsd qword [rsi], xmm0
jmp 0x1400073a1
mulsd xmm0, xmm2
jmp 0x140007205
cmp r8, 8
jg 0x1400072d4
cmp rbp, 0x10
jne 0x1400072d4
cmp r11, 0x16
jle 0x140007247
mov eax, 0xf
sub rax, rdi
sub rax, rcx
lea rcx, [rax + 0x16]
cmp rcx, r11
jge 0x14000728d
jmp 0x1400072d4
test rdx, rdx
js 0x140007253
cvtsi2sd xmm0, rdx
jmp 0x140007268
mov rax, rdx
and edx, 1
shr rax, 1
or rax, rdx
cvtsi2sd xmm0, rax
addsd xmm0, xmm0
lea rax, [0x140028700]
test r10, r10
mulsd xmm0, xmm2
movsd xmm1, qword [rax + r11*8]
js 0x140007284
mulsd xmm0, xmm1
jmp 0x140007205
divsd xmm0, xmm1
jmp 0x140007205
test r10, r10
js 0x1400072d4
test rdx, rdx
js 0x14000729e
cvtsi2sd xmm1, rdx
jmp 0x1400072b3
mov rcx, rdx
and edx, 1
shr rcx, 1
or rcx, rdx
cvtsi2sd xmm1, rcx
addsd xmm1, xmm1
mulsd xmm1, xmm2
sub r11, rax
lea rdx, [0x140028700]
movaps xmm0, xmm1
mulsd xmm0, qword [rdx + rax*8]
mulsd xmm0, qword [rdx + r11*8]
jmp 0x140007205
lea rdi, [rsp + 0x2c]
mov edx, 0x1f4
mov rcx, rdi
call fcn.140003638
xor edx, edx
test rbx, rbx
jle 0x1400072f6
xor edx, edx
cmp byte [r9], 0x2e
sete dl
mov ebp, 0x7fe5
xor ecx, ecx
shl rbp, 0x2b
lea r8, [rcx + 1]
cmp rbx, rdx
jle 0x140007318
mov al, byte [r9 + rdx]
cmp al, 0x39
ja 0x140007318
bt rbp, rax
jb 0x140007365
sar r10, 0x3f
mov rax, r11
mov byte [rsp + rcx + 0x2c], 0x45
and r10d, 2
cqo
add r10d, 0x2b
mov byte [rsp + r8 + 0x2c], r10b
mov r8d, 0xa
idiv r8
add edx, 0x30
mov byte [rsp + rcx + 0x30], dl
cqo
idiv r8
add edx, 0x30
add eax, 0x30
mov byte [rsp + rcx + 0x2f], dl
xor edx, edx
mov byte [rsp + rcx + 0x2e], al
mov rcx, rdi
call fcn.14001e710
jmp 0x140007205
cmp rcx, 0x1ed
jg 0x140007375
mov byte [rsp + rcx + 0x2c], al
mov rcx, r8
inc rdx
cmp rbx, rdx
jle 0x140007301
mov al, byte [r9 + rdx]
cmp al, 0x2e
je 0x140007375
cmp al, 0x5f
je 0x140007375
jmp 0x140007301
xor ebx, ebx
jmp 0x1400073a1
cmp r8, 0xffffffffffffffff
jne 0x1400070d6
jmp 0x1400070c0
mov rax, rbx
add rsp, 0x220
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
ret