// File: tomfunkhouser[P]gaps/pkgs/fglut/freeglut_geometry.c
// Function: glutSolidDodecahedron
void FGAPIENTRY glutSolidDodecahedron( void )
{
  FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutSolidDodecahedron" );

  /* Magic Numbers:  It is possible to create a dodecahedron by attaching two pentagons to each face of
   * of a cube.  The coordinates of the points are:
   *   (+-x,0, z); (+-1, 1, 1); (0, z, x )
   * where x = (-1 + sqrt(5))/2, z = (1 + sqrt(5))/2 or
   *       x = 0.61803398875 and z = 1.61803398875.
   */
  glBegin ( GL_POLYGON ) ;
  glNormal3d (  0.0,  0.525731112119,  0.850650808354 ) ; glVertex3d (  0.0,  1.61803398875,  0.61803398875 ) ; glVertex3d ( -1.0,  1.0,  1.0 ) ; glVertex3d ( -0.61803398875, 0.0,  1.61803398875 ) ; glVertex3d (  0.61803398875, 0.0,  1.61803398875 ) ; glVertex3d (  1.0,  1.0,  1.0 ) ;
  glEnd () ;
  glBegin ( GL_POLYGON ) ;
  glNormal3d (  0.0,  0.525731112119, -0.850650808354 ) ; glVertex3d (  0.0,  1.61803398875, -0.61803398875 ) ; glVertex3d (  1.0,  1.0, -1.0 ) ; glVertex3d (  0.61803398875, 0.0, -1.61803398875 ) ; glVertex3d ( -0.61803398875, 0.0, -1.61803398875 ) ; glVertex3d ( -1.0,  1.0, -1.0 ) ;
  glEnd () ;
  glBegin ( GL_POLYGON ) ;
  glNormal3d (  0.0, -0.525731112119,  0.850650808354 ) ; glVertex3d (  0.0, -1.61803398875,  0.61803398875 ) ; glVertex3d (  1.0, -1.0,  1.0 ) ; glVertex3d (  0.61803398875, 0.0,  1.61803398875 ) ; glVertex3d ( -0.61803398875, 0.0,  1.61803398875 ) ; glVertex3d ( -1.0, -1.0,  1.0 ) ;
  glEnd () ;
  glBegin ( GL_POLYGON ) ;
  glNormal3d (  0.0, -0.525731112119, -0.850650808354 ) ; glVertex3d (  0.0, -1.61803398875, -0.61803398875 ) ; glVertex3d ( -1.0, -1.0, -1.0 ) ; glVertex3d ( -0.61803398875, 0.0, -1.61803398875 ) ; glVertex3d (  0.61803398875, 0.0, -1.61803398875 ) ; glVertex3d (  1.0, -1.0, -1.0 ) ;
  glEnd () ;

  glBegin ( GL_POLYGON ) ;
  glNormal3d (  0.850650808354,  0.0,  0.525731112119 ) ; glVertex3d (  0.61803398875,  0.0,  1.61803398875 ) ; glVertex3d (  1.0, -1.0,  1.0 ) ; glVertex3d (  1.61803398875, -0.61803398875, 0.0 ) ; glVertex3d (  1.61803398875,  0.61803398875, 0.0 ) ; glVertex3d (  1.0,  1.0,  1.0 ) ;
  glEnd () ;
  glBegin ( GL_POLYGON ) ;
  glNormal3d ( -0.850650808354,  0.0,  0.525731112119 ) ; glVertex3d ( -0.61803398875,  0.0,  1.61803398875 ) ; glVertex3d ( -1.0,  1.0,  1.0 ) ; glVertex3d ( -1.61803398875,  0.61803398875, 0.0 ) ; glVertex3d ( -1.61803398875, -0.61803398875, 0.0 ) ; glVertex3d ( -1.0, -1.0,  1.0 ) ;
  glEnd () ;
  glBegin ( GL_POLYGON ) ;
  glNormal3d (  0.850650808354,  0.0, -0.525731112119 ) ; glVertex3d (  0.61803398875,  0.0, -1.61803398875 ) ; glVertex3d (  1.0,  1.0, -1.0 ) ; glVertex3d (  1.61803398875,  0.61803398875, 0.0 ) ; glVertex3d (  1.61803398875, -0.61803398875, 0.0 ) ; glVertex3d (  1.0, -1.0, -1.0 ) ;
  glEnd () ;
  glBegin ( GL_POLYGON ) ;
  glNormal3d ( -0.850650808354,  0.0, -0.525731112119 ) ; glVertex3d ( -0.61803398875,  0.0, -1.61803398875 ) ; glVertex3d ( -1.0, -1.0, -1.0 ) ; glVertex3d ( -1.61803398875, -0.61803398875, 0.0 ) ; glVertex3d ( -1.61803398875,  0.61803398875, 0.0 ) ; glVertex3d ( -1.0,  1.0, -1.0 ) ;
  glEnd () ;

  glBegin ( GL_POLYGON ) ;
  glNormal3d (  0.525731112119,  0.850650808354,  0.0 ) ; glVertex3d (  1.61803398875,  0.61803398875,  0.0 ) ; glVertex3d (  1.0,  1.0, -1.0 ) ; glVertex3d ( 0.0,  1.61803398875, -0.61803398875 ) ; glVertex3d ( 0.0,  1.61803398875,  0.61803398875 ) ; glVertex3d (  1.0,  1.0,  1.0 ) ;
  glEnd () ;
  glBegin ( GL_POLYGON ) ;
  glNormal3d (  0.525731112119, -0.850650808354,  0.0 ) ; glVertex3d (  1.61803398875, -0.61803398875,  0.0 ) ; glVertex3d (  1.0, -1.0,  1.0 ) ; glVertex3d ( 0.0, -1.61803398875,  0.61803398875 ) ; glVertex3d ( 0.0, -1.61803398875, -0.61803398875 ) ; glVertex3d (  1.0, -1.0, -1.0 ) ;
  glEnd () ;
  glBegin ( GL_POLYGON ) ;
  glNormal3d ( -0.525731112119,  0.850650808354,  0.0 ) ; glVertex3d ( -1.61803398875,  0.61803398875,  0.0 ) ; glVertex3d ( -1.0,  1.0,  1.0 ) ; glVertex3d ( 0.0,  1.61803398875,  0.61803398875 ) ; glVertex3d ( 0.0,  1.61803398875, -0.61803398875 ) ; glVertex3d ( -1.0,  1.0, -1.0 ) ;
  glEnd () ;
  glBegin ( GL_POLYGON ) ;
  glNormal3d ( -0.525731112119, -0.850650808354,  0.0 ) ; glVertex3d ( -1.61803398875, -0.61803398875,  0.0 ) ; glVertex3d ( -1.0, -1.0, -1.0 ) ; glVertex3d ( 0.0, -1.61803398875, -0.61803398875 ) ; glVertex3d ( 0.0, -1.61803398875,  0.61803398875 ) ; glVertex3d ( -1.0, -1.0,  1.0 ) ;
  glEnd () ;
}

