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

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x228
mov rax, qword [rcx]
mov rsi, qword [rcx + 8]
cmp rax, r8
mov rbp, rdx
jle 0x70605fdb
mov dl, byte [r8 + rsi + 8]
lea ecx, [rdx - 0x2b]
and cl, 0xfd
jne 0x70605fdb
cmp dl, 0x2d
movsd xmm1, qword [0x7064a3e8]
je 0x70605fd2
movsd xmm1, qword [0x7064a3d0]
lea rbx, [r8 + 1]
mov dil, 1
jmp 0x70605fe8
movsd xmm1, qword [0x7064a3d0]
mov rbx, r8
xor edi, edi
lea rcx, [rbx + 2]
cmp rcx, rax
jge 0x7060607d
mov dl, byte [rbx + rsi + 8]
and edx, 0xffffffdf
cmp dl, 0x4e
je 0x7060600b
cmp dl, 0x49
jne 0x7060607d
jmp 0x7060608b
mov dl, byte [rbx + rsi + 9]
xor r12d, r12d
and edx, 0xffffffdf
cmp dl, 0x41
jne 0x706064ac
mov dl, byte [rcx + rsi + 8]
and edx, 0xffffffdf
cmp dl, 0x4e
jne 0x706064ac
add rbx, 3
cmp rbx, rax
jge 0x70606060
mov al, byte [rbx + rsi + 8]
mov edx, eax
and edx, 0xffffffdf
sub edx, 0x41
cmp dl, 0x19
jbe 0x706064ac
lea edx, [rax - 0x30]
cmp dl, 9
jbe 0x70606498
cmp al, 0x5f
je 0x70606498
movsd xmm0, qword [0x7064a3f0]
xorps xmm1, xmm1
mulsd xmm0, xmm0
cvtsd2ss xmm0, xmm0
mulss xmm0, xmm1
cvtss2sd xmm0, xmm0
jmp 0x706060f3
or r11, 0xffffffffffffffff
cmp rax, rbx
jg 0x70606103
jmp 0x70606117
mov dl, byte [rbx + rsi + 9]
xor r12d, r12d
and edx, 0xffffffdf
cmp dl, 0x4e
jne 0x706064ac
mov dl, byte [rcx + rsi + 8]
and edx, 0xffffffdf
cmp dl, 0x46
jne 0x706064ac
add rbx, 3
cmp rbx, rax
jge 0x706060e0
mov al, byte [rbx + rsi + 8]
mov edx, eax
and edx, 0xffffffdf
sub edx, 0x41
cmp dl, 0x19
jbe 0x706064ac
lea edx, [rax - 0x30]
cmp dl, 9
jbe 0x70606498
cmp al, 0x5f
je 0x70606498
movsd xmm0, qword [0x7064a3d0]
xorps xmm2, xmm2
divsd xmm0, xmm2
mulsd xmm0, xmm1
sub rbx, r8
movsd qword [rbp], xmm0
mov r12, rbx
jmp 0x706064ac
mov dl, byte [rbx + rsi + 8]
lea ecx, [rdx - 0x30]
cmp cl, 9
ja 0x70606117
movzx r11d, dl
sub r11, 0x30
xor r10d, r10d
xor r9d, r9d
cmp rax, rbx
jle 0x706061fc
movzx edx, byte [rsi + rbx + 8]
lea ecx, [rdx - 0x30]
cmp cl, 9
ja 0x70606155
imul r9, r9, 0xa
inc r10
lea r9, [r9 + rdx - 0x30]
inc rbx
cmp rax, rbx
jne 0x7060614c
mov rbx, rax
jmp 0x7060611d
cmp byte [rsi + rbx + 8], 0x5f
je 0x7060613f
jmp 0x7060611d
cmp dl, 0x2e
jne 0x706061fc
inc rbx
xor r13d, r13d
xor edx, edx
test r10, r10
jne 0x70606197
cmp rax, rbx
mov r13, rdx
jle 0x70606197
cmp byte [rsi + rbx + 8], 0x30
jne 0x7060649d
inc rdx
inc rbx
cmp rax, rbx
jne 0x7060618e
mov rbx, rax
jmp 0x7060616b
cmp byte [rsi + rbx + 8], 0x5f
je 0x70606181
jmp 0x7060616b
cmp r11, 0xffffffffffffffff
jne 0x706061ba
cmp rax, rbx
jle 0x706061ba
mov dl, byte [rbx + rsi + 8]
or r11, 0xffffffffffffffff
lea ecx, [rdx - 0x30]
cmp cl, 9
ja 0x706061ba
movzx r11d, dl
sub r11, 0x30
xor edx, edx
lea r14, [r13 + rdx]
cmp rax, rbx
mov rcx, rdx
jle 0x70606201
movzx r12d, byte [rsi + rbx + 8]
lea r15d, [r12 - 0x30]
cmp r15b, 9
ja 0x70606201
imul r9, r9, 0xa
inc rdx
lea r9, [r9 + r12 - 0x30]
inc rbx
cmp rax, rbx
jne 0x706061f3
mov rbx, rax
jmp 0x706061bc
cmp byte [rsi + rbx + 8], 0x5f
je 0x706061e6
jmp 0x706061bc
xor r14d, r14d
xor ecx, ecx
mov r12, r10
add r12, rcx
jne 0x70606224
cmp rbx, r8
je 0x706064ac
lea rdx, [r8 + 1]
cmp rdx, rbx
jne 0x70606224
test dil, dil
jne 0x706064ac
lea rdx, [rbx + 1]
cmp rdx, rax
jge 0x706062b1
mov dil, byte [rbx + rsi + 8]
and edi, 0xffffffdf
cmp dil, 0x45
jne 0x706062b1
mov dil, byte [rdx + rsi + 8]
cmp dil, 0x2b
je 0x70606256
or r13, 0xffffffffffffffff
cmp dil, 0x2d
je 0x7060625c
jmp 0x70606262
mov r13d, 1
add rbx, 2
jmp 0x7060626b
mov rbx, rdx
mov r13d, 1
mov dil, byte [rbx + rsi + 8]
lea edx, [rdi - 0x30]
cmp dl, 9
ja 0x70606498
xor edi, edi
cmp rax, rbx
jle 0x706062b9
movzx r15d, byte [rsi + rbx + 8]
lea edx, [r15 - 0x30]
cmp dl, 9
ja 0x706062b9
imul rdx, rdi, 0xa
lea rdi, [rdx + r15 - 0x30]
inc rbx
cmp rax, rbx
jne 0x706062a8
mov rbx, rax
jmp 0x7060627e
cmp byte [rsi + rbx + 8], 0x5f
je 0x7060629b
jmp 0x7060627e
mov r13d, 1
xor edi, edi
imul rdi, r13
sub rdi, r14
mov rax, rdi
sar rax, 0x3f
mov r13, rax
xor r13, rdi
sub r13, rax
cmp r13, 0x3e7
jg 0x706062e1
cmp r12, 0xf
jg 0x706062f2
jmp 0x70606306
test rdi, rdi
xorps xmm0, xmm0
jns 0x706060e0
jmp 0x706060ef
cmp r12, 0x10
jne 0x706063b5
cmp r11, 8
jg 0x706063b5
cmp r13, 0x16
jle 0x70606325
mov eax, 0xf
sub rax, r10
sub rax, rcx
lea rdx, [rax + 0x16]
cmp rdx, r13
jge 0x7060636a
jmp 0x706063b5
test r9, r9
js 0x70606331
cvtsi2sd xmm0, r9
jmp 0x70606347
mov rcx, r9
and r9d, 1
shr rcx, 1
or rcx, r9
cvtsi2sd xmm0, rcx
addsd xmm0, xmm0
lea rax, [0x70647540]
test rdi, rdi
mulsd xmm0, xmm1
movsd xmm1, qword [rax + r13*8]
jns 0x706060ef
divsd xmm0, xmm1
jmp 0x706060f3
test rdi, rdi
js 0x706063b5
sub rbx, r8
test r9, r9
mov r12, rbx
js 0x70606381
cvtsi2sd xmm0, r9
jmp 0x70606397
mov rcx, r9
and r9d, 1
shr rcx, 1
or rcx, r9
cvtsi2sd xmm0, rcx
addsd xmm0, xmm0
lea rcx, [0x70647540]
sub r13, rax
mulsd xmm0, xmm1
mulsd xmm0, qword [rcx + rax*8]
mulsd xmm0, qword [rcx + r13*8]
jmp 0x7060645f
lea r14, [rsp + 0x2c]
mov edx, 0x1f4
mov qword [rsp + 0x280], r8
mov r12, rbx
mov rcx, r14
call fcn.706367a4
mov r8, qword [rsp + 0x280]
xor ecx, ecx
sub r12, r8
cmp rbx, r8
jle 0x7060640b
cmp byte [r8 + rsi + 8], 0x2e
jne 0x706063ef
inc r8
xor ecx, ecx
cmp rbx, r8
jle 0x7060640b
mov al, byte [rsi + r8 + 8]
lea edx, [rax - 0x2b]
and dl, 0xfd
je 0x70606466
lea edx, [rax - 0x30]
cmp dl, 9
jbe 0x70606466
mov rax, r13
mov r8d, 0xa
sar rdi, 0x3f
mov byte [rsp + rcx + 0x2c], 0x45
cqo
and edi, 2
idiv r8
add edx, 0x30
add edi, 0x2b
mov byte [rsp + rcx + 0x30], dl
cqo
idiv r8
mov rax, r13
add edx, 0x30
mov r8d, 0x64
mov byte [rsp + rcx + 0x2f], dl
cqo
idiv r8
add eax, 0x30
mov byte [rsp + rcx + 0x2d], dil
xor edx, edx
mov byte [rsp + rcx + 0x2e], al
mov rcx, r14
call fcn.7063f9a0
movsd qword [rbp], xmm0
jmp 0x706064ac
cmp rcx, 0x1ed
jg 0x70606476
mov byte [rsp + rcx + 0x2c], al
inc rcx
inc r8
cmp rbx, r8
jne 0x70606486
mov r8, rbx
jmp 0x706063f1
mov al, byte [rsi + r8 + 8]
cmp al, 0x2e
je 0x70606476
cmp al, 0x5f
je 0x70606476
jmp 0x706063f1
xor r12d, r12d
jmp 0x706064ac
cmp r11, 0xffffffffffffffff
jne 0x706061ba
jmp 0x706061a2
mov rax, r12
add rsp, 0x228
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret