// File: carlos-urena[P]svg-gen/figures.cpp
// Function: Figure6_SuplPara::Figure6_SuplPara()
Figure6_SuplPara::Figure6_SuplPara()
{
  vec3 observador = vec3(-0.6,0.5,1.0),
       lookat     = vec3(0.0,0.0,0.0),
       vup        = vec3(0.0,1.0,0.0);

  cam = Camera( lookat, observador, vup );

  // longitud de los ejes menor (bt) y mayor (at) de la elipse tangente (bt<=at)
  // (bt en el eje X, y at en el eje Y)
  constexpr real bt = 0.7, at = 1.3 ;
  constexpr real bt2 = bt*bt, at2 = at*at ;

  // elipse plana tangente (perp. al eje Z, con eje mayor Y y eje menor X)
  const vec3 org  = vec3(0.0,0.0,0.0),
             ejex = vec3(1.0,0.0,0.0),
             ejey = vec3(0.0,1.0,0.0),
             ejez = vec3(0.0,0.0,1.0);

  const int nump = 256 ;
  const real lonx = 0.8 , lony = 3.0 ;

  // color de la elipse tangente
  vec3 colEllTan = vec3( 0.0,0.6,0.0 );

  Sphere *           pEsfera      = new Sphere( vec3(0.0,0.0,0.0), 1.0 );
  Ellipse *          pEllipseTan  = new Ellipse( nump, ejez, bt*ejex, at*ejey );
  SpherePolygon *    pEllipseEsf  = new SpherePolygon( *pEllipseTan );
  YCylinderPolygon * pEllipseCilY = new YCylinderPolygon( *pEllipseTan );
  Ellipse *          pcd          = new Ellipse( nump, vec3(0.0,1.0,0.0), ejex, ejez );

  // style de la elipse tangente
  pEllipseTan->style.lines_width = 0.015 ;
  pEllipseTan->style.lines_color = colEllTan ;

  // style de la circunferencia superior del cilindro

  pcd->style.draw_filled = false ;
  pcd->style.draw_lines = true ;
  pcd->style.lines_color = vec3(1.0,0.0,0.0);
  pcd->style.lines_width = 0.015 ;


  // segmentos de los ejes mayor y menor de la elipse tangente
Point * pbt0 = new Point( vec3(-bt,0.0,1.0), colEllTan ),
      * pbt1 = new Point( vec3(+bt,0.0,1.0), colEllTan ),
      * pat0 = new Point( vec3(0.0,-at,1.0), colEllTan ),
      * pat1 = new Point( vec3(0.0,+at,1.0), colEllTan );

  const float widthatbt = 0.008 ;

  Segment * segbt = new Segment( *pbt0, *pbt1, widthatbt ),
          * segat = new Segment( *pat0, *pat1, widthatbt );

  // points t0 y t1, s0 y s1
  const real x  = 0.7*bt ,
             x2 = x*x ,
             y  = at*real(sqrt(1.0-x2/bt2));

  const vec3 colpt0t1 = pEllipseTan->style.lines_color ;
  const vec3 vpt0     = vec3(x,-y,1.0),
             vptm     = vec3(x,0.0,1.0),
             vpt1     = vec3(x,+y,1.0);

  Point * pt0 = new Point( vpt0, colpt0t1 ),
        * ptm = new Point( vptm, colpt0t1 ),
        * pt1 = new Point( vpt1, colpt0t1 );

  Segment * segpt0pt1 = new Segment( *pt0, *pt1, widthatbt );

  const vec3 vps0 = vpt0.normalized(),
             vps1 = vpt1.normalized();

  Point * ps0 = new Point( vps0, pEllipseEsf->style.lines_color ),
        * ps1 = new Point( vps1, pEllipseEsf->style.lines_color  );



  //Segment * segpt0pt1 = new Segment( *pt0, *pt1, widthatbt );

  Segment * rads0t0 = new Segment( org, vpt0 ),
           * rads1t1 = new Segment( org, vpt1 );

  Segment * segm = new Segment( org, ptm->pos3D ),
           * segx = new Segment( ejez, ptm->pos3D );

  Segment * segt1 = new  Segment( vpt1, vec3(0.0,vpt1[1],0.0));
  segt1->style.dashed_lines = true ;
  segt1->style.lines_color = vec3( 0.7,0.7,0.7 );
  segt1->style.lines_width = 0.004 ;

  Segment * segs1 = new  Segment( vps1, vec3(0.0,vps1[1],0.0));
  segs1->style.dashed_lines = true ;
  segs1->style.lines_color = vec3( 0.7,0.7,0.7 );
  segs1->style.lines_width = 0.004 ;

  segx->style.lines_color = vec3(1.0,0.0,0.0);

  //añadir objetos

  objetos.add( new Axes( 0.004 ) );
  //objetos.add( new YAxisCylinder( cam ) );
  objetos.add( pEsfera );

  objetos.add( pEllipseTan );

  objetos.add( segbt );
  objetos.add( segat );

  objetos.add( segpt0pt1 );
  objetos.add( segm );
  objetos.add( segx );
  objetos.add( rads0t0 );
  objetos.add( rads1t1 );
  objetos.add( segt1 );
  objetos.add( segs1 );

  objetos.add( pt0 );
  objetos.add( ptm );
  objetos.add( pt1 );
  objetos.add( ps0 );
  objetos.add( ps1 );

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x770, %rsp            # imm = 0x770
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x620(%rbp)
callq 0x10a70
movl $0xbf19999a, -0x18(%rbp) # imm = 0xBF19999A
movl $0x3f000000, -0x1c(%rbp) # imm = 0x3F000000
movl $0x3f800000, -0x20(%rbp) # imm = 0x3F800000
leaq -0x14(%rbp), %rdi
leaq -0x18(%rbp), %rsi
leaq -0x1c(%rbp), %rdx
leaq -0x20(%rbp), %rcx
callq 0x8c30
jmp 0x5deb
movl $0x0, -0x3c(%rbp)
movl $0x0, -0x40(%rbp)
movl $0x0, -0x44(%rbp)
leaq -0x38(%rbp), %rdi
leaq -0x3c(%rbp), %rsi
leaq -0x40(%rbp), %rdx
leaq -0x44(%rbp), %rcx
callq 0x8c30
jmp 0x5e17
movl $0x0, -0x54(%rbp)
movl $0x3f800000, -0x58(%rbp) # imm = 0x3F800000
movl $0x0, -0x5c(%rbp)
leaq -0x50(%rbp), %rdi
leaq -0x54(%rbp), %rsi
leaq -0x58(%rbp), %rdx
leaq -0x5c(%rbp), %rcx
callq 0x8c30
jmp 0x5e43
leaq -0x8c(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x14(%rbp), %rdx
leaq -0x50(%rbp), %rcx
callq 0xa8f0
jmp 0x5e5d
movq -0x620(%rbp), %rax
movups -0x8c(%rbp), %xmm0
movups -0x7c(%rbp), %xmm1
movups -0x6c(%rbp), %xmm2
movups %xmm2, 0x20(%rax)
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
movl $0x3f333333, -0x90(%rbp) # imm = 0x3F333333
movl $0x3fa66666, -0x94(%rbp) # imm = 0x3FA66666
movl $0x3efae147, -0x98(%rbp) # imm = 0x3EFAE147
movl $0x3fd851ea, -0x9c(%rbp) # imm = 0x3FD851EA
movl $0x0, -0xac(%rbp)
movl $0x0, -0xb0(%rbp)
movl $0x0, -0xb4(%rbp)
leaq -0xa8(%rbp), %rdi
leaq -0xac(%rbp), %rsi
leaq -0xb0(%rbp), %rdx
leaq -0xb4(%rbp), %rcx
callq 0x8c30
jmp 0x5ee7
movl $0x3f800000, -0xc4(%rbp) # imm = 0x3F800000
movl $0x0, -0xc8(%rbp)
movl $0x0, -0xcc(%rbp)
leaq -0xc0(%rbp), %rdi
leaq -0xc4(%rbp), %rsi
leaq -0xc8(%rbp), %rdx
leaq -0xcc(%rbp), %rcx
callq 0x8c30
jmp 0x5f28
movl $0x0, -0xdc(%rbp)
movl $0x3f800000, -0xe0(%rbp) # imm = 0x3F800000
movl $0x0, -0xe4(%rbp)
leaq -0xd8(%rbp), %rdi
leaq -0xdc(%rbp), %rsi
leaq -0xe0(%rbp), %rdx
leaq -0xe4(%rbp), %rcx
callq 0x8c30
jmp 0x5f69
movl $0x0, -0xf4(%rbp)
movl $0x0, -0xf8(%rbp)
movl $0x3f800000, -0xfc(%rbp) # imm = 0x3F800000
leaq -0xf0(%rbp), %rdi
leaq -0xf4(%rbp), %rsi
leaq -0xf8(%rbp), %rdx
leaq -0xfc(%rbp), %rcx
callq 0x8c30
jmp 0x5faa
movl $0x100, -0x100(%rbp)    # imm = 0x100
movl $0x3f4ccccd, -0x104(%rbp) # imm = 0x3F4CCCCD
movl $0x40400000, -0x108(%rbp) # imm = 0x40400000
movl $0x0, -0x118(%rbp)
movl $0x3f19999a, -0x11c(%rbp) # imm = 0x3F19999A
movl $0x0, -0x120(%rbp)
leaq -0x114(%rbp), %rdi
leaq -0x118(%rbp), %rsi
leaq -0x11c(%rbp), %rdx
leaq -0x120(%rbp), %rcx
callq 0x8c30
jmp 0x6009
movl $0x38, %edi
callq 0x31b0
movq %rax, -0x628(%rbp)
jmp 0x601c
movl $0x0, -0x138(%rbp)
movl $0x0, -0x13c(%rbp)
movl $0x0, -0x140(%rbp)
leaq -0x134(%rbp), %rdi
leaq -0x138(%rbp), %rsi
leaq -0x13c(%rbp), %rdx
leaq -0x140(%rbp), %rcx
callq 0x8c30
jmp 0x605d
movq -0x628(%rbp), %rdi
leaq -0x134(%rbp), %rsi
movss 0x10f91(%rip), %xmm0    # 0x17004
callq 0xb960
jmp 0x607a
movq -0x628(%rbp), %rax
movq %rax, -0x128(%rbp)
movl $0x98, %edi
callq 0x31b0
movq %rax, -0x630(%rbp)
jmp 0x609b
movss 0x10f7d(%rip), %xmm0    # 0x17020
leaq -0xc0(%rbp), %rdi
callq 0x8cf0
movss %xmm1, -0x644(%rbp)
movaps %xmm0, -0x640(%rbp)
jmp 0x60c0
movss -0x644(%rbp), %xmm0
movaps -0x640(%rbp), %xmm1
movlpd %xmm1, -0x168(%rbp)
movss %xmm0, -0x160(%rbp)
movl -0x160(%rbp), %eax
movl %eax, -0x150(%rbp)
movq -0x168(%rbp), %rax
movq %rax, -0x158(%rbp)
movss 0x10f23(%rip), %xmm0    # 0x17024
leaq -0xd8(%rbp), %rdi
callq 0x8cf0
movss %xmm1, -0x664(%rbp)
movaps %xmm0, -0x660(%rbp)
jmp 0x611e
movq -0x630(%rbp), %rdi
movss -0x664(%rbp), %xmm0
movaps -0x660(%rbp), %xmm1
movlpd %xmm1, -0x188(%rbp)
movss %xmm0, -0x180(%rbp)
movl -0x180(%rbp), %eax
movl %eax, -0x170(%rbp)
movq -0x188(%rbp), %rax
movq %rax, -0x178(%rbp)
movl -0x170(%rbp), %eax
movl %eax, -0x190(%rbp)
movq -0x178(%rbp), %rax
movq %rax, -0x198(%rbp)
movsd -0x198(%rbp), %xmm0
movss -0x190(%rbp), %xmm1
movl $0x100, %esi            # imm = 0x100
leaq -0xf0(%rbp), %rdx
leaq -0x158(%rbp), %rcx
callq 0xcd30
jmp 0x61a2
movq -0x630(%rbp), %rax
movq %rax, -0x148(%rbp)
movl $0x98, %edi
callq 0x31b0
movq %rax, -0x670(%rbp)
jmp 0x61c3
movq -0x670(%rbp), %rdi
movq -0x148(%rbp), %rsi
xorl %edx, %edx
callq 0x11400
jmp 0x61da
movq -0x670(%rbp), %rax
movq %rax, -0x1a0(%rbp)
movl $0x98, %edi
callq 0x31b0
movq %rax, -0x678(%rbp)
jmp 0x61fb
movq -0x678(%rbp), %rdi
movq -0x148(%rbp), %rsi
callq 0x12270
jmp 0x6210
movq -0x678(%rbp), %rax
movq %rax, -0x1a8(%rbp)
movl $0x98, %edi
callq 0x31b0
movq %rax, -0x680(%rbp)
jmp 0x6231
movl $0x0, -0x1c0(%rbp)
movl $0x3f800000, -0x1c4(%rbp) # imm = 0x3F800000
movl $0x0, -0x1c8(%rbp)
leaq -0x1bc(%rbp), %rdi
leaq -0x1c0(%rbp), %rsi
leaq -0x1c4(%rbp), %rdx
leaq -0x1c8(%rbp), %rcx
callq 0x8c30
jmp 0x6272
movq -0x680(%rbp), %rdi
movl -0xe8(%rbp), %eax
movl %eax, -0x1d0(%rbp)
movq -0xf0(%rbp), %rax
movq %rax, -0x1d8(%rbp)
movl -0x1d0(%rbp), %eax
movl %eax, -0x1e0(%rbp)
movq -0x1d8(%rbp), %rax
movq %rax, -0x1e8(%rbp)
movsd -0x1e8(%rbp), %xmm0
movss -0x1e0(%rbp), %xmm1
movl $0x100, %esi            # imm = 0x100
leaq -0x1bc(%rbp), %rdx
leaq -0xc0(%rbp), %rcx
callq 0xcd30
jmp 0x62d7
movq -0x680(%rbp), %rax
movq %rax, -0x1b0(%rbp)
movq -0x148(%rbp), %rax
movl $0x3c75c28f, 0x3c(%rax) # imm = 0x3C75C28F
movq -0x148(%rbp), %rax
movl -0x10c(%rbp), %ecx
movl %ecx, 0x28(%rax)
movq -0x114(%rbp), %rcx
movq %rcx, 0x20(%rax)
movq -0x1b0(%rbp), %rax
movb $0x0, 0x3a(%rax)
movq -0x1b0(%rbp), %rax
movb $0x1, 0x38(%rax)
movl $0x3f800000, -0x1f8(%rbp) # imm = 0x3F800000
movl $0x0, -0x1fc(%rbp)
movl $0x0, -0x200(%rbp)
leaq -0x1f4(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
leaq -0x1fc(%rbp), %rdx
leaq -0x200(%rbp), %rcx
callq 0x8c30
jmp 0x6365
movq -0x1b0(%rbp), %rax
movl -0x1ec(%rbp), %ecx
movl %ecx, 0x28(%rax)
movq -0x1f4(%rbp), %rcx
movq %rcx, 0x20(%rax)
movq -0x1b0(%rbp), %rax
movl $0x3c75c28f, 0x3c(%rax) # imm = 0x3C75C28F
movl $0x40, %edi
callq 0x31b0
movq %rax, -0x688(%rbp)
jmp 0x63a1
movl $0xbf333333, -0x218(%rbp) # imm = 0xBF333333
movl $0x0, -0x21c(%rbp)
movl $0x3f800000, -0x220(%rbp) # imm = 0x3F800000
leaq -0x214(%rbp), %rdi
leaq -0x218(%rbp), %rsi
leaq -0x21c(%rbp), %rdx
leaq -0x220(%rbp), %rcx
callq 0x8c30
jmp 0x63e2
movq -0x688(%rbp), %rdi
movl -0x10c(%rbp), %eax
movl %eax, -0x228(%rbp)
movq -0x114(%rbp), %rax
movq %rax, -0x230(%rbp)
movl -0x20c(%rbp), %eax
movl %eax, -0x238(%rbp)
movq -0x214(%rbp), %rax
movq %rax, -0x240(%rbp)
movsd -0x240(%rbp), %xmm0
movss -0x238(%rbp), %xmm1
movl -0x228(%rbp), %eax
movl %eax, -0x248(%rbp)
movq -0x230(%rbp), %rax
movq %rax, -0x250(%rbp)
movsd -0x250(%rbp), %xmm2
movss -0x248(%rbp), %xmm3
callq 0xad10
jmp 0x645e
movq -0x688(%rbp), %rax
movq %rax, -0x208(%rbp)
movl $0x40, %edi
callq 0x31b0
movq %rax, -0x690(%rbp)
jmp 0x647f
movl $0x3f333333, -0x268(%rbp) # imm = 0x3F333333
movl $0x0, -0x26c(%rbp)
movl $0x3f800000, -0x270(%rbp) # imm = 0x3F800000
leaq -0x264(%rbp), %rdi
leaq -0x268(%rbp), %rsi
leaq -0x26c(%rbp), %rdx
leaq -0x270(%rbp), %rcx
callq 0x8c30
jmp 0x64c0
movq -0x690(%rbp), %rdi
movl -0x10c(%rbp), %eax
movl %eax, -0x278(%rbp)
movq -0x114(%rbp), %rax
movq %rax, -0x280(%rbp)
movl -0x25c(%rbp), %eax
movl %eax, -0x288(%rbp)
movq -0x264(%rbp), %rax
movq %rax, -0x290(%rbp)
movsd -0x290(%rbp), %xmm0
movss -0x288(%rbp), %xmm1
movl -0x278(%rbp), %eax
movl %eax, -0x298(%rbp)
movq -0x280(%rbp), %rax
movq %rax, -0x2a0(%rbp)
movsd -0x2a0(%rbp), %xmm2
movss -0x298(%rbp), %xmm3
callq 0xad10
jmp 0x653c
movq -0x690(%rbp), %rax
movq %rax, -0x258(%rbp)
movl $0x40, %edi
callq 0x31b0
movq %rax, -0x698(%rbp)
jmp 0x655d
movl $0x0, -0x2b8(%rbp)
movl $0xbfa66666, -0x2bc(%rbp) # imm = 0xBFA66666
movl $0x3f800000, -0x2c0(%rbp) # imm = 0x3F800000
leaq -0x2b4(%rbp), %rdi
leaq -0x2b8(%rbp), %rsi
leaq -0x2bc(%rbp), %rdx
leaq -0x2c0(%rbp), %rcx
callq 0x8c30
jmp 0x659e
movq -0x698(%rbp), %rdi
movl -0x10c(%rbp), %eax
movl %eax, -0x2c8(%rbp)
movq -0x114(%rbp), %rax
movq %rax, -0x2d0(%rbp)
movl -0x2ac(%rbp), %eax
movl %eax, -0x2d8(%rbp)
movq -0x2b4(%rbp), %rax
movq %rax, -0x2e0(%rbp)
movsd -0x2e0(%rbp), %xmm0
movss -0x2d8(%rbp), %xmm1
movl -0x2c8(%rbp), %eax
movl %eax, -0x2e8(%rbp)
movq -0x2d0(%rbp), %rax
movq %rax, -0x2f0(%rbp)
movsd -0x2f0(%rbp), %xmm2
movss -0x2e8(%rbp), %xmm3
callq 0xad10
jmp 0x661a
movq -0x698(%rbp), %rax
movq %rax, -0x2a8(%rbp)
movl $0x40, %edi
callq 0x31b0
movq %rax, -0x6a0(%rbp)
jmp 0x663b
movl $0x0, -0x308(%rbp)
movl $0x3fa66666, -0x30c(%rbp) # imm = 0x3FA66666
movl $0x3f800000, -0x310(%rbp) # imm = 0x3F800000
leaq -0x304(%rbp), %rdi
leaq -0x308(%rbp), %rsi
leaq -0x30c(%rbp), %rdx
leaq -0x310(%rbp), %rcx
callq 0x8c30
jmp 0x667c
movq -0x6a0(%rbp), %rdi
movl -0x10c(%rbp), %eax
movl %eax, -0x318(%rbp)
movq -0x114(%rbp), %rax
movq %rax, -0x320(%rbp)
movl -0x2fc(%rbp), %eax
movl %eax, -0x328(%rbp)
movq -0x304(%rbp), %rax
movq %rax, -0x330(%rbp)
movsd -0x330(%rbp), %xmm0
movss -0x328(%rbp), %xmm1
movl -0x318(%rbp), %eax
movl %eax, -0x338(%rbp)
movq -0x320(%rbp), %rax
movq %rax, -0x340(%rbp)
movsd -0x340(%rbp), %xmm2
movss -0x338(%rbp), %xmm3
callq 0xad10
jmp 0x66f8
movq -0x6a0(%rbp), %rax
movq %rax, -0x2f8(%rbp)
movl $0x3c03126f, -0x344(%rbp) # imm = 0x3C03126F
movl $0x98, %edi
callq 0x31b0
movq %rax, -0x6a8(%rbp)
jmp 0x6723
movq -0x6a8(%rbp), %rdi
movq -0x208(%rbp), %rsi
movq -0x258(%rbp), %rdx
movss 0x108e8(%rip), %xmm0    # 0x17028
callq 0xcc80
jmp 0x6747
movq -0x6a8(%rbp), %rax
movq %rax, -0x350(%rbp)
movl $0x98, %edi
callq 0x31b0
movq %rax, -0x6b0(%rbp)
jmp 0x6768
movq -0x6b0(%rbp), %rdi
movq -0x2a8(%rbp), %rsi
movq -0x2f8(%rbp), %rdx
movss 0x108a3(%rip), %xmm0    # 0x17028
callq 0xcc80
jmp 0x678c
movq -0x6b0(%rbp), %rax
movq %rax, -0x358(%rbp)
movl $0x3efae147, -0x35c(%rbp) # imm = 0x3EFAE147
movl $0x3e75dcc5, -0x360(%rbp) # imm = 0x3E75DCC5
movsd 0x1087a(%rip), %xmm0    # 0x17030
callq 0x3140
cvtsd2ss %xmm0, %xmm0
movss 0x1085d(%rip), %xmm1    # 0x17024
mulss %xmm1, %xmm0
movss %xmm0, -0x364(%rbp)
movq -0x148(%rbp), %rax
movl 0x28(%rax), %ecx
movl %ecx, -0x368(%rbp)
movq 0x20(%rax), %rax
movq %rax, -0x370(%rbp)
movaps 0x1084b(%rip), %xmm1    # 0x17040
movss -0x364(%rbp), %xmm0
pxor %xmm1, %xmm0
movss %xmm0, -0x380(%rbp)
movl $0x3f800000, -0x384(%rbp) # imm = 0x3F800000
leaq -0x37c(%rbp), %rdi
leaq -0x35c(%rbp), %rsi
leaq -0x380(%rbp), %rdx
leaq -0x384(%rbp), %rcx
callq 0x8c30
jmp 0x6836
movl $0x0, -0x394(%rbp)
movl $0x3f800000, -0x398(%rbp) # imm = 0x3F800000
leaq -0x390(%rbp), %rdi
leaq -0x35c(%rbp), %rsi
leaq -0x394(%rbp), %rdx
leaq -0x398(%rbp), %rcx
callq 0x8c30
jmp 0x686d
movss -0x364(%rbp), %xmm0
movss %xmm0, -0x3a8(%rbp)
movl $0x3f800000, -0x3ac(%rbp) # imm = 0x3F800000
leaq -0x3a4(%rbp), %rdi
leaq -0x35c(%rbp), %rsi
leaq -0x3a8(%rbp), %rdx
leaq -0x3ac(%rbp), %rcx
callq 0x8c30
jmp 0x68aa
movl $0x40, %edi
callq 0x31b0
movq %rax, -0x6b8(%rbp)
jmp 0x68bd
movq -0x6b8(%rbp), %rdi
movl -0x374(%rbp), %eax
movl %eax, -0x3c0(%rbp)
movq -0x37c(%rbp), %rax
movq %rax, -0x3c8(%rbp)
movl -0x368(%rbp), %eax
movl %eax, -0x3d0(%rbp)
movq -0x370(%rbp), %rax
movq %rax, -0x3d8(%rbp)
movl -0x3c0(%rbp), %eax
movl %eax, -0x3e0(%rbp)
movq -0x3c8(%rbp), %rax
movq %rax, -0x3e8(%rbp)
movsd -0x3e8(%rbp), %xmm0
movss -0x3e0(%rbp), %xmm1
movl -0x3d0(%rbp), %eax
movl %eax, -0x3f0(%rbp)
movq -0x3d8(%rbp), %rax
movq %rax, -0x3f8(%rbp)
movsd -0x3f8(%rbp), %xmm2
movss -0x3f0(%rbp), %xmm3
callq 0xad10
jmp 0x6953
movq -0x6b8(%rbp), %rax
movq %rax, -0x3b8(%rbp)
movl $0x40, %edi
callq 0x31b0
movq %rax, -0x6c0(%rbp)
jmp 0x6974
movq -0x6c0(%rbp), %rdi
movl -0x388(%rbp), %eax
movl %eax, -0x408(%rbp)
movq -0x390(%rbp), %rax
movq %rax, -0x410(%rbp)
movl -0x368(%rbp), %eax
movl %eax, -0x418(%rbp)
movq -0x370(%rbp), %rax
movq %rax, -0x420(%rbp)
movl -0x408(%rbp), %eax
movl %eax, -0x428(%rbp)
movq -0x410(%rbp), %rax
movq %rax, -0x430(%rbp)
movsd -0x430(%rbp), %xmm0
movss -0x428(%rbp), %xmm1
movl -0x418(%rbp), %eax
movl %eax, -0x438(%rbp)
movq -0x420(%rbp), %rax
movq %rax, -0x440(%rbp)
movsd -0x440(%rbp), %xmm2
movss -0x438(%rbp), %xmm3
callq 0xad10
jmp 0x6a0a
movq -0x6c0(%rbp), %rax
movq %rax, -0x400(%rbp)
movl $0x40, %edi
callq 0x31b0
movq %rax, -0x6c8(%rbp)
jmp 0x6a2b
movq -0x6c8(%rbp), %rdi
movl -0x39c(%rbp), %eax
movl %eax, -0x450(%rbp)
movq -0x3a4(%rbp), %rax
movq %rax, -0x458(%rbp)
movl -0x368(%rbp), %eax
movl %eax, -0x460(%rbp)
movq -0x370(%rbp), %rax
movq %rax, -0x468(%rbp)
movl -0x450(%rbp), %eax
movl %eax, -0x470(%rbp)
movq -0x458(%rbp), %rax
movq %rax, -0x478(%rbp)
movsd -0x478(%rbp), %xmm0
movss -0x470(%rbp), %xmm1
movl -0x460(%rbp), %eax
movl %eax, -0x480(%rbp)
movq -0x468(%rbp), %rax
movq %rax, -0x488(%rbp)
movsd -0x488(%rbp), %xmm2
movss -0x480(%rbp), %xmm3
callq 0xad10
jmp 0x6ac1
movq -0x6c8(%rbp), %rax
movq %rax, -0x448(%rbp)
movl $0x98, %edi
callq 0x31b0
movq %rax, -0x6d0(%rbp)
jmp 0x6ae2
movq -0x6d0(%rbp), %rdi
movq -0x3b8(%rbp), %rsi
movq -0x448(%rbp), %rdx
movss 0x10529(%rip), %xmm0    # 0x17028
callq 0xcc80
jmp 0x6b06
movq -0x6d0(%rbp), %rax
movq %rax, -0x490(%rbp)
leaq -0x37c(%rbp), %rdi
callq 0x8ea0
movss %xmm1, -0x6e4(%rbp)
movaps %xmm0, -0x6e0(%rbp)
jmp 0x6b31
movss -0x6e4(%rbp), %xmm0
movaps -0x6e0(%rbp), %xmm1
movlpd %xmm1, -0x4b8(%rbp)
movss %xmm0, -0x4b0(%rbp)
movl -0x4b0(%rbp), %eax
movl %eax, -0x4a0(%rbp)
movq -0x4b8(%rbp), %rax
movq %rax, -0x4a8(%rbp)
leaq -0x49c(%rbp), %rdi
leaq -0x4a8(%rbp), %rsi
callq 0x8e00
jmp 0x6b7f
leaq -0x3a4(%rbp), %rdi
callq 0x8ea0
movss %xmm1, -0x704(%rbp)
movaps %xmm0, -0x700(%rbp)
jmp 0x6b9c
movss -0x704(%rbp), %xmm0
movaps -0x700(%rbp), %xmm1
movlpd %xmm1, -0x4e0(%rbp)
movss %xmm0, -0x4d8(%rbp)
movl -0x4d8(%rbp), %eax
movl %eax, -0x4c8(%rbp)
movq -0x4e0(%rbp), %rax
movq %rax, -0x4d0(%rbp)
leaq -0x4c4(%rbp), %rdi
leaq -0x4d0(%rbp), %rsi
callq 0x8e00
jmp 0x6bea
movl $0x40, %edi
callq 0x31b0
movq %rax, -0x710(%rbp)
jmp 0x6bfd
movq -0x710(%rbp), %rdi
movl -0x494(%rbp), %eax
movl %eax, -0x4f0(%rbp)
movq -0x49c(%rbp), %rax
movq %rax, -0x4f8(%rbp)
movq -0x1a0(%rbp), %rax
movl 0x28(%rax), %ecx
movl %ecx, -0x500(%rbp)
movq 0x20(%rax), %rax
movq %rax, -0x508(%rbp)
movl -0x4f0(%rbp), %eax
movl %eax, -0x510(%rbp)
movq -0x4f8(%rbp), %rax
movq %rax, -0x518(%rbp)
movsd -0x518(%rbp), %xmm0
movss -0x510(%rbp), %xmm1
movl -0x500(%rbp), %eax
movl %eax, -0x520(%rbp)
movq -0x508(%rbp), %rax
movq %rax, -0x528(%rbp)
movsd -0x528(%rbp), %xmm2
movss -0x520(%rbp), %xmm3
callq 0xad10
jmp 0x6c94
movq -0x710(%rbp), %rax
movq %rax, -0x4e8(%rbp)
movl $0x40, %edi
callq 0x31b0
movq %rax, -0x718(%rbp)
jmp 0x6cb5
movq -0x718(%rbp), %rdi
movl -0x4bc(%rbp), %eax
movl %eax, -0x538(%rbp)
movq -0x4c4(%rbp), %rax
movq %rax, -0x540(%rbp)
movq -0x1a0(%rbp), %rax
movl 0x28(%rax), %ecx
movl %ecx, -0x548(%rbp)
movq 0x20(%rax), %rax
movq %rax, -0x550(%rbp)
movl -0x538(%rbp), %eax
movl %eax, -0x558(%rbp)
movq -0x540(%rbp), %rax
movq %rax, -0x560(%rbp)
movsd -0x560(%rbp), %xmm0
movss -0x558(%rbp), %xmm1
movl -0x548(%rbp), %eax
movl %eax, -0x568(%rbp)
movq -0x550(%rbp), %rax
movq %rax, -0x570(%rbp)
movsd -0x570(%rbp), %xmm2
movss -0x568(%rbp), %xmm3
callq 0xad10
jmp 0x6d4c
movq -0x718(%rbp), %rax
movq %rax, -0x530(%rbp)
movl $0x98, %edi
callq 0x31b0
movq %rax, -0x720(%rbp)
jmp 0x6d6d
movq -0x720(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
leaq -0x37c(%rbp), %rdx
callq 0xcbb0
jmp 0x6d89
movq -0x720(%rbp), %rax
movq %rax, -0x578(%rbp)
movl $0x98, %edi
callq 0x31b0
movq %rax, -0x728(%rbp)
jmp 0x6daa
movq -0x728(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
leaq -0x3a4(%rbp), %rdx
callq 0xcbb0
jmp 0x6dc6
movq -0x728(%rbp), %rax
movq %rax, -0x580(%rbp)
movl $0x98, %edi
callq 0x31b0
movq %rax, -0x730(%rbp)
jmp 0x6de7
movq -0x730(%rbp), %rdi
movq -0x400(%rbp), %rdx
addq $0x1c, %rdx
leaq -0xa8(%rbp), %rsi
callq 0xcbb0
jmp 0x6e07
movq -0x730(%rbp), %rax
movq %rax, -0x588(%rbp)
movl $0x98, %edi
callq 0x31b0
movq %rax, -0x738(%rbp)
jmp 0x6e28
movq -0x738(%rbp), %rdi
movq -0x400(%rbp), %rdx
addq $0x1c, %rdx
leaq -0xf0(%rbp), %rsi
callq 0xcbb0
jmp 0x6e48
movq -0x738(%rbp), %rax
movq %rax, -0x590(%rbp)
movl $0x98, %edi
callq 0x31b0
movq %rax, -0x740(%rbp)
jmp 0x6e69
movl $0x0, -0x5a8(%rbp)
leaq -0x3a4(%rbp), %rdi
callq 0x8f10
movq %rax, -0x748(%rbp)
jmp 0x6e88
movq -0x748(%rbp), %rdx
addq $0x4, %rdx
movl $0x0, -0x5ac(%rbp)
leaq -0x5a4(%rbp), %rdi
leaq -0x5a8(%rbp), %rsi
leaq -0x5ac(%rbp), %rcx
callq 0x8c30
jmp 0x6eb9
movq -0x740(%rbp), %rdi
leaq -0x3a4(%rbp), %rsi
leaq -0x5a4(%rbp), %rdx
callq 0xcbb0
jmp 0x6ed5
movq -0x740(%rbp), %rax
movq %rax, -0x598(%rbp)
movq -0x598(%rbp), %rax
movb $0x1, 0x44(%rax)
movl $0x3f333333, -0x5bc(%rbp) # imm = 0x3F333333
movl $0x3f333333, -0x5c0(%rbp) # imm = 0x3F333333
movl $0x3f333333, -0x5c4(%rbp) # imm = 0x3F333333
leaq -0x5b8(%rbp), %rdi
leaq -0x5bc(%rbp), %rsi
leaq -0x5c0(%rbp), %rdx
leaq -0x5c4(%rbp), %rcx
callq 0x8c30
jmp 0x6f2f
movq -0x598(%rbp), %rax
movl -0x5b0(%rbp), %ecx
movl %ecx, 0x28(%rax)
movq -0x5b8(%rbp), %rcx
movq %rcx, 0x20(%rax)
movq -0x598(%rbp), %rax
movl $0x3b83126f, 0x3c(%rax) # imm = 0x3B83126F
movl $0x98, %edi
callq 0x31b0
movq %rax, -0x750(%rbp)
jmp 0x6f6b
movl $0x0, -0x5e0(%rbp)
leaq -0x4c4(%rbp), %rdi
callq 0x8f10
movq %rax, -0x758(%rbp)
jmp 0x6f8a
movq -0x758(%rbp), %rdx
addq $0x4, %rdx
movl $0x0, -0x5e4(%rbp)
leaq -0x5dc(%rbp), %rdi
leaq -0x5e0(%rbp), %rsi
leaq -0x5e4(%rbp), %rcx
callq 0x8c30
jmp 0x6fbb
movq -0x750(%rbp), %rdi
leaq -0x4c4(%rbp), %rsi
leaq -0x5dc(%rbp), %rdx
callq 0xcbb0
jmp 0x6fd7
movq -0x750(%rbp), %rax
movq %rax, -0x5d0(%rbp)
movq -0x5d0(%rbp), %rax
movb $0x1, 0x44(%rax)
movl $0x3f333333, -0x5f4(%rbp) # imm = 0x3F333333
movl $0x3f333333, -0x5f8(%rbp) # imm = 0x3F333333
movl $0x3f333333, -0x5fc(%rbp) # imm = 0x3F333333
leaq -0x5f0(%rbp), %rdi
leaq -0x5f4(%rbp), %rsi
leaq -0x5f8(%rbp), %rdx
leaq -0x5fc(%rbp), %rcx
callq 0x8c30
jmp 0x7031
movq -0x5d0(%rbp), %rax
movl -0x5e8(%rbp), %ecx
movl %ecx, 0x28(%rax)
movq -0x5f0(%rbp), %rcx
movq %rcx, 0x20(%rax)
movq -0x5d0(%rbp), %rax
movl $0x3b83126f, 0x3c(%rax) # imm = 0x3B83126F
movl $0x3f800000, -0x60c(%rbp) # imm = 0x3F800000
movl $0x0, -0x610(%rbp)
movl $0x0, -0x614(%rbp)
leaq -0x608(%rbp), %rdi
leaq -0x60c(%rbp), %rsi
leaq -0x610(%rbp), %rdx
leaq -0x614(%rbp), %rcx
callq 0x8c30
jmp 0x709b
movq -0x620(%rbp), %rax
movq -0x590(%rbp), %rcx
movl -0x600(%rbp), %edx
movl %edx, 0x28(%rcx)
movq -0x608(%rbp), %rdx
movq %rdx, 0x20(%rcx)
addq $0x30, %rax
movq %rax, -0x768(%rbp)
movl $0x38, %edi
callq 0x31b0
movq %rax, -0x760(%rbp)
jmp 0x70db
movq -0x760(%rbp), %rdi
movss 0xff42(%rip), %xmm0     # 0x1702c
xorl %esi, %esi
callq 0xebb0
jmp 0x70f3
movq -0x760(%rbp), %rsi
movq -0x768(%rbp), %rdi
callq 0xb660
jmp 0x7108
movq -0x620(%rbp), %rdi
addq $0x30, %rdi
movq -0x128(%rbp), %rsi
callq 0xb660
jmp 0x7121
movq -0x620(%rbp), %rdi
addq $0x30, %rdi
movq -0x148(%rbp), %rsi
callq 0xb660
jmp 0x713a
movq -0x620(%rbp), %rdi
addq $0x30, %rdi
movq -0x350(%rbp), %rsi
callq 0xb660
jmp 0x7153
movq -0x620(%rbp), %rdi
addq $0x30, %rdi
movq -0x358(%rbp), %rsi
callq 0xb660
jmp 0x716c
movq -0x620(%rbp), %rdi
addq $0x30, %rdi
movq -0x490(%rbp), %rsi
callq 0xb660
jmp 0x7185
movq -0x620(%rbp), %rdi
addq $0x30, %rdi
movq -0x588(%rbp), %rsi
callq 0xb660
jmp 0x719e
movq -0x620(%rbp), %rdi
addq $0x30, %rdi
movq -0x590(%rbp), %rsi
callq 0xb660
jmp 0x71b7
movq -0x620(%rbp), %rdi
addq $0x30, %rdi
movq -0x578(%rbp), %rsi
callq 0xb660
jmp 0x71d0
movq -0x620(%rbp), %rdi
addq $0x30, %rdi
movq -0x580(%rbp), %rsi
callq 0xb660
jmp 0x71e9
movq -0x620(%rbp), %rdi
addq $0x30, %rdi
movq -0x598(%rbp), %rsi
callq 0xb660
jmp 0x7202
movq -0x620(%rbp), %rdi
addq $0x30, %rdi
movq -0x5d0(%rbp), %rsi
callq 0xb660
jmp 0x721b
movq -0x620(%rbp), %rdi
addq $0x30, %rdi
movq -0x3b8(%rbp), %rsi
callq 0xb660
jmp 0x7234
movq -0x620(%rbp), %rdi
addq $0x30, %rdi
movq -0x400(%rbp), %rsi
callq 0xb660
jmp 0x724d
movq -0x620(%rbp), %rdi
addq $0x30, %rdi
movq -0x448(%rbp), %rsi
callq 0xb660
jmp 0x7266
movq -0x620(%rbp), %rdi
addq $0x30, %rdi
movq -0x4e8(%rbp), %rsi
callq 0xb660
jmp 0x727f
movq -0x620(%rbp), %rdi
addq $0x30, %rdi
movq -0x530(%rbp), %rsi
callq 0xb660
jmp 0x7298
addq $0x770, %rsp            # imm = 0x770
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x7559
movq -0x628(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
callq 0x3190
jmp 0x7559
movq -0x630(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
callq 0x3190
jmp 0x7559
movq -0x670(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
callq 0x3190
jmp 0x7559
movq -0x678(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
callq 0x3190
jmp 0x7559
movq -0x680(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
callq 0x3190
jmp 0x7559
movq -0x688(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
callq 0x3190
jmp 0x7559
movq -0x690(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
callq 0x3190
jmp 0x7559
movq -0x698(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
callq 0x3190
jmp 0x7559
movq -0x6a0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
callq 0x3190
jmp 0x7559
movq -0x6a8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
callq 0x3190
jmp 0x7559
movq -0x6b0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
callq 0x3190
jmp 0x7559
movq -0x6b8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
callq 0x3190
jmp 0x7559
movq -0x6c0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
callq 0x3190
jmp 0x7559
movq -0x6c8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
callq 0x3190
jmp 0x7559
movq -0x6d0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
callq 0x3190
jmp 0x7559
movq -0x710(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
callq 0x3190
jmp 0x7559
movq -0x718(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
callq 0x3190
jmp 0x7559
movq -0x720(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
callq 0x3190
jmp 0x7559
movq -0x728(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
callq 0x3190
jmp 0x7559
movq -0x730(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
callq 0x3190
jmp 0x7559
movq -0x738(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
callq 0x3190
jmp 0x7559
movq -0x740(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
callq 0x3190
jmp 0x7559
movq -0x750(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
callq 0x3190
jmp 0x7559
movq -0x760(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
callq 0x3190
movq -0x620(%rbp), %rdi
callq 0x8cc0
movq -0x28(%rbp), %rdi
callq 0x3280
nop