// File: tomfunkhouser[P]gaps/pkgs/fglut/freeglut_geometry.c
// Function: glutSolidIcosahedron
void FGAPIENTRY glutSolidIcosahedron( void )
{
  int i ;

  FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutSolidIcosahedron" );

  glBegin ( GL_TRIANGLES ) ;
  for ( i = 0; i < 20; i++ )
  {
    double normal[3] ;
    normal[0] = ( icos_r[icos_v[i][1]][1] - icos_r[icos_v[i][0]][1] ) * ( icos_r[icos_v[i][2]][2] - icos_r[icos_v[i][0]][2] ) - ( icos_r[icos_v[i][1]][2] - icos_r[icos_v[i][0]][2] ) * ( icos_r[icos_v[i][2]][1] - icos_r[icos_v[i][0]][1] ) ;
    normal[1] = ( icos_r[icos_v[i][1]][2] - icos_r[icos_v[i][0]][2] ) * ( icos_r[icos_v[i][2]][0] - icos_r[icos_v[i][0]][0] ) - ( icos_r[icos_v[i][1]][0] - icos_r[icos_v[i][0]][0] ) * ( icos_r[icos_v[i][2]][2] - icos_r[icos_v[i][0]][2] ) ;
    normal[2] = ( icos_r[icos_v[i][1]][0] - icos_r[icos_v[i][0]][0] ) * ( icos_r[icos_v[i][2]][1] - icos_r[icos_v[i][0]][1] ) - ( icos_r[icos_v[i][1]][1] - icos_r[icos_v[i][0]][1] ) * ( icos_r[icos_v[i][2]][0] - icos_r[icos_v[i][0]][0] ) ;
      glNormal3dv ( normal ) ;
      glVertex3dv ( icos_r[icos_v[i][0]] ) ;
      glVertex3dv ( icos_r[icos_v[i][1]] ) ;
      glVertex3dv ( icos_r[icos_v[i][2]] ) ;
  }

  glEnd () ;
}

