// File: /workspace/github_cpp_makefile_star2_O3/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 0x1243ad(%rip), %rdi    # 0x149938
addq $0x8, %rdi
xorl %esi, %esi
callq 0x2a094
movss 0xb9a66(%rip), %xmm0    # 0xdf004
movapd %xmm0, %xmm1
movapd %xmm0, %xmm2
movapd %xmm0, %xmm3
callq 0x21e00
movl $0x4100, %edi           # imm = 0x4100
callq 0x211d0
cmpl $0x0, 0x124384(%rip)    # 0x149944
je 0x255ce
movl $0xb44, %edi            # imm = 0xB44
callq 0x211e0
jmp 0x255d8
movl $0xb44, %edi            # imm = 0xB44
callq 0x21800
leaq 0x11f3b1(%rip), %rdx    # 0x144990
movl $0x4002, %edi           # imm = 0x4002
movl $0x1203, %esi           # imm = 0x1203
callq 0x22080
cmpl $0x0, 0x11f3ab(%rip)    # 0x1449a0
je 0x257a7
movl 0x11f3a3(%rip), %ebx    # 0x1449a4
movl $0xb50, %edi            # imm = 0xB50
callq 0x21800
testl %ebx, %ebx
je 0x256f8
movl $0x8037, %edi           # imm = 0x8037
callq 0x21800
movss 0xb99e3(%rip), %xmm0    # 0xdf008
movss 0xb99d7(%rip), %xmm1    # 0xdf004
callq 0x21f70
movl $0x4, %edi
callq 0x21180
movq 0x124305(%rip), %rax    # 0x149948
cmpl $0x0, 0x34(%rax)
jle 0x256e4
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 0x2655a
movsd 0xd0(%rsp), %xmm0
movsd 0xd8(%rsp), %xmm1
movsd 0xe0(%rsp), %xmm2
callq 0x21e50
testb $0x2, 0x78(%r14)
jne 0x256af
movq 0x1242a5(%rip), %rdi    # 0x149948
movq (%rdi), %rax
movq %r14, %rsi
callq *0x2b0(%rax)
leaq 0x30(%r14), %rdi
callq 0x21de0
addq $0x18, %r14
movq %r14, %rdi
callq 0x211a0
incq %r13
cmpq $0x4, %r13
jne 0x25666
incq %r15
movq 0x124271(%rip), %rax    # 0x149948
movslq 0x34(%rax), %rcx
cmpq %rcx, %r15
jl 0x25658
callq 0x21c30
movl $0x8037, %edi           # imm = 0x8037
callq 0x211e0
jmp 0x257a7
movsd 0xb9910(%rip), %xmm0    # 0xdf010
movapd %xmm0, %xmm1
movapd %xmm0, %xmm2
callq 0x21e50
movl $0x4, %edi
callq 0x21180
movq 0x12422a(%rip), %rdi    # 0x149948
cmpl $0x0, 0x34(%rdi)
jle 0x257a2
xorl %r15d, %r15d
movq 0x28(%rdi), %rax
movq (%rax,%r15,8), %rbx
testb $0x4, 0xa8(%rbx)
jne 0x25744
movq (%rdi), %rax
movq %rbx, %rsi
callq *0x2c8(%rax)
leaq 0x38(%rbx), %rdi
callq 0x21de0
movl $0x1, %r12d
movq (%rbx,%r12,8), %r14
testb $0x2, 0x78(%r14)
jne 0x25771
movq 0x1241e3(%rip), %rdi    # 0x149948
movq (%rdi), %rax
movq %r14, %rsi
callq *0x2b0(%rax)
leaq 0x30(%r14), %rdi
callq 0x21de0
addq $0x18, %r14
movq %r14, %rdi
callq 0x211a0
incq %r12
cmpq $0x4, %r12
jne 0x25753
incq %r15
movq 0x1241af(%rip), %rdi    # 0x149948
movslq 0x34(%rdi), %rax
cmpq %rax, %r15
jl 0x25727
callq 0x21c30
cmpl $0x0, 0x1241a2(%rip)    # 0x149950
je 0x25909
cmpl $0x0, 0x11f1e9(%rip)    # 0x1449a4
je 0x25868
movl $0xb50, %edi            # imm = 0xB50
callq 0x211e0
xorl %edi, %edi
callq 0x21180
movq 0x12416f(%rip), %rax    # 0x149948
cmpl $0x0, 0x14(%rax)
jle 0x25904
xorl %r15d, %r15d
leaq 0xd0(%rsp), %rbx
movq 0x8(%rax), %rax
movq (%rax,%r15,8), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2655a
movsd 0xd0(%rsp), %xmm0
movsd 0xd8(%rsp), %xmm1
movsd 0xe0(%rsp), %xmm2
callq 0x21e50
testb $0x2, 0x78(%r14)
jne 0x2583b
movq 0x124119(%rip), %rdi    # 0x149948
movq (%rdi), %rax
movq %r14, %rsi
callq *0x2b0(%rax)
leaq 0x30(%r14), %rdi
callq 0x21de0
addq $0x18, %r14
movq %r14, %rdi
callq 0x211a0
incq %r15
movq 0x1240ee(%rip), %rax    # 0x149948
movslq 0x14(%rax), %rcx
cmpq %rcx, %r15
jl 0x257ee
jmp 0x25904
movl $0xb50, %edi            # imm = 0xB50
callq 0x21800
movsd 0xb9796(%rip), %xmm0    # 0xdf010
movapd %xmm0, %xmm1
movapd %xmm0, %xmm2
callq 0x21e50
xorl %edi, %edi
callq 0x21180
movq 0x1240b3(%rip), %rdi    # 0x149948
cmpl $0x0, 0x14(%rdi)
jle 0x25904
xorl %r15d, %r15d
movq 0x8(%rdi), %rax
movq (%rax,%r15,8), %rbx
testb $0x2, 0x78(%rbx)
jne 0x258b8
movq (%rdi), %rax
movq %rbx, %rsi
callq *0x2b0(%rax)
leaq 0x30(%rbx), %r14
movq %r14, %rdi
callq 0x21de0
testb $0x2, 0x78(%rbx)
jne 0x258dd
movq 0x124077(%rip), %rdi    # 0x149948
movq (%rdi), %rax
movq %rbx, %rsi
callq *0x2b0(%rax)
movq %r14, %rdi
callq 0x21de0
addq $0x18, %rbx
movq %rbx, %rdi
callq 0x211a0
incq %r15
movq 0x12404d(%rip), %rdi    # 0x149948
movslq 0x14(%rdi), %rax
cmpq %rax, %r15
jl 0x2589e
callq 0x21c30
cmpq $0x0, 0x124047(%rip)    # 0x149958
je 0x259da
cmpl $0x0, 0x124042(%rip)    # 0x149960
je 0x259da
movl $0xb50, %edi            # imm = 0xB50
callq 0x21800
cmpb $0x1, 0x12402f(%rip)    # 0x149964
jne 0x25949
movss 0xb96c5(%rip), %xmm2    # 0xdf004
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
jmp 0x25959
movss 0xb96b3(%rip), %xmm0    # 0xdf004
xorpd %xmm2, %xmm2
movapd %xmm0, %xmm1
callq 0x222c0
movl $0xf8, %edi
addq 0x123fde(%rip), %rdi    # 0x149948
callq 0x71a96
movsd %xmm0, (%rsp)
movq 0x123fdd(%rip), %rax    # 0x149958
cmpl $0x0, 0xc(%rax)
jle 0x259da
movsd (%rsp), %xmm0
mulsd 0xb968a(%rip), %xmm0    # 0xdf018
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 0x6eef6
movl $0x772, %esi            # imm = 0x772
movq %rbx, %rdi
callq 0x4645e
movq %rbx, %rdi
callq 0x7228c
incq %r14
movq 0x123f87(%rip), %rax    # 0x149958
movslq 0xc(%rax), %rcx
cmpq %rcx, %r14
jl 0x2599e
cmpl $0x0, 0x123f87(%rip)    # 0x149968
je 0x25d51
movl $0xb50, %edi            # imm = 0xB50
callq 0x211e0
movss 0xb960b(%rip), %xmm0    # 0xdf004
movapd %xmm0, %xmm1
movapd %xmm0, %xmm2
callq 0x222c0
movss 0xb95f6(%rip), %xmm0    # 0xdf004
callq 0x22120
movl $0x1, %r14d
movl $0x1, %edi
callq 0x21180
movsd 0xb95f5(%rip), %xmm7    # 0xdf020
movq 0x123f16(%rip), %rcx    # 0x149948
movl $0x2, %r8d
movapd %xmm7, %xmm0
movl %r14d, 0x1c(%rsp)
movsd %xmm0, 0x20(%rsp)
movapd %xmm0, %xmm8
divsd 0xb95d3(%rip), %xmm8    # 0xdf028
cmpl $0x0, 0x34(%rcx)
jle 0x25d23
movq 0x123f1a(%rip), %rax    # 0x149980
movapd 0x123ea2(%rip), %xmm0   # 0x149910
xorl %esi, %esi
movsd %xmm8, 0x30(%rsp)
movq 0x28(%rcx), %rcx
movq %rsi, 0x28(%rsp)
movq (%rcx,%rsi,8), %r9
movq $-0x1, %r12
movq %r9, 0x38(%rsp)
movq 0x10(%r9,%r12,8), %rsi
movslq 0x70(%rsi), %rdx
movq 0x410(%rax), %rcx
movsd (%rcx,%rdx,8), %xmm5
movapd %xmm0, %xmm3
unpckhpd %xmm0, %xmm3            # xmm3 = xmm3[1],xmm0[1]
subsd %xmm0, %xmm3
xorpd %xmm4, %xmm4
cmpltsd %xmm3, %xmm4
movapd %xmm4, %xmm2
andnpd %xmm5, %xmm2
subsd %xmm0, %xmm5
divsd %xmm3, %xmm5
xorpd %xmm1, %xmm1
andpd %xmm4, %xmm5
orpd %xmm2, %xmm5
ucomisd %xmm5, %xmm1
xorpd %xmm2, %xmm2
ja 0x25aee
ucomisd %xmm7, %xmm5
movapd %xmm5, %xmm2
jbe 0x25aee
movapd %xmm7, %xmm2
leaq 0x2(%r12), %rdx
cmpq $0x1, %r12
movl $0x0, %edi
cmovneq %rdx, %rdi
movq 0x8(%r9,%rdi,8), %r15
movslq 0x70(%r15), %rdx
movsd (%rcx,%rdx,8), %xmm5
movapd %xmm4, %xmm6
andnpd %xmm5, %xmm6
subsd %xmm0, %xmm5
divsd %xmm3, %xmm5
andpd %xmm4, %xmm5
orpd %xmm6, %xmm5
ucomisd %xmm5, %xmm1
ja 0x25b3a
ucomisd %xmm7, %xmm5
movapd %xmm5, %xmm1
jbe 0x25b3a
movapd %xmm7, %xmm1
cmpq $-0x1, %r12
movq %r12, %rdx
cmoveq %r8, %rdx
movq 0x8(%r9,%rdx,8), %r13
movslq 0x70(%r13), %rdx
movsd (%rcx,%rdx,8), %xmm5
xorpd %xmm4, %xmm4
cmpltsd %xmm3, %xmm4
movapd %xmm4, %xmm6
andnpd %xmm5, %xmm6
subsd %xmm0, %xmm5
divsd %xmm3, %xmm5
xorpd %xmm3, %xmm3
andpd %xmm5, %xmm4
orpd %xmm6, %xmm4
ucomisd %xmm4, %xmm3
ja 0x25b8c
ucomisd %xmm7, %xmm4
movapd %xmm4, %xmm3
jbe 0x25b8c
movapd %xmm7, %xmm3
ucomisd %xmm2, %xmm8
jbe 0x25bcc
ucomisd %xmm1, %xmm8
jae 0x25cfa
ucomisd %xmm3, %xmm8
jae 0x25cfa
subsd %xmm2, %xmm8
unpcklpd %xmm3, %xmm1            # xmm1 = xmm1[0],xmm3[0]
unpcklpd %xmm2, %xmm2            # xmm2 = xmm2[0,0]
subpd %xmm2, %xmm1
unpcklpd %xmm8, %xmm8            # xmm8 = xmm8[0,0]
divpd %xmm1, %xmm8
movapd %xmm8, (%rsp)
jmp 0x25c0f
ucomisd %xmm8, %xmm2
jbe 0x25cfa
ucomisd %xmm8, %xmm1
jae 0x25cfa
ucomisd %xmm8, %xmm3
jae 0x25cfa
movapd %xmm2, %xmm0
subsd %xmm8, %xmm0
unpcklpd %xmm2, %xmm2            # xmm2 = xmm2[0,0]
unpcklpd %xmm3, %xmm1            # xmm1 = xmm1[0],xmm3[0]
subpd %xmm1, %xmm2
unpcklpd %xmm0, %xmm0            # xmm0 = xmm0[0,0]
divpd %xmm2, %xmm0
movapd %xmm0, (%rsp)
addq $0x18, %rsi
leaq 0xd0(%rsp), %r14
movq %r14, %rdi
callq 0x79b6a
addq $0x18, %r15
leaq 0x58(%rsp), %rbp
movq %rbp, %rdi
movq %r15, %rsi
callq 0x79b6a
addq $0x18, %r13
leaq 0x88(%rsp), %r15
movq %r15, %rdi
movq %r13, %rsi
callq 0x79b6a
leaq 0x70(%rsp), %r13
movq %r13, %rdi
movq %rbp, %rsi
movq %r14, %rdx
callq 0x79db6
leaq 0x40(%rsp), %rbp
movq %rbp, %rdi
movq %r13, %rsi
movaps (%rsp), %xmm0
callq 0x7af8a
leaq 0xb8(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x79db6
movaps (%rsp), %xmm0
movhlps %xmm0, %xmm0            # xmm0 = xmm0[1,1]
movq %r13, %rdi
movq %rbx, %rsi
callq 0x7af8a
movq %rbx, %rdi
movq %r14, %rsi
movq %rbp, %rdx
callq 0x79e9f
leaq 0xa0(%rsp), %r15
movq %r15, %rdi
movq %r14, %rsi
movq %r13, %rdx
callq 0x79e9f
movq %rbx, %rdi
callq 0x211a0
movq %r15, %rdi
callq 0x211a0
movq 0x123ca8(%rip), %rax    # 0x149980
movapd 0x123c30(%rip), %xmm0   # 0x149910
movsd 0xb9338(%rip), %xmm7    # 0xdf020
movl $0x2, %r8d
movsd 0x30(%rsp), %xmm8
movq 0x38(%rsp), %r9
incq %r12
cmpq $0x2, %r12
jne 0x25a90
movq 0x28(%rsp), %rsi
incq %rsi
movq 0x123c32(%rip), %rcx    # 0x149948
movslq 0x34(%rcx), %rdx
cmpq %rdx, %rsi
jl 0x25a77
movsd 0x20(%rsp), %xmm0
addsd %xmm7, %xmm0
movl 0x1c(%rsp), %r14d
incl %r14d
cmpl $0x14, %r14d
jne 0x25a3c
callq 0x21c30
movss 0xb92b8(%rip), %xmm0    # 0xdf004
callq 0x22120
cmpl $0x0, 0x123c14(%rip)    # 0x14996c
jne 0x25d79
cmpl $0x0, 0x123c0f(%rip)    # 0x149970
jne 0x25d79
cmpl $0x0, 0x123c0a(%rip)    # 0x149974
jne 0x25d79
cmpl $0x0, 0x123c05(%rip)    # 0x149978
je 0x25f9a
movl $0xb50, %edi            # imm = 0xB50
callq 0x21800
movq 0x123bbe(%rip), %rax    # 0x149948
cmpl $0x0, 0x14(%rax)
jle 0x25f9a
xorl %r12d, %r12d
leaq 0x58(%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 0x79b6a
movslq 0x70(%r15), %rax
movq 0x123bb7(%rip), %rdi    # 0x149980
movq 0x410(%rdi), %rcx
movsd (%rcx,%rax,8), %xmm0
movsd %xmm0, (%rsp)
cmpl $0x0, 0x123b8f(%rip)    # 0x149970
je 0x25e41
callq 0x488d8
movsd (%rsp), %xmm1
ucomisd %xmm0, %xmm1
jne 0x25e41
jp 0x25e41
movss 0xb9207(%rip), %xmm0    # 0xdf004
movapd %xmm0, %xmm1
movapd %xmm0, %xmm2
callq 0x222c0
movq 0x123b37(%rip), %rdi    # 0x149948
addq %r13, %rdi
callq 0x71ac0
mulsd 0xb920f(%rip), %xmm0    # 0xdf030
movq %r14, %rdi
movq %rbx, %rsi
callq 0x6eef6
movl $0x772, %esi            # imm = 0x772
movq %r14, %rdi
callq 0x4645e
movq %r14, %rdi
callq 0x7228c
cmpl $0x0, 0x123b24(%rip)    # 0x14996c
je 0x25eaf
movq 0x123b2f(%rip), %rdi    # 0x149980
callq 0x4895a
movsd (%rsp), %xmm1
ucomisd %xmm0, %xmm1
jne 0x25eaf
jp 0x25eaf
movss 0xb9199(%rip), %xmm0    # 0xdf004
movapd %xmm0, %xmm1
movapd %xmm0, %xmm2
callq 0x222c0
movq 0x123ac9(%rip), %rdi    # 0x149948
addq %r13, %rdi
callq 0x71ac0
mulsd 0xb91a1(%rip), %xmm0    # 0xdf030
movq %r14, %rdi
movq %rbx, %rsi
callq 0x6eef6
movl $0x772, %esi            # imm = 0x772
movq %r14, %rdi
callq 0x4645e
movq %r14, %rdi
callq 0x7228c
cmpl $0x0, 0x123ac2(%rip)    # 0x149978
je 0x25f1b
movq 0x123ac1(%rip), %rdi    # 0x149980
movq %r15, %rsi
callq 0x486fa
testl %eax, %eax
je 0x25f1b
movsd 0xb9165(%rip), %xmm0    # 0xdf038
movsd 0xb9145(%rip), %xmm1    # 0xdf020
movapd %xmm1, %xmm2
callq 0x21e50
movq 0x123a5d(%rip), %rdi    # 0x149948
addq %r13, %rdi
callq 0x71ac0
mulsd 0xb9145(%rip), %xmm0    # 0xdf040
movq %r14, %rdi
movq %rbx, %rsi
callq 0x6eef6
movl $0x772, %esi            # imm = 0x772
movq %r14, %rdi
callq 0x4645e
movq %r14, %rdi
callq 0x7228c
cmpl $0x0, 0x123a52(%rip)    # 0x149974
je 0x25f83
movq 0x123a55(%rip), %rdi    # 0x149980
movq %r15, %rsi
callq 0x487a2
testl %eax, %eax
je 0x25f83
xorpd %xmm0, %xmm0
xorpd %xmm2, %xmm2
movsd 0xb90f1(%rip), %xmm1    # 0xdf038
callq 0x21e50
movq 0x1239f5(%rip), %rdi    # 0x149948
addq %r13, %rdi
callq 0x71ac0
mulsd 0xb90dd(%rip), %xmm0    # 0xdf040
movq %r14, %rdi
movq %rbx, %rsi
callq 0x6eef6
movl $0x772, %esi            # imm = 0x772
movq %r14, %rdi
callq 0x4645e
movq %r14, %rdi
callq 0x7228c
incq %r12
movq 0x1239bb(%rip), %rax    # 0x149948
movslq 0x14(%rax), %rcx
cmpq %rcx, %r12
jl 0x25daa
cmpl $0x0, 0x1239e7(%rip)    # 0x149988
je 0x260e5
movl $0xb50, %edi            # imm = 0xB50
callq 0x211e0
movl $0xf8, %edi
addq 0x12398b(%rip), %rdi    # 0x149948
callq 0x71ac0
movq 0x12397f(%rip), %rax    # 0x149948
cmpl $0x0, 0x14(%rax)
jle 0x260e5
mulsd 0xb905d(%rip), %xmm0    # 0xdf038
mulsd 0xb9065(%rip), %xmm0    # 0xdf048
movsd %xmm0, (%rsp)
xorl %ebp, %ebp
leaq 0x58(%rsp), %rbx
leaq 0x88(%rsp), %r14
leaq 0x70(%rsp), %r13
leaq 0x12779d(%rip), %r15    # 0x14d7a0
movq 0x8(%rax), %rax
movq (%rax,%rbp,8), %r12
leaq 0x18(%r12), %rsi
movq %rbx, %rdi
callq 0x79b6a
testb $0x2, 0x78(%r12)
jne 0x26033
movq 0x123921(%rip), %rdi    # 0x149948
movq (%rdi), %rax
movq %r12, %rsi
callq *0x2b0(%rax)
leaq 0x30(%r12), %rsi
movq %r14, %rdi
callq 0x7a5fe
movslq 0x70(%r12), %rax
movq 0x123934(%rip), %rcx    # 0x149980
movq 0x410(%rcx), %rcx
movsd (%rcx,%rax,8), %xmm0
leaq 0xd0(%rsp), %rdi
leaq 0xb913c(%rip), %rsi     # 0xdf1a3
movb $0x1, %al
callq 0x21130
movq %r13, %rdi
movq %r14, %rsi
movsd (%rsp), %xmm0
callq 0x7af8a
leaq 0x40(%rsp), %rdi
movq %rbx, %rsi
movq %r13, %rdx
callq 0x79e9f
movsd 0x40(%rsp), %xmm0
movsd 0x48(%rsp), %xmm1
movsd 0x50(%rsp), %xmm2
callq 0x212a0
movb 0xd0(%rsp), %al
testb %al, %al
je 0x260ce
leaq 0xd1(%rsp), %r12
movsbl %al, %esi
movq %r15, %rdi
callq 0xd1e50
movb (%r12), %al
incq %r12
testb %al, %al
jne 0x260b8
incq %rbp
movq 0x123870(%rip), %rax    # 0x149948
movslq 0x14(%rax), %rcx
cmpq %rcx, %rbp
jl 0x26003
cmpl $0x0, 0x11e8bc(%rip)    # 0x1449a8
je 0x264b8
movl $0xb50, %edi            # imm = 0xB50
callq 0x211e0
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorpd %xmm2, %xmm2
callq 0x222c0
movl 0x11e899(%rip), %eax    # 0x1449ac
addl $-0x14, %eax
xorps %xmm1, %xmm1
cvtsi2sd %eax, %xmm1
movsd %xmm1, (%rsp)
movq 0x12380f(%rip), %rdi    # 0x149938
movq 0x123850(%rip), %rsi    # 0x149980
addq $0x8, %rsi
movsd 0xb8f14(%rip), %xmm0    # 0xdf050
xorl %edx, %edx
callq 0x293ae
movsd (%rsp), %xmm0
addsd 0xb8f08(%rip), %xmm0    # 0xdf058
movsd %xmm0, (%rsp)
movq 0x123834(%rip), %rdi    # 0x149990
movq 0x12381d(%rip), %rsi    # 0x149980
callq 0x46840
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
leaq 0xb902a(%rip), %rbx     # 0xdf1a0
leaq 0xbba2c(%rip), %rdx     # 0xe1ba9
leaq 0xd0(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
movb $0x1, %al
callq 0x21130
movq 0x12379f(%rip), %rdi    # 0x149938
movsd 0xb8eaf(%rip), %xmm0    # 0xdf050
movsd (%rsp), %xmm1
movq %r14, %rsi
xorl %edx, %edx
callq 0x293ae
movsd (%rsp), %xmm0
addsd 0xb8e9b(%rip), %xmm0    # 0xdf058
movsd %xmm0, (%rsp)
movq 0x1237b7(%rip), %rdi    # 0x149980
callq 0x4884a
leaq 0xb8fd1(%rip), %rdx     # 0xdf1a6
leaq 0xd0(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
movb $0x1, %al
callq 0x21130
movq 0x123747(%rip), %rdi    # 0x149938
movsd 0xb8e57(%rip), %xmm0    # 0xdf050
movsd (%rsp), %xmm1
movq %r14, %rsi
xorl %edx, %edx
callq 0x293ae
movsd (%rsp), %xmm0
addsd 0xb8e43(%rip), %xmm0    # 0xdf058
movsd %xmm0, (%rsp)
movq 0x12375f(%rip), %rdi    # 0x149980
callq 0x488d8
leaq 0xb8f7e(%rip), %rdx     # 0xdf1ab
leaq 0xd0(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
movb $0x1, %al
callq 0x21130
movq 0x1236ef(%rip), %rdi    # 0x149938
movsd 0xb8dff(%rip), %xmm0    # 0xdf050
movsd (%rsp), %xmm1
movq %r14, %rsi
xorl %edx, %edx
callq 0x293ae
movsd (%rsp), %xmm0
addsd 0xb8deb(%rip), %xmm0    # 0xdf058
movsd %xmm0, (%rsp)
movq 0x123707(%rip), %rdi    # 0x149980
callq 0x4895a
leaq 0xb8f2a(%rip), %rdx     # 0xdf1af
leaq 0xd0(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
movb $0x1, %al
callq 0x21130
movq 0x123697(%rip), %rdi    # 0x149938
movsd 0xb8da7(%rip), %xmm0    # 0xdf050
movsd (%rsp), %xmm1
movq %r14, %rsi
xorl %edx, %edx
callq 0x293ae
movsd (%rsp), %xmm0
addsd 0xb8d93(%rip), %xmm0    # 0xdf058
movsd %xmm0, (%rsp)
movq 0x1236af(%rip), %rdi    # 0x149980
callq 0x489dc
leaq 0xb8ed6(%rip), %rdx     # 0xdf1b3
leaq 0xd0(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
movb $0x1, %al
callq 0x21130
movq 0x12363f(%rip), %rdi    # 0x149938
movsd 0xb8d4f(%rip), %xmm0    # 0xdf050
movsd (%rsp), %xmm1
movq %r14, %rsi
xorl %edx, %edx
callq 0x293ae
movsd (%rsp), %xmm0
addsd 0xb8d3b(%rip), %xmm0    # 0xdf058
movsd %xmm0, (%rsp)
movq 0x123657(%rip), %rdi    # 0x149980
callq 0x48ae2
leaq 0xb8e85(%rip), %rdx     # 0xdf1ba
leaq 0xd0(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
movb $0x1, %al
callq 0x21130
movq 0x1235e7(%rip), %rdi    # 0x149938
movsd 0xb8cf7(%rip), %xmm0    # 0xdf050
movsd (%rsp), %xmm1
movq %r14, %rsi
xorl %edx, %edx
callq 0x293ae
movsd (%rsp), %xmm0
addsd 0xb8ce3(%rip), %xmm0    # 0xdf058
movsd %xmm0, (%rsp)
movsd 0x12358e(%rip), %xmm0   # 0x149910
leaq 0xb8e39(%rip), %rdx     # 0xdf1c2
leaq 0xd0(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
movb $0x1, %al
callq 0x21130
movq 0x123593(%rip), %rdi    # 0x149938
movsd 0xb8ca3(%rip), %xmm0    # 0xdf050
movsd (%rsp), %xmm1
movq %r14, %rsi
xorl %edx, %edx
callq 0x293ae
movsd (%rsp), %xmm0
addsd 0xb8c8f(%rip), %xmm0    # 0xdf058
movsd %xmm0, (%rsp)
movsd 0x123542(%rip), %xmm0   # 0x149918
leaq 0xb8df7(%rip), %rdx     # 0xdf1d4
leaq 0xd0(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
movb $0x1, %al
callq 0x21130
movq 0x12353f(%rip), %rdi    # 0x149938
movsd 0xb8c4f(%rip), %xmm0    # 0xdf050
movsd (%rsp), %xmm1
movq %r14, %rsi
xorl %edx, %edx
callq 0x293ae
movsd (%rsp), %xmm0
addsd 0xb8c3b(%rip), %xmm0    # 0xdf058
movsd %xmm0, (%rsp)
movsd 0x1234d6(%rip), %xmm0   # 0x149900
leaq 0xb8db5(%rip), %rdx     # 0xdf1e6
leaq 0xd0(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
movb $0x1, %al
callq 0x21130
movq 0x1234eb(%rip), %rdi    # 0x149938
movsd 0xb8bfb(%rip), %xmm0    # 0xdf050
movsd (%rsp), %xmm1
movq %r14, %rsi
xorl %edx, %edx
callq 0x293ae
movsd (%rsp), %xmm0
addsd 0xb8be7(%rip), %xmm0    # 0xdf058
movsd %xmm0, (%rsp)
movsd 0x12348a(%rip), %xmm0   # 0x149908
leaq 0xb8d78(%rip), %rdx     # 0xdf1fd
leaq 0xd0(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
movb $0x1, %al
callq 0x21130
movq 0x123497(%rip), %rdi    # 0x149938
movsd 0xb8ba7(%rip), %xmm0    # 0xdf050
movsd (%rsp), %xmm1
movq %r14, %rsi
xorl %edx, %edx
callq 0x293ae
cmpq $0x0, 0x1234d8(%rip)    # 0x149998
jne 0x264d9
callq 0xd1d72
addq $0x4d8, %rsp            # imm = 0x4D8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl 0x11e4d1(%rip), %esi    # 0x1449b0
movl 0x11e4c7(%rip), %edx    # 0x1449ac
leaq 0xd0(%rsp), %rbx
movq %rbx, %rdi
movl $0x3, %ecx
callq 0x86d02
movq %rbx, %rdi
callq 0x8778c
movq 0x12348f(%rip), %rsi    # 0x149998
leaq 0xd0(%rsp), %rdi
callq 0x88b80
movl 0x123424(%rip), %edi    # 0x149940
callq 0xd8016
xorl %edi, %edi
callq 0x21ae0
movq %rax, %rbx
leaq 0xd0(%rsp), %rdi
callq 0x86f5c
jmp 0x26552
jmp 0x26542
jmp 0x26542
jmp 0x26542
jmp 0x26542
movq %rax, %rbx
leaq 0xd0(%rsp), %rdi
callq 0x7228c
movq %rbx, %rdi
callq 0x220a0