// File: /workspace/github_cpp_makefile_star2_O3/tomfunkhouser[P]gaps/apps/mshview/mshview.cpp
// Function: GLUTRedraw()
void GLUTRedraw(void)
{
  // Check meshes
  if (meshes.NEntries() == 0) return;
  
  // Set viewing transformation
  viewer->Camera().Load();

  // Clear window 
  glClearColor(1.0, 1.0, 1.0, 1.0);
  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 lights
  static GLfloat light0_position[] = { 3.0, 4.0, 5.0, 0.0 };
  glLightfv(GL_LIGHT0, GL_POSITION, light0_position);
  static GLfloat light1_position[] = { -3.0, -2.0, -3.0, 0.0 };
  glLightfv(GL_LIGHT1, GL_POSITION, light1_position);

  // Draw every mesh
  for (int m = 0; m < meshes.NEntries(); m++) {
    R3Mesh *mesh = meshes[m];
    if ((current_mesh != -1) && (m != current_mesh)) continue;

    // Draw faces
    if (show_faces) {
      if (show_materials || show_segments || show_categories) {
        // Draw faces with special colors
        RNGrfxBegin(RN_GRFX_TRIANGLES);
        for (int i = 0; i < mesh->NFaces(); i++) {
          R3MeshFace *face = mesh->Face(i);
          if (show_materials) RNLoadRgb(colors[1 + mesh->FaceMaterial(face)%(ncolors-1)]); 
          else if (show_segments) RNLoadRgb(colors[1 + mesh->FaceSegment(face)%(ncolors-1)]); 
          else if (show_categories) RNLoadRgb(colors[1 + mesh->FaceCategory(face)%(ncolors-1)]); 
          for (int j = 0; j < 3; j++) {
            R3MeshVertex *vertex = mesh->VertexOnFace(face, j);
            R3LoadPoint(mesh->VertexPosition(vertex));
          }
        }
        RNGrfxEnd();
      }
      else {
        // Draw faces
        RNFlags draw_flags = R3_DEFAULT_DRAW_FLAGS;
        if (show_vertex_colors) glDisable(GL_LIGHTING); 
        else { glEnable(GL_LIGHTING); RNLoadRgb(0.8, 0.8, 0.8); draw_flags.Remove(R3_VERTEX_COLORS_DRAW_FLAG); }
        mesh->DrawFaces(draw_flags);
      }
    }

    // Draw edges
    if (show_edges) {
      glDisable(GL_LIGHTING);
      RNLoadRgb(1.0, 0.0, 0.0);
      mesh->DrawEdges(0);
    }

    // Draw boundary edges
    if (show_boundaries) {
      glLineWidth(3);
      glDisable(GL_LIGHTING);
      RNLoadRgb(0.0, 0.0, 0.0);
      for (int i = 0; i < mesh->NEdges(); i++) {
        R3MeshEdge *edge = mesh->Edge(i);
        if (mesh->FaceOnEdge(edge, 0) && mesh->FaceOnEdge(edge, 1)) continue;
        mesh->DrawEdge(edge);
      }
      glLineWidth(1);
    }

    // Draw vertices
    if (show_vertices) {
      RNFlags draw_flags = R3_SURFACES_DRAW_FLAG;
      if (show_vertex_colors) { glDisable(GL_LIGHTING); draw_flags.Add(R3_VERTEX_COLORS_DRAW_FLAG); }
      else { glEnable(GL_LIGHTING); RNLoadRgb(0.0, 0.5, 0.0); }
      glPointSize(5);
      mesh->DrawVertices(draw_flags);
      glPointSize(1);
    }

    // Draw face normals
    if (show_face_normals) {
      glDisable(GL_LIGHTING);
      RNLoadRgb(0.2, 0.2, 0.2);
      RNGrfxBegin(RN_GRFX_LINES);
      RNScalar radius = 0.01 * mesh->BBox().DiagonalLength();
      for (int i = 0; i < mesh->NFaces(); i++) {
        R3MeshFace *face = mesh->Face(i);
        R3Point position = mesh->FaceCentroid(face);
        R3Vector normal = mesh->FaceNormal(face);
        R3LoadPoint(position);
        R3LoadPoint(position + radius * normal);
      }
      RNGrfxEnd();
    }

    // Draw vertex normals
    if (show_vertex_normals) {
      glDisable(GL_LIGHTING);
      RNLoadRgb(0.5, 0.5, 0.5);
      RNGrfxBegin(RN_GRFX_LINES);
      RNScalar radius = 0.0025 * mesh->BBox().DiagonalLength();
      for (int i = 0; i < mesh->NVertices(); i++) {
        R3MeshVertex *vertex = mesh->Vertex(i);
        R3Point position = mesh->VertexPosition(vertex);
        R3Vector normal = mesh->VertexNormal(vertex);
        if (show_vertex_colors) R3LoadRgb(mesh->VertexColor(vertex));
        R3LoadRgb(sqrt(normal.Length()), 0.0, 1.0);
        R3LoadPoint(position);
        R3LoadPoint(position + radius * normal);
      }
      RNGrfxEnd();
    }

    // Draw face names
    if (show_face_names) {
      glDisable(GL_LIGHTING);
      RNLoadRgb(0, 0, 0);
      for (int i = 0; i < mesh->NFaces(); i++) {
        R3MeshFace *face = mesh->Face(i);
        char buffer[256];
        sprintf(buffer, "%d", mesh->FaceID(face));
        R3DrawText(mesh->FaceCentroid(face), buffer);
      }
    }

    // Draw edge names   
    if (show_edge_names) {
      glDisable(GL_LIGHTING);
      RNLoadRgb(0.8, 0.0, 0.0);
      for (int i = 0; i < mesh->NEdges(); i++) {
        R3MeshEdge *edge = mesh->Edge(i);
        char buffer[256];
        sprintf(buffer, "%d", mesh->EdgeID(edge));
        R3DrawText(mesh->EdgeMidpoint(edge), buffer);
      }
    }

    // Draw vertex names
    if (show_vertex_names) {
      glDisable(GL_LIGHTING);
      RNLoadRgb(0.5, 0.3, 0.1);
      RNLength r = 1E-5 * mesh->BBox().DiagonalRadius();
      for (int i = 0; i < mesh->NVertices(); i++) {
        R3MeshVertex *vertex = mesh->Vertex(i);
        R3Point position = mesh->VertexPosition(vertex);
        R3Vector normal = mesh->VertexNormal(vertex);        
        char buffer[256];
        sprintf(buffer, "%d", mesh->VertexID(vertex));
        if (show_vertex_colors) R3LoadRgb(mesh->VertexColor(vertex));
        R3DrawText(position + r * normal, buffer);
      }
    }

    // Draw material names
    if (show_material_names) {
      glDisable(GL_LIGHTING);
      RNLoadRgb(0, 0, 1);
      for (int i = 0; i < mesh->NFaces(); i++) {
        R3MeshFace *face = mesh->Face(i);
        char buffer[256];
        sprintf(buffer, "%d", mesh->FaceMaterial(face));
        R3DrawText(mesh->FaceCentroid(face), buffer);
      }
    }

    // Draw segment names
    if (show_segment_names) {
      glDisable(GL_LIGHTING);
      RNLoadRgb(0, 0, 1);
      for (int i = 0; i < mesh->NFaces(); i++) {
        R3MeshFace *face = mesh->Face(i);
        char buffer[256];
        sprintf(buffer, "%d", mesh->FaceSegment(face));
        R3DrawText(mesh->FaceCentroid(face), buffer);
      }
    }
    
    // Draw category names
    if (show_category_names) {
      glDisable(GL_LIGHTING);
      RNLoadRgb(0, 0, 1);
      for (int i = 0; i < mesh->NFaces(); i++) {
        R3MeshFace *face = mesh->Face(i);
        char buffer[256];
        sprintf(buffer, "%d", mesh->FaceCategory(face));
        R3DrawText(mesh->FaceCentroid(face), buffer);
      }
    }
  }

  // Draw world origin
  if (show_world_origin) {
    glEnable(GL_LIGHTING);
    RNLoadRgb(1.0, 0.0, 0.0);
    RNScalar r = 0.01 * meshes[0]->BBox().DiagonalRadius();
    R3Sphere(world_origin, r).Draw();
  }

  // Draw axes
  if (show_axes) {
    RNScalar d = meshes[0]->BBox().DiagonalRadius();
    glDisable(GL_LIGHTING);
    glLineWidth(3);
    R3BeginLine();
    RNLoadRgb(1, 0, 0);
    R3LoadPoint(R3zero_point + 0.5*d * R3negx_vector);
    R3LoadPoint(R3zero_point + d * R3posx_vector);
    R3EndLine();
    R3BeginLine();
    RNLoadRgb(0, 1, 0);
    R3LoadPoint(R3zero_point + 0.5*d * R3negy_vector);
    R3LoadPoint(R3zero_point + d * R3posy_vector);
    R3EndLine();
    R3BeginLine();
    RNLoadRgb(0, 0, 1);
    R3LoadPoint(R3zero_point + 0.5*d * R3negz_vector);
    R3LoadPoint(R3zero_point + d * R3posz_vector);
    R3EndLine();
    glLineWidth(1);
  }

  // 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 $0x178, %rsp            # imm = 0x178
cmpl $0x0, 0x11cc1d(%rip)    # 0x1428f4
je 0x2699a
movq 0x11d2f4(%rip), %rdi    # 0x142fd8
addq $0x8, %rdi
xorl %esi, %esi
callq 0x29fb4
movss 0xb430d(%rip), %xmm0    # 0xda004
movapd %xmm0, %xmm1
movapd %xmm0, %xmm2
movapd %xmm0, %xmm3
callq 0x21e00
movl $0x4100, %edi           # imm = 0x4100
callq 0x211e0
cmpl $0x0, 0x11d2c7(%rip)    # 0x142fe0
je 0x25d27
movl $0xb44, %edi            # imm = 0xB44
callq 0x211f0
jmp 0x25d31
movl $0xb44, %edi            # imm = 0xB44
callq 0x21800
leaq 0x117c58(%rip), %rdx    # 0x13d990
movl $0x4000, %edi           # imm = 0x4000
movl $0x1203, %esi           # imm = 0x1203
callq 0x22080
leaq 0x117c52(%rip), %rdx    # 0x13d9a0
movl $0x4001, %edi           # imm = 0x4001
movl $0x1203, %esi           # imm = 0x1203
callq 0x22080
cmpl $0x0, 0x11cb90(%rip)    # 0x1428f4
jle 0x26709
leaq 0x8(%rsp), %r15
leaq 0x12108a(%rip), %r12    # 0x146e00
xorl %edx, %edx
movl 0x117c32(%rip), %eax    # 0x13d9b0
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
cmpq %rcx, %rax
setne %cl
movq %rdx, 0x28(%rsp)
cmpq %rax, %rdx
setne %al
testb %al, %cl
jne 0x266f1
movq 0x11cb45(%rip), %rax    # 0x1428e8
movq 0x28(%rsp), %rcx
movq (%rax,%rcx,8), %rbp
cmpl $0x0, 0x117c01(%rip)    # 0x13d9b4
je 0x25eea
cmpl $0x0, 0x11d224(%rip)    # 0x142fe4
jne 0x25df5
cmpl $0x0, 0x11d21f(%rip)    # 0x142fe8
jne 0x25df5
cmpl $0x0, 0x11d21a(%rip)    # 0x142fec
jne 0x25df5
cmpl $0x0, 0x11d215(%rip)    # 0x142ff0
je 0x25eb9
movl $0xb50, %edi            # imm = 0xB50
callq 0x211f0
movl $0x772, %esi            # imm = 0x772
jmp 0x25edd
movl $0x4, %edi
callq 0x21190
cmpl $0x0, 0x34(%rbp)
jle 0x25eb2
xorl %ebx, %ebx
movq 0x28(%rbp), %rax
movq (%rax,%rbx,8), %r13
movl $0x98, %eax
cmpl $0x0, 0x11d1c5(%rip)    # 0x142fe4
jne 0x25e3d
movl $0x9c, %eax
cmpl $0x0, 0x11d1bb(%rip)    # 0x142fe8
jne 0x25e3d
movl $0xa0, %eax
cmpl $0x0, 0x11d1b1(%rip)    # 0x142fec
je 0x25e85
movslq (%r13,%rax), %rax
imulq $-0x193d4bb7, %rax, %rcx # imm = 0xE6C2B449
shrq $0x20, %rcx
addl %eax, %ecx
movl %ecx, %edx
shrl $0x1f, %edx
sarl $0x6, %ecx
addl %edx, %ecx
imull $0x47, %ecx, %ecx
negl %ecx
addl %ecx, %eax
incl %eax
cltq
leaq (%rax,%rax,2), %rax
leaq 0x11caa1(%rip), %rcx    # 0x142910
movsd (%rcx,%rax,8), %xmm0
movsd 0x8(%rcx,%rax,8), %xmm1
movsd 0x10(%rcx,%rax,8), %xmm2
callq 0x21e50
movl $0x1, %r14d
movq (%r13,%r14,8), %rdi
addq $0x18, %rdi
callq 0x211b0
incq %r14
cmpq $0x4, %r14
jne 0x25e8b
incq %rbx
movslq 0x34(%rbp), %rax
cmpq %rax, %rbx
jl 0x25e0b
callq 0x21c30
jmp 0x25eea
movl $0xb50, %edi            # imm = 0xB50
callq 0x21800
movsd 0xb4145(%rip), %xmm0    # 0xda010
movapd %xmm0, %xmm1
movapd %xmm0, %xmm2
callq 0x21e50
movl $0x372, %esi            # imm = 0x372
movq (%rbp), %rax
movq %rbp, %rdi
callq *0x138(%rax)
cmpl $0x0, 0x11d103(%rip)    # 0x142ff4
je 0x25f21
movl $0xb50, %edi            # imm = 0xB50
callq 0x211f0
xorpd %xmm1, %xmm1
xorpd %xmm2, %xmm2
movsd 0xb410b(%rip), %xmm0    # 0xda018
callq 0x21e50
movq (%rbp), %rax
movq %rbp, %rdi
xorl %esi, %esi
callq *0x130(%rax)
cmpl $0x0, 0x11d0d0(%rip)    # 0x142ff8
je 0x25f99
movss 0xb40d6(%rip), %xmm0    # 0xda008
callq 0x22120
movl $0xb50, %edi            # imm = 0xB50
callq 0x211f0
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorpd %xmm2, %xmm2
callq 0x21e50
movl 0x24(%rbp), %eax
testl %eax, %eax
jle 0x25f8c
xorl %ebx, %ebx
movq 0x18(%rbp), %rcx
movq (%rcx,%rbx,8), %rsi
cmpq $0x0, 0x18(%rsi)
je 0x25f71
cmpq $0x0, 0x20(%rsi)
jne 0x25f81
movq (%rbp), %rax
movq %rbp, %rdi
callq *0x160(%rax)
movl 0x24(%rbp), %eax
incq %rbx
movslq %eax, %rcx
cmpq %rcx, %rbx
jl 0x25f5b
movss 0xb4070(%rip), %xmm0    # 0xda004
callq 0x22120
cmpl $0x0, 0x11d05c(%rip)    # 0x142ffc
je 0x2600a
cmpl $0x0, 0x11d047(%rip)    # 0x142ff0
je 0x25fbc
movl $0xb50, %edi            # imm = 0xB50
callq 0x211f0
movl $0x402, %ebx            # imm = 0x402
jmp 0x25fe0
movl $0xb50, %edi            # imm = 0xB50
callq 0x21800
xorpd %xmm0, %xmm0
xorpd %xmm2, %xmm2
movsd 0xb404a(%rip), %xmm1    # 0xda020
callq 0x21e50
movl $0x2, %ebx
movss 0xb4024(%rip), %xmm0    # 0xda00c
callq 0x210a0
movq (%rbp), %rax
movq %rbp, %rdi
movq %rbx, %rsi
callq *0x128(%rax)
movss 0xb3fff(%rip), %xmm0    # 0xda004
callq 0x210a0
cmpl $0x0, 0x11cfef(%rip)    # 0x143000
je 0x26102
movl $0xb50, %edi            # imm = 0xB50
callq 0x211f0
movsd 0xb3fff(%rip), %xmm0    # 0xda028
movapd %xmm0, %xmm1
movapd %xmm0, %xmm2
callq 0x21e50
movl $0x1, %edi
callq 0x21190
leaq 0xf8(%rbp), %rdi
callq 0x6cbf8
mulsd 0xb3fdc(%rip), %xmm0    # 0xda030
movsd %xmm0, (%rsp)
cmpl $0x0, 0x34(%rbp)
leaq 0x60(%rsp), %r14
jle 0x260fd
xorl %r13d, %r13d
movq 0x28(%rbp), %rax
movq (%rax,%r13,8), %rbx
movq %r14, %rdi
movq %rbp, %rsi
movq %rbx, %rdx
callq 0x50e16
testb $0x4, 0xa8(%rbx)
jne 0x2609a
movq (%rbp), %rax
movq %rbp, %rdi
movq %rbx, %rsi
callq *0x2c8(%rax)
addq $0x38, %rbx
movq %r15, %rdi
movq %rbx, %rsi
callq 0x75736
leaq 0x60(%rsp), %r14
movq %r14, %rdi
callq 0x211b0
leaq 0x48(%rsp), %r15
movq %r15, %rdi
leaq 0x8(%rsp), %rsi
movsd (%rsp), %xmm0
callq 0x760c2
leaq 0x30(%rsp), %rbx
movq %rbx, %rdi
movq %r14, %rsi
movq %r15, %rdx
leaq 0x8(%rsp), %r15
callq 0x74fd7
movq %rbx, %rdi
callq 0x211b0
incq %r13
movslq 0x34(%rbp), %rax
cmpq %rax, %r13
jl 0x2606b
callq 0x21c30
cmpl $0x0, 0x11cefb(%rip)    # 0x143004
je 0x26245
movl $0xb50, %edi            # imm = 0xB50
callq 0x211f0
movsd 0xb3eff(%rip), %xmm0    # 0xda020
movapd %xmm0, %xmm1
movapd %xmm0, %xmm2
callq 0x21e50
movl $0x1, %edi
callq 0x21190
leaq 0xf8(%rbp), %rdi
callq 0x6cbf8
mulsd 0xb3eec(%rip), %xmm0    # 0xda038
movsd %xmm0, (%rsp)
cmpl $0x0, 0x14(%rbp)
leaq 0x60(%rsp), %rdi
jle 0x26240
xorl %r13d, %r13d
movq %rbp, 0x20(%rsp)
movq 0x8(%rbp), %rax
movq (%rax,%r13,8), %rbx
leaq 0x18(%rbx), %rsi
callq 0x74ca2
testb $0x2, 0x78(%rbx)
jne 0x2618f
movq (%rbp), %rax
movq %rbp, %rdi
movq %rbx, %rsi
callq *0x2b0(%rax)
leaq 0x30(%rbx), %rsi
movq %r15, %rdi
callq 0x75736
cmpl $0x0, 0x11ce4e(%rip)    # 0x142ff0
je 0x261b8
movsd 0x58(%rbx), %xmm0
movsd 0x60(%rbx), %xmm1
movsd 0x68(%rbx), %xmm2
callq 0x21e50
movq %r15, %rdi
callq 0x7582c
ucomisd 0xb3e90(%rip), %xmm0    # 0xda058
jb 0x261d0
sqrtsd %xmm0, %xmm0
jmp 0x261d5
callq 0x216b0
leaq 0x60(%rsp), %rbx
xorpd %xmm1, %xmm1
movsd 0xb3e32(%rip), %xmm2    # 0xda018
callq 0x21e50
movq %rbx, %rdi
callq 0x211b0
leaq 0x48(%rsp), %rbp
movq %rbp, %rdi
leaq 0x8(%rsp), %r15
movq %r15, %rsi
movsd (%rsp), %xmm0
callq 0x760c2
leaq 0x30(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
movq %rbp, %rdx
callq 0x74fd7
movq %r14, %rdi
callq 0x211b0
incq %r13
movq 0x20(%rsp), %rbp
movslq 0x14(%rbp), %rax
cmpq %rax, %r13
movq %rbx, %rdi
jl 0x26168
callq 0x21c30
cmpl $0x0, 0x11cdbc(%rip)    # 0x143008
je 0x262e9
movl $0xb50, %edi            # imm = 0xB50
callq 0x211f0
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorpd %xmm2, %xmm2
callq 0x222c0
cmpl $0x0, 0x34(%rbp)
jle 0x262e9
xorl %r13d, %r13d
movq 0x28(%rbp), %rax
movq (%rax,%r13,8), %rbx
movl 0xa4(%rbx), %edx
leaq 0x60(%rsp), %rdi
leaq 0xba94a(%rip), %rsi     # 0xe0bda
xorl %eax, %eax
callq 0x21140
movq %r15, %rdi
movq %rbp, %rsi
movq %rbx, %rdx
callq 0x50e16
movsd 0x8(%rsp), %xmm0
movsd 0x10(%rsp), %xmm1
movsd 0x18(%rsp), %xmm2
callq 0x212b0
movb 0x60(%rsp), %al
testb %al, %al
je 0x262dd
leaq 0x61(%rsp), %rbx
movsbl %al, %esi
movq %r12, %rdi
callq 0xccf88
movb (%rbx), %al
incq %rbx
testb %al, %al
jne 0x262c9
incq %r13
movslq 0x34(%rbp), %rax
cmpq %rax, %r13
jl 0x26276
cmpl $0x0, 0x11cd1c(%rip)    # 0x14300c
je 0x263b7
movl $0xb50, %edi            # imm = 0xB50
callq 0x211f0
xorpd %xmm1, %xmm1
xorpd %xmm2, %xmm2
movsd 0xb3d00(%rip), %xmm0    # 0xda010
callq 0x21e50
cmpl $0x0, 0x24(%rbp)
jle 0x263b7
xorl %ebx, %ebx
movq 0x18(%rbp), %rax
movq (%rax,%rbx,8), %r14
movl 0x30(%r14), %edx
leaq 0x60(%rsp), %rdi
leaq 0xba8a1(%rip), %rsi     # 0xe0bda
xorl %eax, %eax
callq 0x21140
movq 0x8(%r14), %rsi
movq 0x10(%r14), %rdx
addq $0x18, %rsi
addq $0x18, %rdx
movq %r15, %rdi
callq 0x75690
leaq 0x30(%rsp), %rdi
movq %r15, %rsi
movsd 0xb3cb8(%rip), %xmm0    # 0xda020
callq 0x756d6
movsd 0x30(%rsp), %xmm0
movsd 0x38(%rsp), %xmm1
movsd 0x40(%rsp), %xmm2
callq 0x212b0
movb 0x60(%rsp), %al
testb %al, %al
je 0x263a7
leaq 0x61(%rsp), %r13
movsbl %al, %esi
movq %r12, %rdi
callq 0xccf88
movb (%r13), %al
incq %r13
testb %al, %al
jne 0x26391
incq %rbx
movslq 0x24(%rbp), %rax
cmpq %rax, %rbx
jl 0x26321
cmpl $0x0, 0x11cc52(%rip)    # 0x143010
leaq 0x61(%rsp), %r14
je 0x264f9
movl $0xb50, %edi            # imm = 0xB50
callq 0x211f0
movsd 0xb3c45(%rip), %xmm0    # 0xda020
movsd 0xb3c5d(%rip), %xmm1    # 0xda040
movsd 0xb3c5d(%rip), %xmm2    # 0xda048
callq 0x21e50
leaq 0xf8(%rbp), %rdi
callq 0x6cbf8
mulsd 0xb3c1c(%rip), %xmm0    # 0xda020
mulsd 0xb3c44(%rip), %xmm0    # 0xda050
movsd %xmm0, (%rsp)
cmpl $0x0, 0x14(%rbp)
jle 0x264f9
xorl %r13d, %r13d
movq 0x8(%rbp), %rax
movq (%rax,%r13,8), %rbx
leaq 0x18(%rbx), %rsi
movq %r15, %rdi
callq 0x74ca2
testb $0x2, 0x78(%rbx)
jne 0x26448
movq (%rbp), %rax
movq %rbp, %rdi
movq %rbx, %rsi
callq *0x2b0(%rax)
leaq 0x30(%rbx), %rsi
leaq 0x30(%rsp), %rdi
callq 0x75736
movl 0x70(%rbx), %edx
leaq 0x60(%rsp), %rdi
leaq 0xba775(%rip), %rsi     # 0xe0bda
xorl %eax, %eax
callq 0x21140
cmpl $0x0, 0x11cb7d(%rip)    # 0x142ff0
je 0x26489
movsd 0x58(%rbx), %xmm0
movsd 0x60(%rbx), %xmm1
movsd 0x68(%rbx), %xmm2
callq 0x21e50
leaq 0x160(%rsp), %rbx
movq %rbx, %rdi
leaq 0x30(%rsp), %rsi
movsd (%rsp), %xmm0
callq 0x760c2
leaq 0x48(%rsp), %rdi
movq %r15, %rsi
movq %rbx, %rdx
callq 0x74fd7
movsd 0x48(%rsp), %xmm0
movsd 0x50(%rsp), %xmm1
movsd 0x58(%rsp), %xmm2
callq 0x212b0
movb 0x60(%rsp), %al
testb %al, %al
je 0x264e9
movq %r14, %rbx
movsbl %al, %esi
movq %r12, %rdi
callq 0xccf88
movb (%rbx), %al
incq %rbx
testb %al, %al
jne 0x264d5
incq %r13
movslq 0x14(%rbp), %rax
cmpq %rax, %r13
jl 0x2641e
cmpl $0x0, 0x11cb14(%rip)    # 0x143014
je 0x265a1
movl $0xb50, %edi            # imm = 0xB50
callq 0x211f0
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
movss 0xb3ae4(%rip), %xmm2    # 0xda004
callq 0x222c0
cmpl $0x0, 0x34(%rbp)
jle 0x265a1
xorl %r13d, %r13d
movq 0x28(%rbp), %rax
movq (%rax,%r13,8), %rbx
movl 0x98(%rbx), %edx
leaq 0x60(%rsp), %rdi
leaq 0xba692(%rip), %rsi     # 0xe0bda
xorl %eax, %eax
callq 0x21140
movq %r15, %rdi
movq %rbp, %rsi
movq %rbx, %rdx
callq 0x50e16
movsd 0x8(%rsp), %xmm0
movsd 0x10(%rsp), %xmm1
movsd 0x18(%rsp), %xmm2
callq 0x212b0
movb 0x60(%rsp), %al
testb %al, %al
je 0x26595
leaq 0x61(%rsp), %rbx
movsbl %al, %esi
movq %r12, %rdi
callq 0xccf88
movb (%rbx), %al
incq %rbx
testb %al, %al
jne 0x26581
incq %r13
movslq 0x34(%rbp), %rax
cmpq %rax, %r13
jl 0x2652e
cmpl $0x0, 0x11ca70(%rip)    # 0x143018
je 0x26649
movl $0xb50, %edi            # imm = 0xB50
callq 0x211f0
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
movss 0xb3a3c(%rip), %xmm2    # 0xda004
callq 0x222c0
cmpl $0x0, 0x34(%rbp)
jle 0x26649
xorl %r13d, %r13d
movq 0x28(%rbp), %rax
movq (%rax,%r13,8), %rbx
movl 0x9c(%rbx), %edx
leaq 0x60(%rsp), %rdi
leaq 0xba5ea(%rip), %rsi     # 0xe0bda
xorl %eax, %eax
callq 0x21140
movq %r15, %rdi
movq %rbp, %rsi
movq %rbx, %rdx
callq 0x50e16
movsd 0x8(%rsp), %xmm0
movsd 0x10(%rsp), %xmm1
movsd 0x18(%rsp), %xmm2
callq 0x212b0
movb 0x60(%rsp), %al
testb %al, %al
je 0x2663d
leaq 0x61(%rsp), %rbx
movsbl %al, %esi
movq %r12, %rdi
callq 0xccf88
movb (%rbx), %al
incq %rbx
testb %al, %al
jne 0x26629
incq %r13
movslq 0x34(%rbp), %rax
cmpq %rax, %r13
jl 0x265d6
cmpl $0x0, 0x11c9cc(%rip)    # 0x14301c
je 0x266f1
movl $0xb50, %edi            # imm = 0xB50
callq 0x211f0
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
movss 0xb3994(%rip), %xmm2    # 0xda004
callq 0x222c0
cmpl $0x0, 0x34(%rbp)
jle 0x266f1
xorl %r13d, %r13d
movq 0x28(%rbp), %rax
movq (%rax,%r13,8), %rbx
movl 0xa0(%rbx), %edx
leaq 0x60(%rsp), %rdi
leaq 0xba542(%rip), %rsi     # 0xe0bda
xorl %eax, %eax
callq 0x21140
movq %r15, %rdi
movq %rbp, %rsi
movq %rbx, %rdx
callq 0x50e16
movsd 0x8(%rsp), %xmm0
movsd 0x10(%rsp), %xmm1
movsd 0x18(%rsp), %xmm2
callq 0x212b0
movb 0x60(%rsp), %al
testb %al, %al
je 0x266e5
leaq 0x61(%rsp), %rbx
movsbl %al, %esi
movq %r12, %rdi
callq 0xccf88
movb (%rbx), %al
incq %rbx
testb %al, %al
jne 0x266d1
incq %r13
movslq 0x34(%rbp), %rax
cmpq %rax, %r13
jl 0x2667e
movq 0x28(%rsp), %rdx
incq %rdx
movslq 0x11c1f4(%rip), %rax    # 0x1428f4
cmpq %rax, %rdx
jl 0x25d78
cmpl $0x0, 0x11c910(%rip)    # 0x143020
je 0x26780
movl $0xb50, %edi            # imm = 0xB50
callq 0x21800
movsd 0xb38f4(%rip), %xmm0    # 0xda018
xorpd %xmm1, %xmm1
xorpd %xmm2, %xmm2
callq 0x21e50
movq 0x11c1b0(%rip), %rax    # 0x1428e8
movl $0xf8, %edi
addq (%rax), %rdi
callq 0x6cbf8
mulsd 0xb38d3(%rip), %xmm0    # 0xda020
mulsd 0xb38db(%rip), %xmm0    # 0xda030
leaq 0x11c19c(%rip), %rsi    # 0x1428f8
leaq 0x60(%rsp), %rbx
movq %rbx, %rdi
callq 0x6a02e
movl $0x772, %esi            # imm = 0x772
movq %rbx, %rdi
callq 0x4637e
leaq 0x60(%rsp), %rdi
callq 0x6d3c4
cmpl $0x0, 0x11c89d(%rip)    # 0x143024
je 0x2698b
movq 0x11c154(%rip), %rax    # 0x1428e8
movl $0xf8, %edi
addq (%rax), %rdi
callq 0x6cbf8
mulsd 0xb3877(%rip), %xmm0    # 0xda020
movsd %xmm0, (%rsp)
movl $0xb50, %edi            # imm = 0xB50
callq 0x211f0
movss 0xb3848(%rip), %xmm0    # 0xda008
callq 0x22120
movl $0x3, %edi
callq 0x21190
movss 0xb382d(%rip), %xmm0    # 0xda004
xorpd %xmm1, %xmm1
xorpd %xmm2, %xmm2
callq 0x222c0
movsd 0xb3834(%rip), %xmm0    # 0xda020
mulsd (%rsp), %xmm0
movsd %xmm0, 0x20(%rsp)
leaq 0xb64ca(%rip), %rsi     # 0xdccc8
leaq 0x8(%rsp), %r14
movq %r14, %rdi
callq 0x760c2
leaq 0x11fbde(%rip), %rbx    # 0x1463f0
leaq 0x60(%rsp), %r15
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x74fd7
movq %r15, %rdi
callq 0x211b0
leaq 0xb644c(%rip), %rsi     # 0xdcc80
leaq 0x8(%rsp), %r14
movq %r14, %rdi
movsd (%rsp), %xmm0
callq 0x760c2
leaq 0x60(%rsp), %r15
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x74fd7
movq %r15, %rdi
callq 0x211b0
callq 0x21c30
movl $0x3, %edi
callq 0x21190
xorps %xmm0, %xmm0
xorpd %xmm2, %xmm2
movss 0xb3785(%rip), %xmm1    # 0xda004
callq 0x222c0
leaq 0xb6455(%rip), %rsi     # 0xdcce0
leaq 0x8(%rsp), %r14
movq %r14, %rdi
movsd 0x20(%rsp), %xmm0
callq 0x760c2
leaq 0x60(%rsp), %r15
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x74fd7
movq %r15, %rdi
callq 0x211b0
leaq 0xb63d8(%rip), %rsi     # 0xdcc98
leaq 0x8(%rsp), %r14
movq %r14, %rdi
movsd (%rsp), %xmm0
callq 0x760c2
leaq 0x60(%rsp), %r15
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x74fd7
movq %r15, %rdi
callq 0x211b0
callq 0x21c30
movl $0x3, %edi
callq 0x21190
xorps %xmm0, %xmm0
xorpd %xmm1, %xmm1
movss 0xb36f9(%rip), %xmm2    # 0xda004
callq 0x222c0
leaq 0xb63e1(%rip), %rsi     # 0xdccf8
leaq 0x8(%rsp), %r14
movq %r14, %rdi
movsd 0x20(%rsp), %xmm0
callq 0x760c2
leaq 0x60(%rsp), %r15
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x74fd7
movq %r15, %rdi
callq 0x211b0
leaq 0xb6364(%rip), %rsi     # 0xdccb0
leaq 0x8(%rsp), %r14
movq %r14, %rdi
movsd (%rsp), %xmm0
callq 0x760c2
leaq 0x60(%rsp), %r15
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x74fd7
movq %r15, %rdi
callq 0x211b0
callq 0x21c30
movss 0xb367e(%rip), %xmm0    # 0xda004
callq 0x22120
cmpq $0x0, 0x11c695(%rip)    # 0x143028
jne 0x269ac
callq 0xcceaa
addq $0x178, %rsp            # imm = 0x178
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl 0x117006(%rip), %esi    # 0x13d9b8
movl 0x117004(%rip), %edx    # 0x13d9bc
leaq 0x60(%rsp), %rbx
movq %rbx, %rdi
movl $0x3, %ecx
callq 0x81e3a
movq %rbx, %rdi
callq 0x828c4
movq 0x11c64f(%rip), %rsi    # 0x143028
leaq 0x60(%rsp), %rdi
callq 0x83cb8
movl 0x11c5e7(%rip), %edi    # 0x142fd0
callq 0xd314e
xorl %edi, %edi
callq 0x21ae0
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0x6d3c4
jmp 0x26a11
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0x82094
movq %rbx, %rdi
callq 0x220a0