// File: /workspace/github_cpp_makefile_star2_O2/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 $0x78, %rsp
movq %rdi, %rbx
andq $0x0, -0x44(%rbp)
andl $0x0, -0x3c(%rbp)
movabsq $0x3f19999a3f99999a, %rax # imm = 0x3F19999A3F99999A
leaq -0x50(%rbp), %rsi
andq $0x0, (%rsi)
leaq -0x5c(%rbp), %rdx
andl $0x0, 0x8(%rsi)
movq %rax, (%rdx)
movl $0x3f800000, 0x8(%rdx)  # imm = 0x3F800000
movabsq $0x3f80000000000000, %rax # imm = 0x3F80000000000000
leaq -0x68(%rbp), %rcx
movq %rax, (%rcx)
andl $0x0, 0x8(%rcx)
leaq -0x98(%rbp), %r14
movq %r14, %rdi
callq 0x5f0c
movups (%r14), %xmm0
movups 0x10(%r14), %xmm1
movups 0x20(%r14), %xmm2
movups %xmm2, 0x20(%rbx)
movups %xmm1, 0x10(%rbx)
movups %xmm0, (%rbx)
movq 0xb3b1(%rip), %rdi      # 0xffc8
leaq 0x64b2(%rip), %rsi      # 0xb0d0
callq 0x31a0
movzbl 0x6c(%rbx), %esi
movq %rax, %rdi
callq 0x3230
movq %rax, %rdi
callq 0x30d0
movl $0x98, %edi
callq 0x31b0
movq %rax, %r14
movq 0xa0(%rbx), %rsi
pushq $0x1
popq %rdx
movq %rax, %rdi
callq 0x8b4a
movl $0x98, %edi
callq 0x31b0
movq %rax, %r15
pushq $0x1
popq %rdx
movq %rax, %rdi
movq %r14, %rsi
callq 0x8ca0
movl $0xf8, %edi
callq 0x31b0
movq %rax, %r12
leaq -0x5c(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x530c
leaq -0x98(%rbp), %rdi
movlps %xmm0, (%rdi)
movss %xmm1, 0x8(%rdi)
callq 0x5372
movaps %xmm0, %xmm2
movaps %xmm1, %xmm3
movzbl 0x6c(%rbx), %edx
leaq -0x44(%rbp), %rsi
movss 0x6353(%rip), %xmm0     # 0xb008
movq %r12, %rdi
movaps %xmm2, %xmm1
movaps %xmm3, %xmm2
callq 0x698c
movq %r12, -0x30(%rbp)
movq %r15, -0x38(%rbp)
movb $0x1, 0x45(%r14)
movl $0x3f000000, 0x40(%r14) # imm = 0x3F000000
movq %r14, %rdi
addq $0x48, %rdi
leaq 0x6414(%rip), %rsi      # 0xb0fa
callq 0x3280
movl $0x98, %edi
callq 0x31b0
movq %rax, %r12
movq 0xa0(%rbx), %rsi
movq %rax, %rdi
xorl %edx, %edx
callq 0x8ca0
movb $0x0, 0x3a(%r12)
movb $0x1, %r15b
movb %r15b, 0x38(%r12)
movb %r15b, 0x44(%r12)
leaq 0x30(%rbx), %r13
movq %r13, %rdi
movq %r12, %rsi
callq 0x664c
cmpb %r15b, 0x98(%rbx)
movq -0x38(%rbp), %r15
jne 0x4d5f
pushq $0x38
popq %rdi
callq 0x31b0
movq %rax, %r12
movq %rax, %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %rbx, %rcx
callq 0x8dce
movq %r13, %rdi
movq %r12, %rsi
callq 0x664c
movq %r13, %rdi
movq -0x30(%rbp), %rsi
callq 0x664c
movq %r13, %rdi
movq %r14, %rsi
callq 0x664c
movq %r13, %rdi
movq %r15, %rsi
callq 0x664c
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x4d92
movq %rax, %rbx
movq %r12, %rdi
jmp 0x4db0
movq %rax, %rbx
movq %r15, %rdi
jmp 0x4db0
movq %rax, %rbx
movq %r14, %rdi
jmp 0x4db0
movq %r12, %rdi
movq %rax, %rbx
callq 0x3190
movq %rbx, %rdi
callq 0x3250
nop