// File: /workspace/github_cpp_makefile_star2_O1/tomfunkhouser[P]gaps/apps/prpview/prpview.cpp
// Function: GLUTRedraw()
void GLUTRedraw(void)
{
  // Set viewing transformation
  viewer->Camera().Load();

  // Clear window 
  glClearColor(1, 1, 1, 1);
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

  // Set backface culling
  if (show_backfacing) glDisable(GL_CULL_FACE);
  else glEnable(GL_CULL_FACE);

  // Set overhead light
  static GLfloat light2_position[] = { 3.0, 4.0, 5.0, 0.0 };
  glLightfv(GL_LIGHT2, GL_POSITION, light2_position);
  // glEnable(GL_LIGHT2);

  // Draw faces
  if (show_faces) {
    if (show_values) {
      glEnable(GL_LIGHTING);
      glEnable(GL_POLYGON_OFFSET_FILL);
      glPolygonOffset(2, 1);
      RNGrfxBegin(RN_GRFX_TRIANGLES);
      for (int i = 0; i < mesh->NFaces(); i++) {
        R3MeshFace *face = mesh->Face(i);
        for (int j = 0; j < 3; j++) {
          R3MeshVertex *vertex = mesh->VertexOnFace(face, j);
          RNLoadRgb(NormalizedColor(vertex));
          R3LoadNormal(mesh->VertexNormal(vertex));
          R3LoadPoint(mesh->VertexPosition(vertex));
        }
      }
      RNGrfxEnd();
      glDisable(GL_POLYGON_OFFSET_FILL);
    }
    else {
      glEnable(GL_LIGHTING);
      RNLoadRgb(0.8, 0.8, 0.8);
      RNGrfxBegin(RN_GRFX_TRIANGLES);
      for (int i = 0; i < mesh->NFaces(); i++) {
        R3MeshFace *face = mesh->Face(i);
        R3LoadNormal(mesh->FaceNormal(face));
        for (int j = 0; j < 3; j++) {
          R3MeshVertex *vertex = mesh->VertexOnFace(face, j);
          R3LoadNormal(mesh->VertexNormal(vertex));
          R3LoadPoint(mesh->VertexPosition(vertex));
        }
      }
      RNGrfxEnd();
    }
  }

  // Draw vertices
  if (show_vertices) {
    if (show_values) {
      glDisable(GL_LIGHTING);
      RNGrfxBegin(RN_GRFX_POINTS);
      for (int i = 0; i < mesh->NVertices(); i++) {
        R3MeshVertex *vertex = mesh->Vertex(i);
        RNLoadRgb(NormalizedColor(vertex));
        R3LoadNormal(mesh->VertexNormal(vertex));
        R3LoadPoint(mesh->VertexPosition(vertex));
      }
      RNGrfxEnd();
    }
    else {
      glEnable(GL_LIGHTING);
      RNLoadRgb(0.8, 0.8, 0.8);
      RNGrfxBegin(RN_GRFX_POINTS);
      for (int i = 0; i < mesh->NVertices(); i++) {
        R3MeshVertex *vertex = mesh->Vertex(i);
        R3LoadNormal(mesh->VertexNormal(vertex));
        R3LoadNormal(mesh->VertexNormal(vertex));
        R3LoadPoint(mesh->VertexPosition(vertex));
      }
      RNGrfxEnd();
    }
  }

  // Draw points
  if (points && show_points) {
    // Draw points
    glEnable(GL_LIGHTING);
    if (color_with_redness) RNLoadRgb(0, 0, 1);
    else RNLoadRgb(1, 1, 0);
    RNLength radius = 0.008 * mesh->BBox().LongestAxisLength();
    for (int i = 0; i < points->NEntries(); i++) {
      Point *point = points->Kth(i);
      R3Sphere(point->position, radius).Draw();
    }
  }

  // Draw isocontours
  if (show_isocontours) {
    glDisable(GL_LIGHTING);
    RNLoadRgb(1, 1, 1);
    glLineWidth(1);
    RNGrfxBegin(RN_GRFX_LINES);
    for (int isostep = 1; isostep < nisosteps; isostep++) {
      double isolevel = (double) isostep / (double) nisosteps;
      for (int i = 0; i < mesh->NFaces(); i++) {
        R3MeshFace *face = mesh->Face(i);
        for (int j = 0; j < 3; j++) {
          R3MeshVertex *vertex = mesh->VertexOnFace(face, j);
          RNScalar value = NormalizedValue(vertex);
          R3MeshVertex *vertex1 = mesh->VertexOnFace(face, (j+1)%3);
          RNScalar value1 = NormalizedValue(vertex1);
          R3MeshVertex *vertex2 = mesh->VertexOnFace(face, (j+2)%3);
          RNScalar value2 = NormalizedValue(vertex2);
          RNScalar t1, t2;
          if (value < isolevel) {
            if ((value1 <= isolevel) || (value2 <= isolevel)) continue;
            t1 = (isolevel - value) / (value1 - value);
            t2 = (isolevel - value) / (value2 - value);
          }
          else if (value > isolevel) {
            if ((value1 >= isolevel) || (value2 >= isolevel)) continue;
            t1 = (value - isolevel) / (value - value1);
            t2 = (value - isolevel) / (value - value2);
          }
          else continue;
          R3Point position = mesh->VertexPosition(vertex);
          R3Point position1 = mesh->VertexPosition(vertex1);
          R3Point position2 = mesh->VertexPosition(vertex2);
          R3Vector vector1 = t1 * (position1 - position);
          R3Vector vector2 = t2 * (position2 - position);
          R3Point point1 = position + vector1;
          R3Point point2 = position + vector2;
          R3LoadPoint(point1);
          R3LoadPoint(point2);
        }
      }
    }
    RNGrfxEnd();
    glLineWidth(1);
  }

  // Draw extrema
  if (show_global_maxima || show_global_minima || show_local_maxima || show_local_minima) {
    glEnable(GL_LIGHTING);
    for (int i = 0; i < mesh->NVertices(); i++) {
      R3MeshVertex *vertex = mesh->Vertex(i);
      R3Point position = mesh->VertexPosition(vertex);
      RNScalar value = Value(vertex);
      if (show_global_minima && (value == current_property->Minimum())) {
        RNLoadRgb(1, 1, 1);
        RNScalar radius = 0.01 * mesh->BBox().DiagonalLength();
        R3Sphere(position, radius).Draw();
      }
      if (show_global_maxima && (value == current_property->Maximum())) {
        RNLoadRgb(1, 1, 1);
        RNScalar radius = 0.01 * mesh->BBox().DiagonalLength();
        R3Sphere(position, radius).Draw();
      }
      if (show_local_minima && (current_property->IsLocalMinimum(vertex))) {
        RNLoadRgb(0.5, 1, 1);
        RNScalar radius = 0.005 * mesh->BBox().DiagonalLength();
        R3Sphere(position, radius).Draw();
      }
      if (show_local_maxima && (current_property->IsLocalMaximum(vertex))) {
        RNLoadRgb(0, 0.5, 0);
        RNScalar radius = 0.005 * mesh->BBox().DiagonalLength();
        R3Sphere(position, radius).Draw();
      }
    }
  }

  // Draw text
  if (show_text) {
    char buffer[1024];
    glDisable(GL_LIGHTING);
    RNLength d = 0.004 * mesh->BBox().DiagonalRadius();
    for (int i = 0; i < mesh->NVertices(); i++) {
      R3MeshVertex *vertex = mesh->Vertex(i);
      R3Point position = mesh->VertexPosition(vertex);
      const R3Vector normal = mesh->VertexNormal(vertex);
      sprintf(buffer, "%g", Value(vertex));
      R3DrawText(position + d * normal, buffer);
    }
  }

  // Draw statistics
  if (show_statistics) {
    glDisable(GL_LIGHTING);
    RNLoadRgb(0, 0, 0);
    double y = GLUTwindow_height - 20;
    viewer->DrawText(10, y, current_property->Name()); y-= 20;
    DrawText(10, y, "Index", properties->PropertyIndex(current_property)); y-= 20;
    DrawText(10, y, "Mean", current_property->Mean()); y-= 20;
    DrawText(10, y, "Min", current_property->Minimum()); y-= 20;
    DrawText(10, y, "Max", current_property->Maximum()); y-= 20;
    DrawText(10, y, "Stddev", current_property->StandardDeviation()); y-= 20;
    DrawText(10, y, "Entropy", current_property->Entropy()); y-= 20;
    DrawText(10, y, "Min Display Value", value_range.Min()); y-= 20;
    DrawText(10, y, "Max Display Value", value_range.Max()); y-= 20;
    DrawText(10, y, "Min Display Percentile", percentile_range.Min()); y-= 20;
    DrawText(10, y, "Max Display Percentile", percentile_range.Max()); y-= 20;
  }

  // Capture image and exit
  if (image_name) {
    R2Image image(GLUTwindow_width, GLUTwindow_height, 3);
    image.Capture();
    image.Write(image_name);
    GLUTStop();
  }

  // Swap buffers 
  glutSwapBuffers();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x4d8, %rsp            # imm = 0x4D8
movq 0x12636d(%rip), %rdi    # 0x14b938
addq $0x8, %rdi
xorl %esi, %esi
callq 0x2a0b0
movss 0xbba26(%rip), %xmm0    # 0xe1004
movapd %xmm0, %xmm1
movapd %xmm0, %xmm2
movapd %xmm0, %xmm3
callq 0x21e10
movl $0x4100, %edi           # imm = 0x4100
callq 0x211d0
cmpl $0x0, 0x126344(%rip)    # 0x14b944
je 0x2560e
movl $0xb44, %edi            # imm = 0xB44
callq 0x211e0
jmp 0x25618
movl $0xb44, %edi            # imm = 0xB44
callq 0x21800
leaq 0x121371(%rip), %rdx    # 0x146990
movl $0x4002, %edi           # imm = 0x4002
movl $0x1203, %esi           # imm = 0x1203
callq 0x22090
cmpl $0x0, 0x12136b(%rip)    # 0x1469a0
je 0x257e7
movl 0x121363(%rip), %ebx    # 0x1469a4
movl $0xb50, %edi            # imm = 0xB50
callq 0x21800
testl %ebx, %ebx
je 0x25738
movl $0x8037, %edi           # imm = 0x8037
callq 0x21800
movss 0xbb9a3(%rip), %xmm0    # 0xe1008
movss 0xbb997(%rip), %xmm1    # 0xe1004
callq 0x21f80
movl $0x4, %edi
callq 0x21180
movq 0x1262c5(%rip), %rax    # 0x14b948
cmpl $0x0, 0x34(%rax)
jle 0x25724
xorl %r15d, %r15d
leaq 0xd0(%rsp), %rbx
movq 0x28(%rax), %rax
movq (%rax,%r15,8), %r12
movl $0x1, %r13d
movq (%r12,%r13,8), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x265ae
movsd 0xd0(%rsp), %xmm0
movsd 0xd8(%rsp), %xmm1
movsd 0xe0(%rsp), %xmm2
callq 0x21e60
testb $0x2, 0x78(%r14)
jne 0x256ef
movq 0x126265(%rip), %rdi    # 0x14b948
movq (%rdi), %rax
movq %r14, %rsi
callq *0x2b0(%rax)
leaq 0x30(%r14), %rdi
callq 0x21df0
addq $0x18, %r14
movq %r14, %rdi
callq 0x211a0
incq %r13
cmpq $0x4, %r13
jne 0x256a6
incq %r15
movq 0x126231(%rip), %rax    # 0x14b948
movslq 0x34(%rax), %rcx
cmpq %rcx, %r15
jl 0x25698
callq 0x21c40
movl $0x8037, %edi           # imm = 0x8037
callq 0x211e0
jmp 0x257e7
movsd 0xbb8d0(%rip), %xmm0    # 0xe1010
movapd %xmm0, %xmm1
movapd %xmm0, %xmm2
callq 0x21e60
movl $0x4, %edi
callq 0x21180
movq 0x1261ea(%rip), %rdi    # 0x14b948
cmpl $0x0, 0x34(%rdi)
jle 0x257e2
xorl %r15d, %r15d
movq 0x28(%rdi), %rax
movq (%rax,%r15,8), %rbx
testb $0x4, 0xa8(%rbx)
jne 0x25784
movq (%rdi), %rax
movq %rbx, %rsi
callq *0x2c8(%rax)
leaq 0x38(%rbx), %rdi
callq 0x21df0
movl $0x1, %r12d
movq (%rbx,%r12,8), %r14
testb $0x2, 0x78(%r14)
jne 0x257b1
movq 0x1261a3(%rip), %rdi    # 0x14b948
movq (%rdi), %rax
movq %r14, %rsi
callq *0x2b0(%rax)
leaq 0x30(%r14), %rdi
callq 0x21df0
addq $0x18, %r14
movq %r14, %rdi
callq 0x211a0
incq %r12
cmpq $0x4, %r12
jne 0x25793
incq %r15
movq 0x12616f(%rip), %rdi    # 0x14b948
movslq 0x34(%rdi), %rax
cmpq %rax, %r15
jl 0x25767
callq 0x21c40
cmpl $0x0, 0x126162(%rip)    # 0x14b950
je 0x25949
cmpl $0x0, 0x1211a9(%rip)    # 0x1469a4
je 0x258a8
movl $0xb50, %edi            # imm = 0xB50
callq 0x211e0
xorl %edi, %edi
callq 0x21180
movq 0x12612f(%rip), %rax    # 0x14b948
cmpl $0x0, 0x14(%rax)
jle 0x25944
xorl %r15d, %r15d
leaq 0xd0(%rsp), %rbx
movq 0x8(%rax), %rax
movq (%rax,%r15,8), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x265ae
movsd 0xd0(%rsp), %xmm0
movsd 0xd8(%rsp), %xmm1
movsd 0xe0(%rsp), %xmm2
callq 0x21e60
testb $0x2, 0x78(%r14)
jne 0x2587b
movq 0x1260d9(%rip), %rdi    # 0x14b948
movq (%rdi), %rax
movq %r14, %rsi
callq *0x2b0(%rax)
leaq 0x30(%r14), %rdi
callq 0x21df0
addq $0x18, %r14
movq %r14, %rdi
callq 0x211a0
incq %r15
movq 0x1260ae(%rip), %rax    # 0x14b948
movslq 0x14(%rax), %rcx
cmpq %rcx, %r15
jl 0x2582e
jmp 0x25944
movl $0xb50, %edi            # imm = 0xB50
callq 0x21800
movsd 0xbb756(%rip), %xmm0    # 0xe1010
movapd %xmm0, %xmm1
movapd %xmm0, %xmm2
callq 0x21e60
xorl %edi, %edi
callq 0x21180
movq 0x126073(%rip), %rdi    # 0x14b948
cmpl $0x0, 0x14(%rdi)
jle 0x25944
xorl %r15d, %r15d
movq 0x8(%rdi), %rax
movq (%rax,%r15,8), %rbx
testb $0x2, 0x78(%rbx)
jne 0x258f8
movq (%rdi), %rax
movq %rbx, %rsi
callq *0x2b0(%rax)
leaq 0x30(%rbx), %r14
movq %r14, %rdi
callq 0x21df0
testb $0x2, 0x78(%rbx)
jne 0x2591d
movq 0x126037(%rip), %rdi    # 0x14b948
movq (%rdi), %rax
movq %rbx, %rsi
callq *0x2b0(%rax)
movq %r14, %rdi
callq 0x21df0
addq $0x18, %rbx
movq %rbx, %rdi
callq 0x211a0
incq %r15
movq 0x12600d(%rip), %rdi    # 0x14b948
movslq 0x14(%rdi), %rax
cmpq %rax, %r15
jl 0x258de
callq 0x21c40
cmpq $0x0, 0x126007(%rip)    # 0x14b958
je 0x25a1a
cmpl $0x0, 0x126002(%rip)    # 0x14b960
je 0x25a1a
movl $0xb50, %edi            # imm = 0xB50
callq 0x21800
cmpb $0x1, 0x125fef(%rip)    # 0x14b964
jne 0x25989
movss 0xbb685(%rip), %xmm2    # 0xe1004
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
jmp 0x25999
movss 0xbb673(%rip), %xmm0    # 0xe1004
xorpd %xmm2, %xmm2
movapd %xmm0, %xmm1
callq 0x222d0
movl $0xf8, %edi
addq 0x125f9e(%rip), %rdi    # 0x14b948
callq 0x72982
movsd %xmm0, (%rsp)
movq 0x125f9d(%rip), %rax    # 0x14b958
cmpl $0x0, 0xc(%rax)
jle 0x25a1a
movsd (%rsp), %xmm0
mulsd 0xbb64a(%rip), %xmm0    # 0xe1018
movsd %xmm0, (%rsp)
xorl %r14d, %r14d
leaq 0xd0(%rsp), %rbx
movq (%rax), %rax
movq (%rax,%r14,8), %rsi
movq %rbx, %rdi
movsd (%rsp), %xmm0
callq 0x6fd76
movl $0x772, %esi            # imm = 0x772
movq %rbx, %rdi
callq 0x46a84
movq %rbx, %rdi
callq 0x73184
incq %r14
movq 0x125f47(%rip), %rax    # 0x14b958
movslq 0xc(%rax), %rcx
cmpq %rcx, %r14
jl 0x259de
cmpl $0x0, 0x125f47(%rip)    # 0x14b968
je 0x25da5
movl $0xb50, %edi            # imm = 0xB50
callq 0x211e0
movss 0xbb5cb(%rip), %xmm0    # 0xe1004
movapd %xmm0, %xmm1
movapd %xmm0, %xmm2
callq 0x222d0
movss 0xbb5b6(%rip), %xmm0    # 0xe1004
callq 0x22130
movl $0x1, %ebx
movl $0x1, %edi
callq 0x21180
movsd 0xbb5b6(%rip), %xmm7    # 0xe1020
movabsq $-0x5555555555555555, %r8 # imm = 0xAAAAAAAAAAAAAAAB
movapd %xmm7, %xmm0
movl %ebx, 0x1c(%rsp)
movsd %xmm0, 0x20(%rsp)
movapd %xmm0, %xmm8
divsd 0xbb598(%rip), %xmm8    # 0xe1028
movq 0x125eb1(%rip), %rax    # 0x14b948
cmpl $0x0, 0x34(%rax)
jle 0x25d7a
xorl %edx, %edx
movsd %xmm8, 0x30(%rsp)
movq 0x28(%rax), %rax
movq %rdx, 0x28(%rsp)
movq (%rax,%rdx,8), %r9
leaq 0x18(%r9), %rbp
movl $0x2, %r15d
movq $-0x3, %rbx
movq %r9, 0x38(%rsp)
movq %r15, %rax
mulq %r8
movq 0x20(%r9,%rbx,8), %rsi
movq 0x125ea1(%rip), %rax    # 0x14b980
movslq 0x70(%rsi), %rcx
movq 0x410(%rax), %rax
movsd (%rax,%rcx,8), %xmm5
movsd 0x125e21(%rip), %xmm2   # 0x14b918
movsd 0x125e11(%rip), %xmm3   # 0x14b910
subsd %xmm3, %xmm2
xorpd %xmm4, %xmm4
cmpltsd %xmm2, %xmm4
movapd %xmm4, %xmm1
andnpd %xmm5, %xmm1
subsd %xmm3, %xmm5
divsd %xmm2, %xmm5
xorpd %xmm0, %xmm0
andpd %xmm4, %xmm5
orpd %xmm1, %xmm5
ucomisd %xmm5, %xmm0
xorpd %xmm1, %xmm1
ja 0x25b40
ucomisd %xmm7, %xmm5
movapd %xmm5, %xmm1
jbe 0x25b40
movapd %xmm7, %xmm1
leaq 0x4(%rbx), %rcx
cmpq $-0x1, %rbx
movl $0x0, %edi
cmovneq %rcx, %rdi
movq 0x8(%r9,%rdi,8), %r13
movslq 0x70(%r13), %rcx
movsd (%rax,%rcx,8), %xmm5
movapd %xmm4, %xmm6
andnpd %xmm5, %xmm6
subsd %xmm3, %xmm5
divsd %xmm2, %xmm5
andpd %xmm4, %xmm5
orpd %xmm6, %xmm5
ucomisd %xmm5, %xmm0
ja 0x25b8b
ucomisd %xmm7, %xmm5
movapd %xmm5, %xmm0
jbe 0x25b8b
movapd %xmm7, %xmm0
shlq $0x2, %rdx
andq $-0x8, %rdx
leaq (%rdx,%rdx,2), %rcx
negq %rcx
movq (%rbp,%rcx), %r14
movslq 0x70(%r14), %rcx
movsd (%rax,%rcx,8), %xmm5
xorpd %xmm4, %xmm4
cmpltsd %xmm2, %xmm4
movapd %xmm4, %xmm6
andnpd %xmm5, %xmm6
subsd %xmm3, %xmm5
divsd %xmm2, %xmm5
xorpd %xmm2, %xmm2
andpd %xmm5, %xmm4
orpd %xmm6, %xmm4
ucomisd %xmm4, %xmm2
ja 0x25be1
ucomisd %xmm7, %xmm4
movapd %xmm4, %xmm2
jbe 0x25be1
movapd %xmm7, %xmm2
ucomisd %xmm1, %xmm8
jbe 0x25c21
ucomisd %xmm0, %xmm8
jae 0x25d4e
ucomisd %xmm2, %xmm8
jae 0x25d4e
subsd %xmm1, %xmm8
unpcklpd %xmm2, %xmm0            # xmm0 = xmm0[0],xmm2[0]
unpcklpd %xmm1, %xmm1            # xmm1 = xmm1[0,0]
subpd %xmm1, %xmm0
unpcklpd %xmm8, %xmm8            # xmm8 = xmm8[0,0]
divpd %xmm0, %xmm8
movapd %xmm8, (%rsp)
jmp 0x25c64
ucomisd %xmm8, %xmm1
jbe 0x25d4e
ucomisd %xmm8, %xmm0
jae 0x25d4e
ucomisd %xmm8, %xmm2
jae 0x25d4e
movapd %xmm1, %xmm3
subsd %xmm8, %xmm3
unpcklpd %xmm1, %xmm1            # xmm1 = xmm1[0,0]
unpcklpd %xmm2, %xmm0            # xmm0 = xmm0[0],xmm2[0]
subpd %xmm0, %xmm1
unpcklpd %xmm3, %xmm3            # xmm3 = xmm3[0,0]
divpd %xmm1, %xmm3
movapd %xmm3, (%rsp)
addq $0x18, %rsi
leaq 0xd0(%rsp), %rdi
callq 0x7ab0a
addq $0x18, %r13
leaq 0x70(%rsp), %r12
movq %r12, %rdi
movq %r13, %rsi
callq 0x7ab0a
addq $0x18, %r14
leaq 0x58(%rsp), %rdi
movq %r14, %rsi
callq 0x7ab0a
leaq 0x88(%rsp), %r14
movq %r14, %rdi
movq %r12, %rsi
leaq 0xd0(%rsp), %r13
movq %r13, %rdx
callq 0x7ad5c
leaq 0x40(%rsp), %rdi
movq %r14, %rsi
movaps (%rsp), %xmm0
callq 0x7bf62
leaq 0xb8(%rsp), %r12
movq %r12, %rdi
leaq 0x58(%rsp), %rsi
movq %r13, %rdx
callq 0x7ad5c
movapd (%rsp), %xmm0
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
movq %r14, %rdi
movq %r12, %rsi
callq 0x7bf62
movq %r12, %rdi
movq %r13, %rsi
leaq 0x40(%rsp), %rdx
callq 0x7ae45
leaq 0xa0(%rsp), %r13
movq %r13, %rdi
leaq 0xd0(%rsp), %rsi
movq %r14, %rdx
callq 0x7ae45
movq %r12, %rdi
callq 0x211a0
movq %r13, %rdi
callq 0x211a0
movsd 0xbb2e8(%rip), %xmm7    # 0xe1020
movabsq $-0x5555555555555555, %r8 # imm = 0xAAAAAAAAAAAAAAAB
movsd 0x30(%rsp), %xmm8
movq 0x38(%rsp), %r9
addq $0x8, %rbp
incq %r15
incq %rbx
jne 0x25acd
movq 0x28(%rsp), %rdx
incq %rdx
movq 0x125bdb(%rip), %rax    # 0x14b948
movslq 0x34(%rax), %rcx
cmpq %rcx, %rdx
jl 0x25aaa
movsd 0x20(%rsp), %xmm0
addsd %xmm7, %xmm0
movl 0x1c(%rsp), %ebx
incl %ebx
cmpl $0x14, %ebx
jne 0x25a78
callq 0x21c40
movss 0xbb264(%rip), %xmm0    # 0xe1004
callq 0x22130
cmpl $0x0, 0x125bc0(%rip)    # 0x14b96c
jne 0x25dcd
cmpl $0x0, 0x125bbb(%rip)    # 0x14b970
jne 0x25dcd
cmpl $0x0, 0x125bb6(%rip)    # 0x14b974
jne 0x25dcd
cmpl $0x0, 0x125bb1(%rip)    # 0x14b978
je 0x25fee
movl $0xb50, %edi            # imm = 0xB50
callq 0x21800
movq 0x125b6a(%rip), %rax    # 0x14b948
cmpl $0x0, 0x14(%rax)
jle 0x25fee
xorl %r12d, %r12d
leaq 0x70(%rsp), %rbx
movl $0xf8, %r13d
leaq 0xd0(%rsp), %r14
movq 0x8(%rax), %rax
movq (%rax,%r12,8), %r15
leaq 0x18(%r15), %rsi
movq %rbx, %rdi
callq 0x7ab0a
movq 0x125b67(%rip), %rdi    # 0x14b980
movslq 0x70(%r15), %rax
movq 0x410(%rdi), %rcx
movsd (%rcx,%rax,8), %xmm0
movsd %xmm0, (%rsp)
cmpl $0x0, 0x125b3b(%rip)    # 0x14b970
je 0x25e95
callq 0x48f54
movsd (%rsp), %xmm1
ucomisd %xmm0, %xmm1
jne 0x25e95
jp 0x25e95
movss 0xbb1b3(%rip), %xmm0    # 0xe1004
movapd %xmm0, %xmm1
movapd %xmm0, %xmm2
callq 0x222d0
movq 0x125ae3(%rip), %rdi    # 0x14b948
addq %r13, %rdi
callq 0x729ac
mulsd 0xbb1bb(%rip), %xmm0    # 0xe1030
movq %r14, %rdi
movq %rbx, %rsi
callq 0x6fd76
movl $0x772, %esi            # imm = 0x772
movq %r14, %rdi
callq 0x46a84
movq %r14, %rdi
callq 0x73184
cmpl $0x0, 0x125ad0(%rip)    # 0x14b96c
je 0x25f03
movq 0x125adb(%rip), %rdi    # 0x14b980
callq 0x48fda
movsd (%rsp), %xmm1
ucomisd %xmm0, %xmm1
jne 0x25f03
jp 0x25f03
movss 0xbb145(%rip), %xmm0    # 0xe1004
movapd %xmm0, %xmm1
movapd %xmm0, %xmm2
callq 0x222d0
movq 0x125a75(%rip), %rdi    # 0x14b948
addq %r13, %rdi
callq 0x729ac
mulsd 0xbb14d(%rip), %xmm0    # 0xe1030
movq %r14, %rdi
movq %rbx, %rsi
callq 0x6fd76
movl $0x772, %esi            # imm = 0x772
movq %r14, %rdi
callq 0x46a84
movq %r14, %rdi
callq 0x73184
cmpl $0x0, 0x125a6e(%rip)    # 0x14b978
je 0x25f6f
movq 0x125a6d(%rip), %rdi    # 0x14b980
movq %r15, %rsi
callq 0x48d84
testl %eax, %eax
je 0x25f6f
movsd 0xbb111(%rip), %xmm0    # 0xe1038
movsd 0xbb0f1(%rip), %xmm1    # 0xe1020
movapd %xmm1, %xmm2
callq 0x21e60
movq 0x125a09(%rip), %rdi    # 0x14b948
addq %r13, %rdi
callq 0x729ac
mulsd 0xbb0f1(%rip), %xmm0    # 0xe1040
movq %r14, %rdi
movq %rbx, %rsi
callq 0x6fd76
movl $0x772, %esi            # imm = 0x772
movq %r14, %rdi
callq 0x46a84
movq %r14, %rdi
callq 0x73184
cmpl $0x0, 0x1259fe(%rip)    # 0x14b974
je 0x25fd7
movq 0x125a01(%rip), %rdi    # 0x14b980
movq %r15, %rsi
callq 0x48e24
testl %eax, %eax
je 0x25fd7
xorpd %xmm0, %xmm0
xorpd %xmm2, %xmm2
movsd 0xbb09d(%rip), %xmm1    # 0xe1038
callq 0x21e60
movq 0x1259a1(%rip), %rdi    # 0x14b948
addq %r13, %rdi
callq 0x729ac
mulsd 0xbb089(%rip), %xmm0    # 0xe1040
movq %r14, %rdi
movq %rbx, %rsi
callq 0x6fd76
movl $0x772, %esi            # imm = 0x772
movq %r14, %rdi
callq 0x46a84
movq %r14, %rdi
callq 0x73184
incq %r12
movq 0x125967(%rip), %rax    # 0x14b948
movslq 0x14(%rax), %rcx
cmpq %rcx, %r12
jl 0x25dfe
cmpl $0x0, 0x125993(%rip)    # 0x14b988
je 0x26139
movl $0xb50, %edi            # imm = 0xB50
callq 0x211e0
movl $0xf8, %edi
addq 0x125937(%rip), %rdi    # 0x14b948
callq 0x729ac
movq 0x12592b(%rip), %rax    # 0x14b948
cmpl $0x0, 0x14(%rax)
jle 0x26139
mulsd 0xbb009(%rip), %xmm0    # 0xe1038
mulsd 0xbb011(%rip), %xmm0    # 0xe1048
movsd %xmm0, (%rsp)
xorl %ebp, %ebp
leaq 0x70(%rsp), %rbx
leaq 0x58(%rsp), %r14
leaq 0x88(%rsp), %r13
leaq 0x129749(%rip), %r15    # 0x14f7a0
movq 0x8(%rax), %rax
movq (%rax,%rbp,8), %r12
leaq 0x18(%r12), %rsi
movq %rbx, %rdi
callq 0x7ab0a
testb $0x2, 0x78(%r12)
jne 0x26087
movq 0x1258cd(%rip), %rdi    # 0x14b948
movq (%rdi), %rax
movq %r12, %rsi
callq *0x2b0(%rax)
leaq 0x30(%r12), %rsi
movq %r14, %rdi
callq 0x7b5a2
movq 0x1258e5(%rip), %rax    # 0x14b980
movslq 0x70(%r12), %rcx
movq 0x410(%rax), %rax
movsd (%rax,%rcx,8), %xmm0
leaq 0xd0(%rsp), %rdi
leaq 0xbb0e8(%rip), %rsi     # 0xe11a3
movb $0x1, %al
callq 0x21130
movq %r13, %rdi
movq %r14, %rsi
movsd (%rsp), %xmm0
callq 0x7bf62
leaq 0x40(%rsp), %rdi
movq %rbx, %rsi
movq %r13, %rdx
callq 0x7ae45
movsd 0x40(%rsp), %xmm0
movsd 0x48(%rsp), %xmm1
movsd 0x50(%rsp), %xmm2
callq 0x212a0
movb 0xd0(%rsp), %al
testb %al, %al
je 0x26122
leaq 0xd1(%rsp), %r12
movsbl %al, %esi
movq %r15, %rdi
callq 0xd3d84
movb (%r12), %al
incq %r12
testb %al, %al
jne 0x2610c
incq %rbp
movq 0x12581c(%rip), %rax    # 0x14b948
movslq 0x14(%rax), %rcx
cmpq %rcx, %rbp
jl 0x26057
cmpl $0x0, 0x120868(%rip)    # 0x1469a8
je 0x2650c
movl $0xb50, %edi            # imm = 0xB50
callq 0x211e0
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorpd %xmm2, %xmm2
callq 0x222d0
movl 0x120845(%rip), %eax    # 0x1469ac
addl $-0x14, %eax
xorps %xmm1, %xmm1
cvtsi2sd %eax, %xmm1
movsd %xmm1, (%rsp)
movq 0x1257bb(%rip), %rdi    # 0x14b938
movq 0x1257fc(%rip), %rsi    # 0x14b980
addq $0x8, %rsi
movsd 0xbaec0(%rip), %xmm0    # 0xe1050
xorl %edx, %edx
callq 0x293cc
movsd (%rsp), %xmm0
addsd 0xbaeb4(%rip), %xmm0    # 0xe1058
movsd %xmm0, (%rsp)
movq 0x1257e0(%rip), %rdi    # 0x14b990
movq 0x1257c9(%rip), %rsi    # 0x14b980
callq 0x46e68
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
leaq 0xbafd6(%rip), %rbx     # 0xe11a0
leaq 0xbd9eb(%rip), %rdx     # 0xe3bbc
leaq 0xd0(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
movb $0x1, %al
callq 0x21130
movq 0x12574b(%rip), %rdi    # 0x14b938
movsd 0xbae5b(%rip), %xmm0    # 0xe1050
movsd (%rsp), %xmm1
movq %r14, %rsi
xorl %edx, %edx
callq 0x293cc
movsd (%rsp), %xmm0
addsd 0xbae47(%rip), %xmm0    # 0xe1058
movsd %xmm0, (%rsp)
movq 0x125763(%rip), %rdi    # 0x14b980
callq 0x48ec4
leaq 0xbaf7d(%rip), %rdx     # 0xe11a6
leaq 0xd0(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
movb $0x1, %al
callq 0x21130
movq 0x1256f3(%rip), %rdi    # 0x14b938
movsd 0xbae03(%rip), %xmm0    # 0xe1050
movsd (%rsp), %xmm1
movq %r14, %rsi
xorl %edx, %edx
callq 0x293cc
movsd (%rsp), %xmm0
addsd 0xbadef(%rip), %xmm0    # 0xe1058
movsd %xmm0, (%rsp)
movq 0x12570b(%rip), %rdi    # 0x14b980
callq 0x48f54
leaq 0xbaf2a(%rip), %rdx     # 0xe11ab
leaq 0xd0(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
movb $0x1, %al
callq 0x21130
movq 0x12569b(%rip), %rdi    # 0x14b938
movsd 0xbadab(%rip), %xmm0    # 0xe1050
movsd (%rsp), %xmm1
movq %r14, %rsi
xorl %edx, %edx
callq 0x293cc
movsd (%rsp), %xmm0
addsd 0xbad97(%rip), %xmm0    # 0xe1058
movsd %xmm0, (%rsp)
movq 0x1256b3(%rip), %rdi    # 0x14b980
callq 0x48fda
leaq 0xbaed6(%rip), %rdx     # 0xe11af
leaq 0xd0(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
movb $0x1, %al
callq 0x21130
movq 0x125643(%rip), %rdi    # 0x14b938
movsd 0xbad53(%rip), %xmm0    # 0xe1050
movsd (%rsp), %xmm1
movq %r14, %rsi
xorl %edx, %edx
callq 0x293cc
movsd (%rsp), %xmm0
addsd 0xbad3f(%rip), %xmm0    # 0xe1058
movsd %xmm0, (%rsp)
movq 0x12565b(%rip), %rdi    # 0x14b980
callq 0x49060
leaq 0xbae82(%rip), %rdx     # 0xe11b3
leaq 0xd0(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
movb $0x1, %al
callq 0x21130
movq 0x1255eb(%rip), %rdi    # 0x14b938
movsd 0xbacfb(%rip), %xmm0    # 0xe1050
movsd (%rsp), %xmm1
movq %r14, %rsi
xorl %edx, %edx
callq 0x293cc
movsd (%rsp), %xmm0
addsd 0xbace7(%rip), %xmm0    # 0xe1058
movsd %xmm0, (%rsp)
movq 0x125603(%rip), %rdi    # 0x14b980
callq 0x4916a
leaq 0xbae31(%rip), %rdx     # 0xe11ba
leaq 0xd0(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
movb $0x1, %al
callq 0x21130
movq 0x125593(%rip), %rdi    # 0x14b938
movsd 0xbaca3(%rip), %xmm0    # 0xe1050
movsd (%rsp), %xmm1
movq %r14, %rsi
xorl %edx, %edx
callq 0x293cc
movsd (%rsp), %xmm0
addsd 0xbac8f(%rip), %xmm0    # 0xe1058
movsd %xmm0, (%rsp)
movsd 0x12553a(%rip), %xmm0   # 0x14b910
leaq 0xbade5(%rip), %rdx     # 0xe11c2
leaq 0xd0(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
movb $0x1, %al
callq 0x21130
movq 0x12553f(%rip), %rdi    # 0x14b938
movsd 0xbac4f(%rip), %xmm0    # 0xe1050
movsd (%rsp), %xmm1
movq %r14, %rsi
xorl %edx, %edx
callq 0x293cc
movsd (%rsp), %xmm0
addsd 0xbac3b(%rip), %xmm0    # 0xe1058
movsd %xmm0, (%rsp)
movsd 0x1254ee(%rip), %xmm0   # 0x14b918
leaq 0xbada3(%rip), %rdx     # 0xe11d4
leaq 0xd0(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
movb $0x1, %al
callq 0x21130
movq 0x1254eb(%rip), %rdi    # 0x14b938
movsd 0xbabfb(%rip), %xmm0    # 0xe1050
movsd (%rsp), %xmm1
movq %r14, %rsi
xorl %edx, %edx
callq 0x293cc
movsd (%rsp), %xmm0
addsd 0xbabe7(%rip), %xmm0    # 0xe1058
movsd %xmm0, (%rsp)
movsd 0x125482(%rip), %xmm0   # 0x14b900
leaq 0xbad61(%rip), %rdx     # 0xe11e6
leaq 0xd0(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
movb $0x1, %al
callq 0x21130
movq 0x125497(%rip), %rdi    # 0x14b938
movsd 0xbaba7(%rip), %xmm0    # 0xe1050
movsd (%rsp), %xmm1
movq %r14, %rsi
xorl %edx, %edx
callq 0x293cc
movsd (%rsp), %xmm0
addsd 0xbab93(%rip), %xmm0    # 0xe1058
movsd %xmm0, (%rsp)
movsd 0x125436(%rip), %xmm0   # 0x14b908
leaq 0xbad24(%rip), %rdx     # 0xe11fd
leaq 0xd0(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
movb $0x1, %al
callq 0x21130
movq 0x125443(%rip), %rdi    # 0x14b938
movsd 0xbab53(%rip), %xmm0    # 0xe1050
movsd (%rsp), %xmm1
movq %r14, %rsi
xorl %edx, %edx
callq 0x293cc
cmpq $0x0, 0x125484(%rip)    # 0x14b998
jne 0x2652d
callq 0xd3ca4
addq $0x4d8, %rsp            # imm = 0x4D8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl 0x12047d(%rip), %esi    # 0x1469b0
movl 0x120473(%rip), %edx    # 0x1469ac
leaq 0xd0(%rsp), %rbx
movq %rbx, %rdi
movl $0x3, %ecx
callq 0x87eee
movq %rbx, %rdi
callq 0x88978
movq 0x12543b(%rip), %rsi    # 0x14b998
leaq 0xd0(%rsp), %rdi
callq 0x89d28
movl 0x1253d0(%rip), %edi    # 0x14b940
callq 0xd9f94
xorl %edi, %edi
callq 0x21af0
movq %rax, %rbx
leaq 0xd0(%rsp), %rdi
callq 0x88156
jmp 0x265a6
jmp 0x26596
jmp 0x26596
jmp 0x26596
jmp 0x26596
movq %rax, %rbx
leaq 0xd0(%rsp), %rdi
callq 0x73184
movq %rbx, %rdi
callq 0x220b0