// File: jkingan[P]ladyheather/heather.cpp
// Function: add_stat_point(PLOT_Q*)
void add_stat_point(struct PLOT_Q *q)
{
int k;
DATA_SIZE val;
DATA_SIZE x;

   // calculate statistics of the points in the plot window
   if(queue_interval <= 0) return;

   x = (stat_count * view_interval * queue_interval);
   for(k=0; k<NUM_PLOTS+DERIVED_PLOTS; k++) {
      if(k >= NUM_PLOTS) {   // derived data DERIVED_PLOTS !!!!
         if(luxor && (k == BATTW)) {        // battery watts
            val = q->data[BATTI]*q->data[BATTV] / (DATA_SIZE) queue_interval;
         }
         else if(luxor && (k == LEDW)) {   // LED watts
            val = q->data[LEDI]*q->data[LEDV] / (DATA_SIZE) queue_interval;
         }
         else if(luxor && (k == EFF)) { // driver efficency
            val = q->data[BATTI]*q->data[BATTV];
            if(val) val = q->data[LEDI]*q->data[LEDV] / val;
            val *= (DATA_SIZE) 100.0;
         }
         else if(luxor && (k == CCT)) { // color temo  // !!!!!!! wrong! need raw data here
            val = (DATA_SIZE) calc_cct(cct_type, 1, (double)q->data[REDHZ]/(double)queue_interval, (double)q->data[GREENHZ]/(double)queue_interval, (double)q->data[BLUEHZ]/(double)queue_interval);
         }
         else {
//          val = (DATA_SIZE) 0.0;
            val = q->data[k] / queue_interval;
            plot[k].sum_change += (val - (last_q.data[k]/queue_interval));
         }
         // !!!!! sum_change
      }
      else {
         val = q->data[k] / queue_interval;
         plot[k].sum_change += (val - (last_q.data[k]/queue_interval));
      }

      plot[k].sum_y  += val;
      plot[k].sum_yy += (val * val);
      plot[k].sum_xy += (x * val);
      plot[k].sum_xx += (x * x);
      plot[k].sum_x  += x;
      plot[k].stat_count += 1.0F;
   }

   ++stat_count;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
cmpq $0x0, 0x256aa4(%rip)    # 0x27a578
jg 0x23adb
jmp 0x23e75
movsd 0x34868d(%rip), %xmm0   # 0x36c170
cvtsi2sdq 0x256a94(%rip), %xmm1 # 0x27a580
mulsd %xmm1, %xmm0
cvtsi2sdq 0x256a7f(%rip), %xmm1 # 0x27a578
mulsd %xmm1, %xmm0
movsd %xmm0, -0x20(%rbp)
movl $0x0, -0xc(%rbp)
cmpl $0x14, -0xc(%rbp)
jge 0x23e5d
cmpl $0x10, -0xc(%rbp)
jl 0x23cd5
cmpb $0x0, 0x27a5fa(%rip)    # 0x29e11e
je 0x23b55
cmpl $0xf, -0xc(%rbp)
jne 0x23b55
movq -0x8(%rbp), %rax
movsd 0x18(%rax), %xmm0
movq -0x8(%rbp), %rax
mulsd 0x20(%rax), %xmm0
cvtsi2sdq 0x256a31(%rip), %xmm1 # 0x27a578
divsd %xmm1, %xmm0
movsd %xmm0, -0x18(%rbp)
jmp 0x23cd3
cmpb $0x0, 0x27a5c2(%rip)    # 0x29e11e
je 0x23b8d
cmpl $0x10, -0xc(%rbp)
jne 0x23b8d
movq -0x8(%rbp), %rax
movsd 0x40(%rax), %xmm0
movq -0x8(%rbp), %rax
mulsd 0x38(%rax), %xmm0
cvtsi2sdq 0x2569f9(%rip), %xmm1 # 0x27a578
divsd %xmm1, %xmm0
movsd %xmm0, -0x18(%rbp)
jmp 0x23cd1
cmpb $0x0, 0x27a58a(%rip)    # 0x29e11e
je 0x23bf8
cmpl $0x11, -0xc(%rbp)
jne 0x23bf8
movq -0x8(%rbp), %rax
movsd 0x18(%rax), %xmm0
movq -0x8(%rbp), %rax
mulsd 0x20(%rax), %xmm0
movsd %xmm0, -0x18(%rbp)
movsd -0x18(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x23bc5
jp 0x23bc5
jmp 0x23be1
movq -0x8(%rbp), %rax
movsd 0x40(%rax), %xmm0
movq -0x8(%rbp), %rax
mulsd 0x38(%rax), %xmm0
divsd -0x18(%rbp), %xmm0
movsd %xmm0, -0x18(%rbp)
movsd 0x14b467(%rip), %xmm0   # 0x16f050
mulsd -0x18(%rbp), %xmm0
movsd %xmm0, -0x18(%rbp)
jmp 0x23ccf
cmpb $0x0, 0x27a51f(%rip)    # 0x29e11e
je 0x23c61
cmpl $0x12, -0xc(%rbp)
jne 0x23c61
movzbl 0x34853a(%rip), %edi    # 0x36c148
movq -0x8(%rbp), %rax
movsd 0x68(%rax), %xmm0
cvtsi2sdq 0x256958(%rip), %xmm1 # 0x27a578
divsd %xmm1, %xmm0
movq -0x8(%rbp), %rax
movsd 0x60(%rax), %xmm1
cvtsi2sdq 0x256942(%rip), %xmm2 # 0x27a578
divsd %xmm2, %xmm1
movq -0x8(%rbp), %rax
movsd 0x58(%rax), %xmm2
cvtsi2sdq 0x25692c(%rip), %xmm3 # 0x27a578
divsd %xmm3, %xmm2
movl $0x1, %esi
callq 0xa8d40
movsd %xmm0, -0x18(%rbp)
jmp 0x23ccd
movq -0x8(%rbp), %rax
movslq -0xc(%rbp), %rcx
movsd 0x10(%rax,%rcx,8), %xmm0
cvtsi2sdq 0x256900(%rip), %xmm1 # 0x27a578
divsd %xmm1, %xmm0
movsd %xmm0, -0x18(%rbp)
movsd -0x18(%rbp), %xmm0
movslq -0xc(%rbp), %rcx
leaq 0x37bab7(%rip), %rax    # 0x39f748
movsd 0x10(%rax,%rcx,8), %xmm1
cvtsi2sdq 0x2568d8(%rip), %xmm2 # 0x27a578
divsd %xmm2, %xmm1
subsd %xmm1, %xmm0
movslq -0xc(%rbp), %rcx
leaq 0x19906d(%rip), %rax    # 0x1bcd20
imulq $0xe8, %rcx, %rcx
addq %rcx, %rax
addsd 0xa8(%rax), %xmm0
movsd %xmm0, 0xa8(%rax)
jmp 0x23ccf
jmp 0x23cd1
jmp 0x23cd3
jmp 0x23d41
movq -0x8(%rbp), %rax
movslq -0xc(%rbp), %rcx
movsd 0x10(%rax,%rcx,8), %xmm0
cvtsi2sdq 0x25688c(%rip), %xmm1 # 0x27a578
divsd %xmm1, %xmm0
movsd %xmm0, -0x18(%rbp)
movsd -0x18(%rbp), %xmm0
movslq -0xc(%rbp), %rcx
leaq 0x37ba43(%rip), %rax    # 0x39f748
movsd 0x10(%rax,%rcx,8), %xmm1
cvtsi2sdq 0x256864(%rip), %xmm2 # 0x27a578
divsd %xmm2, %xmm1
subsd %xmm1, %xmm0
movslq -0xc(%rbp), %rcx
leaq 0x198ff9(%rip), %rax    # 0x1bcd20
imulq $0xe8, %rcx, %rcx
addq %rcx, %rax
addsd 0xa8(%rax), %xmm0
movsd %xmm0, 0xa8(%rax)
movsd -0x18(%rbp), %xmm0
movslq -0xc(%rbp), %rcx
leaq 0x198fcf(%rip), %rax    # 0x1bcd20
imulq $0xe8, %rcx, %rcx
addq %rcx, %rax
addsd 0x68(%rax), %xmm0
movsd %xmm0, 0x68(%rax)
movsd -0x18(%rbp), %xmm0
movsd -0x18(%rbp), %xmm2
movslq -0xc(%rbp), %rcx
leaq 0x198fa6(%rip), %rax    # 0x1bcd20
imulq $0xe8, %rcx, %rcx
addq %rcx, %rax
movsd 0x78(%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x78(%rax)
movsd -0x20(%rbp), %xmm0
movsd -0x18(%rbp), %xmm2
movslq -0xc(%rbp), %rcx
leaq 0x198f75(%rip), %rax    # 0x1bcd20
imulq $0xe8, %rcx, %rcx
addq %rcx, %rax
movsd 0x80(%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x80(%rax)
movsd -0x20(%rbp), %xmm0
movsd -0x20(%rbp), %xmm2
movslq -0xc(%rbp), %rcx
leaq 0x198f3e(%rip), %rax    # 0x1bcd20
imulq $0xe8, %rcx, %rcx
addq %rcx, %rax
movsd 0x70(%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x70(%rax)
movsd -0x20(%rbp), %xmm0
movslq -0xc(%rbp), %rcx
leaq 0x198f12(%rip), %rax    # 0x1bcd20
imulq $0xe8, %rcx, %rcx
addq %rcx, %rax
addsd 0x60(%rax), %xmm0
movsd %xmm0, 0x60(%rax)
movslq -0xc(%rbp), %rcx
leaq 0x198ef3(%rip), %rax    # 0x1bcd20
imulq $0xe8, %rcx, %rcx
addq %rcx, %rax
movsd 0x14b229(%rip), %xmm0   # 0x16f068
addsd 0x88(%rax), %xmm0
movsd %xmm0, 0x88(%rax)
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x23b09
movsd 0x14b203(%rip), %xmm0   # 0x16f068
addsd 0x348303(%rip), %xmm0   # 0x36c170
movsd %xmm0, 0x3482fb(%rip)   # 0x36c170
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax,%rax)