// Assembly:
pushq %rax
leaq 0x6ff48(%rip), %rax     # 0x1fa390
cmpb $0x0, 0x1c(%rax)
jne 0x18a463
leaq 0x1347d(%rip), %rdi     # 0x19d8d2
leaq 0x24dc5(%rip), %rsi     # 0x1af221
movb $0x0, %al
callq 0x17de70
movl $0x9, %edi
callq 0x221b0
xorps %xmm0, %xmm0
movsd 0x25108(%rip), %xmm1    # 0x1af580
movsd 0x250f8(%rip), %xmm2    # 0x1af578
callq 0x22330
xorps %xmm0, %xmm0
movsd 0x250e0(%rip), %xmm1    # 0x1af570
movsd 0x250b8(%rip), %xmm2    # 0x1af550
callq 0x23020
movsd 0x410b(%rip), %xmm0     # 0x18e5b0
movsd 0x3b63(%rip), %xmm2     # 0x18e010
movaps %xmm2, %xmm1
callq 0x23020
movsd 0x2509b(%rip), %xmm0    # 0x1af558
xorps %xmm1, %xmm1
movsd 0x250a8(%rip), %xmm2    # 0x1af570
callq 0x23020
movsd 0x2507b(%rip), %xmm0    # 0x1af550
xorps %xmm1, %xmm1
movsd 0x25090(%rip), %xmm2    # 0x1af570
callq 0x23020
movsd 0x3b23(%rip), %xmm2     # 0x18e010
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x23020
callq 0x22de0
movl $0x9, %edi
callq 0x221b0
xorps %xmm0, %xmm0
movsd 0x2506e(%rip), %xmm1    # 0x1af580
movsd 0x2504e(%rip), %xmm2    # 0x1af568
callq 0x22330
xorps %xmm0, %xmm0
movsd 0x25046(%rip), %xmm1    # 0x1af570
movsd 0x25026(%rip), %xmm2    # 0x1af558
callq 0x23020
movsd 0x3ad1(%rip), %xmm1     # 0x18e010
movsd 0x4069(%rip), %xmm2     # 0x18e5b0
movaps %xmm1, %xmm0
callq 0x23020
movsd 0x24ff9(%rip), %xmm0    # 0x1af550
xorps %xmm1, %xmm1
movsd 0x24fe6(%rip), %xmm2    # 0x1af548
callq 0x23020
movsd 0x24fe9(%rip), %xmm0    # 0x1af558
xorps %xmm1, %xmm1
movsd 0x24fce(%rip), %xmm2    # 0x1af548
callq 0x23020
movsd 0x4029(%rip), %xmm2     # 0x18e5b0
movsd 0x3a81(%rip), %xmm1     # 0x18e010
movaps %xmm2, %xmm0
callq 0x23020
callq 0x22de0
movl $0x9, %edi
callq 0x221b0
xorps %xmm0, %xmm0
movsd 0x24faf(%rip), %xmm1    # 0x1af560
movsd 0x24fbf(%rip), %xmm2    # 0x1af578
callq 0x22330
xorps %xmm0, %xmm0
movsd 0x24f7f(%rip), %xmm1    # 0x1af548
movsd 0x24f7f(%rip), %xmm2    # 0x1af550
callq 0x23020
movsd 0x3a32(%rip), %xmm2     # 0x18e010
movsd 0x3fca(%rip), %xmm1     # 0x18e5b0
movaps %xmm2, %xmm0
callq 0x23020
movsd 0x24f5a(%rip), %xmm0    # 0x1af550
xorps %xmm1, %xmm1
movsd 0x24f6f(%rip), %xmm2    # 0x1af570
callq 0x23020
movsd 0x24f4a(%rip), %xmm0    # 0x1af558
xorps %xmm1, %xmm1
movsd 0x24f57(%rip), %xmm2    # 0x1af570
callq 0x23020
movsd 0x3f8a(%rip), %xmm1     # 0x18e5b0
movsd 0x39e2(%rip), %xmm2     # 0x18e010
movaps %xmm1, %xmm0
callq 0x23020
callq 0x22de0
movl $0x9, %edi
callq 0x221b0
xorps %xmm0, %xmm0
movsd 0x24f10(%rip), %xmm1    # 0x1af560
movsd 0x24f10(%rip), %xmm2    # 0x1af568
callq 0x22330
xorps %xmm0, %xmm0
movsd 0x24ee0(%rip), %xmm1    # 0x1af548
movsd 0x24ee8(%rip), %xmm2    # 0x1af558
callq 0x23020
movsd 0x3f33(%rip), %xmm2     # 0x18e5b0
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x23020
movsd 0x24ec8(%rip), %xmm0    # 0x1af558
xorps %xmm1, %xmm1
movsd 0x24ead(%rip), %xmm2    # 0x1af548
callq 0x23020
movsd 0x24ea8(%rip), %xmm0    # 0x1af550
xorps %xmm1, %xmm1
movsd 0x24e95(%rip), %xmm2    # 0x1af548
callq 0x23020
movsd 0x3950(%rip), %xmm0     # 0x18e010
movsd 0x3ee8(%rip), %xmm2     # 0x18e5b0
movaps %xmm2, %xmm1
callq 0x23020
callq 0x22de0
movl $0x9, %edi
callq 0x221b0
movsd 0x24e91(%rip), %xmm0    # 0x1af578
xorps %xmm1, %xmm1
movsd 0x24e8e(%rip), %xmm2    # 0x1af580
callq 0x22330
movsd 0x24e51(%rip), %xmm0    # 0x1af550
xorps %xmm1, %xmm1
movsd 0x24e66(%rip), %xmm2    # 0x1af570
callq 0x23020
movsd 0x38f9(%rip), %xmm2     # 0x18e010
movsd 0x3e91(%rip), %xmm1     # 0x18e5b0
movaps %xmm2, %xmm0
callq 0x23020
movsd 0x24e41(%rip), %xmm0    # 0x1af570
movsd 0x24e21(%rip), %xmm1    # 0x1af558
xorps %xmm2, %xmm2
callq 0x23020
movsd 0x24e29(%rip), %xmm0    # 0x1af570
movsd 0x24e01(%rip), %xmm1    # 0x1af550
xorps %xmm2, %xmm2
callq 0x23020
movsd 0x38b1(%rip), %xmm2     # 0x18e010
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x23020
callq 0x22de0
movl $0x9, %edi
callq 0x221b0
movsd 0x24de7(%rip), %xmm0    # 0x1af568
xorps %xmm1, %xmm1
movsd 0x24df4(%rip), %xmm2    # 0x1af580
callq 0x22330
movsd 0x24dbf(%rip), %xmm0    # 0x1af558
xorps %xmm1, %xmm1
movsd 0x24dcc(%rip), %xmm2    # 0x1af570
callq 0x23020
movsd 0x3dff(%rip), %xmm0     # 0x18e5b0
movsd 0x3857(%rip), %xmm2     # 0x18e010
movaps %xmm2, %xmm1
callq 0x23020
movsd 0x24d7f(%rip), %xmm0    # 0x1af548
movsd 0x24d7f(%rip), %xmm1    # 0x1af550
xorps %xmm2, %xmm2
callq 0x23020
movsd 0x24d67(%rip), %xmm0    # 0x1af548
movsd 0x24d6f(%rip), %xmm1    # 0x1af558
xorps %xmm2, %xmm2
callq 0x23020
movsd 0x3db7(%rip), %xmm1     # 0x18e5b0
movsd 0x380f(%rip), %xmm2     # 0x18e010
movaps %xmm1, %xmm0
callq 0x23020
callq 0x22de0
movl $0x9, %edi
callq 0x221b0
movsd 0x24d58(%rip), %xmm0    # 0x1af578
xorps %xmm1, %xmm1
movsd 0x24d35(%rip), %xmm2    # 0x1af560
callq 0x22330
movsd 0x24d18(%rip), %xmm0    # 0x1af550
xorps %xmm1, %xmm1
movsd 0x24d05(%rip), %xmm2    # 0x1af548
callq 0x23020
movsd 0x37c0(%rip), %xmm1     # 0x18e010
movsd 0x3d58(%rip), %xmm2     # 0x18e5b0
movaps %xmm1, %xmm0
callq 0x23020
movsd 0x24d08(%rip), %xmm0    # 0x1af570
movsd 0x24ce0(%rip), %xmm1    # 0x1af550
xorps %xmm2, %xmm2
callq 0x23020
movsd 0x24cf0(%rip), %xmm0    # 0x1af570
movsd 0x24cd0(%rip), %xmm1    # 0x1af558
xorps %xmm2, %xmm2
callq 0x23020
movsd 0x3778(%rip), %xmm0     # 0x18e010
movsd 0x3d10(%rip), %xmm2     # 0x18e5b0
movaps %xmm2, %xmm1
callq 0x23020
callq 0x22de0
movl $0x9, %edi
callq 0x221b0
movsd 0x24ca9(%rip), %xmm0    # 0x1af568
xorps %xmm1, %xmm1
movsd 0x24c96(%rip), %xmm2    # 0x1af560
callq 0x22330
movsd 0x24c81(%rip), %xmm0    # 0x1af558
xorps %xmm1, %xmm1
movsd 0x24c66(%rip), %xmm2    # 0x1af548
callq 0x23020
movsd 0x3cc1(%rip), %xmm2     # 0x18e5b0
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x23020
movsd 0x24c46(%rip), %xmm0    # 0x1af548
movsd 0x24c4e(%rip), %xmm1    # 0x1af558
xorps %xmm2, %xmm2
callq 0x23020
movsd 0x24c2e(%rip), %xmm0    # 0x1af548
movsd 0x24c2e(%rip), %xmm1    # 0x1af550
xorps %xmm2, %xmm2
callq 0x23020
movsd 0x3c7e(%rip), %xmm2     # 0x18e5b0
movsd 0x36d6(%rip), %xmm1     # 0x18e010
movaps %xmm2, %xmm0
callq 0x23020
callq 0x22de0
movl $0x9, %edi
callq 0x221b0
movsd 0x24c27(%rip), %xmm0    # 0x1af580
movsd 0x24c17(%rip), %xmm1    # 0x1af578
xorps %xmm2, %xmm2
callq 0x22330
movsd 0x24bff(%rip), %xmm0    # 0x1af570
movsd 0x24bd7(%rip), %xmm1    # 0x1af550
xorps %xmm2, %xmm2
callq 0x23020
movsd 0x3687(%rip), %xmm1     # 0x18e010
movsd 0x3c1f(%rip), %xmm2     # 0x18e5b0
movaps %xmm1, %xmm0
callq 0x23020
xorps %xmm0, %xmm0
movsd 0x24bcc(%rip), %xmm1    # 0x1af570
movsd 0x24bac(%rip), %xmm2    # 0x1af558
callq 0x23020
xorps %xmm0, %xmm0
movsd 0x24bb4(%rip), %xmm1    # 0x1af570
movsd 0x24b8c(%rip), %xmm2    # 0x1af550
callq 0x23020
movsd 0x363f(%rip), %xmm2     # 0x18e010
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x23020
callq 0x22de0
movl $0x9, %edi
callq 0x221b0
movsd 0x24b8d(%rip), %xmm0    # 0x1af580
movsd 0x24b6d(%rip), %xmm1    # 0x1af568
xorps %xmm2, %xmm2
callq 0x22330
movsd 0x24b65(%rip), %xmm0    # 0x1af570
movsd 0x24b45(%rip), %xmm1    # 0x1af558
xorps %xmm2, %xmm2
callq 0x23020
movsd 0x35ed(%rip), %xmm2     # 0x18e010
movsd 0x3b85(%rip), %xmm1     # 0x18e5b0
movaps %xmm2, %xmm0
callq 0x23020
xorps %xmm0, %xmm0
movsd 0x24b0a(%rip), %xmm1    # 0x1af548
movsd 0x24b0a(%rip), %xmm2    # 0x1af550
callq 0x23020
xorps %xmm0, %xmm0
movsd 0x24af2(%rip), %xmm1    # 0x1af548
movsd 0x24afa(%rip), %xmm2    # 0x1af558
callq 0x23020
movsd 0x35a5(%rip), %xmm0     # 0x18e010
movsd 0x3b3d(%rip), %xmm2     # 0x18e5b0
movaps %xmm2, %xmm1
callq 0x23020
callq 0x22de0
movl $0x9, %edi
callq 0x221b0
movsd 0x24ace(%rip), %xmm0    # 0x1af560
movsd 0x24ade(%rip), %xmm1    # 0x1af578
xorps %xmm2, %xmm2
callq 0x22330
movsd 0x24a9e(%rip), %xmm0    # 0x1af548
movsd 0x24a9e(%rip), %xmm1    # 0x1af550
xorps %xmm2, %xmm2
callq 0x23020
movsd 0x3aee(%rip), %xmm0     # 0x18e5b0
movsd 0x3546(%rip), %xmm2     # 0x18e010
movaps %xmm2, %xmm1
callq 0x23020
xorps %xmm0, %xmm0
movsd 0x24a93(%rip), %xmm1    # 0x1af570
movsd 0x24a6b(%rip), %xmm2    # 0x1af550
callq 0x23020
xorps %xmm0, %xmm0
movsd 0x24a7b(%rip), %xmm1    # 0x1af570
movsd 0x24a5b(%rip), %xmm2    # 0x1af558
callq 0x23020
movsd 0x3aa6(%rip), %xmm2     # 0x18e5b0
movsd 0x34fe(%rip), %xmm1     # 0x18e010
movaps %xmm2, %xmm0
callq 0x23020
callq 0x22de0
movl $0x9, %edi
callq 0x221b0
movsd 0x24a2f(%rip), %xmm0    # 0x1af560
movsd 0x24a2f(%rip), %xmm1    # 0x1af568
xorps %xmm2, %xmm2
callq 0x22330
movsd 0x249ff(%rip), %xmm0    # 0x1af548
movsd 0x24a07(%rip), %xmm1    # 0x1af558
xorps %xmm2, %xmm2
callq 0x23020
movsd 0x3a4f(%rip), %xmm2     # 0x18e5b0
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x23020
xorps %xmm0, %xmm0
movsd 0x249d1(%rip), %xmm1    # 0x1af548
movsd 0x249d9(%rip), %xmm2    # 0x1af558
callq 0x23020
xorps %xmm0, %xmm0
movsd 0x249b9(%rip), %xmm1    # 0x1af548
movsd 0x249b9(%rip), %xmm2    # 0x1af550
callq 0x23020
movsd 0x3a0c(%rip), %xmm1     # 0x18e5b0
movsd 0x3464(%rip), %xmm2     # 0x18e010
movaps %xmm1, %xmm0
callq 0x23020
callq 0x22de0
popq %rax
retq
nopl (%rax,%rax)