// File: jkingan[P]ladyheather/heathgps.cpp
// Function: calc_cri(double)
DATA_SIZE calc_cri(DATA_SIZE cct)
{
double bb_r,bb_g,bb_b,d,sum;  // black body values
double R,G,B;                 // sensor values
double y;
double err;

   d = 0.0;

   R = red_uw;
   G = green_uw;
   B = blue_uw;
   sum = R + G + B;
   if(sum == 0.0) return 0.0;

   R /= sum;
   G /= sum;
   B /= sum;

   // calculate the black body energy emitted over the color sensor bands
   if(cri_flag) {
      bb_r = plank(cct, 621.0);  // 640
      bb_g = plank(cct, 500.0);  // 524
      bb_b = plank(cct, 490.0);  // 470
   }
   else if(1) {
      bb_b  = plank(cct, 420.0) * 0.30;
      bb_b += plank(cct, 430.0) * 0.40;
      bb_b += plank(cct, 440.0) * 0.42;
      bb_b += plank(cct, 450.0) * 0.45;
      bb_b += plank(cct, 460.0) * 0.48;
      bb_b += plank(cct, 470.0) * 0.46;
      bb_b += plank(cct, 480.0) * 0.44;
      bb_b += plank(cct, 490.0) * 0.40;
      bb_b += plank(cct, 500.0) * 0.35;
      bb_b += plank(cct, 510.0) * 0.30;
      bb_b += plank(cct, 520.0) * 0.25;
      bb_b += plank(cct, 530.0) * 0.15;
      bb_b += plank(cct, 540.0) * 0.14;
      bb_b += plank(cct, 550.0) * 0.13;
      bb_b += plank(cct, 560.0) * 0.08;
      bb_b /= 15.0;

      bb_g  = plank(cct, 420.0) * 0.05;
      bb_g += plank(cct, 420.0) * 0.06;
      bb_g += plank(cct, 440.0) * 0.07;
      bb_g += plank(cct, 450.0) * 0.08;
      bb_g += plank(cct, 460.0) * 0.10;
      bb_g += plank(cct, 470.0) * 0.18;
      bb_g += plank(cct, 480.0) * 0.20;
      bb_g += plank(cct, 490.0) * 0.23;
      bb_g += plank(cct, 500.0) * 0.28;
      bb_g += plank(cct, 510.0) * 0.32;
      bb_g += plank(cct, 520.0) * 0.38;
      bb_g += plank(cct, 530.0) * 0.50;
      bb_g += plank(cct, 540.0) * 0.55;
      bb_g += plank(cct, 550.0) * 0.54;
      bb_g += plank(cct, 560.0) * 0.50;
      bb_g += plank(cct, 570.0) * 0.40;
      bb_g += plank(cct, 580.0) * 0.39;
      bb_g += plank(cct, 590.0) * 0.20;
      bb_g += plank(cct, 600.0) * 0.15;
      bb_g += plank(cct, 610.0) * 0.06;
      bb_g /= 20.0;

      bb_r  = plank(cct, 510.0) * 0.03;
      bb_r += plank(cct, 520.0) * 0.05;
      bb_r += plank(cct, 530.0) * 0.08;
      bb_r += plank(cct, 540.0) * 0.10;
      bb_r += plank(cct, 550.0) * 0.17;
      bb_r += plank(cct, 560.0) * 0.17;
      bb_r += plank(cct, 570.0) * 0.20;
      bb_r += plank(cct, 580.0) * 0.40;
      bb_r += plank(cct, 590.0) * 0.50;
      bb_r += plank(cct, 600.0) * 0.60;
      bb_r += plank(cct, 610.0) * 0.65;
      bb_r += plank(cct, 620.0) * 0.70;
      bb_r += plank(cct, 630.0) * 0.73;
      bb_r += plank(cct, 640.0) * 0.80;
      bb_r += plank(cct, 650.0) * 0.82;
      bb_r += plank(cct, 660.0) * 0.85;
      bb_r += plank(cct, 670.0) * 0.85;
      bb_r += plank(cct, 680.0) * 0.90;
      bb_r += plank(cct, 690.0) * 0.93;
      bb_r += plank(cct, 700.0) * 0.95;
      bb_r /= 20.0;    
   }
   else {
      bb_r = bb_g = bb_b = 0.0;
      for(y=400.0; y<=520.0; y+=10.0) {
         bb_b += plank(cct, y);
         d += 1.0;
      }
      bb_b /= d;

      for(y=480.0; y<=600.0; y+=10.0) {
         bb_g += plank(cct, y);
         d += 1.0;
      }
      bb_g /= d;

      for(y=550.0; y<=770.0; y+=10.0) {
         bb_r += plank(cct, y);
         d += 1.0;
      }
      bb_r /= d;
   }
   sum = bb_r + bb_g + bb_b;  // normalize black body energy to 0 .. 1
   bb_r /= sum;
   bb_g /= sum;
   bb_b /= sum;


   err = sqrt((((R-bb_r)*(R-bb_r)) + ((G-bb_g)*(G-bb_g)) + ((B-bb_b)*(B-bb_b)))/3.0);
   err = (1.0-err) * (1.0-err);

   return (DATA_SIZE) (err*100.0);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movsd %xmm0, -0x10(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x30(%rbp)
leaq 0x2c2d14(%rip), %rax    # 0x36c110
movsd (%rax), %xmm0
movsd %xmm0, -0x40(%rbp)
leaq 0x2c2cfc(%rip), %rax    # 0x36c108
movsd (%rax), %xmm0
movsd %xmm0, -0x48(%rbp)
leaq 0x2c2ce4(%rip), %rax    # 0x36c100
movsd (%rax), %xmm0
movsd %xmm0, -0x50(%rbp)
movsd -0x40(%rbp), %xmm0
addsd -0x48(%rbp), %xmm0
addsd -0x50(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x38(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0xa9456
jp 0xa9456
xorps %xmm0, %xmm0
movsd %xmm0, -0x8(%rbp)
jmp 0xa9f68
movsd -0x38(%rbp), %xmm1
movsd -0x40(%rbp), %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, -0x40(%rbp)
movsd -0x38(%rbp), %xmm1
movsd -0x48(%rbp), %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, -0x48(%rbp)
movsd -0x38(%rbp), %xmm1
movsd -0x50(%rbp), %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, -0x50(%rbp)
leaq 0x2c2cb8(%rip), %rax    # 0x36c14e
cmpb $0x0, (%rax)
je 0xa94e5
movsd -0x10(%rbp), %xmm0
movsd 0xd9af8(%rip), %xmm1    # 0x182fa0
callq 0xa9330
movsd %xmm0, -0x18(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xc5d31(%rip), %xmm1    # 0x16f1f0
callq 0xa9330
movsd %xmm0, -0x20(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd9a2a(%rip), %xmm1    # 0x182f00
callq 0xa9330
movsd %xmm0, -0x28(%rbp)
jmp 0xa9e80
movsd -0x10(%rbp), %xmm0
movsd 0xd9a4e(%rip), %xmm1    # 0x182f40
callq 0xa9330
movsd 0xd9a61(%rip), %xmm1    # 0x182f60
mulsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd9a83(%rip), %xmm1    # 0x182f98
callq 0xa9330
movsd -0x28(%rbp), %xmm1
movsd 0xd9929(%rip), %xmm2    # 0x182e50
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd99f7(%rip), %xmm1    # 0x182f38
callq 0xa9330
movsd -0x28(%rbp), %xmm1
movsd 0xd9a3d(%rip), %xmm2    # 0x182f90
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd99bb(%rip), %xmm1    # 0x182f28
callq 0xa9330
movsd -0x28(%rbp), %xmm1
movsd 0xd9a09(%rip), %xmm2    # 0x182f88
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd9987(%rip), %xmm1    # 0x182f20
callq 0xa9330
movsd -0x28(%rbp), %xmm1
movsd 0xd99d5(%rip), %xmm2    # 0x182f80
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd9953(%rip), %xmm1    # 0x182f18
callq 0xa9330
movsd -0x28(%rbp), %xmm1
movsd 0xd99a1(%rip), %xmm2    # 0x182f78
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd9917(%rip), %xmm1    # 0x182f08
callq 0xa9330
movsd -0x28(%rbp), %xmm1
movsd 0xd996d(%rip), %xmm2    # 0x182f70
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd98e3(%rip), %xmm1    # 0x182f00
callq 0xa9330
movsd -0x28(%rbp), %xmm1
movsd 0xd9821(%rip), %xmm2    # 0x182e50
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xc5ba7(%rip), %xmm1    # 0x16f1f0
callq 0xa9330
movsd -0x28(%rbp), %xmm1
movsd 0xd990d(%rip), %xmm2    # 0x182f68
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd983b(%rip), %xmm1    # 0x182eb0
callq 0xa9330
movsd -0x28(%rbp), %xmm1
movsd 0xd98d9(%rip), %xmm2    # 0x182f60
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd97ff(%rip), %xmm1    # 0x182ea0
callq 0xa9330
movsd -0x28(%rbp), %xmm1
movsd 0xc8015(%rip), %xmm2    # 0x1716c8
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd97cb(%rip), %xmm1    # 0x182e98
callq 0xa9330
movsd -0x28(%rbp), %xmm1
movsd 0xd97e1(%rip), %xmm2    # 0x182ec0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd978f(%rip), %xmm1    # 0x182e88
callq 0xa9330
movsd -0x28(%rbp), %xmm1
movsd 0xd984d(%rip), %xmm2    # 0x182f58
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd975b(%rip), %xmm1    # 0x182e80
callq 0xa9330
movsd -0x28(%rbp), %xmm1
movsd 0xd9819(%rip), %xmm2    # 0x182f50
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd9727(%rip), %xmm1    # 0x182e78
callq 0xa9330
movsd -0x28(%rbp), %xmm1
movsd 0xd972d(%rip), %xmm2    # 0x182e90
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
movsd -0x28(%rbp), %xmm0
movsd 0xd97cb(%rip), %xmm1    # 0x182f48
divsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd97ad(%rip), %xmm1    # 0x182f40
callq 0xa9330
movsd 0xc7fd0(%rip), %xmm1    # 0x171770
mulsd %xmm1, %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd978a(%rip), %xmm1    # 0x182f40
callq 0xa9330
movsd -0x20(%rbp), %xmm1
movsd 0xd96f0(%rip), %xmm2    # 0x182eb8
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd9756(%rip), %xmm1    # 0x182f38
callq 0xa9330
movsd -0x20(%rbp), %xmm1
movsd 0xd973c(%rip), %xmm2    # 0x182f30
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd971a(%rip), %xmm1    # 0x182f28
callq 0xa9330
movsd -0x20(%rbp), %xmm1
movsd 0xd9670(%rip), %xmm2    # 0x182e90
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd96e6(%rip), %xmm1    # 0x182f20
callq 0xa9330
movsd -0x20(%rbp), %xmm1
movsd 0xc58dc(%rip), %xmm2    # 0x16f128
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd96b2(%rip), %xmm1    # 0x182f18
callq 0xa9330
movsd -0x20(%rbp), %xmm1
movsd 0xd9698(%rip), %xmm2    # 0x182f10
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd9676(%rip), %xmm1    # 0x182f08
callq 0xa9330
movsd -0x20(%rbp), %xmm1
movsd 0xd95bc(%rip), %xmm2    # 0x182e60
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd9642(%rip), %xmm1    # 0x182f00
callq 0xa9330
movsd -0x20(%rbp), %xmm1
movsd 0xd9628(%rip), %xmm2    # 0x182ef8
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xc5906(%rip), %xmm1    # 0x16f1f0
callq 0xa9330
movsd -0x20(%rbp), %xmm1
movsd 0xd95f4(%rip), %xmm2    # 0x182ef0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd959a(%rip), %xmm1    # 0x182eb0
callq 0xa9330
movsd -0x20(%rbp), %xmm1
movsd 0xd95c0(%rip), %xmm2    # 0x182ee8
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd955e(%rip), %xmm1    # 0x182ea0
callq 0xa9330
movsd -0x20(%rbp), %xmm1
movsd 0xd958c(%rip), %xmm2    # 0x182ee0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd952a(%rip), %xmm1    # 0x182e98
callq 0xa9330
movsd -0x20(%rbp), %xmm1
movsd 0xc5710(%rip), %xmm2    # 0x16f090
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd94ee(%rip), %xmm1    # 0x182e88
callq 0xa9330
movsd -0x20(%rbp), %xmm1
movsd 0xd952c(%rip), %xmm2    # 0x182ed8
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd94ba(%rip), %xmm1    # 0x182e80
callq 0xa9330
movsd -0x20(%rbp), %xmm1
movsd 0xd94f8(%rip), %xmm2    # 0x182ed0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd9486(%rip), %xmm1    # 0x182e78
callq 0xa9330
movsd -0x20(%rbp), %xmm1
movsd 0xc568c(%rip), %xmm2    # 0x16f090
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd944a(%rip), %xmm1    # 0x182e68
callq 0xa9330
movsd -0x20(%rbp), %xmm1
movsd 0xd9420(%rip), %xmm2    # 0x182e50
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd940e(%rip), %xmm1    # 0x182e58
callq 0xa9330
movsd -0x20(%rbp), %xmm1
movsd 0xd946c(%rip), %xmm2    # 0x182ec8
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd93d2(%rip), %xmm1    # 0x182e48
callq 0xa9330
movsd -0x20(%rbp), %xmm1
movsd 0xd93d8(%rip), %xmm2    # 0x182e60
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xc7e1e(%rip), %xmm1    # 0x1718c0
callq 0xa9330
movsd -0x20(%rbp), %xmm1
movsd 0xd940c(%rip), %xmm2    # 0x182ec0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd9372(%rip), %xmm1    # 0x182e40
callq 0xa9330
movsd -0x20(%rbp), %xmm1
movsd 0xd93d8(%rip), %xmm2    # 0x182eb8
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x20(%rbp), %xmm0
movsd 0xc55ce(%rip), %xmm1    # 0x16f0c8
divsd %xmm1, %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd93a0(%rip), %xmm1    # 0x182eb0
callq 0xa9330
movsd 0xd938b(%rip), %xmm1    # 0x182ea8
mulsd %xmm1, %xmm0
movsd %xmm0, -0x18(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd936d(%rip), %xmm1    # 0x182ea0
callq 0xa9330
movsd -0x18(%rbp), %xmm1
movsd 0xc7c2b(%rip), %xmm2    # 0x171770
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x18(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd9339(%rip), %xmm1    # 0x182e98
callq 0xa9330
movsd -0x18(%rbp), %xmm1
movsd 0xd931f(%rip), %xmm2    # 0x182e90
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x18(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd92fd(%rip), %xmm1    # 0x182e88
callq 0xa9330
movsd -0x18(%rbp), %xmm1
movsd 0xc558b(%rip), %xmm2    # 0x16f128
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x18(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd92c9(%rip), %xmm1    # 0x182e80
callq 0xa9330
movsd -0x18(%rbp), %xmm1
movsd 0xd92a7(%rip), %xmm2    # 0x182e70
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x18(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd9295(%rip), %xmm1    # 0x182e78
callq 0xa9330
movsd -0x18(%rbp), %xmm1
movsd 0xd927b(%rip), %xmm2    # 0x182e70
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x18(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd9259(%rip), %xmm1    # 0x182e68
callq 0xa9330
movsd -0x18(%rbp), %xmm1
movsd 0xd923f(%rip), %xmm2    # 0x182e60
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x18(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd921d(%rip), %xmm1    # 0x182e58
callq 0xa9330
movsd -0x18(%rbp), %xmm1
movsd 0xd9203(%rip), %xmm2    # 0x182e50
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x18(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd91e1(%rip), %xmm1    # 0x182e48
callq 0xa9330
movsd -0x18(%rbp), %xmm1
movsd 0xc5417(%rip), %xmm2    # 0x16f090
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x18(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xc7c2d(%rip), %xmm1    # 0x1718c0
callq 0xa9330
movsd -0x18(%rbp), %xmm1
movsd 0xc7ac3(%rip), %xmm2    # 0x171768
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x18(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd9181(%rip), %xmm1    # 0x182e40
callq 0xa9330
movsd -0x18(%rbp), %xmm1
movsd 0xd9167(%rip), %xmm2    # 0x182e38
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x18(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd9145(%rip), %xmm1    # 0x182e30
callq 0xa9330
movsd -0x18(%rbp), %xmm1
movsd 0xd912b(%rip), %xmm2    # 0x182e28
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x18(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd9109(%rip), %xmm1    # 0x182e20
callq 0xa9330
movsd -0x18(%rbp), %xmm1
movsd 0xd90ef(%rip), %xmm2    # 0x182e18
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x18(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd90cd(%rip), %xmm1    # 0x182e10
callq 0xa9330
movsd -0x18(%rbp), %xmm1
movsd 0xd90b3(%rip), %xmm2    # 0x182e08
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x18(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd9091(%rip), %xmm1    # 0x182e00
callq 0xa9330
movsd -0x18(%rbp), %xmm1
movsd 0xc54a7(%rip), %xmm2    # 0x16f228
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x18(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd905d(%rip), %xmm1    # 0x182df8
callq 0xa9330
movsd -0x18(%rbp), %xmm1
movsd 0xd903b(%rip), %xmm2    # 0x182de8
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x18(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd9029(%rip), %xmm1    # 0x182df0
callq 0xa9330
movsd -0x18(%rbp), %xmm1
movsd 0xd900f(%rip), %xmm2    # 0x182de8
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x18(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd8fed(%rip), %xmm1    # 0x182de0
callq 0xa9330
movsd -0x18(%rbp), %xmm1
movsd 0xd8fd3(%rip), %xmm2    # 0x182dd8
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x18(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd8fb1(%rip), %xmm1    # 0x182dd0
callq 0xa9330
movsd -0x18(%rbp), %xmm1
movsd 0xd8f97(%rip), %xmm2    # 0x182dc8
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x18(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0xd8f75(%rip), %xmm1    # 0x182dc0
callq 0xa9330
movsd -0x18(%rbp), %xmm1
movsd 0xd8f5b(%rip), %xmm2    # 0x182db8
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x18(%rbp)
movsd -0x18(%rbp), %xmm0
movsd 0xc5251(%rip), %xmm1    # 0x16f0c8
divsd %xmm1, %xmm0
movsd %xmm0, -0x18(%rbp)
movsd -0x18(%rbp), %xmm0
addsd -0x20(%rbp), %xmm0
addsd -0x28(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x38(%rbp), %xmm1
movsd -0x18(%rbp), %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, -0x18(%rbp)
movsd -0x38(%rbp), %xmm1
movsd -0x20(%rbp), %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x38(%rbp), %xmm1
movsd -0x28(%rbp), %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
movsd -0x40(%rbp), %xmm1
subsd -0x18(%rbp), %xmm1
movsd -0x40(%rbp), %xmm2
subsd -0x18(%rbp), %xmm2
movsd -0x48(%rbp), %xmm0
subsd -0x20(%rbp), %xmm0
movsd -0x48(%rbp), %xmm3
subsd -0x20(%rbp), %xmm3
mulsd %xmm3, %xmm0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd -0x50(%rbp), %xmm0
subsd -0x28(%rbp), %xmm0
movsd -0x50(%rbp), %xmm2
subsd -0x28(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd 0xc52bb(%rip), %xmm1    # 0x16f1e0
divsd %xmm1, %xmm0
callq 0x9280
movsd %xmm0, -0x60(%rbp)
movsd 0xc512d(%rip), %xmm0    # 0x16f068
subsd -0x60(%rbp), %xmm0
movsd 0xc5120(%rip), %xmm1    # 0x16f068
subsd -0x60(%rbp), %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0x60(%rbp)
movsd 0xc50f2(%rip), %xmm0    # 0x16f050
mulsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x8(%rbp)
movsd -0x8(%rbp), %xmm0
addq $0x60, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)