// File: /workspace/github_cpp_makefile_star2_O3/carlos-urena[P]svg-gen/svgobjects.cpp
// Function: EllipseSectorRadial::EllipseSectorRadial(unsigned int, float, float)
EllipseSectorRadial::EllipseSectorRadial( unsigned n, real plonX, real plonY )
{


  // initialize parámetros de este sector
  alpha0 = 0.0;
  alpha1 = pi*0.5*0.7 ;
  lonX = plonX ;
  lonY = plonY ;

  const vec3 center = vec3(0.0,0.0,1.0),
             eje1   = vec3(lonX,0.0,0.0),
             eje2   = vec3(0.0,lonY,0.0) ;

  // crear poligono
  ppol = new Polygon();

  // extremo del radius en alpha0
  const real c0 = real(cos(alpha0)),
             s0 = real(sin(alpha0));
  vec3 extremo0 = center + c0*eje1 + s0*eje2 ;

  // extremo del radius en alpha1
  const real c1 = real(cos(alpha1)),
             s1 = real(sin(alpha1));
  vec3 extremo1 = center + c1*eje1 + s1*eje2 ;

  // radius desde center (incluido) hasta extremo0 (sin incluir)
  const int nprad = n ;
  for( unsigned i = 0 ; i < nprad ; i++ )
     ppol->points3D.push_back( center + real(i)/real(nprad)*extremo0 );


  // arco de elipse (desde extremo0, incluido, hasta extremo1, sin incluir)
  for( unsigned i= 0 ; i < n ; i++ )
  {
    const real ang = alpha0 + (alpha1-alpha0)*real(i)/real(n) ;
    const real c = cos(double(ang)),
               s = sin(double(ang));
    ppol->points3D.push_back( center + c*eje1 + s*eje2 ) ;
  }

  // radius desde extremo1 (incluido) hasta center (sin incluir)
  for( unsigned i = nprad ; i > 0 ; i-- )
    ppol->points3D.push_back( center + real(i)/real(nprad)*extremo1 );


  // style del polígono (da igual pq luego esto no se dibuja: se dibujan sus proyecciones)
  ppol->style.draw_filled = false ;
  ppol->style.draw_lines = true ;
  ppol->style.close_lines = true ;
  ppol->style.lines_width = 0.006 ;
  ppol->style.lines_color  = vec3( 0.0, 1.0, 0.0 );

  // points
  const vec3 colpoint = vec3(0.0, 1.0, 0.0);
  //ppun0 = new Point( p0, colpoint );
  //ppun1 = new Point( p1, colpoint );

  // añadir objetos
  add( ppol );

  // añadir las posiciones del point0 y el point1 (extremos del segmento en alpha1)

  const vec3 extremo1esf = extremo1.normalized();
  real r = real(sqrt(extremo1esf[0]*extremo1esf[0]+extremo1esf[1]*extremo1esf[1]));
  point0 = vec3( extremo1esf[0]/r, extremo1esf[1]/r, extremo1esf[2] );
  point1 = vec3( point0[0], point0[1], 1.0 );
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0xa0, %rsp
movl %esi, %r14d
movq %rdi, %rbx
movb $0x0, 0x8(%rdi)
xorps %xmm2, %xmm2
movups %xmm2, 0x20(%rdi)
xorl %eax, %eax
movq %rax, 0x30(%rdi)
leaq 0x8b24(%rip), %rcx      # 0x11920
movq %rcx, (%rdi)
movabsq $0x3f8cbe4c00000000, %rcx # imm = 0x3F8CBE4C00000000
movq %rcx, 0x50(%rdi)
movss %xmm0, 0x58(%rdi)
movss %xmm1, 0x5c(%rdi)
movq %rax, -0x6c(%rbp)
movl $0x3f800000, -0x64(%rbp) # imm = 0x3F800000
movss %xmm0, -0x98(%rbp)
movq %rax, -0x94(%rbp)
movl %eax, -0x8c(%rbp)
movss %xmm1, -0x88(%rbp)
movl %eax, -0x84(%rbp)
movl $0x98, %edi
callq 0x31d0
movq %rax, %r15
movb $0x0, 0x8(%rax)
leaq 0x8903(%rip), %rax      # 0x11760
movq %rax, (%r15)
movq %r15, %rdi
addq $0x20, %rdi
callq 0x6c64
xorps %xmm0, %xmm0
movups %xmm0, 0x88(%r15)
movups %xmm0, 0x78(%r15)
movups %xmm0, 0x68(%r15)
movq %r15, 0x38(%rbx)
xorps %xmm0, %xmm0
cvtss2sd 0x50(%rbx), %xmm0
callq 0x32e0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x44(%rbp)
xorps %xmm0, %xmm0
cvtss2sd 0x50(%rbx), %xmm0
callq 0x3060
movss -0x44(%rbp), %xmm2
xorl %eax, %eax
movss -0x98(%rbp,%rax,4), %xmm1
mulss %xmm2, %xmm1
movss %xmm1, -0x30(%rbp,%rax,4)
incq %rax
cmpq $0x3, %rax
jne 0x8eaf
movsd -0x30(%rbp), %xmm1
movss -0x28(%rbp), %xmm2
movsd %xmm1, -0x40(%rbp)
movss %xmm2, -0x38(%rbp)
xorl %eax, %eax
movss -0x6c(%rbp,%rax,4), %xmm1
addss -0x40(%rbp,%rax,4), %xmm1
movss %xmm1, -0x30(%rbp,%rax,4)
incq %rax
cmpq $0x3, %rax
jne 0x8ee1
cvtsd2ss %xmm0, %xmm0
movsd -0x30(%rbp), %xmm1
movss -0x28(%rbp), %xmm2
movsd %xmm1, -0x60(%rbp)
movss %xmm2, -0x58(%rbp)
xorl %eax, %eax
movss -0x8c(%rbp,%rax,4), %xmm1
mulss %xmm0, %xmm1
movss %xmm1, -0x30(%rbp,%rax,4)
incq %rax
cmpq $0x3, %rax
jne 0x8f16
movsd -0x30(%rbp), %xmm0
movss -0x28(%rbp), %xmm1
movsd %xmm0, -0x50(%rbp)
movss %xmm1, -0x48(%rbp)
xorl %eax, %eax
movss -0x60(%rbp,%rax,4), %xmm0
addss -0x50(%rbp,%rax,4), %xmm0
movss %xmm0, -0x30(%rbp,%rax,4)
incq %rax
cmpq $0x3, %rax
jne 0x8f48
movsd -0x30(%rbp), %xmm0
movss -0x28(%rbp), %xmm1
movss %xmm0, -0xa4(%rbp)
shufps $0x55, %xmm0, %xmm0     # xmm0 = xmm0[1,1,1,1]
movss %xmm0, -0xa0(%rbp)
movss %xmm1, -0x9c(%rbp)
xorps %xmm0, %xmm0
cvtss2sd 0x54(%rbx), %xmm0
callq 0x32e0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x44(%rbp)
xorps %xmm0, %xmm0
cvtss2sd 0x54(%rbx), %xmm0
callq 0x3060
movss -0x44(%rbp), %xmm2
xorl %eax, %eax
movss -0x98(%rbp,%rax,4), %xmm1
mulss %xmm2, %xmm1
movss %xmm1, -0x30(%rbp,%rax,4)
incq %rax
cmpq $0x3, %rax
jne 0x8fb3
movsd -0x30(%rbp), %xmm1
movss -0x28(%rbp), %xmm2
movsd %xmm1, -0x50(%rbp)
movss %xmm2, -0x48(%rbp)
xorl %eax, %eax
movss -0x6c(%rbp,%rax,4), %xmm1
addss -0x50(%rbp,%rax,4), %xmm1
movss %xmm1, -0x30(%rbp,%rax,4)
incq %rax
cmpq $0x3, %rax
jne 0x8fe5
cvtsd2ss %xmm0, %xmm0
movsd -0x30(%rbp), %xmm1
movss -0x28(%rbp), %xmm2
movsd %xmm1, -0x40(%rbp)
movss %xmm2, -0x38(%rbp)
xorl %eax, %eax
movss -0x8c(%rbp,%rax,4), %xmm1
mulss %xmm0, %xmm1
movss %xmm1, -0x30(%rbp,%rax,4)
incq %rax
cmpq $0x3, %rax
jne 0x901a
movsd -0x30(%rbp), %xmm0
movss -0x28(%rbp), %xmm1
movsd %xmm0, -0x78(%rbp)
movss %xmm1, -0x70(%rbp)
xorl %eax, %eax
movss -0x40(%rbp,%rax,4), %xmm0
addss -0x78(%rbp,%rax,4), %xmm0
movss %xmm0, -0x30(%rbp,%rax,4)
incq %rax
cmpq $0x3, %rax
jne 0x904c
movsd -0x30(%rbp), %xmm0
movss -0x28(%rbp), %xmm1
movss %xmm0, -0x60(%rbp)
shufps $0x55, %xmm0, %xmm0     # xmm0 = xmm0[1,1,1,1]
movss %xmm0, -0x5c(%rbp)
movss %xmm1, -0x58(%rbp)
testl %r14d, %r14d
je 0x938d
xorps %xmm0, %xmm0
cvtsi2ss %r14d, %xmm0
movss %xmm0, -0x44(%rbp)
xorl %r12d, %r12d
leaq -0x40(%rbp), %r15
movl %r12d, %eax
xorps %xmm0, %xmm0
cvtsi2ss %rax, %xmm0
movq 0x38(%rbx), %rdi
divss -0x44(%rbp), %xmm0
xorl %eax, %eax
movss -0xa4(%rbp,%rax,4), %xmm1
mulss %xmm0, %xmm1
movss %xmm1, -0x30(%rbp,%rax,4)
incq %rax
cmpq $0x3, %rax
jne 0x90b7
movsd -0x30(%rbp), %xmm0
movss -0x28(%rbp), %xmm1
movsd %xmm0, -0x50(%rbp)
movss %xmm1, -0x48(%rbp)
xorl %eax, %eax
movss -0x6c(%rbp,%rax,4), %xmm0
addss -0x50(%rbp,%rax,4), %xmm0
movss %xmm0, -0x30(%rbp,%rax,4)
incq %rax
cmpq $0x3, %rax
jne 0x90e9
movsd -0x30(%rbp), %xmm0
movss -0x28(%rbp), %xmm1
movss %xmm0, -0x40(%rbp)
shufps $0x55, %xmm0, %xmm0     # xmm0 = xmm0[1,1,1,1]
movss %xmm0, -0x3c(%rbp)
movss %xmm1, -0x38(%rbp)
movq 0x70(%rdi), %rsi
cmpq 0x78(%rdi), %rsi
je 0x913f
movl -0x38(%rbp), %eax
movl %eax, 0x8(%rsi)
movq -0x40(%rbp), %rax
movq %rax, (%rsi)
addq $0xc, 0x70(%rdi)
jmp 0x914b
addq $0x68, %rdi
movq %r15, %rdx
callq 0xc244
incl %r12d
cmpl %r14d, %r12d
jne 0x90a1
movl %r14d, %eax
xorps %xmm0, %xmm0
cvtsi2ss %rax, %xmm0
movss %xmm0, -0x7c(%rbp)
xorl %r12d, %r12d
leaq -0x40(%rbp), %r15
movss 0x50(%rbx), %xmm0
movss 0x54(%rbx), %xmm1
subss %xmm0, %xmm1
movl %r12d, %eax
xorps %xmm2, %xmm2
cvtsi2ss %rax, %xmm2
mulss %xmm1, %xmm2
divss -0x7c(%rbp), %xmm2
addss %xmm0, %xmm2
xorps %xmm0, %xmm0
cvtss2sd %xmm2, %xmm0
movsd %xmm0, -0xb0(%rbp)
callq 0x32e0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x80(%rbp)
movsd -0xb0(%rbp), %xmm0
callq 0x3060
movss -0x80(%rbp), %xmm2
movq 0x38(%rbx), %rdi
xorl %eax, %eax
movss -0x98(%rbp,%rax,4), %xmm1
mulss %xmm2, %xmm1
movss %xmm1, -0x30(%rbp,%rax,4)
incq %rax
cmpq $0x3, %rax
jne 0x91c9
cvtsd2ss %xmm0, %xmm0
movsd -0x30(%rbp), %xmm1
movss -0x28(%rbp), %xmm2
movsd %xmm1, -0x78(%rbp)
movss %xmm2, -0x70(%rbp)
xorl %eax, %eax
movss -0x6c(%rbp,%rax,4), %xmm1
addss -0x78(%rbp,%rax,4), %xmm1
movss %xmm1, -0x30(%rbp,%rax,4)
incq %rax
cmpq $0x3, %rax
jne 0x91ff
movsd -0x30(%rbp), %xmm1
movss -0x28(%rbp), %xmm2
movsd %xmm1, -0x50(%rbp)
movss %xmm2, -0x48(%rbp)
xorl %eax, %eax
movss -0x8c(%rbp,%rax,4), %xmm1
mulss %xmm0, %xmm1
movss %xmm1, -0x30(%rbp,%rax,4)
incq %rax
cmpq $0x3, %rax
jne 0x9230
movsd -0x30(%rbp), %xmm0
movss -0x28(%rbp), %xmm1
movsd %xmm0, -0xc0(%rbp)
movss %xmm1, -0xb8(%rbp)
xorl %eax, %eax
movss -0x50(%rbp,%rax,4), %xmm0
addss -0xc0(%rbp,%rax,4), %xmm0
movss %xmm0, -0x30(%rbp,%rax,4)
incq %rax
cmpq $0x3, %rax
jne 0x9268
movsd -0x30(%rbp), %xmm0
movss -0x28(%rbp), %xmm1
movss %xmm0, -0x40(%rbp)
shufps $0x55, %xmm0, %xmm0     # xmm0 = xmm0[1,1,1,1]
movss %xmm0, -0x3c(%rbp)
movss %xmm1, -0x38(%rbp)
movq 0x70(%rdi), %rsi
cmpq 0x78(%rdi), %rsi
je 0x92c1
movl -0x38(%rbp), %eax
movl %eax, 0x8(%rsi)
movq -0x40(%rbp), %rax
movq %rax, (%rsi)
addq $0xc, 0x70(%rdi)
jmp 0x92cd
addq $0x68, %rdi
movq %r15, %rdx
callq 0xc244
incl %r12d
cmpl %r14d, %r12d
jne 0x916e
leaq -0x40(%rbp), %r15
movl %r14d, %eax
xorps %xmm0, %xmm0
cvtsi2ss %rax, %xmm0
movq 0x38(%rbx), %rdi
divss -0x44(%rbp), %xmm0
xorl %eax, %eax
movss -0x60(%rbp,%rax,4), %xmm1
mulss %xmm0, %xmm1
movss %xmm1, -0x30(%rbp,%rax,4)
incq %rax
cmpq $0x3, %rax
jne 0x92f3
movsd -0x30(%rbp), %xmm0
movss -0x28(%rbp), %xmm1
movsd %xmm0, -0x50(%rbp)
movss %xmm1, -0x48(%rbp)
xorl %eax, %eax
movss -0x6c(%rbp,%rax,4), %xmm0
addss -0x50(%rbp,%rax,4), %xmm0
movss %xmm0, -0x30(%rbp,%rax,4)
incq %rax
cmpq $0x3, %rax
jne 0x9322
movsd -0x30(%rbp), %xmm0
movss -0x28(%rbp), %xmm1
movss %xmm0, -0x40(%rbp)
shufps $0x55, %xmm0, %xmm0     # xmm0 = xmm0[1,1,1,1]
movss %xmm0, -0x3c(%rbp)
movss %xmm1, -0x38(%rbp)
movq 0x70(%rdi), %rsi
cmpq 0x78(%rdi), %rsi
je 0x9378
movl -0x38(%rbp), %eax
movl %eax, 0x8(%rsi)
movq -0x40(%rbp), %rax
movq %rax, (%rsi)
addq $0xc, 0x70(%rdi)
jmp 0x9384
addq $0x68, %rdi
movq %r15, %rdx
callq 0xc244
decl %r14d
jne 0x92dd
movq 0x38(%rbx), %rax
movb $0x0, 0x3a(%rax)
movw $0x101, 0x38(%rax)      # imm = 0x101
movl $0x3bc49ba6, 0x3c(%rax) # imm = 0x3BC49BA6
movabsq $0x3f80000000000000, %rcx # imm = 0x3F80000000000000
movq %rcx, 0x20(%rax)
movl $0x0, 0x28(%rax)
movq 0x38(%rbx), %rsi
movq %rbx, %rdi
callq 0x7554
xorps %xmm0, %xmm0
xorl %eax, %eax
xorps %xmm1, %xmm1
cvtss2sd -0x60(%rbp,%rax,4), %xmm1
mulsd %xmm1, %xmm1
addsd %xmm1, %xmm0
incq %rax
cmpq $0x3, %rax
jne 0x93c8
cvtsd2ss %xmm0, %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jb 0x93f4
sqrtss %xmm0, %xmm0
jmp 0x93f9
callq 0x32d0
xorl %eax, %eax
movss -0x60(%rbp,%rax,4), %xmm1
divss %xmm0, %xmm1
movss %xmm1, -0x30(%rbp,%rax,4)
incq %rax
cmpq $0x3, %rax
jne 0x93fb
movsd -0x30(%rbp), %xmm0
movss -0x28(%rbp), %xmm1
movaps %xmm0, %xmm2
shufps $0x55, %xmm0, %xmm2     # xmm2 = xmm2[1,1],xmm0[1,1]
movaps %xmm2, %xmm3
mulss %xmm2, %xmm3
movaps %xmm0, %xmm4
mulss %xmm0, %xmm4
addss %xmm3, %xmm4
xorps %xmm3, %xmm3
sqrtss %xmm4, %xmm3
divss %xmm3, %xmm0
divss %xmm3, %xmm2
movss %xmm0, 0x60(%rbx)
movss %xmm2, 0x64(%rbx)
movss %xmm1, 0x68(%rbx)
movss %xmm0, 0x6c(%rbx)
movss %xmm2, 0x70(%rbx)
movl $0x3f800000, 0x74(%rbx) # imm = 0x3F800000
addq $0xa0, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
jmp 0x948b
movq %rax, %r14
movq %r15, %rdi
callq 0x31a0
jmp 0x948e
jmp 0x948b
jmp 0x948b
jmp 0x948b
movq %rax, %r14
leaq 0x82fb(%rip), %rax      # 0x11790
movq %rax, (%rbx)
movq 0x20(%rbx), %rdi
testq %rdi, %rdi
je 0x94a6
callq 0x31a0
movq %r14, %rdi
callq 0x32b0