// Assembly:
subq $0x28, %rsp
leaq 0x6e825(%rip), %rax     # 0x1fa390
cmpb $0x0, 0x1c(%rax)
jne 0x18bb86
leaq 0x11d5a(%rip), %rdi     # 0x19d8d2
leaq 0x2373b(%rip), %rsi     # 0x1af2ba
movb $0x0, %al
callq 0x17de70
movl $0x4, %edi
callq 0x221b0
movl $0x0, 0x24(%rsp)
cmpl $0x14, 0x24(%rsp)
jge 0x18c08e
movslq 0x24(%rsp), %rcx
leaq 0x6eba1(%rip), %rax     # 0x1fa750
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movslq 0x4(%rax), %rcx
leaq 0x6ea6f(%rip), %rax     # 0x1fa630
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movsd 0x8(%rax), %xmm0
movslq 0x24(%rsp), %rcx
leaq 0x6eb77(%rip), %rax     # 0x1fa750
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movslq (%rax), %rcx
leaq 0x6ea46(%rip), %rax     # 0x1fa630
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
subsd 0x8(%rax), %xmm0
movslq 0x24(%rsp), %rcx
leaq 0x6eb4e(%rip), %rax     # 0x1fa750
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movslq 0x8(%rax), %rcx
leaq 0x6ea1c(%rip), %rax     # 0x1fa630
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movsd 0x10(%rax), %xmm2
movslq 0x24(%rsp), %rcx
leaq 0x6eb24(%rip), %rax     # 0x1fa750
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movslq (%rax), %rcx
leaq 0x6e9f3(%rip), %rax     # 0x1fa630
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
subsd 0x10(%rax), %xmm2
movslq 0x24(%rsp), %rcx
leaq 0x6eafb(%rip), %rax     # 0x1fa750
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movslq 0x4(%rax), %rcx
leaq 0x6e9c9(%rip), %rax     # 0x1fa630
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movsd 0x10(%rax), %xmm1
movslq 0x24(%rsp), %rcx
leaq 0x6ead1(%rip), %rax     # 0x1fa750
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movslq (%rax), %rcx
leaq 0x6e9a0(%rip), %rax     # 0x1fa630
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
subsd 0x10(%rax), %xmm1
movslq 0x24(%rsp), %rcx
leaq 0x6eaa8(%rip), %rax     # 0x1fa750
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movslq 0x8(%rax), %rcx
leaq 0x6e976(%rip), %rax     # 0x1fa630
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movsd 0x8(%rax), %xmm3
movslq 0x24(%rsp), %rcx
leaq 0x6ea7e(%rip), %rax     # 0x1fa750
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movslq (%rax), %rcx
leaq 0x6e94d(%rip), %rax     # 0x1fa630
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
subsd 0x8(%rax), %xmm3
mulsd %xmm3, %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rsp)
movslq 0x24(%rsp), %rcx
leaq 0x6ea2d(%rip), %rax     # 0x1fa750
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movslq 0x4(%rax), %rcx
leaq 0x6e8fb(%rip), %rax     # 0x1fa630
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movsd 0x10(%rax), %xmm0
movslq 0x24(%rsp), %rcx
leaq 0x6ea03(%rip), %rax     # 0x1fa750
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movslq (%rax), %rcx
leaq 0x6e8d2(%rip), %rax     # 0x1fa630
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
subsd 0x10(%rax), %xmm0
movslq 0x24(%rsp), %rcx
leaq 0x6e9da(%rip), %rax     # 0x1fa750
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movslq 0x8(%rax), %rcx
leaq 0x6e8a8(%rip), %rax     # 0x1fa630
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movsd (%rax), %xmm2
movslq 0x24(%rsp), %rcx
leaq 0x6e9b1(%rip), %rax     # 0x1fa750
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movslq (%rax), %rcx
leaq 0x6e880(%rip), %rax     # 0x1fa630
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
subsd (%rax), %xmm2
movslq 0x24(%rsp), %rcx
leaq 0x6e989(%rip), %rax     # 0x1fa750
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movslq 0x4(%rax), %rcx
leaq 0x6e857(%rip), %rax     # 0x1fa630
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movsd (%rax), %xmm1
movslq 0x24(%rsp), %rcx
leaq 0x6e960(%rip), %rax     # 0x1fa750
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movslq (%rax), %rcx
leaq 0x6e82f(%rip), %rax     # 0x1fa630
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
subsd (%rax), %xmm1
movslq 0x24(%rsp), %rcx
leaq 0x6e938(%rip), %rax     # 0x1fa750
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movslq 0x8(%rax), %rcx
leaq 0x6e806(%rip), %rax     # 0x1fa630
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movsd 0x10(%rax), %xmm3
movslq 0x24(%rsp), %rcx
leaq 0x6e90e(%rip), %rax     # 0x1fa750
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movslq (%rax), %rcx
leaq 0x6e7dd(%rip), %rax     # 0x1fa630
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
subsd 0x10(%rax), %xmm3
mulsd %xmm3, %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x8(%rsp)
movslq 0x24(%rsp), %rcx
leaq 0x6e8bc(%rip), %rax     # 0x1fa750
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movslq 0x4(%rax), %rcx
leaq 0x6e78a(%rip), %rax     # 0x1fa630
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movsd (%rax), %xmm0
movslq 0x24(%rsp), %rcx
leaq 0x6e893(%rip), %rax     # 0x1fa750
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movslq (%rax), %rcx
leaq 0x6e762(%rip), %rax     # 0x1fa630
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
subsd (%rax), %xmm0
movslq 0x24(%rsp), %rcx
leaq 0x6e86b(%rip), %rax     # 0x1fa750
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movslq 0x8(%rax), %rcx
leaq 0x6e739(%rip), %rax     # 0x1fa630
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movsd 0x8(%rax), %xmm2
movslq 0x24(%rsp), %rcx
leaq 0x6e841(%rip), %rax     # 0x1fa750
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movslq (%rax), %rcx
leaq 0x6e710(%rip), %rax     # 0x1fa630
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
subsd 0x8(%rax), %xmm2
movslq 0x24(%rsp), %rcx
leaq 0x6e818(%rip), %rax     # 0x1fa750
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movslq 0x4(%rax), %rcx
leaq 0x6e6e6(%rip), %rax     # 0x1fa630
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movsd 0x8(%rax), %xmm1
movslq 0x24(%rsp), %rcx
leaq 0x6e7ee(%rip), %rax     # 0x1fa750
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movslq (%rax), %rcx
leaq 0x6e6bd(%rip), %rax     # 0x1fa630
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
subsd 0x8(%rax), %xmm1
movslq 0x24(%rsp), %rcx
leaq 0x6e7c5(%rip), %rax     # 0x1fa750
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movslq 0x8(%rax), %rcx
leaq 0x6e693(%rip), %rax     # 0x1fa630
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movsd (%rax), %xmm3
movslq 0x24(%rsp), %rcx
leaq 0x6e79c(%rip), %rax     # 0x1fa750
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movslq (%rax), %rcx
leaq 0x6e66b(%rip), %rax     # 0x1fa630
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
subsd (%rax), %xmm3
mulsd %xmm3, %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x10(%rsp)
movq %rsp, %rdi
callq 0x22fb0
movslq 0x24(%rsp), %rcx
leaq 0x6e743(%rip), %rax     # 0x1fa750
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movslq (%rax), %rax
leaq 0x6e612(%rip), %rdi     # 0x1fa630
imulq $0x18, %rax, %rax
addq %rax, %rdi
callq 0x221d0
movslq 0x24(%rsp), %rcx
leaq 0x6e71a(%rip), %rax     # 0x1fa750
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movslq 0x4(%rax), %rax
leaq 0x6e5e8(%rip), %rdi     # 0x1fa630
imulq $0x18, %rax, %rax
addq %rax, %rdi
callq 0x221d0
movslq 0x24(%rsp), %rcx
leaq 0x6e6f0(%rip), %rax     # 0x1fa750
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movslq 0x8(%rax), %rax
leaq 0x6e5be(%rip), %rdi     # 0x1fa630
imulq $0x18, %rax, %rax
addq %rax, %rdi
callq 0x221d0
movl 0x24(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x24(%rsp)
jmp 0x18bb98
callq 0x22de0
addq $0x28, %rsp
retq
nopl (%rax,%rax)