// File: /workspace/github_cpp_makefile_star2_O3/carlos-urena[P]svg-gen/figures.cpp
// Function: FigurePSA_Base::initialize()
void FigurePSA_Base::initialize(  )
{

   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),
              observ = vec3(1.2,0.6,1.0),
              lookat = vec3(0.0,0.0,0.0),
              vup    = vec3(0.0,1.0,0.0);

   cam = Camera( lookat, observ, vup );
   using namespace std ;
   cout << "FigurePSA_Base::initialize, flip_axes == " << flip_axes << endl ;

   // create objects
   auto * sphere_cap    = new SpherePolygon( *original_pol, true );
   auto * hor_plane_pol = new HorPlanePolygon( *sphere_cap, true );
   auto * hemisphere    = new Hemisphere( org, 1.0, (observ-lookat).normalized(), flip_axes ) ;

   sphere_cap->style.use_grad_fill = true ;
   sphere_cap->style.fill_opacity = 0.5 ;
   sphere_cap->style.grad_fill_name = "spherecapGradFill" ;

   auto * dashed_ellipse = new HorPlanePolygon( *original_pol, false );
   dashed_ellipse->style.draw_filled = false ;
   dashed_ellipse->style.draw_lines = true ;
   dashed_ellipse->style.dashed_lines = true ;
   objetos.add( dashed_ellipse );


   // add objects to set

   if ( draw_projectors )
   {
      auto * projectors    = new ExtrVertSegm( *sphere_cap, *hor_plane_pol, cam );
      objetos.add( projectors );
   }

   objetos.add( hemisphere );
   objetos.add( sphere_cap );
   objetos.add( hor_plane_pol );


}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x88, %rsp
movq %rdi, %rbx
xorl %eax, %eax
movq %rax, -0x54(%rbp)
movl %eax, -0x4c(%rbp)
movabsq $0x3f19999a3f99999a, %rcx # imm = 0x3F19999A3F99999A
leaq -0x6c(%rbp), %rdx
movq %rcx, (%rdx)
movl $0x3f800000, 0x8(%rdx)  # imm = 0x3F800000
leaq -0x60(%rbp), %rsi
movq %rax, (%rsi)
movl %eax, 0x8(%rsi)
movabsq $0x3f80000000000000, %rdi # imm = 0x3F80000000000000
leaq -0xac(%rbp), %rcx
movq %rdi, (%rcx)
movl %eax, 0x8(%rcx)
leaq -0xa0(%rbp), %r14
movq %r14, %rdi
callq 0x6c30
movups (%r14), %xmm0
movups 0x10(%r14), %xmm1
movups 0x20(%r14), %xmm2
movups %xmm2, 0x20(%rbx)
movups %xmm1, 0x10(%rbx)
movups %xmm0, (%rbx)
movq 0xcfd8(%rip), %r14      # 0x11fd0
leaq 0x80d1(%rip), %rsi      # 0xd0d0
movl $0x29, %edx
movq %r14, %rdi
callq 0x31e0
movzbl 0x6c(%rbx), %esi
movq %r14, %rdi
callq 0x3280
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x31b0
movsbl %al, %esi
movq %r14, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movl $0x98, %edi
callq 0x31d0
movq %rax, %r15
movq 0xa0(%rbx), %rsi
movq %rax, %rdi
movl $0x1, %edx
callq 0xa96a
movl $0x98, %edi
callq 0x31d0
movq %rax, %r14
movq %rax, %rdi
movq %r15, %rsi
movl $0x1, %edx
callq 0xabce
movl $0xf8, %edi
callq 0x31d0
movq %rax, %r12
xorl %eax, %eax
movss -0x6c(%rbp,%rax,4), %xmm0
subss -0x60(%rbp,%rax,4), %xmm0
movss %xmm0, -0xa0(%rbp,%rax,4)
incq %rax
cmpq $0x3, %rax
jne 0x508f
movsd -0xa0(%rbp), %xmm0
movss -0x98(%rbp), %xmm1
movsd %xmm0, -0x38(%rbp)
movss %xmm1, -0x30(%rbp)
xorpd %xmm0, %xmm0
xorl %eax, %eax
xorps %xmm1, %xmm1
cvtss2sd -0x38(%rbp,%rax,4), %xmm1
mulsd %xmm1, %xmm1
addsd %xmm1, %xmm0
incq %rax
cmpq $0x3, %rax
jne 0x50cd
cvtsd2ss %xmm0, %xmm0
xorpd %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jb 0x50fa
sqrtss %xmm0, %xmm0
jmp 0x50ff
callq 0x32d0
xorl %eax, %eax
movss -0x38(%rbp,%rax,4), %xmm1
divss %xmm0, %xmm1
movss %xmm1, -0xa0(%rbp,%rax,4)
incq %rax
cmpq $0x3, %rax
jne 0x5101
movsd -0xa0(%rbp), %xmm1
movss -0x98(%rbp), %xmm2
movzbl 0x6c(%rbx), %edx
leaq -0x54(%rbp), %rsi
movss 0x7ecb(%rip), %xmm0     # 0xd008
movq %r12, %rdi
callq 0x7958
movq %r12, -0x40(%rbp)
movq %r14, -0x48(%rbp)
movb $0x1, 0x45(%r15)
movl $0x3f000000, 0x40(%r15) # imm = 0x3F000000
movq %r15, %rdi
addq $0x48, %rdi
movq 0x50(%r15), %rdx
leaq 0x7f8e(%rip), %rcx      # 0xd0fa
movl $0x11, %r8d
xorl %esi, %esi
callq 0x3240
movl $0x98, %edi
callq 0x31d0
movq %rax, %r14
movq 0xa0(%rbx), %rsi
movq %rax, %rdi
xorl %edx, %edx
callq 0xabce
movb $0x0, 0x3a(%r14)
movb $0x1, %r12b
movb %r12b, 0x38(%r14)
movb %r12b, 0x44(%r14)
leaq 0x30(%rbx), %r13
movq %r13, %rdi
movq %r14, %rsi
callq 0x7554
cmpb %r12b, 0x98(%rbx)
movq -0x48(%rbp), %r12
jne 0x51ec
movl $0x38, %edi
callq 0x31d0
movq %rax, %r14
movq %rax, %rdi
movq %r15, %rsi
movq %r12, %rdx
movq %rbx, %rcx
callq 0xadfa
movq %r13, %rdi
movq %r14, %rsi
callq 0x7554
movq %r13, %rdi
movq -0x40(%rbp), %rsi
callq 0x7554
movq %r13, %rdi
movq %r15, %rsi
callq 0x7554
movq %r13, %rdi
movq %r12, %rsi
callq 0x7554
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x522c
jmp 0x522c
movq %rax, %rbx
movq %r12, %r15
jmp 0x5237
movq %rax, %rbx
movq %r14, %r15
jmp 0x5237
movq %rax, %rbx
movq %r15, %rdi
callq 0x31a0
movq %rbx, %rdi
callq 0x32b0
nop