Function at 0x14000636a
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
mov r9, rcx
mov rbx, r8
test rdx, rdx
jle 0x1400063a9
mov al, byte [rcx]
lea ecx, [rax - 0x2b]
and cl, 0xfd
jne 0x1400063a9
movsd xmm2, qword [0x1400449e0]
mov r8b, 1
cmp al, 0x2d
jne 0x1400063b9
movsd xmm2, qword [0x1400449e8]
jmp 0x1400063b9
movsd xmm2, qword [0x1400449e0]
xor r8d, r8d
xor r12d, r12d
jmp 0x1400063bf
mov r12d, 1
lea rax, [r12 + 2]
cmp rax, rdx
jge 0x140006458
mov al, byte [r9 + r12]
mov rcx, r12
and eax, 0xffffffdf
cmp al, 0x4e
je 0x1400063e5
cmp al, 0x49
jne 0x1400064bf
jmp 0x140006463
mov al, byte [r9 + r12 + 1]
and eax, 0xffffffdf
cmp al, 0x41
jne 0x14000682f
mov al, byte [r9 + r12 + 2]
and eax, 0xffffffdf
cmp al, 0x4e
jne 0x14000682f
add r12, 3
cmp r12, rdx
jge 0x140006438
mov al, byte [r9 + rcx + 3]
mov edx, eax
and edx, 0xffffffdf
sub edx, 0x41
cmp dl, 0x19
jbe 0x14000682f
lea edx, [rax - 0x30]
cmp dl, 9
jbe 0x14000682f
cmp al, 0x5f
je 0x14000682f
movsd xmm0, qword [0x1400449f0]
xorps xmm1, xmm1
mulsd xmm0, xmm0
cvtsd2ss xmm0, xmm0
mulss xmm0, xmm1
cvtss2sd xmm0, xmm0
jmp 0x1400067fa
or r11, 0xffffffffffffffff
cmp r12, rdx
jl 0x1400064bf
jmp 0x1400064d4
mov al, byte [r9 + r12 + 1]
and eax, 0xffffffdf
cmp al, 0x4e
jne 0x14000682f
mov al, byte [r9 + r12 + 2]
and eax, 0xffffffdf
cmp al, 0x46
jne 0x14000682f
add r12, 3
cmp r12, rdx
jge 0x140006694
mov al, byte [r9 + rcx + 3]
mov edx, eax
and edx, 0xffffffdf
sub edx, 0x41
cmp dl, 0x19
jbe 0x14000682f
lea edx, [rax - 0x30]
cmp dl, 9
jbe 0x14000682f
cmp al, 0x5f
je 0x14000682f
jmp 0x140006694
movzx eax, byte [r9 + r12]
or r11, 0xffffffffffffffff
lea ecx, [rax - 0x30]
cmp cl, 9
ja 0x1400064d4
lea r11, [rax - 0x30]
xor edi, edi
xor ecx, ecx
cmp r12, rdx
jge 0x1400065a5
movzx eax, byte [r9 + r12]
lea r10d, [rax - 0x30]
cmp r10b, 9
ja 0x14000650d
imul rcx, rcx, 0xa
inc rdi
lea rcx, [rcx + rax - 0x30]
inc r12
cmp r12, rdx
je 0x1400064d8
cmp byte [r9 + r12], 0x5f
je 0x1400064fc
jmp 0x1400064d8
cmp al, 0x2e
jne 0x1400065a5
inc r12
test rdi, rdi
jne 0x140006546
xor eax, eax
mov rbp, rax
cmp r12, rdx
jge 0x140006548
cmp byte [r9 + r12], 0x30
jne 0x140006834
inc rax
inc r12
cmp r12, rdx
je 0x14000651f
cmp byte [r9 + r12], 0x5f
je 0x140006535
jmp 0x14000651f
xor ebp, ebp
cmp r11, 0xffffffffffffffff
jne 0x14000656a
cmp r12, rdx
jge 0x14000656a
movzx eax, byte [r9 + r12]
or r11, 0xffffffffffffffff
lea r10d, [rax - 0x30]
cmp r10b, 9
ja 0x14000656a
lea r11, [rax - 0x30]
xor eax, eax
lea r13, [rbp + rax]
mov rsi, rax
cmp r12, rdx
jge 0x1400065aa
movzx r10d, byte [r9 + r12]
lea r14d, [r10 - 0x30]
cmp r14b, 9
ja 0x1400065aa
imul rcx, rcx, 0xa
inc rax
lea rcx, [rcx + r10 - 0x30]
inc r12
cmp r12, rdx
je 0x14000656c
cmp byte [r9 + r12], 0x5f
je 0x140006594
jmp 0x14000656c
xor r13d, r13d
xor esi, esi
mov rbp, rdi
add rbp, rsi
jne 0x1400065ca
test r12, r12
je 0x140006843
cmp r12, 1
jne 0x1400065ca
test r8b, r8b
jne 0x14000682f
lea rax, [r12 + 1]
cmp rax, rdx
jge 0x14000664b
mov r8b, byte [r9 + r12]
and r8d, 0xffffffdf
cmp r8b, 0x45
jne 0x14000664b
mov r8b, byte [r9 + rax]
cmp r8b, 0x2b
je 0x1400065f8
cmp r8b, 0x2d
jne 0x140006604
or r8, 0xffffffffffffffff
jmp 0x1400065fe
mov r8d, 1
add r12, 2
jmp 0x14000660d
mov r12, rax
mov r8d, 1
mov al, byte [r9 + r12]
sub eax, 0x30
cmp al, 9
ja 0x14000682f
xor r10d, r10d
cmp r12, rdx
jge 0x140006654
movzx r14d, byte [r9 + r12]
lea eax, [r14 - 0x30]
cmp al, 9
ja 0x140006654
imul rax, r10, 0xa
lea r10, [rax + r14 - 0x30]
inc r12
cmp r12, rdx
je 0x14000661f
cmp byte [r9 + r12], 0x5f
je 0x14000663a
jmp 0x14000661f
mov r8d, 1
xor r10d, r10d
imul r10, r8
sub r10, r13
mov rax, r10
sar rax, 0x3f
mov r8, rax
xor r8, r10
sub r8, rax
cmp r8, 0x3e7
jg 0x14000667c
cmp rbp, 0xf
jg 0x1400066b1
jmp 0x1400066c5
test rcx, rcx
je 0x140006688
test r10, r10
jns 0x140006694
jmp 0x1400066a5
mov qword [rbx], 0
jmp 0x140006843
movsd xmm1, qword [0x1400449e0]
xorps xmm0, xmm0
divsd xmm1, xmm0
jmp 0x1400066a8
xorps xmm1, xmm1
mulsd xmm1, xmm2
jmp 0x14000676c
cmp rbp, 0x10
jne 0x140006775
cmp r11, 9
je 0x140006775
cmp r8, 0x16
jle 0x1400066e4
mov edx, 0xf
sub rdx, rdi
sub rdx, rsi
lea rax, [rdx + 0x16]
cmp rax, r8
jge 0x14000672d
jmp 0x140006775
test rcx, rcx
js 0x1400066f0
cvtsi2sd xmm0, rcx
jmp 0x140006705
mov rax, rcx
and ecx, 1
shr rax, 1
or rax, rcx
cvtsi2sd xmm0, rax
addsd xmm0, xmm0
lea rax, [0x140044420]
mulsd xmm0, xmm2
movsd xmm1, qword [rax + r8*8]
test r10, r10
js 0x140006724
mulsd xmm0, xmm1
jmp 0x1400067fa
divsd xmm0, xmm1
jmp 0x1400067fa
test r10, r10
js 0x140006775
test rcx, rcx
js 0x14000673e
cvtsi2sd xmm1, rcx
jmp 0x140006753
mov rax, rcx
and ecx, 1
shr rax, 1
or rax, rcx
cvtsi2sd xmm1, rax
addsd xmm1, xmm1
lea rcx, [0x140044420]
mulsd xmm1, xmm2
sub r8, rdx
mulsd xmm1, qword [rcx + rdx*8]
mulsd xmm1, qword [rcx + r8*8]
movsd qword [rbx], xmm1
jmp 0x140006843
lea r11, [rsp + 0x2c]
mov edx, 0x1f4
mov rcx, r11
call fcn.1400026cc
xor ecx, ecx
test r12, r12
je 0x1400067b2
xor eax, eax
cmp byte [r9], 0x2e
sete al
cmp r12, rax
jle 0x1400067b2
mov dl, byte [r9 + rax]
lea esi, [rdx - 0x2b]
and sil, 0xfd
je 0x140006800
lea esi, [rdx - 0x30]
cmp sil, 9
jbe 0x140006800
mov rax, r8
mov r9d, 0xa
sar r10, 0x3f
mov byte [rsp + rcx + 0x2c], 0x45
cqo
and r10d, 2
idiv r9
add r10d, 0x2b
mov byte [rsp + rcx + 0x2d], r10b
add edx, 0x30
mov byte [rsp + rcx + 0x30], dl
cqo
idiv r9
add edx, 0x30
add eax, 0x30
mov byte [rsp + rcx + 0x2f], dl
xor edx, edx
mov byte [rsp + rcx + 0x2e], al
mov rcx, r11
call fcn.140039250
movsd qword [rbx], xmm0
jmp 0x140006843
cmp rcx, 0x1ed
jg 0x140006810
mov byte [rsp + rcx + 0x2c], dl
inc rcx
inc rax
cmp r12, rax
je 0x140006797
mov dl, byte [r9 + rax]
cmp dl, 0x2e
je 0x140006810
cmp dl, 0x5f
je 0x140006810
jmp 0x140006797
xor r12d, r12d
jmp 0x140006843
cmp r11, 0xffffffffffffffff
jne 0x14000656a
jmp 0x140006553
mov rax, r12
add rsp, 0x220
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
ret