#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
double cos(double);
double fabs(double);
double sin(double);
void view1_parameter_define(int ii, int num_of_frames, int rotate_style,
                            double view_point_d[3], double screen_point[3],
                            int num_of_lights, double *light_point,
                            double up[3], double trange[6]) {
  int i;
  double center[3], t[3], angle, tminx, tmaxx, tminy, tmaxy, tminz, tmaxz;
  for (i = 0; i < 3; i++)
    center[i] = (trange[i * 2] + trange[i * 2 + 1]) / 2.0;
  angle = 2.0 * 3.1415926 / (double)num_of_frames;
  if (rotate_style != 0) {
    if (rotate_style == 1) {
      up[0] = 1.0;
      up[1] = 0.0;
      up[2] = 0.0;
      for (i = 0; i < 3; i++)
        t[i] = view_point_d[i] - center[i];
      view_point_d[0] = t[0];
      view_point_d[1] = t[1] * cos(angle) + t[2] * sin(angle);
      view_point_d[2] = -t[1] * sin(angle) + t[2] * cos(angle);
      for (i = 0; i < 3; i++)
        view_point_d[i] += center[i];
    }
    if (rotate_style == 2) {
      up[0] = 0.0;
      up[1] = 1.0;
      up[2] = 0.0;
      for (i = 0; i < 3; i++)
        t[i] = view_point_d[i] - center[i];
      view_point_d[0] = t[0] * cos(angle) + t[2] * sin(angle);
      view_point_d[1] = t[1];
      view_point_d[2] = -t[0] * sin(angle) + t[2] * cos(angle);
      for (i = 0; i < 3; i++)
        view_point_d[i] += center[i];
      if ((fabs(screen_point[0] - center[0]) > 0.00000001) ||
          (fabs(screen_point[2] - center[2]) > 0.00000001)) {
        for (i = 0; i < 3; i++)
          t[i] = screen_point[i] - center[i];
        screen_point[0] = t[0] * cos(angle) + t[2] * sin(angle);
        screen_point[1] = t[1];
        screen_point[2] = -t[0] * sin(angle) + t[2] * cos(angle);
        for (i = 0; i < 3; i++)
          screen_point[i] += center[i];
      }
    }
    if (rotate_style == 3) {
      for (i = 0; i < 3; i++)
        t[i] = view_point_d[i] - center[i];
      view_point_d[0] = t[0] * cos(angle) + t[1] * sin(angle);
      view_point_d[1] = -t[0] * sin(angle) + t[1] * cos(angle);
      view_point_d[2] = t[2];
      for (i = 0; i < 3; i++)
        view_point_d[i] += center[i];
      if ((fabs(screen_point[0] - center[0]) > 0.00000001) ||
          (fabs(screen_point[1] - center[1]) > 0.00000001)) {
        for (i = 0; i < 3; i++)
          t[i] = screen_point[i] - center[i];
        screen_point[0] = t[0] * cos(angle) + t[1] * sin(angle);
        screen_point[1] = -t[0] * sin(angle) + t[1] * cos(angle);
        screen_point[2] = t[2];
        for (i = 0; i < 3; i++)
          screen_point[i] += center[i];
      }
    }
    if (rotate_style == 4) {
      if (ii > 0) {
        tminx = trange[0];
        tmaxx = trange[1];
        tminy = trange[2];
        tmaxy = trange[3];
        tminz = trange[4];
        tmaxz = trange[5];
        if (ii == 1) {
          view_point_d[0] = (tminx + tmaxx) / 2.0;
          view_point_d[1] = tmaxy + 1.5 * (tmaxy - tminy);
          view_point_d[2] = tmaxz + 1.5 * (tmaxz - tminz);
          up[0] = 0.0;
          up[1] = 0.0;
          up[2] = 1.0;
        } else if (ii == 2) {
          view_point_d[0] = (tminx + tmaxx) / 2.0;
          view_point_d[1] = tmaxy + 1.5 * (tmaxy - tminy);
          view_point_d[2] = (tmaxz + tminz) / 2.0;
          up[0] = 0.0;
          up[1] = 0.0;
          up[2] = 1.0;
        } else if (ii == 3) {
          view_point_d[0] = (tminx + tmaxx) / 2.0;
          view_point_d[1] = tmaxy + 1.5 * (tmaxy - tminy);
          view_point_d[2] = tminz - 1.5 * (tmaxz - tminz);
          up[0] = 0.0;
          up[1] = 0.0;
          up[2] = 1.0;
        } else if (ii == 4) {
          view_point_d[0] = (tminx + tmaxx) / 2.0;
          view_point_d[1] = 0.5 * (tmaxy + tminy);
          view_point_d[2] = tmaxz + 1.5 * (tmaxz - tminz);
          up[0] = 0.0;
          up[1] = -1.0;
          up[2] = 0.0;
        } else if (ii == 5) {
          view_point_d[0] = tmaxx + 1.5 * (tmaxx - tminx);
          view_point_d[1] = 0.5 * (tmaxy + tminy);
          view_point_d[2] = tmaxz + 1.5 * (tmaxz - tminz);
          up[0] = 0.0;
          up[1] = 0.0;
          up[2] = 1.0;
        } else if (ii == 6) {
          view_point_d[0] = tminx - 1.5 * (tmaxx - tminx);
          view_point_d[1] = 0.5 * (tmaxy + tminy);
          view_point_d[2] = tmaxz + 1.5 * (tmaxz - tminz);
          up[0] = 0.0;
          up[1] = 0.0;
          up[2] = 1.0;
        } else if (ii == 7) {
          view_point_d[0] = (tmaxx + tminx) / 2.0;
          view_point_d[1] = tminy - 1.5 * (tmaxy - tminy);
          view_point_d[2] = tmaxz + 1.5 * (tmaxz - tminz);
          up[0] = 0.0;
          up[1] = 0.0;
          up[2] = 1.0;
        }
      }
    }
  }
  return;
}


