Function at 0x140008da3
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 0x140008de6
mov dl, byte [rcx]
lea ecx, [rdx - 0x2b]
and cl, 0xfd
jne 0x140008de6
cmp dl, 0x2d
movsd xmm2, qword [0x14003ea88]
mov r11b, 1
je 0x140008df5
movsd xmm2, qword [0x14003ea80]
jmp 0x140008df5
movsd xmm2, qword [0x14003ea80]
xor r11d, r11d
xor ebx, ebx
jmp 0x140008dfa
mov ebx, 1
cmp rbx, 1
sbb rdx, rdx
add rdx, 3
cmp rdx, rax
jl 0x140008e1c
or r8, 0xffffffffffffffff
cmp rbx, rax
jge 0x140008f35
jmp 0x140008f20
mov dl, byte [r9 + rbx]
mov rcx, rbx
mov r8d, edx
and r8d, 0xffffffdf
cmp r8b, 0x4e
je 0x140008e37
cmp dl, 0x49
jne 0x140008eaf
jmp 0x140008eb4
mov dl, byte [r9 + rbx + 1]
and edx, 0xffffffdf
cmp dl, 0x41
jne 0x140009285
mov dl, byte [r9 + rbx + 2]
and edx, 0xffffffdf
cmp dl, 0x4e
jne 0x140009285
add rbx, 3
cmp rbx, rax
jge 0x140008e8f
mov al, byte [r9 + rcx + 3]
cmp al, 0x39
ja 0x140008e74
cmp al, 0x2f
jbe 0x140008e8f
jmp 0x140009285
sub eax, 0x41
cmp al, 0x39
ja 0x140008e8f
movabs rdx, 0x3ffffff43ffffff
bt rdx, rax
jb 0x140009285
movsd xmm0, qword [0x14003ea90]
xorps xmm1, xmm1
mulsd xmm0, xmm0
cvtsd2ss xmm0, xmm0
mulss xmm0, xmm1
cvtss2sd xmm0, xmm0
jmp 0x1400090fc
cmp dl, 0x69
jne 0x140008f20
mov dl, byte [r9 + rbx + 1]
and edx, 0xffffffdf
cmp dl, 0x4e
jne 0x140009285
mov dl, byte [r9 + rbx + 2]
and edx, 0xffffffdf
cmp dl, 0x46
jne 0x140009285
add rbx, 3
cmp rbx, rax
jge 0x140008f0c
mov al, byte [r9 + rcx + 3]
cmp al, 0x39
ja 0x140008ef1
cmp al, 0x2f
jbe 0x140008f0c
jmp 0x140009285
sub eax, 0x41
cmp al, 0x39
ja 0x140008f0c
movabs rdx, 0x3ffffff43ffffff
bt rdx, rax
jb 0x140009285
movsd xmm0, qword [0x14003ea80]
xorps xmm1, xmm1
divsd xmm0, xmm1
jmp 0x140009105
movzx edx, byte [r9 + rbx]
or r8, 0xffffffffffffffff
lea ecx, [rdx - 0x30]
cmp cl, 9
ja 0x140008f35
lea r8, [rdx - 0x30]
xor edx, edx
xor edi, edi
cmp rbx, rax
jge 0x140009004
movzx ecx, byte [r9 + rbx]
lea r10d, [rcx - 0x30]
cmp r10b, 9
ja 0x140008f72
imul rdx, rdx, 0xa
inc rdi
lea rdx, [rdx + rcx - 0x30]
inc rbx
cmp rbx, rax
jge 0x140009004
cmp byte [r9 + rbx], 0x5f
je 0x140008f5d
jmp 0x140008f39
cmp byte [r9 + rbx], 0x2e
jne 0x140009004
inc rbx
xor r10d, r10d
test rdi, rdi
jne 0x140008fac
cmp rbx, rax
jge 0x140008fac
cmp byte [r9 + rbx], 0x30
jne 0x140009289
inc r10
inc rbx
cmp rbx, rax
jge 0x140008fac
cmp byte [r9 + rbx], 0x5f
je 0x140008f9b
jmp 0x140008f88
cmp r8, 0xffffffffffffffff
jne 0x140008fcd
cmp rbx, rax
jge 0x140008fcd
movzx ecx, byte [r9 + rbx]
or r8, 0xffffffffffffffff
lea ebp, [rcx - 0x30]
cmp bpl, 9
ja 0x140008fcd
lea r8, [rcx - 0x30]
xor ecx, ecx
lea r12, [rcx + r10]
cmp rbx, rax
jge 0x140009009
movzx ebp, byte [r9 + rbx]
lea r13d, [rbp - 0x30]
cmp r13b, 9
ja 0x140009009
imul rdx, rdx, 0xa
inc rcx
lea rdx, [rdx + rbp - 0x30]
inc rbx
cmp rbx, rax
jge 0x140008fcf
cmp byte [r9 + rbx], 0x5f
je 0x140008ff3
jmp 0x140008fcf
xor r12d, r12d
xor ecx, ecx
mov rbp, rdi
add rbp, rcx
jne 0x140009029
test rbx, rbx
je 0x140009298
cmp rbx, 1
jne 0x140009029
test r11b, r11b
jne 0x140009285
lea r10, [rbx + 1]
cmp r10, rax
jge 0x1400090b1
mov r11b, byte [r9 + rbx]
and r11d, 0xffffffdf
cmp r11b, 0x45
jne 0x1400090b1
mov r11b, byte [r9 + r10]
lea r13d, [r11 - 0x2b]
and r13b, 0xfd
jne 0x140009065
cmp r11b, 0x2d
setne r11b
add rbx, 2
movzx r11d, r11b
lea r11, [r11 + r11 - 1]
jmp 0x14000906e
mov rbx, r10
mov r11d, 1
mov r14b, byte [r9 + rbx]
lea r10d, [r14 - 0x30]
cmp r10b, 9
ja 0x140009285
xor r10d, r10d
cmp rbx, rax
jge 0x1400090ba
movzx r13d, byte [r9 + rbx]
lea r14d, [r13 - 0x30]
cmp r14b, 9
ja 0x1400090ba
imul r10, r10, 0xa
lea r10, [r10 + r13 - 0x30]
inc rbx
cmp rbx, rax
jge 0x1400090ba
cmp byte [r9 + rbx], 0x5f
je 0x1400090a0
jmp 0x140009083
mov r11d, 1
xor r10d, r10d
imul r10, r11
sub r10, r12
mov r11, r10
neg r11
cmovs r11, r10
cmp r11, 0x3e7
jg 0x1400090dc
cmp rbp, 0xf
jg 0x14000910b
jmp 0x14000911f
test rdx, rdx
xorps xmm0, xmm0
je 0x1400090fc
test r10, r10
js 0x140009105
movsd xmm1, qword [0x14003ea80]
divsd xmm1, xmm0
mulsd xmm1, xmm2
movaps xmm0, xmm1
movsd qword [rsi], xmm0
jmp 0x140009298
mulsd xmm0, xmm2
jmp 0x1400090fc
cmp r8, 8
jg 0x1400091cb
cmp rbp, 0x10
jne 0x1400091cb
cmp r11, 0x16
jle 0x14000913e
mov eax, 0xf
sub rax, rdi
sub rax, rcx
lea rcx, [rax + 0x16]
cmp rcx, r11
jge 0x140009184
jmp 0x1400091cb
test rdx, rdx
js 0x14000914a
cvtsi2sd xmm0, rdx
jmp 0x14000915f
mov rax, rdx
and edx, 1
shr rax, 1
or rax, rdx
cvtsi2sd xmm0, rax
addsd xmm0, xmm0
lea rax, [0x14003d3a0]
test r10, r10
mulsd xmm0, xmm2
movsd xmm1, qword [rax + r11*8]
js 0x14000917b
mulsd xmm0, xmm1
jmp 0x1400090fc
divsd xmm0, xmm1
jmp 0x1400090fc
test r10, r10
js 0x1400091cb
test rdx, rdx
js 0x140009195
cvtsi2sd xmm1, rdx
jmp 0x1400091aa
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, [0x14003d3a0]
movaps xmm0, xmm1
mulsd xmm0, qword [rdx + rax*8]
mulsd xmm0, qword [rdx + r11*8]
jmp 0x1400090fc
lea rdi, [rsp + 0x2c]
mov edx, 0x1f4
mov rcx, rdi
call fcn.1400044bd
xor edx, edx
test rbx, rbx
jle 0x1400091ed
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 0x14000920f
mov al, byte [r9 + rdx]
cmp al, 0x39
ja 0x14000920f
bt rbp, rax
jb 0x14000925c
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.140033b20
jmp 0x1400090fc
cmp rcx, 0x1ed
jg 0x14000926c
mov byte [rsp + rcx + 0x2c], al
mov rcx, r8
inc rdx
cmp rbx, rdx
je 0x1400091f8
mov al, byte [r9 + rdx]
cmp al, 0x5f
je 0x14000926c
cmp al, 0x2e
je 0x14000926c
jmp 0x1400091f8
xor ebx, ebx
jmp 0x140009298
cmp r8, 0xffffffffffffffff
jne 0x140008fcd
jmp 0x140008fb7
mov rax, rbx
add rsp, 0x220
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
ret