// File: /workspace/github_cpp_makefile_star2_O1/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 $0xc0, %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 0x8a74(%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, -0xb4(%rbp)
movq %rax, -0xb0(%rbp)
movl %eax, -0xa8(%rbp)
movss %xmm1, -0xa4(%rbp)
movl %eax, -0xa0(%rbp)
movl $0x98, %edi
callq 0x31d0
movq %rax, %r15
movb $0x0, 0x8(%rax)
leaq 0x8853(%rip), %rax      # 0x11760
movq %rax, (%r15)
movq %r15, %rdi
addq $0x20, %rdi
callq 0x6c48
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, -0x80(%rbp)
xorps %xmm0, %xmm0
cvtss2sd 0x50(%rbx), %xmm0
callq 0x3060
movss -0x80(%rbp), %xmm2
xorl %eax, %eax
movss -0xb4(%rbp,%rax,4), %xmm1
mulss %xmm2, %xmm1
movss %xmm1, -0x30(%rbp,%rax,4)
incq %rax
cmpq $0x3, %rax
jne 0x8f5f
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 0x8f91
cvtsd2ss %xmm0, %xmm0
movsd -0x30(%rbp), %xmm1
movss -0x28(%rbp), %xmm2
movsd %xmm1, -0x60(%rbp)
movss %xmm2, -0x58(%rbp)
xorl %eax, %eax
movss -0xa8(%rbp,%rax,4), %xmm1
mulss %xmm0, %xmm1
movss %xmm1, -0x30(%rbp,%rax,4)
incq %rax
cmpq $0x3, %rax
jne 0x8fc6
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 0x8ff8
movsd -0x30(%rbp), %xmm0
movss -0x28(%rbp), %xmm1
movss %xmm0, -0xc0(%rbp)
shufps $0x55, %xmm0, %xmm0     # xmm0 = xmm0[1,1,1,1]
movss %xmm0, -0xbc(%rbp)
movss %xmm1, -0xb8(%rbp)
xorps %xmm0, %xmm0
cvtss2sd 0x54(%rbx), %xmm0
callq 0x32e0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x80(%rbp)
xorps %xmm0, %xmm0
cvtss2sd 0x54(%rbx), %xmm0
callq 0x3060
movss -0x80(%rbp), %xmm2
xorl %eax, %eax
movss -0xb4(%rbp,%rax,4), %xmm1
mulss %xmm2, %xmm1
movss %xmm1, -0x30(%rbp,%rax,4)
incq %rax
cmpq $0x3, %rax
jne 0x9063
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 0x9095
cvtsd2ss %xmm0, %xmm0
movsd -0x30(%rbp), %xmm1
movss -0x28(%rbp), %xmm2
movsd %xmm1, -0x40(%rbp)
movss %xmm2, -0x38(%rbp)
xorl %eax, %eax
movss -0xa8(%rbp,%rax,4), %xmm1
mulss %xmm0, %xmm1
movss %xmm1, -0x30(%rbp,%rax,4)
incq %rax
cmpq $0x3, %rax
jne 0x90ca
movsd -0x30(%rbp), %xmm0
movss -0x28(%rbp), %xmm1
movsd %xmm0, -0x98(%rbp)
movss %xmm1, -0x90(%rbp)
xorl %eax, %eax
movss -0x40(%rbp,%rax,4), %xmm0
addss -0x98(%rbp,%rax,4), %xmm0
movss %xmm0, -0x30(%rbp,%rax,4)
incq %rax
cmpq $0x3, %rax
jne 0x9102
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 0x945b
xorps %xmm0, %xmm0
cvtsi2ss %r14d, %xmm0
movss %xmm0, -0x80(%rbp)
xorl %r12d, %r12d
leaq -0x40(%rbp), %r15
movl %r12d, %eax
xorps %xmm0, %xmm0
cvtsi2ss %rax, %xmm0
movq 0x38(%rbx), %rdi
divss -0x80(%rbp), %xmm0
xorl %eax, %eax
movss -0xc0(%rbp,%rax,4), %xmm1
mulss %xmm0, %xmm1
movss %xmm1, -0x30(%rbp,%rax,4)
incq %rax
cmpq $0x3, %rax
jne 0x9170
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 0x91a2
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 0x91f8
movl -0x38(%rbp), %eax
movl %eax, 0x8(%rsi)
movq -0x40(%rbp), %rax
movq %rax, (%rsi)
addq $0xc, 0x70(%rdi)
jmp 0x9204
addq $0x68, %rdi
movq %r15, %rdx
callq 0xc4f4
incl %r12d
cmpl %r14d, %r12d
jne 0x915a
movl %r14d, %eax
xorps %xmm0, %xmm0
cvtsi2ss %rax, %xmm0
movss %xmm0, -0x9c(%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 -0x9c(%rbp), %xmm2
addss %xmm0, %xmm2
xorps %xmm0, %xmm0
cvtss2sd %xmm2, %xmm0
movsd %xmm0, -0x88(%rbp)
callq 0x32e0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0xd0(%rbp)
movsd -0x88(%rbp), %xmm0
callq 0x3060
movss -0xd0(%rbp), %xmm2
movq 0x38(%rbx), %rdi
xorl %eax, %eax
movss -0xb4(%rbp,%rax,4), %xmm1
mulss %xmm2, %xmm1
movss %xmm1, -0x30(%rbp,%rax,4)
incq %rax
cmpq $0x3, %rax
jne 0x928e
cvtsd2ss %xmm0, %xmm0
movsd -0x30(%rbp), %xmm1
movss -0x28(%rbp), %xmm2
movsd %xmm1, -0x98(%rbp)
movss %xmm2, -0x90(%rbp)
xorl %eax, %eax
movss -0x6c(%rbp,%rax,4), %xmm1
addss -0x98(%rbp,%rax,4), %xmm1
movss %xmm1, -0x30(%rbp,%rax,4)
incq %rax
cmpq $0x3, %rax
jne 0x92ca
movsd -0x30(%rbp), %xmm1
movss -0x28(%rbp), %xmm2
movsd %xmm1, -0x50(%rbp)
movss %xmm2, -0x48(%rbp)
xorl %eax, %eax
movss -0xa8(%rbp,%rax,4), %xmm1
mulss %xmm0, %xmm1
movss %xmm1, -0x30(%rbp,%rax,4)
incq %rax
cmpq $0x3, %rax
jne 0x92fe
movsd -0x30(%rbp), %xmm0
movss -0x28(%rbp), %xmm1
movsd %xmm0, -0xe0(%rbp)
movss %xmm1, -0xd8(%rbp)
xorl %eax, %eax
movss -0x50(%rbp,%rax,4), %xmm0
addss -0xe0(%rbp,%rax,4), %xmm0
movss %xmm0, -0x30(%rbp,%rax,4)
incq %rax
cmpq $0x3, %rax
jne 0x9336
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 0x938f
movl -0x38(%rbp), %eax
movl %eax, 0x8(%rsi)
movq -0x40(%rbp), %rax
movq %rax, (%rsi)
addq $0xc, 0x70(%rdi)
jmp 0x939b
addq $0x68, %rdi
movq %r15, %rdx
callq 0xc4f4
incl %r12d
cmpl %r14d, %r12d
jne 0x922a
leaq -0x40(%rbp), %r15
movl %r14d, %eax
xorps %xmm0, %xmm0
cvtsi2ss %rax, %xmm0
movq 0x38(%rbx), %rdi
divss -0x80(%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 0x93c1
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 0x93f0
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 0x9446
movl -0x38(%rbp), %eax
movl %eax, 0x8(%rsi)
movq -0x40(%rbp), %rax
movq %rax, (%rsi)
addq $0xc, 0x70(%rdi)
jmp 0x9452
addq $0x68, %rdi
movq %r15, %rdx
callq 0xc4f4
decl %r14d
jne 0x93ab
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 0x7568
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 0x9496
cvtsd2ss %xmm0, %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jb 0x94c2
sqrtss %xmm0, %xmm0
jmp 0x94c7
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 0x94c9
movsd -0x30(%rbp), %xmm2
movss -0x28(%rbp), %xmm3
movaps %xmm2, %xmm4
shufps $0x55, %xmm2, %xmm4     # xmm4 = xmm4[1,1],xmm2[1,1]
movaps %xmm4, %xmm1
mulss %xmm4, %xmm1
movaps %xmm2, %xmm0
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jb 0x9513
sqrtss %xmm0, %xmm0
jmp 0x953e
movaps %xmm2, -0x80(%rbp)
movss %xmm3, -0x88(%rbp)
movaps %xmm4, -0xd0(%rbp)
callq 0x32d0
movaps -0xd0(%rbp), %xmm4
movss -0x88(%rbp), %xmm3
movaps -0x80(%rbp), %xmm2
divss %xmm0, %xmm2
divss %xmm0, %xmm4
movss %xmm2, 0x60(%rbx)
movss %xmm4, 0x64(%rbx)
movss %xmm3, 0x68(%rbx)
movss %xmm2, 0x6c(%rbx)
movss %xmm4, 0x70(%rbx)
movl $0x3f800000, 0x74(%rbx) # imm = 0x3F800000
addq $0xc0, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
jmp 0x958b
movq %rax, %r14
movq %r15, %rdi
callq 0x31a0
jmp 0x958e
jmp 0x958b
jmp 0x958b
jmp 0x958b
movq %rax, %r14
leaq 0x81fb(%rip), %rax      # 0x11790
movq %rax, (%rbx)
movq 0x20(%rbx), %rdi
testq %rdi, %rdi
je 0x95a6
callq 0x31a0
movq %r14, %rdi
callq 0x32b0