x86 assembly (clang, -O0):
<view1_parameter_define>:
push   %rbp
mov    %rsp,%rbp
sub    $0x190,%rsp
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %edx,-0xc(%rbp)
mov    %rcx,-0x18(%rbp)
mov    %r8,-0x20(%rbp)
mov    %r9d,-0x24(%rbp)
movl   $0x0,-0x28(%rbp)
cmpl   $0x3,-0x28(%rbp)
jge    11a8 <view1_parameter_define+0x88>
mov    0x20(%rbp),%rax
mov    -0x28(%rbp),%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x20(%rbp),%rax
mov    -0x28(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  0xe9c(%rip),%xmm1
divsd  %xmm1,%xmm0
movslq -0x28(%rbp),%rax
movsd  %xmm0,-0x40(%rbp,%rax,8)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    1153 <view1_parameter_define+0x33>
cvtsi2sdl -0x8(%rbp),%xmm1
movsd  0xe4b(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
cmpl   $0x0,-0xc(%rbp)
je     1f73 <view1_parameter_define+0xe53>
cmpl   $0x1,-0xc(%rbp)
jne    136a <view1_parameter_define+0x24a>
mov    0x18(%rbp),%rax
movsd  0xe2a(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    0x18(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x8(%rax)
mov    0x18(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x10(%rax)
movl   $0x0,-0x28(%rbp)
cmpl   $0x3,-0x28(%rbp)
jge    123a <view1_parameter_define+0x11a>
mov    -0x18(%rbp),%rax
movslq -0x28(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movslq -0x28(%rbp),%rax
subsd  -0x40(%rbp,%rax,8),%xmm0
movslq -0x28(%rbp),%rax
movsd  %xmm0,-0x60(%rbp,%rax,8)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    1201 <view1_parameter_define+0xe1>
movsd  -0x60(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
call   1040 <cos@plt>
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
call   1030 <sin@plt>
movsd  -0xc8(%rbp),%xmm1
ff
movsd  -0xc0(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0xb8(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x58(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
call   1030 <sin@plt>
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
call   1040 <cos@plt>
movsd  -0xb0(%rbp),%xmm1
ff
movsd  -0xa8(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0xa0(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movl   $0x0,-0x28(%rbp)
cmpl   $0x3,-0x28(%rbp)
jge    1365 <view1_parameter_define+0x245>
movslq -0x28(%rbp),%rax
movsd  -0x40(%rbp,%rax,8),%xmm0
mov    -0x18(%rbp),%rax
movslq -0x28(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    1331 <view1_parameter_define+0x211>
jmp    136a <view1_parameter_define+0x24a>
cmpl   $0x2,-0xc(%rbp)
jne    16d1 <view1_parameter_define+0x5b1>
mov    0x18(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    0x18(%rbp),%rax
movsd  0xc7d(%rip),%xmm0
movsd  %xmm0,0x8(%rax)
mov    0x18(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x10(%rax)
movl   $0x0,-0x28(%rbp)
cmpl   $0x3,-0x28(%rbp)
jge    13dc <view1_parameter_define+0x2bc>
mov    -0x18(%rbp),%rax
movslq -0x28(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movslq -0x28(%rbp),%rax
subsd  -0x40(%rbp,%rax,8),%xmm0
movslq -0x28(%rbp),%rax
movsd  %xmm0,-0x60(%rbp,%rax,8)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    13a3 <view1_parameter_define+0x283>
movsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
call   1040 <cos@plt>
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
call   1030 <sin@plt>
movsd  -0xf8(%rbp),%xmm1
ff
movsd  -0xf0(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0xe8(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x58(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x60(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
call   1030 <sin@plt>
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
call   1040 <cos@plt>
movsd  -0xe0(%rbp),%xmm1
ff
movsd  -0xd8(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0xd0(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movl   $0x0,-0x28(%rbp)
cmpl   $0x3,-0x28(%rbp)
jge    1507 <view1_parameter_define+0x3e7>
movslq -0x28(%rbp),%rax
movsd  -0x40(%rbp,%rax,8),%xmm0
mov    -0x18(%rbp),%rax
movslq -0x28(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    14d3 <view1_parameter_define+0x3b3>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
subsd  -0x40(%rbp),%xmm0
movaps 0xb25(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  0xae9(%rip),%xmm1
ucomisd %xmm1,%xmm0
ja     155c <view1_parameter_define+0x43c>
mov    -0x20(%rbp),%rax
movsd  0x10(%rax),%xmm0
subsd  -0x30(%rbp),%xmm0
movaps 0xafa(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  0xabe(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    16cc <view1_parameter_define+0x5ac>
movl   $0x0,-0x28(%rbp)
cmpl   $0x3,-0x28(%rbp)
jge    159c <view1_parameter_define+0x47c>
mov    -0x20(%rbp),%rax
movslq -0x28(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movslq -0x28(%rbp),%rax
subsd  -0x40(%rbp,%rax,8),%xmm0
movslq -0x28(%rbp),%rax
movsd  %xmm0,-0x60(%rbp,%rax,8)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    1563 <view1_parameter_define+0x443>
movsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
call   1040 <cos@plt>
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
call   1030 <sin@plt>
movsd  -0x128(%rbp),%xmm1
ff
movsd  -0x120(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x118(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x58(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x60(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
call   1030 <sin@plt>
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
call   1040 <cos@plt>
movsd  -0x110(%rbp),%xmm1
ff
movsd  -0x108(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x100(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movl   $0x0,-0x28(%rbp)
cmpl   $0x3,-0x28(%rbp)
jge    16c7 <view1_parameter_define+0x5a7>
movslq -0x28(%rbp),%rax
movsd  -0x40(%rbp,%rax,8),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x28(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    1693 <view1_parameter_define+0x573>
jmp    16cc <view1_parameter_define+0x5ac>
jmp    16d1 <view1_parameter_define+0x5b1>
cmpl   $0x3,-0xc(%rbp)
jne    1a10 <view1_parameter_define+0x8f0>
movl   $0x0,-0x28(%rbp)
cmpl   $0x3,-0x28(%rbp)
jge    171b <view1_parameter_define+0x5fb>
mov    -0x18(%rbp),%rax
movslq -0x28(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movslq -0x28(%rbp),%rax
subsd  -0x40(%rbp,%rax,8),%xmm0
movslq -0x28(%rbp),%rax
movsd  %xmm0,-0x60(%rbp,%rax,8)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    16e2 <view1_parameter_define+0x5c2>
movsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
call   1040 <cos@plt>
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
call   1030 <sin@plt>
movsd  -0x158(%rbp),%xmm1
ff
movsd  -0x150(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x148(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x60(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
call   1030 <sin@plt>
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
call   1040 <cos@plt>
movsd  -0x140(%rbp),%xmm1
ff
movsd  -0x138(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x130(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x50(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movl   $0x0,-0x28(%rbp)
cmpl   $0x3,-0x28(%rbp)
jge    1846 <view1_parameter_define+0x726>
movslq -0x28(%rbp),%rax
movsd  -0x40(%rbp,%rax,8),%xmm0
mov    -0x18(%rbp),%rax
movslq -0x28(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    1812 <view1_parameter_define+0x6f2>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
subsd  -0x40(%rbp),%xmm0
movaps 0x7e6(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  0x7aa(%rip),%xmm1
ucomisd %xmm1,%xmm0
ja     189b <view1_parameter_define+0x77b>
mov    -0x20(%rbp),%rax
movsd  0x8(%rax),%xmm0
subsd  -0x38(%rbp),%xmm0
movaps 0x7bb(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  0x77f(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1a0b <view1_parameter_define+0x8eb>
movl   $0x0,-0x28(%rbp)
cmpl   $0x3,-0x28(%rbp)
jge    18db <view1_parameter_define+0x7bb>
mov    -0x20(%rbp),%rax
movslq -0x28(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movslq -0x28(%rbp),%rax
subsd  -0x40(%rbp,%rax,8),%xmm0
movslq -0x28(%rbp),%rax
movsd  %xmm0,-0x60(%rbp,%rax,8)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    18a2 <view1_parameter_define+0x782>
movsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
call   1040 <cos@plt>
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
call   1030 <sin@plt>
movsd  -0x188(%rbp),%xmm1
ff
movsd  -0x180(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x178(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x60(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
call   1030 <sin@plt>
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
call   1040 <cos@plt>
movsd  -0x170(%rbp),%xmm1
ff
movsd  -0x168(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x160(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x50(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movl   $0x0,-0x28(%rbp)
cmpl   $0x3,-0x28(%rbp)
jge    1a06 <view1_parameter_define+0x8e6>
movslq -0x28(%rbp),%rax
movsd  -0x40(%rbp,%rax,8),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x28(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    19d2 <view1_parameter_define+0x8b2>
jmp    1a0b <view1_parameter_define+0x8eb>
jmp    1a10 <view1_parameter_define+0x8f0>
cmpl   $0x4,-0xc(%rbp)
jne    1f6e <view1_parameter_define+0xe4e>
cmpl   $0x0,-0x4(%rbp)
jle    1f69 <view1_parameter_define+0xe49>
mov    0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    0x20(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    0x20(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    0x20(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    0x20(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    0x20(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
cmpl   $0x1,-0x4(%rbp)
jne    1b34 <view1_parameter_define+0xa14>
movsd  -0x70(%rbp),%xmm0
addsd  -0x78(%rbp),%xmm0
movsd  0x58c(%rip),%xmm1
divsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x88(%rbp),%xmm1
ff
movsd  -0x88(%rbp),%xmm0
ff
subsd  -0x80(%rbp),%xmm0
movsd  0x553(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x98(%rbp),%xmm1
ff
movsd  -0x98(%rbp),%xmm0
ff
subsd  -0x90(%rbp),%xmm0
ff
movsd  0x522(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    0x18(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    0x18(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x8(%rax)
mov    0x18(%rbp),%rax
movsd  0x4de(%rip),%xmm0
movsd  %xmm0,0x10(%rax)
jmp    1f64 <view1_parameter_define+0xe44>
cmpl   $0x2,-0x4(%rbp)
jne    1bdc <view1_parameter_define+0xabc>
movsd  -0x70(%rbp),%xmm0
addsd  -0x78(%rbp),%xmm0
movsd  0x4d8(%rip),%xmm1
divsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x88(%rbp),%xmm1
ff
movsd  -0x88(%rbp),%xmm0
ff
subsd  -0x80(%rbp),%xmm0
movsd  0x49f(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x98(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  0x486(%rip),%xmm1
divsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    0x18(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    0x18(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x8(%rax)
mov    0x18(%rbp),%rax
movsd  0x436(%rip),%xmm0
movsd  %xmm0,0x10(%rax)
jmp    1f5f <view1_parameter_define+0xe3f>
cmpl   $0x3,-0x4(%rbp)
jne    1c90 <view1_parameter_define+0xb70>
movsd  -0x70(%rbp),%xmm0
addsd  -0x78(%rbp),%xmm0
movsd  0x430(%rip),%xmm1
divsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x88(%rbp),%xmm1
ff
movsd  -0x88(%rbp),%xmm0
ff
subsd  -0x80(%rbp),%xmm0
movsd  0x3f7(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x90(%rbp),%xmm1
ff
movsd  -0x98(%rbp),%xmm0
ff
subsd  -0x90(%rbp),%xmm0
ff
movsd  0x3ce(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    0x18(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    0x18(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x8(%rax)
mov    0x18(%rbp),%rax
movsd  0x382(%rip),%xmm0
movsd  %xmm0,0x10(%rax)
jmp    1f5a <view1_parameter_define+0xe3a>
cmpl   $0x4,-0x4(%rbp)
jne    1d38 <view1_parameter_define+0xc18>
movsd  -0x70(%rbp),%xmm0
addsd  -0x78(%rbp),%xmm0
movsd  0x37c(%rip),%xmm1
divsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x88(%rbp),%xmm1
ff
addsd  -0x80(%rbp),%xmm1
movsd  0x363(%rip),%xmm0
mulsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x98(%rbp),%xmm1
ff
movsd  -0x98(%rbp),%xmm0
ff
subsd  -0x90(%rbp),%xmm0
ff
movsd  0x31e(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    0x18(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    0x18(%rbp),%rax
movsd  0x316(%rip),%xmm0
movsd  %xmm0,0x8(%rax)
mov    0x18(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x10(%rax)
jmp    1f55 <view1_parameter_define+0xe35>
cmpl   $0x5,-0x4(%rbp)
jne    1de9 <view1_parameter_define+0xcc9>
movsd  -0x78(%rbp),%xmm1
movsd  -0x78(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
movsd  0x2bf(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x88(%rbp),%xmm1
ff
addsd  -0x80(%rbp),%xmm1
movsd  0x2b2(%rip),%xmm0
mulsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x98(%rbp),%xmm1
ff
movsd  -0x98(%rbp),%xmm0
ff
subsd  -0x90(%rbp),%xmm0
ff
movsd  0x26d(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    0x18(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    0x18(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x8(%rax)
mov    0x18(%rbp),%rax
movsd  0x229(%rip),%xmm0
movsd  %xmm0,0x10(%rax)
jmp    1f50 <view1_parameter_define+0xe30>
cmpl   $0x6,-0x4(%rbp)
jne    1e9a <view1_parameter_define+0xd7a>
movsd  -0x70(%rbp),%xmm1
movsd  -0x78(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
movsd  0x216(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x88(%rbp),%xmm1
ff
addsd  -0x80(%rbp),%xmm1
movsd  0x201(%rip),%xmm0
mulsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x98(%rbp),%xmm1
ff
movsd  -0x98(%rbp),%xmm0
ff
subsd  -0x90(%rbp),%xmm0
ff
movsd  0x1bc(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    0x18(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    0x18(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x8(%rax)
mov    0x18(%rbp),%rax
movsd  0x178(%rip),%xmm0
movsd  %xmm0,0x10(%rax)
jmp    1f4b <view1_parameter_define+0xe2b>
cmpl   $0x7,-0x4(%rbp)
jne    1f46 <view1_parameter_define+0xe26>
movsd  -0x78(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
movsd  0x172(%rip),%xmm1
divsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x80(%rbp),%xmm1
movsd  -0x88(%rbp),%xmm0
ff
subsd  -0x80(%rbp),%xmm0
movsd  0x144(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x98(%rbp),%xmm1
ff
movsd  -0x98(%rbp),%xmm0
ff
subsd  -0x90(%rbp),%xmm0
ff
movsd  0x10b(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    0x18(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    0x18(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x8(%rax)
mov    0x18(%rbp),%rax
movsd  0xc7(%rip),%xmm0
movsd  %xmm0,0x10(%rax)
jmp    1f4b <view1_parameter_define+0xe2b>
jmp    1f50 <view1_parameter_define+0xe30>
jmp    1f55 <view1_parameter_define+0xe35>
jmp    1f5a <view1_parameter_define+0xe3a>
jmp    1f5f <view1_parameter_define+0xe3f>
jmp    1f64 <view1_parameter_define+0xe44>
jmp    1f69 <view1_parameter_define+0xe49>
jmp    1f6e <view1_parameter_define+0xe4e>
jmp    1f73 <view1_parameter_define+0xe53>
add    $0x190,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<view1_parameter_define>:
push   %r14
push   %rbx
sub    $0x78,%rsp
mov    %rcx,%rbx
mov    0xa0(%rsp),%rcx
mov    0x98(%rsp),%rax
cmp    $0x3,%edx
ja     126b <view1_parameter_define+0x14b>
mov    %r8,%r14
movupd 0x8(%rcx),%xmm0
movsd  (%rcx),%xmm3
movhpd 0x18(%rcx),%xmm3
addpd  %xmm0,%xmm3
mulpd  0xea0(%rip),%xmm3
movsd  0x20(%rcx),%xmm2
addsd  0x28(%rcx),%xmm2
mulsd  0xeee(%rip),%xmm2
cvtsi2sd %esi,%xmm1
movsd  0xeea(%rip),%xmm0
divsd  %xmm1,%xmm0
mov    %edx,%ecx
lea    0xf0d(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
movabs $0x3ff0000000000000,%rcx
mov    %rcx,(%rax)
xorpd  %xmm1,%xmm1
movupd %xmm1,0x8(%rax)
movsd  (%rbx),%xmm4
movsd  0x8(%rbx),%xmm5
subsd  %xmm3,%xmm4
movapd %xmm3,%xmm1
unpckhpd %xmm3,%xmm1
subsd  %xmm1,%xmm5
movsd  %xmm5,0x30(%rsp)
movsd  0x10(%rbx),%xmm1
subsd  %xmm2,%xmm1
movsd  %xmm1,0x40(%rsp)
movsd  %xmm4,(%rbx)
movsd  %xmm2,0x28(%rsp)
movapd %xmm3,0x50(%rsp)
movsd  %xmm0,(%rsp)
call   1040 <cos@plt>
movsd  %xmm0,0x10(%rsp)
movsd  (%rsp),%xmm0
call   1030 <sin@plt>
mulsd  0x40(%rsp),%xmm0
movsd  0x10(%rsp),%xmm1
mulsd  0x30(%rsp),%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%rbx)
movsd  (%rsp),%xmm0
call   1030 <sin@plt>
movsd  %xmm0,0x10(%rsp)
movsd  (%rsp),%xmm0
call   1040 <cos@plt>
mulsd  0x40(%rsp),%xmm0
movsd  0x10(%rsp),%xmm1
mulsd  0x30(%rsp),%xmm1
subsd  %xmm1,%xmm0
movupd (%rbx),%xmm1
addpd  0x50(%rsp),%xmm1
movupd %xmm1,(%rbx)
addsd  0x28(%rsp),%xmm0
movsd  %xmm0,0x10(%rbx)
jmp    182b <view1_parameter_define+0x70b>
test   %edi,%edi
jle    182b <view1_parameter_define+0x70b>
cmp    $0x4,%edx
jne    182b <view1_parameter_define+0x70b>
add    $0xffffffff,%edi
cmp    $0x6,%edi
ja     182b <view1_parameter_define+0x70b>
movsd  (%rcx),%xmm3
movupd 0x8(%rcx),%xmm2
movupd 0x18(%rcx),%xmm0
movsd  0x28(%rcx),%xmm1
lea    0xe06(%rip),%rcx
movslq (%rcx,%rdi,4),%rdx
add    %rcx,%rdx
jmp    *%rdx
addsd  %xmm2,%xmm3
mulsd  0xda9(%rip),%xmm3
movsd  %xmm3,(%rbx)
unpckhpd %xmm0,%xmm2
unpcklpd %xmm1,%xmm0
movapd %xmm0,%xmm1
subpd  %xmm2,%xmm1
mulpd  0xd7d(%rip),%xmm1
addpd  %xmm0,%xmm1
movupd %xmm1,0x8(%rbx)
jmp    1815 <view1_parameter_define+0x6f5>
xorpd  %xmm1,%xmm1
movhpd 0xd83(%rip),%xmm1
movupd %xmm1,(%rax)
movq   $0x0,0x10(%rax)
movsd  (%rbx),%xmm1
movsd  0x8(%rbx),%xmm4
subsd  %xmm3,%xmm1
movsd  %xmm1,0x30(%rsp)
movapd %xmm3,%xmm1
unpckhpd %xmm3,%xmm1
movapd %xmm1,0x60(%rsp)
subsd  %xmm1,%xmm4
movsd  %xmm4,0x10(%rsp)
movsd  0x10(%rbx),%xmm1
subsd  %xmm2,%xmm1
movsd  %xmm1,0x40(%rsp)
movsd  %xmm2,0x28(%rsp)
movapd %xmm3,0x50(%rsp)
movsd  %xmm0,(%rsp)
call   1040 <cos@plt>
movsd  %xmm0,0x8(%rsp)
movsd  (%rsp),%xmm0
call   1030 <sin@plt>
mulsd  0x40(%rsp),%xmm0
movsd  0x8(%rsp),%xmm1
mulsd  0x30(%rsp),%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,(%rbx)
movsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x8(%rbx)
movsd  (%rsp),%xmm0
call   1030 <sin@plt>
movsd  %xmm0,0x10(%rsp)
movsd  (%rsp),%xmm0
call   1040 <cos@plt>
movsd  (%rsp),%xmm4
movapd 0x50(%rsp),%xmm3
movsd  0x28(%rsp),%xmm2
mulsd  0x40(%rsp),%xmm0
movsd  0x10(%rsp),%xmm1
mulsd  0x30(%rsp),%xmm1
subsd  %xmm1,%xmm0
movupd (%rbx),%xmm1
addpd  %xmm3,%xmm1
movupd %xmm1,(%rbx)
addsd  %xmm2,%xmm0
movsd  %xmm0,0x10(%rbx)
movsd  (%r14),%xmm5
movsd  0x10(%r14),%xmm6
subsd  %xmm3,%xmm5
movapd 0xc25(%rip),%xmm0
movapd %xmm5,%xmm1
andpd  %xmm0,%xmm1
ucomisd 0xc7d(%rip),%xmm1
subsd  %xmm2,%xmm6
ja     1413 <view1_parameter_define+0x2f3>
andpd  %xmm6,%xmm0
ucomisd 0xc6b(%rip),%xmm0
jbe    182b <view1_parameter_define+0x70b>
movsd  0x8(%r14),%xmm0
subsd  0x60(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movapd %xmm4,%xmm0
movapd %xmm5,0x30(%rsp)
movapd %xmm6,0x40(%rsp)
call   1040 <cos@plt>
movsd  %xmm0,0x8(%rsp)
movsd  (%rsp),%xmm0
call   1030 <sin@plt>
mulsd  0x40(%rsp),%xmm0
movsd  0x8(%rsp),%xmm1
mulsd  0x30(%rsp),%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,(%r14)
movsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x8(%r14)
movsd  (%rsp),%xmm0
call   1030 <sin@plt>
movsd  %xmm0,0x10(%rsp)
movsd  (%rsp),%xmm0
call   1040 <cos@plt>
mulsd  0x40(%rsp),%xmm0
movsd  0x10(%rsp),%xmm1
mulsd  0x30(%rsp),%xmm1
subsd  %xmm1,%xmm0
movupd (%r14),%xmm1
movapd 0x50(%rsp),%xmm2
addpd  %xmm1,%xmm2
movupd %xmm2,(%r14)
movsd  0x28(%rsp),%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,0x10(%r14)
jmp    182b <view1_parameter_define+0x70b>
movsd  (%rbx),%xmm1
movsd  0x8(%rbx),%xmm4
subsd  %xmm3,%xmm1
movsd  %xmm1,0x30(%rsp)
movapd %xmm3,%xmm1
unpckhpd %xmm3,%xmm1
subsd  %xmm1,%xmm4
movsd  %xmm4,0x40(%rsp)
movsd  0x10(%rbx),%xmm1
subsd  %xmm2,%xmm1
movsd  %xmm1,0x10(%rsp)
movsd  %xmm2,0x28(%rsp)
movapd %xmm3,0x50(%rsp)
movsd  %xmm0,(%rsp)
call   1040 <cos@plt>
movsd  %xmm0,0x8(%rsp)
movsd  (%rsp),%xmm0
call   1030 <sin@plt>
mulsd  0x40(%rsp),%xmm0
movsd  0x8(%rsp),%xmm1
mulsd  0x30(%rsp),%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,(%rbx)
movsd  (%rsp),%xmm0
call   1030 <sin@plt>
movsd  %xmm0,0x8(%rsp)
movsd  (%rsp),%xmm0
call   1040 <cos@plt>
movsd  (%rsp),%xmm4
movapd 0x50(%rsp),%xmm3
movsd  0x28(%rsp),%xmm2
mulsd  0x40(%rsp),%xmm0
movsd  0x8(%rsp),%xmm1
mulsd  0x30(%rsp),%xmm1
subsd  %xmm1,%xmm0
movsd  (%rbx),%xmm1
unpcklpd %xmm0,%xmm1
addpd  %xmm3,%xmm1
movupd %xmm1,(%rbx)
movsd  0x10(%rsp),%xmm0
addsd  %xmm2,%xmm0
movsd  %xmm0,0x10(%rbx)
movupd (%r14),%xmm5
subpd  %xmm3,%xmm5
movapd 0xa61(%rip),%xmm0
andpd  %xmm5,%xmm0
movapd 0xa65(%rip),%xmm1
cmpltpd %xmm0,%xmm1
movmskpd %xmm1,%eax
test   %eax,%eax
je     182b <view1_parameter_define+0x70b>
movsd  0x10(%r14),%xmm0
subsd  %xmm2,%xmm0
movsd  %xmm0,0x40(%rsp)
movapd %xmm4,%xmm0
movapd %xmm5,0x30(%rsp)
call   1040 <cos@plt>
movsd  %xmm0,0x8(%rsp)
movsd  (%rsp),%xmm0
call   1030 <sin@plt>
movapd 0x30(%rsp),%xmm1
movapd %xmm1,%xmm2
unpckhpd %xmm1,%xmm2
movapd %xmm2,0x10(%rsp)
mulsd  %xmm2,%xmm0
movsd  0x8(%rsp),%xmm2
mulsd  %xmm1,%xmm2
addsd  %xmm0,%xmm2
movsd  %xmm2,(%r14)
movsd  (%rsp),%xmm0
call   1030 <sin@plt>
movsd  %xmm0,0x8(%rsp)
movsd  (%rsp),%xmm0
call   1040 <cos@plt>
mulsd  0x10(%rsp),%xmm0
movsd  0x8(%rsp),%xmm1
mulsd  0x30(%rsp),%xmm1
subsd  %xmm1,%xmm0
movsd  (%r14),%xmm1
unpcklpd %xmm0,%xmm1
movapd 0x50(%rsp),%xmm0
addpd  %xmm1,%xmm0
movupd %xmm0,(%r14)
movsd  0x40(%rsp),%xmm0
addsd  0x28(%rsp),%xmm0
movsd  %xmm0,0x10(%r14)
jmp    182b <view1_parameter_define+0x70b>
addsd  %xmm2,%xmm3
movsd  0x9cf(%rip),%xmm4
mulsd  %xmm4,%xmm3
movsd  %xmm3,(%rbx)
unpckhpd %xmm2,%xmm2
movapd %xmm0,%xmm3
subsd  %xmm2,%xmm3
mulsd  0x9db(%rip),%xmm3
addsd  %xmm0,%xmm3
movsd  %xmm3,0x8(%rbx)
unpckhpd %xmm0,%xmm0
addsd  %xmm1,%xmm0
mulsd  %xmm4,%xmm0
movsd  %xmm0,0x10(%rbx)
jmp    1815 <view1_parameter_define+0x6f5>
addsd  %xmm2,%xmm3
mulsd  0x988(%rip),%xmm3
movsd  %xmm3,(%rbx)
movapd %xmm0,%xmm3
unpcklpd %xmm1,%xmm3
unpckhpd %xmm0,%xmm2
subpd  %xmm2,%xmm3
mulpd  0x94c(%rip),%xmm3
addpd  %xmm0,%xmm3
movupd %xmm3,0x8(%rbx)
jmp    1815 <view1_parameter_define+0x6f5>
unpcklpd %xmm0,%xmm3
addpd  %xmm3,%xmm2
mulpd  0x8ee(%rip),%xmm2
unpckhpd %xmm0,%xmm0
movapd %xmm1,%xmm3
subsd  %xmm0,%xmm3
mulsd  0x962(%rip),%xmm3
movupd %xmm2,(%rbx)
addsd  %xmm1,%xmm3
movsd  %xmm3,0x10(%rbx)
xorpd  %xmm0,%xmm0
movhpd 0x951(%rip),%xmm0
movupd %xmm0,(%rax)
movq   $0x0,0x10(%rax)
jmp    182b <view1_parameter_define+0x70b>
movapd %xmm2,%xmm4
subsd  %xmm3,%xmm4
movsd  0x928(%rip),%xmm3
mulsd  %xmm3,%xmm4
addsd  %xmm2,%xmm4
movsd  %xmm4,(%rbx)
unpckhpd %xmm2,%xmm2
addsd  %xmm0,%xmm2
mulsd  0x8e4(%rip),%xmm2
movsd  %xmm2,0x8(%rbx)
unpckhpd %xmm0,%xmm0
movapd %xmm1,%xmm2
subsd  %xmm0,%xmm2
mulsd  %xmm3,%xmm2
jmp    17d4 <view1_parameter_define+0x6b4>
movapd %xmm2,%xmm4
subsd  %xmm3,%xmm4
mulsd  0x8dd(%rip),%xmm4
addsd  %xmm3,%xmm4
unpckhpd %xmm2,%xmm2
addsd  %xmm0,%xmm2
mulsd  0x8a9(%rip),%xmm2
movsd  %xmm4,(%rbx)
movsd  %xmm2,0x8(%rbx)
unpckhpd %xmm0,%xmm0
movapd %xmm1,%xmm2
subsd  %xmm0,%xmm2
mulsd  0x8b4(%rip),%xmm2
addsd  %xmm1,%xmm2
movsd  %xmm2,0x10(%rbx)
jmp    1815 <view1_parameter_define+0x6f5>
addsd  %xmm2,%xmm3
mulsd  0x875(%rip),%xmm3
movsd  %xmm3,(%rbx)
movapd %xmm2,%xmm3
unpckhpd %xmm0,%xmm3
unpcklpd %xmm1,%xmm0
subpd  %xmm3,%xmm0
shufpd $0x1,%xmm1,%xmm2
mulpd  0x824(%rip),%xmm0
addpd  %xmm2,%xmm0
movupd %xmm0,0x8(%rbx)
xorpd  %xmm0,%xmm0
movupd %xmm0,(%rax)
movabs $0x3ff0000000000000,%rcx
mov    %rcx,0x10(%rax)
add    $0x78,%rsp
pop    %rbx
pop    %r14
ret

LLVM IR (-O0):
define void @view1_parameter_define(i32 %0, i32 %1, i32 %2, double* %3, double* %4, i32 %5, double* %6, double* %7, double* %8) {
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca double*
%14 = alloca double*
%15 = alloca i32
%16 = alloca double*
%17 = alloca double*
%18 = alloca double*
%19 = alloca i32
%20 = alloca [3 x double]
%21 = alloca [3 x double]
%22 = alloca double
%23 = alloca double
%24 = alloca double
%25 = alloca double
%26 = alloca double
%27 = alloca double
%28 = alloca double
store i32 %0, i32* %10
store i32 %1, i32* %11
store i32 %2, i32* %12
store double* %3, double** %13
store double* %4, double** %14
store i32 %5, i32* %15
store double* %6, double** %16
store double* %7, double** %17
store double* %8, double** %18
store i32 0, i32* %19
br label %29
29: ; preds = %51, %9
%30 = load i32, i32* %19
%31 = icmp slt i32 %30, 3
br i1 %31, label %32, label %54
32: ; preds = %29
%33 = load double*, double** %18
%34 = load i32, i32* %19
%35 = mul nsw i32 %34, 2
%36 = sext i32 %35 to i64
%37 = getelementptr inbounds double, double* %33, i64 %36
%38 = load double, double* %37
%39 = load double*, double** %18
%40 = load i32, i32* %19
%41 = mul nsw i32 %40, 2
%42 = add nsw i32 %41, 1
%43 = sext i32 %42 to i64
%44 = getelementptr inbounds double, double* %39, i64 %43
%45 = load double, double* %44
%46 = fadd double %38, %45
%47 = fdiv double %46, 2.000000e+00
%48 = load i32, i32* %19
%49 = sext i32 %48 to i64
%50 = getelementptr inbounds [3 x double], [3 x double]* %20, i64 0, i64 %49
store double %47, double* %50
br label %51
51: ; preds = %32
%52 = load i32, i32* %19
%53 = add nsw i32 %52, 1
store i32 %53, i32* %19
br label %29
54: ; preds = %29
%55 = load i32, i32* %11
%56 = sitofp i32 %55 to double
%57 = fdiv double 0x401921FB4D12D84A, %56
store double %57, double* %22
%58 = load i32, i32* %12
%59 = icmp ne i32 %58, 0
br i1 %59, label %60, label %703
60: ; preds = %54
%61 = load i32, i32* %12
%62 = icmp eq i32 %61, 1
br i1 %62, label %63, label %138
63: ; preds = %60
%64 = load double*, double** %17
%65 = getelementptr inbounds double, double* %64, i64 0
store double 1.000000e+00, double* %65
%66 = load double*, double** %17
%67 = getelementptr inbounds double, double* %66, i64 1
store double 0.000000e+00, double* %67
%68 = load double*, double** %17
%69 = getelementptr inbounds double, double* %68, i64 2
store double 0.000000e+00, double* %69
store i32 0, i32* %19
br label %70
70: ; preds = %87, %63
%71 = load i32, i32* %19
%72 = icmp slt i32 %71, 3
br i1 %72, label %73, label %90
73: ; preds = %70
%74 = load double*, double** %13
%75 = load i32, i32* %19
%76 = sext i32 %75 to i64
%77 = getelementptr inbounds double, double* %74, i64 %76
%78 = load double, double* %77
%79 = load i32, i32* %19
%80 = sext i32 %79 to i64
%81 = getelementptr inbounds [3 x double], [3 x double]* %20, i64 0, i64 %80
%82 = load double, double* %81
%83 = fsub double %78, %82
%84 = load i32, i32* %19
%85 = sext i32 %84 to i64
%86 = getelementptr inbounds [3 x double], [3 x double]* %21, i64 0, i64 %85
store double %83, double* %86
br label %87
87: ; preds = %73
%88 = load i32, i32* %19
%89 = add nsw i32 %88, 1
store i32 %89, i32* %19
br label %70
90: ; preds = %70
%91 = getelementptr inbounds [3 x double], [3 x double]* %21, i64 0, i64 0
%92 = load double, double* %91
%93 = load double*, double** %13
%94 = getelementptr inbounds double, double* %93, i64 0
store double %92, double* %94
%95 = getelementptr inbounds [3 x double], [3 x double]* %21, i64 0, i64 1
%96 = load double, double* %95
%97 = load double, double* %22
%98 = call double @cos(double %97)
%99 = getelementptr inbounds [3 x double], [3 x double]* %21, i64 0, i64 2
%100 = load double, double* %99
%101 = load double, double* %22
%102 = call double @sin(double %101)
%103 = fmul double %100, %102
%104 = call double @llvm.fmuladd.f64(double %96, double %98, double %103)
%105 = load double*, double** %13
%106 = getelementptr inbounds double, double* %105, i64 1
store double %104, double* %106
%107 = getelementptr inbounds [3 x double], [3 x double]* %21, i64 0, i64 1
%108 = load double, double* %107
%109 = fneg double %108
%110 = load double, double* %22
%111 = call double @sin(double %110)
%112 = getelementptr inbounds [3 x double], [3 x double]* %21, i64 0, i64 2
%113 = load double, double* %112
%114 = load double, double* %22
%115 = call double @cos(double %114)
%116 = fmul double %113, %115
%117 = call double @llvm.fmuladd.f64(double %109, double %111, double %116)
%118 = load double*, double** %13
%119 = getelementptr inbounds double, double* %118, i64 2
store double %117, double* %119
store i32 0, i32* %19
br label %120
120: ; preds = %134, %90
%121 = load i32, i32* %19
%122 = icmp slt i32 %121, 3
br i1 %122, label %123, label %137
123: ; preds = %120
%124 = load i32, i32* %19
%125 = sext i32 %124 to i64
%126 = getelementptr inbounds [3 x double], [3 x double]* %20, i64 0, i64 %125
%127 = load double, double* %126
%128 = load double*, double** %13
%129 = load i32, i32* %19
%130 = sext i32 %129 to i64
%131 = getelementptr inbounds double, double* %128, i64 %130
%132 = load double, double* %131
%133 = fadd double %132, %127
store double %133, double* %131
br label %134
134: ; preds = %123
%135 = load i32, i32* %19
%136 = add nsw i32 %135, 1
store i32 %136, i32* %19
br label %120
137: ; preds = %120
br label %138
138: ; preds = %137, %60
%139 = load i32, i32* %12
%140 = icmp eq i32 %139, 2
br i1 %140, label %141, label %303
141: ; preds = %138
%142 = load double*, double** %17
%143 = getelementptr inbounds double, double* %142, i64 0
store double 0.000000e+00, double* %143
%144 = load double*, double** %17
%145 = getelementptr inbounds double, double* %144, i64 1
store double 1.000000e+00, double* %145
%146 = load double*, double** %17
%147 = getelementptr inbounds double, double* %146, i64 2
store double 0.000000e+00, double* %147
store i32 0, i32* %19
br label %148
148: ; preds = %165, %141
%149 = load i32, i32* %19
%150 = icmp slt i32 %149, 3
br i1 %150, label %151, label %168
151: ; preds = %148
%152 = load double*, double** %13
%153 = load i32, i32* %19
%154 = sext i32 %153 to i64
%155 = getelementptr inbounds double, double* %152, i64 %154
%156 = load double, double* %155
%157 = load i32, i32* %19
%158 = sext i32 %157 to i64
%159 = getelementptr inbounds [3 x double], [3 x double]* %20, i64 0, i64 %158
%160 = load double, double* %159
%161 = fsub double %156, %160
%162 = load i32, i32* %19
%163 = sext i32 %162 to i64
%164 = getelementptr inbounds [3 x double], [3 x double]* %21, i64 0, i64 %163
store double %161, double* %164
br label %165
165: ; preds = %151
%166 = load i32, i32* %19
%167 = add nsw i32 %166, 1
store i32 %167, i32* %19
br label %148
168: ; preds = %148
%169 = getelementptr inbounds [3 x double], [3 x double]* %21, i64 0, i64 0
%170 = load double, double* %169
%171 = load double, double* %22
%172 = call double @cos(double %171)
%173 = getelementptr inbounds [3 x double], [3 x double]* %21, i64 0, i64 2
%174 = load double, double* %173
%175 = load double, double* %22
%176 = call double @sin(double %175)
%177 = fmul double %174, %176
%178 = call double @llvm.fmuladd.f64(double %170, double %172, double %177)
%179 = load double*, double** %13
%180 = getelementptr inbounds double, double* %179, i64 0
store double %178, double* %180
%181 = getelementptr inbounds [3 x double], [3 x double]* %21, i64 0, i64 1
%182 = load double, double* %181
%183 = load double*, double** %13
%184 = getelementptr inbounds double, double* %183, i64 1
store double %182, double* %184
%185 = getelementptr inbounds [3 x double], [3 x double]* %21, i64 0, i64 0
%186 = load double, double* %185
%187 = fneg double %186
%188 = load double, double* %22
%189 = call double @sin(double %188)
%190 = getelementptr inbounds [3 x double], [3 x double]* %21, i64 0, i64 2
%191 = load double, double* %190
%192 = load double, double* %22
%193 = call double @cos(double %192)
%194 = fmul double %191, %193
%195 = call double @llvm.fmuladd.f64(double %187, double %189, double %194)
%196 = load double*, double** %13
%197 = getelementptr inbounds double, double* %196, i64 2
store double %195, double* %197
store i32 0, i32* %19
br label %198
198: ; preds = %212, %168
%199 = load i32, i32* %19
%200 = icmp slt i32 %199, 3
br i1 %200, label %201, label %215
201: ; preds = %198
%202 = load i32, i32* %19
%203 = sext i32 %202 to i64
%204 = getelementptr inbounds [3 x double], [3 x double]* %20, i64 0, i64 %203
%205 = load double, double* %204
%206 = load double*, double** %13
%207 = load i32, i32* %19
%208 = sext i32 %207 to i64
%209 = getelementptr inbounds double, double* %206, i64 %208
%210 = load double, double* %209
%211 = fadd double %210, %205
store double %211, double* %209
br label %212
212: ; preds = %201
%213 = load i32, i32* %19
%214 = add nsw i32 %213, 1
store i32 %214, i32* %19
br label %198
215: ; preds = %198
%216 = load double*, double** %14
%217 = getelementptr inbounds double, double* %216, i64 0
%218 = load double, double* %217
%219 = getelementptr inbounds [3 x double], [3 x double]* %20, i64 0, i64 0
%220 = load double, double* %219
%221 = fsub double %218, %220
%222 = call double @llvm.fabs.f64(double %221)
%223 = fcmp ogt double %222, 1.000000e-08
br i1 %223, label %233, label %224
224: ; preds = %215
%225 = load double*, double** %14
%226 = getelementptr inbounds double, double* %225, i64 2
%227 = load double, double* %226
%228 = getelementptr inbounds [3 x double], [3 x double]* %20, i64 0, i64 2
%229 = load double, double* %228
%230 = fsub double %227, %229
%231 = call double @llvm.fabs.f64(double %230)
%232 = fcmp ogt double %231, 1.000000e-08
br i1 %232, label %233, label %302
233: ; preds = %224, %215
store i32 0, i32* %19
br label %234
234: ; preds = %251, %233
%235 = load i32, i32* %19
%236 = icmp slt i32 %235, 3
br i1 %236, label %237, label %254
237: ; preds = %234
%238 = load double*, double** %14
%239 = load i32, i32* %19
%240 = sext i32 %239 to i64
%241 = getelementptr inbounds double, double* %238, i64 %240
%242 = load double, double* %241
%243 = load i32, i32* %19
%244 = sext i32 %243 to i64
%245 = getelementptr inbounds [3 x double], [3 x double]* %20, i64 0, i64 %244
%246 = load double, double* %245
%247 = fsub double %242, %246
%248 = load i32, i32* %19
%249 = sext i32 %248 to i64
%250 = getelementptr inbounds [3 x double], [3 x double]* %21, i64 0, i64 %249
store double %247, double* %250
br label %251
251: ; preds = %237
%252 = load i32, i32* %19
%253 = add nsw i32 %252, 1
store i32 %253, i32* %19
br label %234
254: ; preds = %234
%255 = getelementptr inbounds [3 x double], [3 x double]* %21, i64 0, i64 0
%256 = load double, double* %255
%257 = load double, double* %22
%258 = call double @cos(double %257)
%259 = getelementptr inbounds [3 x double], [3 x double]* %21, i64 0, i64 2
%260 = load double, double* %259
%261 = load double, double* %22
%262 = call double @sin(double %261)
%263 = fmul double %260, %262
%264 = call double @llvm.fmuladd.f64(double %256, double %258, double %263)
%265 = load double*, double** %14
%266 = getelementptr inbounds double, double* %265, i64 0
store double %264, double* %266
%267 = getelementptr inbounds [3 x double], [3 x double]* %21, i64 0, i64 1
%268 = load double, double* %267
%269 = load double*, double** %14
%270 = getelementptr inbounds double, double* %269, i64 1
store double %268, double* %270
%271 = getelementptr inbounds [3 x double], [3 x double]* %21, i64 0, i64 0
%272 = load double, double* %271
%273 = fneg double %272
%274 = load double, double* %22
%275 = call double @sin(double %274)
%276 = getelementptr inbounds [3 x double], [3 x double]* %21, i64 0, i64 2
%277 = load double, double* %276
%278 = load double, double* %22
%279 = call double @cos(double %278)
%280 = fmul double %277, %279
%281 = call double @llvm.fmuladd.f64(double %273, double %275, double %280)
%282 = load double*, double** %14
%283 = getelementptr inbounds double, double* %282, i64 2
store double %281, double* %283
store i32 0, i32* %19
br label %284
284: ; preds = %298, %254
%285 = load i32, i32* %19
%286 = icmp slt i32 %285, 3
br i1 %286, label %287, label %301
287: ; preds = %284
%288 = load i32, i32* %19
%289 = sext i32 %288 to i64
%290 = getelementptr inbounds [3 x double], [3 x double]* %20, i64 0, i64 %289
%291 = load double, double* %290
%292 = load double*, double** %14
%293 = load i32, i32* %19
%294 = sext i32 %293 to i64
%295 = getelementptr inbounds double, double* %292, i64 %294
%296 = load double, double* %295
%297 = fadd double %296, %291
store double %297, double* %295
br label %298
298: ; preds = %287
%299 = load i32, i32* %19
%300 = add nsw i32 %299, 1
store i32 %300, i32* %19
br label %284
301: ; preds = %284
br label %302
302: ; preds = %301, %224
br label %303
303: ; preds = %302, %138
%304 = load i32, i32* %12
%305 = icmp eq i32 %304, 3
br i1 %305, label %306, label %462
306: ; preds = %303
store i32 0, i32* %19
br label %307
307: ; preds = %324, %306
%308 = load i32, i32* %19
%309 = icmp slt i32 %308, 3
br i1 %309, label %310, label %327
310: ; preds = %307
%311 = load double*, double** %13
%312 = load i32, i32* %19
%313 = sext i32 %312 to i64
%314 = getelementptr inbounds double, double* %311, i64 %313
%315 = load double, double* %314
%316 = load i32, i32* %19
%317 = sext i32 %316 to i64
%318 = getelementptr inbounds [3 x double], [3 x double]* %20, i64 0, i64 %317
%319 = load double, double* %318
%320 = fsub double %315, %319
%321 = load i32, i32* %19
%322 = sext i32 %321 to i64
%323 = getelementptr inbounds [3 x double], [3 x double]* %21, i64 0, i64 %322
store double %320, double* %323
br label %324
324: ; preds = %310
%325 = load i32, i32* %19
%326 = add nsw i32 %325, 1
store i32 %326, i32* %19
br label %307
327: ; preds = %307
%328 = getelementptr inbounds [3 x double], [3 x double]* %21, i64 0, i64 0
%329 = load double, double* %328
%330 = load double, double* %22
%331 = call double @cos(double %330)
%332 = getelementptr inbounds [3 x double], [3 x double]* %21, i64 0, i64 1
%333 = load double, double* %332
%334 = load double, double* %22
%335 = call double @sin(double %334)
%336 = fmul double %333, %335
%337 = call double @llvm.fmuladd.f64(double %329, double %331, double %336)
%338 = load double*, double** %13
%339 = getelementptr inbounds double, double* %338, i64 0
store double %337, double* %339
%340 = getelementptr inbounds [3 x double], [3 x double]* %21, i64 0, i64 0
%341 = load double, double* %340
%342 = fneg double %341
%343 = load double, double* %22
%344 = call double @sin(double %343)
%345 = getelementptr inbounds [3 x double], [3 x double]* %21, i64 0, i64 1
%346 = load double, double* %345
%347 = load double, double* %22
%348 = call double @cos(double %347)
%349 = fmul double %346, %348
%350 = call double @llvm.fmuladd.f64(double %342, double %344, double %349)
%351 = load double*, double** %13
%352 = getelementptr inbounds double, double* %351, i64 1
store double %350, double* %352
%353 = getelementptr inbounds [3 x double], [3 x double]* %21, i64 0, i64 2
%354 = load double, double* %353
%355 = load double*, double** %13
%356 = getelementptr inbounds double, double* %355, i64 2
store double %354, double* %356
store i32 0, i32* %19
br label %357
357: ; preds = %371, %327
%358 = load i32, i32* %19
%359 = icmp slt i32 %358, 3
br i1 %359, label %360, label %374
360: ; preds = %357
%361 = load i32, i32* %19
%362 = sext i32 %361 to i64
%363 = getelementptr inbounds [3 x double], [3 x double]* %20, i64 0, i64 %362
%364 = load double, double* %363
%365 = load double*, double** %13
%366 = load i32, i32* %19
%367 = sext i32 %366 to i64
%368 = getelementptr inbounds double, double* %365, i64 %367
%369 = load double, double* %368
%370 = fadd double %369, %364
store double %370, double* %368
br label %371
371: ; preds = %360
%372 = load i32, i32* %19
%373 = add nsw i32 %372, 1
store i32 %373, i32* %19
br label %357
374: ; preds = %357
%375 = load double*, double** %14
%376 = getelementptr inbounds double, double* %375, i64 0
%377 = load double, double* %376
%378 = getelementptr inbounds [3 x double], [3 x double]* %20, i64 0, i64 0
%379 = load double, double* %378
%380 = fsub double %377, %379
%381 = call double @llvm.fabs.f64(double %380)
%382 = fcmp ogt double %381, 1.000000e-08
br i1 %382, label %392, label %383
383: ; preds = %374
%384 = load double*, double** %14
%385 = getelementptr inbounds double, double* %384, i64 1
%386 = load double, double* %385
%387 = getelementptr inbounds [3 x double], [3 x double]* %20, i64 0, i64 1
%388 = load double, double* %387
%389 = fsub double %386, %388
%390 = call double @llvm.fabs.f64(double %389)
%391 = fcmp ogt double %390, 1.000000e-08
br i1 %391, label %392, label %461
392: ; preds = %383, %374
store i32 0, i32* %19
br label %393
393: ; preds = %410, %392
%394 = load i32, i32* %19
%395 = icmp slt i32 %394, 3
br i1 %395, label %396, label %413
396: ; preds = %393
%397 = load double*, double** %14
%398 = load i32, i32* %19
%399 = sext i32 %398 to i64
%400 = getelementptr inbounds double, double* %397, i64 %399
%401 = load double, double* %400
%402 = load i32, i32* %19
%403 = sext i32 %402 to i64
%404 = getelementptr inbounds [3 x double], [3 x double]* %20, i64 0, i64 %403
%405 = load double, double* %404
%406 = fsub double %401, %405
%407 = load i32, i32* %19
%408 = sext i32 %407 to i64
%409 = getelementptr inbounds [3 x double], [3 x double]* %21, i64 0, i64 %408
store double %406, double* %409
br label %410
410: ; preds = %396
%411 = load i32, i32* %19
%412 = add nsw i32 %411, 1
store i32 %412, i32* %19
br label %393
413: ; preds = %393
%414 = getelementptr inbounds [3 x double], [3 x double]* %21, i64 0, i64 0
%415 = load double, double* %414
%416 = load double, double* %22
%417 = call double @cos(double %416)
%418 = getelementptr inbounds [3 x double], [3 x double]* %21, i64 0, i64 1
%419 = load double, double* %418
%420 = load double, double* %22
%421 = call double @sin(double %420)
%422 = fmul double %419, %421
%423 = call double @llvm.fmuladd.f64(double %415, double %417, double %422)
%424 = load double*, double** %14
%425 = getelementptr inbounds double, double* %424, i64 0
store double %423, double* %425
%426 = getelementptr inbounds [3 x double], [3 x double]* %21, i64 0, i64 0
%427 = load double, double* %426
%428 = fneg double %427
%429 = load double, double* %22
%430 = call double @sin(double %429)
%431 = getelementptr inbounds [3 x double], [3 x double]* %21, i64 0, i64 1
%432 = load double, double* %431
%433 = load double, double* %22
%434 = call double @cos(double %433)
%435 = fmul double %432, %434
%436 = call double @llvm.fmuladd.f64(double %428, double %430, double %435)
%437 = load double*, double** %14
%438 = getelementptr inbounds double, double* %437, i64 1
store double %436, double* %438
%439 = getelementptr inbounds [3 x double], [3 x double]* %21, i64 0, i64 2
%440 = load double, double* %439
%441 = load double*, double** %14
%442 = getelementptr inbounds double, double* %441, i64 2
store double %440, double* %442
store i32 0, i32* %19
br label %443
443: ; preds = %457, %413
%444 = load i32, i32* %19
%445 = icmp slt i32 %444, 3
br i1 %445, label %446, label %460
446: ; preds = %443
%447 = load i32, i32* %19
%448 = sext i32 %447 to i64
%449 = getelementptr inbounds [3 x double], [3 x double]* %20, i64 0, i64 %448
%450 = load double, double* %449
%451 = load double*, double** %14
%452 = load i32, i32* %19
%453 = sext i32 %452 to i64
%454 = getelementptr inbounds double, double* %451, i64 %453
%455 = load double, double* %454
%456 = fadd double %455, %450
store double %456, double* %454
br label %457
457: ; preds = %446
%458 = load i32, i32* %19
%459 = add nsw i32 %458, 1
store i32 %459, i32* %19
br label %443
460: ; preds = %443
br label %461
461: ; preds = %460, %383
br label %462
462: ; preds = %461, %303
%463 = load i32, i32* %12
%464 = icmp eq i32 %463, 4
br i1 %464, label %465, label %702
465: ; preds = %462
%466 = load i32, i32* %10
%467 = icmp sgt i32 %466, 0
br i1 %467, label %468, label %701
468: ; preds = %465
%469 = load double*, double** %18
%470 = getelementptr inbounds double, double* %469, i64 0
%471 = load double, double* %470
store double %471, double* %23
%472 = load double*, double** %18
%473 = getelementptr inbounds double, double* %472, i64 1
%474 = load double, double* %473
store double %474, double* %24
%475 = load double*, double** %18
%476 = getelementptr inbounds double, double* %475, i64 2
%477 = load double, double* %476
store double %477, double* %25
%478 = load double*, double** %18
%479 = getelementptr inbounds double, double* %478, i64 3
%480 = load double, double* %479
store double %480, double* %26
%481 = load double*, double** %18
%482 = getelementptr inbounds double, double* %481, i64 4
%483 = load double, double* %482
store double %483, double* %27
%484 = load double*, double** %18
%485 = getelementptr inbounds double, double* %484, i64 5
%486 = load double, double* %485
store double %486, double* %28
%487 = load i32, i32* %10
%488 = icmp eq i32 %487, 1
br i1 %488, label %489, label %516
489: ; preds = %468
%490 = load double, double* %23
%491 = load double, double* %24
%492 = fadd double %490, %491
%493 = fdiv double %492, 2.000000e+00
%494 = load double*, double** %13
%495 = getelementptr inbounds double, double* %494, i64 0
store double %493, double* %495
%496 = load double, double* %26
%497 = load double, double* %26
%498 = load double, double* %25
%499 = fsub double %497, %498
%500 = call double @llvm.fmuladd.f64(double 1.500000e+00, double %499, double %496)
%501 = load double*, double** %13
%502 = getelementptr inbounds double, double* %501, i64 1
store double %500, double* %502
%503 = load double, double* %28
%504 = load double, double* %28
%505 = load double, double* %27
%506 = fsub double %504, %505
%507 = call double @llvm.fmuladd.f64(double 1.500000e+00, double %506, double %503)
%508 = load double*, double** %13
%509 = getelementptr inbounds double, double* %508, i64 2
store double %507, double* %509
%510 = load double*, double** %17
%511 = getelementptr inbounds double, double* %510, i64 0
store double 0.000000e+00, double* %511
%512 = load double*, double** %17
%513 = getelementptr inbounds double, double* %512, i64 1
store double 0.000000e+00, double* %513
%514 = load double*, double** %17
%515 = getelementptr inbounds double, double* %514, i64 2
store double 1.000000e+00, double* %515
br label %700
516: ; preds = %468
%517 = load i32, i32* %10
%518 = icmp eq i32 %517, 2
br i1 %518, label %519, label %545
519: ; preds = %516
%520 = load double, double* %23
%521 = load double, double* %24
%522 = fadd double %520, %521
%523 = fdiv double %522, 2.000000e+00
%524 = load double*, double** %13
%525 = getelementptr inbounds double, double* %524, i64 0
store double %523, double* %525
%526 = load double, double* %26
%527 = load double, double* %26
%528 = load double, double* %25
%529 = fsub double %527, %528
%530 = call double @llvm.fmuladd.f64(double 1.500000e+00, double %529, double %526)
%531 = load double*, double** %13
%532 = getelementptr inbounds double, double* %531, i64 1
store double %530, double* %532
%533 = load double, double* %28
%534 = load double, double* %27
%535 = fadd double %533, %534
%536 = fdiv double %535, 2.000000e+00
%537 = load double*, double** %13
%538 = getelementptr inbounds double, double* %537, i64 2
store double %536, double* %538
%539 = load double*, double** %17
%540 = getelementptr inbounds double, double* %539, i64 0
store double 0.000000e+00, double* %540
%541 = load double*, double** %17
%542 = getelementptr inbounds double, double* %541, i64 1
store double 0.000000e+00, double* %542
%543 = load double*, double** %17
%544 = getelementptr inbounds double, double* %543, i64 2
store double 1.000000e+00, double* %544
br label %699
545: ; preds = %516
%546 = load i32, i32* %10
%547 = icmp eq i32 %546, 3
br i1 %547, label %548, label %575
548: ; preds = %545
%549 = load double, double* %23
%550 = load double, double* %24
%551 = fadd double %549, %550
%552 = fdiv double %551, 2.000000e+00
%553 = load double*, double** %13
%554 = getelementptr inbounds double, double* %553, i64 0
store double %552, double* %554
%555 = load double, double* %26
%556 = load double, double* %26
%557 = load double, double* %25
%558 = fsub double %556, %557
%559 = call double @llvm.fmuladd.f64(double 1.500000e+00, double %558, double %555)
%560 = load double*, double** %13
%561 = getelementptr inbounds double, double* %560, i64 1
store double %559, double* %561
%562 = load double, double* %27
%563 = load double, double* %28
%564 = load double, double* %27
%565 = fsub double %563, %564
%566 = call double @llvm.fmuladd.f64(double -1.500000e+00, double %565, double %562)
%567 = load double*, double** %13
%568 = getelementptr inbounds double, double* %567, i64 2
store double %566, double* %568
%569 = load double*, double** %17
%570 = getelementptr inbounds double, double* %569, i64 0
store double 0.000000e+00, double* %570
%571 = load double*, double** %17
%572 = getelementptr inbounds double, double* %571, i64 1
store double 0.000000e+00, double* %572
%573 = load double*, double** %17
%574 = getelementptr inbounds double, double* %573, i64 2
store double 1.000000e+00, double* %574
br label %698
575: ; preds = %545
%576 = load i32, i32* %10
%577 = icmp eq i32 %576, 4
br i1 %577, label %578, label %604
578: ; preds = %575
%579 = load double, double* %23
%580 = load double, double* %24
%581 = fadd double %579, %580
%582 = fdiv double %581, 2.000000e+00
%583 = load double*, double** %13
%584 = getelementptr inbounds double, double* %583, i64 0
store double %582, double* %584
%585 = load double, double* %26
%586 = load double, double* %25
%587 = fadd double %585, %586
%588 = fmul double 5.000000e-01, %587
%589 = load double*, double** %13
%590 = getelementptr inbounds double, double* %589, i64 1
store double %588, double* %590
%591 = load double, double* %28
%592 = load double, double* %28
%593 = load double, double* %27
%594 = fsub double %592, %593
%595 = call double @llvm.fmuladd.f64(double 1.500000e+00, double %594, double %591)
%596 = load double*, double** %13
%597 = getelementptr inbounds double, double* %596, i64 2
store double %595, double* %597
%598 = load double*, double** %17
%599 = getelementptr inbounds double, double* %598, i64 0
store double 0.000000e+00, double* %599
%600 = load double*, double** %17
%601 = getelementptr inbounds double, double* %600, i64 1
store double -1.000000e+00, double* %601
%602 = load double*, double** %17
%603 = getelementptr inbounds double, double* %602, i64 2
store double 0.000000e+00, double* %603
br label %697
604: ; preds = %575
%605 = load i32, i32* %10
%606 = icmp eq i32 %605, 5
br i1 %606, label %607, label %634
607: ; preds = %604
%608 = load double, double* %24
%609 = load double, double* %24
%610 = load double, double* %23
%611 = fsub double %609, %610
%612 = call double @llvm.fmuladd.f64(double 1.500000e+00, double %611, double %608)
%613 = load double*, double** %13
%614 = getelementptr inbounds double, double* %613, i64 0
store double %612, double* %614
%615 = load double, double* %26
%616 = load double, double* %25
%617 = fadd double %615, %616
%618 = fmul double 5.000000e-01, %617
%619 = load double*, double** %13
%620 = getelementptr inbounds double, double* %619, i64 1
store double %618, double* %620
%621 = load double, double* %28
%622 = load double, double* %28
%623 = load double, double* %27
%624 = fsub double %622, %623
%625 = call double @llvm.fmuladd.f64(double 1.500000e+00, double %624, double %621)
%626 = load double*, double** %13
%627 = getelementptr inbounds double, double* %626, i64 2
store double %625, double* %627
%628 = load double*, double** %17
%629 = getelementptr inbounds double, double* %628, i64 0
store double 0.000000e+00, double* %629
%630 = load double*, double** %17
%631 = getelementptr inbounds double, double* %630, i64 1
store double 0.000000e+00, double* %631
%632 = load double*, double** %17
%633 = getelementptr inbounds double, double* %632, i64 2
store double 1.000000e+00, double* %633
br label %696
634: ; preds = %604
%635 = load i32, i32* %10
%636 = icmp eq i32 %635, 6
br i1 %636, label %637, label %664
637: ; preds = %634
%638 = load double, double* %23
%639 = load double, double* %24
%640 = load double, double* %23
%641 = fsub double %639, %640
%642 = call double @llvm.fmuladd.f64(double -1.500000e+00, double %641, double %638)
%643 = load double*, double** %13
%644 = getelementptr inbounds double, double* %643, i64 0
store double %642, double* %644
%645 = load double, double* %26
%646 = load double, double* %25
%647 = fadd double %645, %646
%648 = fmul double 5.000000e-01, %647
%649 = load double*, double** %13
%650 = getelementptr inbounds double, double* %649, i64 1
store double %648, double* %650
%651 = load double, double* %28
%652 = load double, double* %28
%653 = load double, double* %27
%654 = fsub double %652, %653
%655 = call double @llvm.fmuladd.f64(double 1.500000e+00, double %654, double %651)
%656 = load double*, double** %13
%657 = getelementptr inbounds double, double* %656, i64 2
store double %655, double* %657
%658 = load double*, double** %17
%659 = getelementptr inbounds double, double* %658, i64 0
store double 0.000000e+00, double* %659
%660 = load double*, double** %17
%661 = getelementptr inbounds double, double* %660, i64 1
store double 0.000000e+00, double* %661
%662 = load double*, double** %17
%663 = getelementptr inbounds double, double* %662, i64 2
store double 1.000000e+00, double* %663
br label %695
664: ; preds = %634
%665 = load i32, i32* %10
%666 = icmp eq i32 %665, 7
br i1 %666, label %667, label %694
667: ; preds = %664
%668 = load double, double* %24
%669 = load double, double* %23
%670 = fadd double %668, %669
%671 = fdiv double %670, 2.000000e+00
%672 = load double*, double** %13
%673 = getelementptr inbounds double, double* %672, i64 0
store double %671, double* %673
%674 = load double, double* %25
%675 = load double, double* %26
%676 = load double, double* %25
%677 = fsub double %675, %676
%678 = call double @llvm.fmuladd.f64(double -1.500000e+00, double %677, double %674)
%679 = load double*, double** %13
%680 = getelementptr inbounds double, double* %679, i64 1
store double %678, double* %680
%681 = load double, double* %28
%682 = load double, double* %28
%683 = load double, double* %27
%684 = fsub double %682, %683
%685 = call double @llvm.fmuladd.f64(double 1.500000e+00, double %684, double %681)
%686 = load double*, double** %13
%687 = getelementptr inbounds double, double* %686, i64 2
store double %685, double* %687
%688 = load double*, double** %17
%689 = getelementptr inbounds double, double* %688, i64 0
store double 0.000000e+00, double* %689
%690 = load double*, double** %17
%691 = getelementptr inbounds double, double* %690, i64 1
store double 0.000000e+00, double* %691
%692 = load double*, double** %17
%693 = getelementptr inbounds double, double* %692, i64 2
store double 1.000000e+00, double* %693
br label %694
694: ; preds = %667, %664
br label %695
695: ; preds = %694, %637
br label %696
696: ; preds = %695, %607
br label %697
697: ; preds = %696, %578
br label %698
698: ; preds = %697, %548
br label %699
699: ; preds = %698, %519
br label %700
700: ; preds = %699, %489
br label %701
701: ; preds = %700, %465
br label %702
702: ; preds = %701, %462
br label %703
703: ; preds = %702, %54
ret void
}

LLVM IR (-O2):
define void @view1_parameter_define(i32 %0, i32 %1, i32 %2, double* %3, double* nocapture %4, i32 %5, double* nocapture readnone %6, double* writeonly %7, double* nocapture %8) {
%10 = load double, double* %8
%11 = getelementptr inbounds double, double* %8, i64 1
%12 = bitcast double* %11 to <2 x double>*
%13 = load <2 x double>, <2 x double>* %12
%14 = getelementptr inbounds double, double* %8, i64 3
%15 = load double, double* %14
%16 = insertelement <2 x double> poison, double %10, i64 0
%17 = insertelement <2 x double> %16, double %15, i64 1
%18 = fadd <2 x double> %13, %17
%19 = fmul <2 x double> %18, <double 5.000000e-01, double 5.000000e-01>
%20 = getelementptr inbounds double, double* %8, i64 4
%21 = load double, double* %20
%22 = getelementptr inbounds double, double* %8, i64 5
%23 = load double, double* %22
%24 = fadd double %21, %23
%25 = fmul double %24, 5.000000e-01
%26 = sitofp i32 %1 to double
%27 = fdiv double 0x401921FB4D12D84A, %26
switch i32 %2, label %166 [
i32 0, label %273
i32 1, label %28
i32 2, label %55
i32 3, label %111
]
28: ; preds = %9
store double 1.000000e+00, double* %7
%29 = getelementptr inbounds double, double* %7, i64 1
%30 = bitcast double* %29 to i8*
%31 = load double, double* %3
%32 = extractelement <2 x double> %19, i64 0
%33 = fsub double %31, %32
%34 = getelementptr inbounds double, double* %3, i64 1
%35 = load double, double* %34
%36 = extractelement <2 x double> %19, i64 1
%37 = fsub double %35, %36
%38 = getelementptr inbounds double, double* %3, i64 2
%39 = load double, double* %38
%40 = fsub double %39, %25
store double %33, double* %3
%41 = tail call double @cos(double %27)
%42 = tail call double @sin(double %27)
%43 = fmul double %40, %42
%44 = tail call double @llvm.fmuladd.f64(double %37, double %41, double %43)
store double %44, double* %34
%45 = fneg double %37
%46 = tail call double @sin(double %27)
%47 = tail call double @cos(double %27)
%48 = fmul double %40, %47
%49 = tail call double @llvm.fmuladd.f64(double %45, double %46, double %48)
%50 = bitcast double* %3 to <2 x double>*
%51 = load <2 x double>, <2 x double>* %50
%52 = fadd <2 x double> %19, %51
%53 = bitcast double* %3 to <2 x double>*
store <2 x double> %52, <2 x double>* %53
%54 = fadd double %25, %49
store double %54, double* %38
br label %273
55: ; preds = %9
%56 = bitcast double* %7 to <2 x double>*
store <2 x double> <double 0.000000e+00, double 1.000000e+00>, <2 x double>* %56
%57 = getelementptr inbounds double, double* %7, i64 2
store double 0.000000e+00, double* %57
%58 = load double, double* %3
%59 = extractelement <2 x double> %19, i64 0
%60 = fsub double %58, %59
%61 = getelementptr inbounds double, double* %3, i64 1
%62 = load double, double* %61
%63 = extractelement <2 x double> %19, i64 1
%64 = fsub double %62, %63
%65 = getelementptr inbounds double, double* %3, i64 2
%66 = load double, double* %65
%67 = fsub double %66, %25
%68 = tail call double @cos(double %27)
%69 = tail call double @sin(double %27)
%70 = fmul double %67, %69
%71 = tail call double @llvm.fmuladd.f64(double %60, double %68, double %70)
store double %71, double* %3
store double %64, double* %61
%72 = fneg double %60
%73 = tail call double @sin(double %27)
%74 = tail call double @cos(double %27)
%75 = fmul double %67, %74
%76 = tail call double @llvm.fmuladd.f64(double %72, double %73, double %75)
%77 = bitcast double* %3 to <2 x double>*
%78 = load <2 x double>, <2 x double>* %77
%79 = fadd <2 x double> %19, %78
%80 = bitcast double* %3 to <2 x double>*
store <2 x double> %79, <2 x double>* %80
%81 = fadd double %25, %76
store double %81, double* %65
%82 = load double, double* %4
%83 = fsub double %82, %59
%84 = tail call double @llvm.fabs.f64(double %83)
%85 = fcmp ogt double %84, 1.000000e-08
%86 = getelementptr inbounds double, double* %4, i64 2
%87 = load double, double* %86
%88 = fsub double %87, %25
%89 = tail call double @llvm.fabs.f64(double %88)
%90 = fcmp ogt double %89, 1.000000e-08
%91 = select i1 %85, i1 true, i1 %90
br i1 %91, label %92, label %273
92: ; preds = %55
%93 = getelementptr inbounds double, double* %4, i64 1
%94 = load double, double* %93
%95 = fsub double %94, %63
%96 = getelementptr inbounds double, double* %4, i64 2
%97 = tail call double @cos(double %27)
%98 = tail call double @sin(double %27)
%99 = fmul double %88, %98
%100 = tail call double @llvm.fmuladd.f64(double %83, double %97, double %99)
store double %100, double* %4
store double %95, double* %93
%101 = fneg double %83
%102 = tail call double @sin(double %27)
%103 = tail call double @cos(double %27)
%104 = fmul double %88, %103
%105 = tail call double @llvm.fmuladd.f64(double %101, double %102, double %104)
%106 = bitcast double* %4 to <2 x double>*
%107 = load <2 x double>, <2 x double>* %106
%108 = fadd <2 x double> %19, %107
%109 = bitcast double* %4 to <2 x double>*
store <2 x double> %108, <2 x double>* %109
%110 = fadd double %25, %105
store double %110, double* %96
br label %273
111: ; preds = %9
%112 = load double, double* %3
%113 = extractelement <2 x double> %19, i64 0
%114 = fsub double %112, %113
%115 = getelementptr inbounds double, double* %3, i64 1
%116 = load double, double* %115
%117 = extractelement <2 x double> %19, i64 1
%118 = fsub double %116, %117
%119 = getelementptr inbounds double, double* %3, i64 2
%120 = load double, double* %119
%121 = fsub double %120, %25
%122 = tail call double @cos(double %27)
%123 = tail call double @sin(double %27)
%124 = fmul double %118, %123
%125 = tail call double @llvm.fmuladd.f64(double %114, double %122, double %124)
store double %125, double* %3
%126 = fneg double %114
%127 = tail call double @sin(double %27)
%128 = tail call double @cos(double %27)
%129 = fmul double %118, %128
%130 = tail call double @llvm.fmuladd.f64(double %126, double %127, double %129)
%131 = load double, double* %3
%132 = insertelement <2 x double> poison, double %131, i64 0
%133 = insertelement <2 x double> %132, double %130, i64 1
%134 = fadd <2 x double> %19, %133
%135 = bitcast double* %3 to <2 x double>*
store <2 x double> %134, <2 x double>* %135
%136 = fadd double %25, %121
store double %136, double* %119
%137 = bitcast double* %4 to <2 x double>*
%138 = load <2 x double>, <2 x double>* %137
%139 = fsub <2 x double> %138, %19
%140 = call <2 x double> @llvm.fabs.v2f64(<2 x double> %139)
%141 = fcmp ogt <2 x double> %140, <double 1.000000e-08, double 1.000000e-08>
%142 = extractelement <2 x i1> %141, i64 0
%143 = extractelement <2 x i1> %141, i64 1
%144 = select i1 %142, i1 true, i1 %143
br i1 %144, label %145, label %273
145: ; preds = %111
%146 = getelementptr inbounds double, double* %4, i64 2
%147 = load double, double* %146
%148 = fsub double %147, %25
%149 = tail call double @cos(double %27)
%150 = tail call double @sin(double %27)
%151 = extractelement <2 x double> %139, i64 1
%152 = fmul double %151, %150
%153 = extractelement <2 x double> %139, i64 0
%154 = tail call double @llvm.fmuladd.f64(double %153, double %149, double %152)
store double %154, double* %4
%155 = fneg double %153
%156 = tail call double @sin(double %27)
%157 = tail call double @cos(double %27)
%158 = fmul double %151, %157
%159 = tail call double @llvm.fmuladd.f64(double %155, double %156, double %158)
%160 = load double, double* %4
%161 = insertelement <2 x double> poison, double %160, i64 0
%162 = insertelement <2 x double> %161, double %159, i64 1
%163 = fadd <2 x double> %19, %162
%164 = bitcast double* %4 to <2 x double>*
store <2 x double> %163, <2 x double>* %164
%165 = fadd double %25, %148
store double %165, double* %146
br label %273
166: ; preds = %9
%167 = icmp eq i32 %2, 4
%168 = icmp sgt i32 %0, 0
%169 = and i1 %168, %167
br i1 %169, label %170, label %273
170: ; preds = %166
%171 = load double, double* %8
%172 = bitcast double* %11 to <2 x double>*
%173 = load <2 x double>, <2 x double>* %172
%174 = bitcast double* %14 to <2 x double>*
%175 = load <2 x double>, <2 x double>* %174
%176 = load double, double* %22
switch i32 %0, label %273 [
i32 1, label %177
i32 2, label %189
i32 3, label %205
i32 4, label %217
i32 5, label %229
i32 6, label %244
i32 7, label %259
]
177: ; preds = %170
%178 = extractelement <2 x double> %173, i64 0
%179 = fadd double %171, %178
%180 = fmul double %179, 5.000000e-01
store double %180, double* %3
%181 = getelementptr inbounds double, double* %3, i64 1
%182 = insertelement <2 x double> %175, double %176, i64 1
%183 = shufflevector <2 x double> %173, <2 x double> %175, <2 x i32> <i32 1, i32 3>
%184 = fsub <2 x double> %182, %183
%185 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %184, <2 x double> <double 1.500000e+00, double 1.500000e+00>, <2 x double> %182)
%186 = bitcast double* %181 to <2 x double>*
store <2 x double> %185, <2 x double>* %186
%187 = getelementptr inbounds double, double* %7, i64 2
%188 = bitcast double* %7 to i8*
store double 1.000000e+00, double* %187
br label %273
189: ; preds = %170
%190 = extractelement <2 x double> %173, i64 0
%191 = fadd double %171, %190
%192 = fmul double %191, 5.000000e-01
store double %192, double* %3
%193 = extractelement <2 x double> %175, i64 0
%194 = shufflevector <2 x double> %173, <2 x double> poison, <2 x i32> <i32 1, i32 undef>
%195 = fsub <2 x double> %175, %194
%196 = extractelement <2 x double> %195, i64 0
%197 = tail call double @llvm.fmuladd.f64(double %196, double 1.500000e+00, double %193)
%198 = getelementptr inbounds double, double* %3, i64 1
store double %197, double* %198
%199 = extractelement <2 x double> %175, i64 1
%200 = fadd double %199, %176
%201 = fmul double %200, 5.000000e-01
%202 = getelementptr inbounds double, double* %3, i64 2
store double %201, double* %202
%203 = getelementptr inbounds double, double* %7, i64 2
%204 = bitcast double* %7 to i8*
store double 1.000000e+00, double* %203
br label %273
205: ; preds = %170
%206 = extractelement <2 x double> %173, i64 0
%207 = fadd double %171, %206
%208 = fmul double %207, 5.000000e-01
store double %208, double* %3
%209 = getelementptr inbounds double, double* %3, i64 1
%210 = insertelement <2 x double> %175, double %176, i64 1
%211 = shufflevector <2 x double> %173, <2 x double> %175, <2 x i32> <i32 1, i32 3>
%212 = fsub <2 x double> %210, %211
%213 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %212, <2 x double> <double 1.500000e+00, double -1.500000e+00>, <2 x double> %175)
%214 = bitcast double* %209 to <2 x double>*
store <2 x double> %213, <2 x double>* %214
%215 = getelementptr inbounds double, double* %7, i64 2
%216 = bitcast double* %7 to i8*
store double 1.000000e+00, double* %215
br label %273
217: ; preds = %170
%218 = insertelement <2 x double> poison, double %171, i64 0
%219 = shufflevector <2 x double> %218, <2 x double> %175, <2 x i32> <i32 0, i32 2>
%220 = fadd <2 x double> %173, %219
%221 = fmul <2 x double> %220, <double 5.000000e-01, double 5.000000e-01>
%222 = bitcast double* %3 to <2 x double>*
store <2 x double> %221, <2 x double>* %222
%223 = extractelement <2 x double> %175, i64 1
%224 = fsub double %176, %223
%225 = tail call double @llvm.fmuladd.f64(double %224, double 1.500000e+00, double %176)
%226 = getelementptr inbounds double, double* %3, i64 2
store double %225, double* %226
%227 = bitcast double* %7 to <2 x double>*
store <2 x double> <double 0.000000e+00, double -1.000000e+00>, <2 x double>* %227
%228 = getelementptr inbounds double, double* %7, i64 2
store double 0.000000e+00, double* %228
br label %273
229: ; preds = %170
%230 = extractelement <2 x double> %173, i64 0
%231 = fsub double %230, %171
%232 = tail call double @llvm.fmuladd.f64(double %231, double 1.500000e+00, double %230)
store double %232, double* %3
%233 = shufflevector <2 x double> %173, <2 x double> poison, <2 x i32> <i32 1, i32 undef>
%234 = fadd <2 x double> %233, %175
%235 = extractelement <2 x double> %234, i64 0
%236 = fmul double %235, 5.000000e-01
%237 = getelementptr inbounds double, double* %3, i64 1
store double %236, double* %237
%238 = extractelement <2 x double> %175, i64 1
%239 = fsub double %176, %238
%240 = tail call double @llvm.fmuladd.f64(double %239, double 1.500000e+00, double %176)
%241 = getelementptr inbounds double, double* %3, i64 2
store double %240, double* %241
%242 = getelementptr inbounds double, double* %7, i64 2
%243 = bitcast double* %7 to i8*
store double 1.000000e+00, double* %242
br label %273
244: ; preds = %170
%245 = extractelement <2 x double> %173, i64 0
%246 = fsub double %245, %171
%247 = tail call double @llvm.fmuladd.f64(double %246, double -1.500000e+00, double %171)
store double %247, double* %3
%248 = shufflevector <2 x double> %173, <2 x double> poison, <2 x i32> <i32 1, i32 undef>
%249 = fadd <2 x double> %248, %175
%250 = extractelement <2 x double> %249, i64 0
%251 = fmul double %250, 5.000000e-01
%252 = getelementptr inbounds double, double* %3, i64 1
store double %251, double* %252
%253 = extractelement <2 x double> %175, i64 1
%254 = fsub double %176, %253
%255 = tail call double @llvm.fmuladd.f64(double %254, double 1.500000e+00, double %176)
%256 = getelementptr inbounds double, double* %3, i64 2
store double %255, double* %256
%257 = getelementptr inbounds double, double* %7, i64 2
%258 = bitcast double* %7 to i8*
store double 1.000000e+00, double* %257
br label %273
259: ; preds = %170
%260 = extractelement <2 x double> %173, i64 0
%261 = fadd double %171, %260
%262 = fmul double %261, 5.000000e-01
store double %262, double* %3
%263 = getelementptr inbounds double, double* %3, i64 1
%264 = insertelement <2 x double> %175, double %176, i64 1
%265 = shufflevector <2 x double> %173, <2 x double> undef, <2 x i32> <i32 1, i32 undef>
%266 = shufflevector <2 x double> %265, <2 x double> %175, <2 x i32> <i32 0, i32 3>
%267 = fsub <2 x double> %264, %266
%268 = insertelement <2 x double> %265, double %176, i64 1
%269 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %267, <2 x double> <double -1.500000e+00, double 1.500000e+00>, <2 x double> %268)
%270 = bitcast double* %263 to <2 x double>*
store <2 x double> %269, <2 x double>* %270
%271 = getelementptr inbounds double, double* %7, i64 2
%272 = bitcast double* %7 to i8*
store double 1.000000e+00, double* %271
br label %273
273: ; preds = %111, %55, %145, %28, %92, %170, %9, %166, %177, %205, %229, %259, %244, %217, %189
ret void
}