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

  // Clear window 
  glClearColor(background_color[0], background_color[1], background_color[2], 1.0);
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

  // 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 grid
  if (show_points) {
    glPointSize(5.0);
    glDisable(GL_LIGHTING);
    glDepthMask(FALSE);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    glEnable(GL_BLEND);
    glDisable(GL_DEPTH_TEST);
    RNGrfxBegin(RN_GRFX_POINTS);
    RNScalar mean = grid->Mean();
    RNScalar scale = (RNIsZero(mean)) ? 1.0 : 0.25 / grid->Mean();
    for (int i = 0; i < grid->XResolution(); i++) {
      for (int j = 0; j < grid->YResolution(); j++) {
        for (int k = 0; k < grid->ZResolution(); k++) {
          RNScalar value = grid->GridValue(i, j, k);
          if (value <= grid_threshold) continue;
          RNScalar intensity = 1 - scale * value;
          RNLoadRgba(intensity, intensity, intensity, 0.5*(1-intensity));
          double x = i + 1.0 - (7*i%5)/6.0 - (7*j%5)/6.0 - (7*k%5)/6.0;
          double y = j + 1.0 - (7*i%5)/6.0 - (7*j%5)/6.0 - (7*k%5)/6.0;
          double z = k + 1.0 - (7*i%5)/6.0 - (7*j%5)/6.0 - (7*k%5)/6.0;
          R3LoadPoint(x, y, z);
        }
      }
    }
    RNGrfxEnd();
    glEnable(GL_DEPTH_TEST);
    glDisable(GL_BLEND);
    glBlendFunc(GL_ONE, GL_ZERO);
    glDepthMask(TRUE);
    glPointSize(1.0);
  }

  // Draw grid text
  if (show_text) {
    char buffer[64];
    glDisable(GL_LIGHTING);
    RNLoadRgb(0.0, 0.0, 1.0);
    for (int i = 0; i < grid->XResolution(); i++) {
      for (int j = 0; j < grid->YResolution(); j++) {
        for (int k = 0; k < grid->ZResolution(); k++) {
          RNScalar value = grid->GridValue(i, j, k);
          if (value >= grid_threshold) continue;
          sprintf(buffer, "%.2g", value);
          R3DrawText(i, j, k, buffer);
        }
      }
    }
  }

  // Draw grid isosurface
  if (show_isosurface) {
    glDisable(GL_LIGHTING);
    RNLoadRgb(1.0, 0.0, 0.0);
    glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
    grid->DrawIsoSurface(grid_threshold);
    glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
  }

  // Draw grid X slices
  if (show_slices[RN_X] || show_slices[RN_Y] || show_slices[RN_Z]) {
    glDisable(GL_LIGHTING);
    RNLoadRgb(1.0, 1.0, 1.0);
    if (show_slices[RN_X]) grid->DrawSlice(RN_X, grid_slice_coords[RN_X]);
    if (show_slices[RN_Y]) grid->DrawSlice(RN_Y, grid_slice_coords[RN_Y]);
    if (show_slices[RN_Z]) grid->DrawSlice(RN_Z, grid_slice_coords[RN_Z]);
  }

  // Draw grid bounding box
  if (show_box) {
    glDisable(GL_LIGHTING);
    RNLoadRgb(0, 0, 0);
    R3Box(0, 0, 0, grid->XResolution()-1, grid->YResolution()-1, grid->ZResolution()-1).Outline();
#if 0
    if (show_slices[0]) R3Box(grid_slice_coords[0], 0, 0, grid_slice_coords[0], grid->YResolution()-1, grid->ZResolution()-1).Outline();
    if (show_slices[1]) R3Box(0, grid_slice_coords[1], 0, grid->XResolution()-1, grid_slice_coords[1], grid->ZResolution()-1).Outline();
    if (show_slices[2]) R3Box(0, 0, grid_slice_coords[2], grid->XResolution()-1, grid->YResolution()-1, grid_slice_coords[2]).Outline();
#endif
  }

  // Draw axes
  if (show_axes) {
    glDisable(GL_LIGHTING);
    glLineWidth(3);
    RNLoadRgb(1, 0, 0);
    R3BeginLine();
    R3LoadPoint(grid->XResolution()/2.0, grid->YResolution()/2.0, grid->ZResolution()/2.0);
    R3LoadPoint(grid->XResolution()/1.0, grid->YResolution()/2.0, grid->ZResolution()/2.0);
    R3EndLine();
    RNLoadRgb(0, 1, 0);
    R3BeginLine();
    R3LoadPoint(grid->XResolution()/2.0, grid->YResolution()/2.0, grid->ZResolution()/2.0);
    R3LoadPoint(grid->XResolution()/2.0, grid->YResolution()/1.0, grid->ZResolution()/2.0);
    R3EndLine();
    RNLoadRgb(0, 0, 1);
    R3BeginLine();
    R3LoadPoint(grid->XResolution()/2.0, grid->YResolution()/2.0, grid->ZResolution()/2.0);
    R3LoadPoint(grid->XResolution()/2.0, grid->YResolution()/2.0, grid->ZResolution()/1.0);
    R3EndLine();
    glLineWidth(1);
  }

  // Draw principle axes
  if (show_principle_axes) {
    static R3Point *center = NULL;
    static R3Vector axes[3];
    if (!center) {
      RNScalar variances[3];
      center = new R3Point(grid->GridCentroid());
      R3Triad triad = grid->GridPrincipleAxes(center, variances);
      axes[0] = sqrt(variances[0]) * triad[0];
      axes[1] = sqrt(variances[1]) * triad[1];
      axes[2] = sqrt(variances[2]) * triad[2];
    }
    glDisable(GL_LIGHTING);
    glLineWidth(3);
    RNLoadRgb(1, 0, 0);
    R3BeginLine();
    R3LoadPoint(*center - axes[0]);
    R3LoadPoint(*center + axes[0]);
    R3EndLine();
    RNLoadRgb(0, 1, 0);
    R3BeginLine();
    R3LoadPoint(*center - axes[1]);
    R3LoadPoint(*center + axes[1]);
    R3EndLine();
    RNLoadRgb(0, 0, 1);
    R3BeginLine();
    R3LoadPoint(*center - axes[2]);
    R3LoadPoint(*center + axes[2]);
    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 $0xc8, %rsp
movq 0xf9b09(%rip), %rdi     # 0x11b7a0
addq $0x8, %rdi
xorl %esi, %esi
callq 0x25b26
cvtsd2ss 0xf4b86(%rip), %xmm0    # 0x116830
cvtsd2ss 0xf4b8e(%rip), %xmm1    # 0x116840
cvtsd2ss 0xf4b96(%rip), %xmm2    # 0x116850
movss 0x93342(%rip), %xmm3    # 0xb5004
callq 0x1fc40
movl $0x4100, %edi           # imm = 0x4100
callq 0x1f1a0
leaq 0xf4b88(%rip), %rdx     # 0x116860
movl $0x4000, %edi           # imm = 0x4000
movl $0x1203, %esi           # imm = 0x1203
callq 0x1fe50
leaq 0xf4b82(%rip), %rdx     # 0x116870
movl $0x4001, %edi           # imm = 0x4001
movl $0x1203, %esi           # imm = 0x1203
callq 0x1fe50
cmpl $0x0, 0xf9aa4(%rip)     # 0x11b7a8
je 0x21f6b
movss 0x932f6(%rip), %xmm0    # 0xb5008
callq 0x1f090
movl $0xb50, %edi            # imm = 0xB50
callq 0x1f1b0
xorl %edi, %edi
callq 0x1f460
movl $0x302, %edi            # imm = 0x302
movl $0x303, %esi            # imm = 0x303
callq 0x1f5b0
movl $0xbe2, %edi            # imm = 0xBE2
callq 0x1f6d0
movl $0xb71, %edi            # imm = 0xB71
callq 0x1f1b0
xorl %edi, %edi
callq 0x1f160
movq 0xf9a57(%rip), %rdi     # 0x11b7b0
callq 0x236fc
leaq 0xf5263(%rip), %rax     # 0x116fc8
movsd (%rax), %xmm1
movapd 0x932af(%rip), %xmm2    # 0xb5020
xorpd %xmm1, %xmm2
ucomisd %xmm2, %xmm0
jb 0x21d89
ucomisd %xmm0, %xmm1
movsd 0x932b9(%rip), %xmm1    # 0xb5040
jae 0x21da1
movq 0xf9a20(%rip), %rdi     # 0x11b7b0
callq 0x236fc
movsd 0x932ab(%rip), %xmm1    # 0xb5048
divsd %xmm0, %xmm1
xorpd 0x93277(%rip), %xmm1    # 0xb5020
xorl %r14d, %r14d
movq 0xf99fd(%rip), %rcx     # 0x11b7b0
pushq $0x5
popq %rbp
movapd %xmm1, 0x80(%rsp)
cmpl 0x238(%rcx), %r14d
jge 0x21f32
leal 0x1(%r14), %eax
movl %eax, 0x14(%rsp)
cvtsi2sd %eax, %xmm0
imull $0x7, %r14d, %eax
xorl %r12d, %r12d
xorl %edx, %edx
divl %ebp
cvtsi2sd %edx, %xmm2
divsd 0x93261(%rip), %xmm2    # 0xb5050
movsd %xmm2, (%rsp)
subsd %xmm2, %xmm0
movsd %xmm0, 0x18(%rsp)
cmpl 0x23c(%rcx), %r12d
jge 0x21f26
imull $0x7, %r12d, %eax
xorl %r13d, %r13d
xorl %edx, %edx
divl %ebp
cvtsi2sd %edx, %xmm0
divsd 0x9322e(%rip), %xmm0    # 0xb5050
movsd 0x18(%rsp), %xmm1
subsd %xmm0, %xmm1
movsd %xmm1, 0x28(%rsp)
leal 0x1(%r12), %r15d
cvtsi2sd %r15d, %xmm1
subsd (%rsp), %xmm1
movsd %xmm0, 0x8(%rsp)
subsd %xmm0, %xmm1
movsd %xmm1, 0x20(%rsp)
movl 0x240(%rcx), %eax
cvtss2sd 0xf4a21(%rip), %xmm1    # 0x116880
imull $0x7, %r13d, %ebx
cmpl %eax, %r13d
jge 0x21f1e
movq 0x230(%rcx), %rdx
movl 0x248(%rcx), %esi
imull %r13d, %esi
movl 0x244(%rcx), %edi
imull %r12d, %edi
addl %r14d, %esi
addl %edi, %esi
movslq %esi, %rsi
movsd (%rdx,%rsi,8), %xmm0
ucomisd %xmm0, %xmm1
jb 0x21ea2
incl %r13d
addl $0x7, %ebx
jmp 0x21e63
mulsd 0x80(%rsp), %xmm0
movsd 0x9318d(%rip), %xmm3    # 0xb5040
addsd %xmm3, %xmm0
subsd %xmm0, %xmm3
mulsd 0x93195(%rip), %xmm3    # 0xb5058
movapd %xmm0, %xmm1
movapd %xmm0, %xmm2
callq 0x1f2c0
movl %ebx, %eax
xorl %edx, %edx
divl %ebp
cvtsi2sd %edx, %xmm3
divsd 0x9316e(%rip), %xmm3    # 0xb5050
movsd 0x28(%rsp), %xmm0
subsd %xmm3, %xmm0
movsd 0x20(%rsp), %xmm1
incl %r13d
cvtsi2sd %r13d, %xmm2
subsd %xmm3, %xmm1
subsd (%rsp), %xmm2
subsd 0x8(%rsp), %xmm2
subsd %xmm3, %xmm2
callq 0x1fc80
movq 0xf9897(%rip), %rcx     # 0x11b7b0
jmp 0x21e51
movl %r15d, %r12d
jmp 0x21dfe
movl 0x14(%rsp), %eax
movl %eax, %r14d
jmp 0x21dbf
callq 0x1fa80
movl $0xb71, %edi            # imm = 0xB71
callq 0x1f6d0
movl $0xbe2, %edi            # imm = 0xBE2
callq 0x1f1b0
pushq $0x1
popq %rbx
movl %ebx, %edi
xorl %esi, %esi
callq 0x1f5b0
movl %ebx, %edi
callq 0x1f460
movss 0x9309e(%rip), %xmm0    # 0xb5004
callq 0x1f090
cmpl $0x0, 0xf9846(%rip)     # 0x11b7b8
je 0x2205d
movl $0xb50, %edi            # imm = 0xB50
callq 0x1f1b0
movsd 0x930b6(%rip), %xmm2    # 0xb5040
xorps %xmm0, %xmm0
xorps %xmm1, %xmm1
callq 0x1fc90
xorl %r15d, %r15d
movq 0xf9811(%rip), %rax     # 0x11b7b0
leaq 0x931e2(%rip), %rbx     # 0xb5188
leaq 0x30(%rsp), %r14
cmpl 0x238(%rax), %r15d
jge 0x2205d
cvtsi2sd %r15d, %xmm0
movsd %xmm0, 0x8(%rsp)
xorl %ebp, %ebp
cmpl 0x23c(%rax), %ebp
jge 0x22055
cvtsi2sd %ebp, %xmm0
movsd %xmm0, (%rsp)
xorl %r12d, %r12d
cmpl 0x240(%rax), %r12d
jge 0x2204e
movq 0x230(%rax), %rcx
movl 0x248(%rax), %edx
imull %r12d, %edx
movl 0x244(%rax), %esi
imull %ebp, %esi
addl %r15d, %edx
addl %esi, %edx
movslq %edx, %rdx
movsd (%rcx,%rdx,8), %xmm0
cvtss2sd 0xf486b(%rip), %xmm1    # 0x116880
ucomisd %xmm1, %xmm0
jae 0x22049
movq %r14, %rdi
movq %rbx, %rsi
movb $0x1, %al
callq 0x1f120
cvtsi2sd %r12d, %xmm2
movsd 0x8(%rsp), %xmm0
movsd (%rsp), %xmm1
movq %r14, %rdi
xorl %esi, %esi
callq 0x23720
movq 0xf9767(%rip), %rax     # 0x11b7b0
incl %r12d
jmp 0x21fdd
incl %ebp
jmp 0x21fc5
incl %r15d
jmp 0x21fab
cmpl $0x0, 0xf4820(%rip)     # 0x116884
je 0x220b5
movl $0xb50, %edi            # imm = 0xB50
callq 0x1f1b0
movsd 0x92fc8(%rip), %xmm0    # 0xb5040
xorps %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x1fc90
movl $0x408, %edi            # imm = 0x408
movl $0x1b01, %esi           # imm = 0x1B01
callq 0x1f5f0
movq 0xf9717(%rip), %rdi     # 0x11b7b0
cvtss2sd 0xf47df(%rip), %xmm0    # 0x116880
callq 0x3c106
movl $0x408, %edi            # imm = 0x408
movl $0x1b02, %esi           # imm = 0x1B02
callq 0x1f5f0
cmpl $0x0, 0xf9700(%rip)     # 0x11b7bc
jne 0x220d0
cmpl $0x0, 0xf96fb(%rip)     # 0x11b7c0
jne 0x220d0
cmpl $0x0, 0xf96f6(%rip)     # 0x11b7c4
je 0x22146
movl $0xb50, %edi            # imm = 0xB50
callq 0x1f1b0
movsd 0x92f5e(%rip), %xmm0    # 0xb5040
movaps %xmm0, %xmm1
movaps %xmm0, %xmm2
callq 0x1fc90
cmpl $0x0, 0xf96c8(%rip)     # 0x11b7bc
je 0x2210a
movq 0xf96b3(%rip), %rdi     # 0x11b7b0
movl 0xf96c5(%rip), %edx     # 0x11b7c8
xorl %esi, %esi
callq 0x3c262
cmpl $0x0, 0xf96af(%rip)     # 0x11b7c0
je 0x22128
movq 0xf9696(%rip), %rdi     # 0x11b7b0
movl 0xf96ac(%rip), %edx     # 0x11b7cc
pushq $0x1
popq %rsi
callq 0x3c262
cmpl $0x0, 0xf9695(%rip)     # 0x11b7c4
je 0x22146
movq 0xf9678(%rip), %rdi     # 0x11b7b0
movl 0xf9692(%rip), %edx     # 0x11b7d0
pushq $0x2
popq %rsi
callq 0x3c262
cmpl $0x0, 0xf473b(%rip)     # 0x116888
je 0x221bd
movl $0xb50, %edi            # imm = 0xB50
callq 0x1f1b0
xorps %xmm0, %xmm0
xorps %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x20020
movq 0xf9642(%rip), %rax     # 0x11b7b0
movl 0x238(%rax), %ecx
decl %ecx
cvtsi2sd %ecx, %xmm3
movl 0x23c(%rax), %ecx
decl %ecx
cvtsi2sd %ecx, %xmm4
movl 0x240(%rax), %eax
decl %eax
cvtsi2sd %eax, %xmm5
leaq 0x30(%rsp), %rbx
xorps %xmm0, %xmm0
xorps %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %rbx, %rdi
callq 0x2ad86
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0x2be94
leaq 0x30(%rsp), %rdi
callq 0x2b9d2
cmpl $0x0, 0xf9610(%rip)     # 0x11b7d4
je 0x2238d
movl $0xb50, %edi            # imm = 0xB50
callq 0x1f1b0
movss 0x92e30(%rip), %xmm0    # 0xb500c
callq 0x1fec0
movss 0x92e1b(%rip), %xmm0    # 0xb5004
xorps %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x20020
callq 0x23757
movq 0xf95b0(%rip), %rax     # 0x11b7b0
cvtsi2sdl 0x238(%rax), %xmm0
movsd 0x92e48(%rip), %xmm3    # 0xb5058
mulsd %xmm3, %xmm0
cvtsi2sdl 0x23c(%rax), %xmm1
mulsd %xmm3, %xmm1
cvtsi2sdl 0x240(%rax), %xmm2
mulsd %xmm3, %xmm2
callq 0x1fc80
movq 0xf9578(%rip), %rax     # 0x11b7b0
cvtsi2sdl 0x238(%rax), %xmm0
cvtsi2sdl 0x23c(%rax), %xmm1
movsd 0x92e08(%rip), %xmm3    # 0xb5058
mulsd %xmm3, %xmm1
cvtsi2sdl 0x240(%rax), %xmm2
mulsd %xmm3, %xmm2
callq 0x1fc80
callq 0x1fa80
xorpd %xmm0, %xmm0
xorpd %xmm2, %xmm2
movss 0x92d8a(%rip), %xmm1    # 0xb5004
callq 0x20020
callq 0x23757
movq 0xf9525(%rip), %rax     # 0x11b7b0
cvtsi2sdl 0x238(%rax), %xmm0
movsd 0x92dbd(%rip), %xmm3    # 0xb5058
mulsd %xmm3, %xmm0
cvtsi2sdl 0x23c(%rax), %xmm1
mulsd %xmm3, %xmm1
cvtsi2sdl 0x240(%rax), %xmm2
mulsd %xmm3, %xmm2
callq 0x1fc80
movq 0xf94ed(%rip), %rax     # 0x11b7b0
cvtsi2sdl 0x238(%rax), %xmm0
cvtsi2sdl 0x23c(%rax), %xmm1
movsd 0x92d7d(%rip), %xmm3    # 0xb5058
mulsd %xmm3, %xmm0
cvtsi2sdl 0x240(%rax), %xmm2
mulsd %xmm3, %xmm2
callq 0x1fc80
callq 0x1fa80
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
movss 0x92cff(%rip), %xmm2    # 0xb5004
callq 0x20020
callq 0x23757
movq 0xf949a(%rip), %rax     # 0x11b7b0
cvtsi2sdl 0x238(%rax), %xmm0
movsd 0x92d32(%rip), %xmm3    # 0xb5058
mulsd %xmm3, %xmm0
cvtsi2sdl 0x23c(%rax), %xmm1
mulsd %xmm3, %xmm1
cvtsi2sdl 0x240(%rax), %xmm2
mulsd %xmm3, %xmm2
callq 0x1fc80
movq 0xf9462(%rip), %rax     # 0x11b7b0
cvtsi2sdl 0x238(%rax), %xmm0
cvtsi2sdl 0x23c(%rax), %xmm1
movsd 0x92cf2(%rip), %xmm2    # 0xb5058
mulsd %xmm2, %xmm0
mulsd %xmm2, %xmm1
cvtsi2sdl 0x240(%rax), %xmm2
callq 0x1fc80
callq 0x1fa80
movss 0x92c7c(%rip), %xmm0    # 0xb5004
callq 0x1fec0
cmpl $0x0, 0xf9444(%rip)     # 0x11b7d8
je 0x22600
movb 0xf9498(%rip), %al      # 0x11b838
testb %al, %al
je 0x2265b
cmpq $0x0, 0xf9430(%rip)     # 0x11b7e0
jne 0x224b6
pushq $0x18
popq %rdi
callq 0x1f760
movq %rax, %r14
movq 0xf93e8(%rip), %rsi     # 0x11b7b0
movq %rax, %rdi
callq 0x3254e
movq %r14, 0xf9409(%rip)     # 0x11b7e0
movq 0xf93d2(%rip), %rsi     # 0x11b7b0
leaq 0x30(%rsp), %rdi
leaq 0x90(%rsp), %rbx
movq %r14, %rdx
movq %rbx, %rcx
callq 0x3265a
movsd (%rbx), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0x22409
sqrtsd %xmm0, %xmm0
jmp 0x2240e
callq 0x1f5a0
leaq 0xb0(%rsp), %rbx
leaq 0x30(%rsp), %rsi
movq %rbx, %rdi
callq 0x3ec5e
leaq 0xf93c6(%rip), %rdi     # 0x11b7f0
movq %rbx, %rsi
callq 0x3ead8
movsd 0x98(%rsp), %xmm0
ucomisd 0x92c1d(%rip), %xmm0    # 0xb5060
jb 0x2244b
sqrtsd %xmm0, %xmm0
jmp 0x22450
callq 0x1f5a0
leaq 0x48(%rsp), %rsi
leaq 0xb0(%rsp), %rbx
movq %rbx, %rdi
callq 0x3ec5e
leaq 0xf939c(%rip), %rdi     # 0x11b808
movq %rbx, %rsi
callq 0x3ead8
movsd 0xa0(%rsp), %xmm0
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0x2248d
sqrtsd %xmm0, %xmm0
jmp 0x22492
callq 0x1f5a0
leaq 0x60(%rsp), %rsi
leaq 0xb0(%rsp), %rbx
movq %rbx, %rdi
callq 0x3ec5e
leaq 0xf9372(%rip), %rdi     # 0x11b820
movq %rbx, %rsi
callq 0x3ead8
movl $0xb50, %edi            # imm = 0xB50
callq 0x1f1b0
movss 0x92b44(%rip), %xmm0    # 0xb500c
callq 0x1fec0
movss 0x92b2f(%rip), %xmm0    # 0xb5004
xorps %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x20020
callq 0x23757
movq 0xf92f4(%rip), %rsi     # 0x11b7e0
leaq 0xf92fd(%rip), %rbx     # 0x11b7f0
leaq 0x30(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rdx
callq 0x3e4f9
movq %r14, %rdi
callq 0x1f180
movq 0xf92ce(%rip), %rsi     # 0x11b7e0
leaq 0x30(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rdx
callq 0x3e06f
movq %r14, %rdi
callq 0x1f180
callq 0x1fa80
xorps %xmm0, %xmm0
xorps %xmm2, %xmm2
movss 0x92ac7(%rip), %xmm1    # 0xb5004
callq 0x20020
callq 0x23757
movq 0xf9292(%rip), %rsi     # 0x11b7e0
leaq 0xf92b3(%rip), %rbx     # 0x11b808
leaq 0x30(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rdx
callq 0x3e4f9
movq %r14, %rdi
callq 0x1f180
movq 0xf926c(%rip), %rsi     # 0x11b7e0
leaq 0x30(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rdx
callq 0x3e06f
movq %r14, %rdi
callq 0x1f180
callq 0x1fa80
xorps %xmm0, %xmm0
xorps %xmm1, %xmm1
movss 0x92a65(%rip), %xmm2    # 0xb5004
callq 0x20020
callq 0x23757
movq 0xf9230(%rip), %rsi     # 0x11b7e0
leaq 0xf9269(%rip), %rbx     # 0x11b820
leaq 0x30(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rdx
callq 0x3e4f9
movq %r14, %rdi
callq 0x1f180
movq 0xf920a(%rip), %rsi     # 0x11b7e0
leaq 0x30(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rdx
callq 0x3e06f
movq %r14, %rdi
callq 0x1f180
callq 0x1fa80
movss 0x92a09(%rip), %xmm0    # 0xb5004
callq 0x1fec0
cmpq $0x0, 0xf9238(%rip)     # 0x11b840
jne 0x22621
callq 0x7dcd2
addq $0xc8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl 0xf4265(%rip), %esi     # 0x11688c
movl 0xf4263(%rip), %edx     # 0x116890
leaq 0x30(%rsp), %rbx
pushq $0x3
popq %rcx
movq %rbx, %rdi
callq 0x75462
movq %rbx, %rdi
callq 0x75df4
movq 0xf91f4(%rip), %rsi     # 0x11b840
leaq 0x30(%rsp), %rdi
callq 0x7709a
callq 0x21c6c
leaq 0xf91d6(%rip), %rdi     # 0x11b838
callq 0x1feb0
testl %eax, %eax
je 0x223a8
xorl %ebx, %ebx
leaq 0xf9178(%rip), %r14     # 0x11b7f0
leaq (%r14,%rbx), %rdi
callq 0x3e566
addq $0x18, %rbx
cmpq $0x48, %rbx
jne 0x22678
leaq 0xf91a6(%rip), %rdi     # 0x11b838
callq 0x1f4e0
jmp 0x223a8
movq %rax, %rbx
leaq 0xf9192(%rip), %rdi     # 0x11b838
callq 0x1f4c0
jmp 0x226d9
movq %rax, %rbx
pushq $0x18
popq %rsi
movq %r14, %rdi
callq 0x1f780
jmp 0x226d9
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x2b9d2
jmp 0x226d9
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x756a4
movq %rbx, %rdi
callq 0x1fe60