Skip to content

Instantly share code, notes, and snippets.

@KayEss
Last active May 1, 2021 14:24
Show Gist options
  • Save KayEss/f676126d9b38583d6d9bb1e2979706fa to your computer and use it in GitHub Desktop.
Save KayEss/f676126d9b38583d6d9bb1e2979706fa to your computer and use it in GitHub Desktop.
perf summary for some ray traced outputs

double

"spheres-white.tga" 1920x1080 225/225 (128x72)
"spheres-white.tga" 1920x1080 225/225 (128x72)
"spheres-white.tga" 1920x1080 225/225 (128x72)
"spheres-white.tga" 1920x1080 225/225 (128x72)
"spheres-white.tga" 1920x1080 225/225 (128x72)

 Performance counter stats for './build.tmp/clang-release/scenes/early/spheres-white -w 1920 -h 1080 -c 100 -s 20' (5 runs):

        236,743.39 msec task-clock                #   15.065 CPUs utilized            ( +-  0.08% )
            46,805      context-switches          #    0.198 K/sec                    ( +-  4.62% )
                48      cpu-migrations            #    0.000 K/sec                    ( +- 10.97% )
             3,537      page-faults               #    0.015 K/sec                    ( +-  0.02% )
 1,111,307,403,940      cycles                    #    4.694 GHz                      ( +-  0.08% )
 1,604,964,070,719      instructions              #    1.44  insn per cycle           ( +-  0.00% )
    97,294,518,116      branches                  #  410.970 M/sec                    ( +-  0.00% )
       425,293,113      branch-misses             #    0.44% of all branches          ( +-  1.08% )

          15.71499 +- 0.00622 seconds time elapsed  ( +-  0.04% )


real    1m18.647s
user    19m41.464s
sys     0m2.479s

double with std::pow(x, 0.5) instead of std::sqrt

"spheres-white.tga" 1920x1080 225/225 (128x72)
"spheres-white.tga" 1920x1080 225/225 (128x72)
"spheres-white.tga" 1920x1080 225/225 (128x72)
"spheres-white.tga" 1920x1080 225/225 (128x72)
"spheres-white.tga" 1920x1080 225/225 (128x72)

 Performance counter stats for './build.tmp/clang-release/scenes/early/spheres-white -w 1920 -h 1080 -c 100 -s 20' (5 runs):

        247,282.51 msec task-clock                #   15.149 CPUs utilized            ( +-  0.15% )
            40,996      context-switches          #    0.166 K/sec                    ( +-  3.62% )
                20      cpu-migrations            #    0.000 K/sec                    ( +- 10.19% )
             3,538      page-faults               #    0.014 K/sec                    ( +-  0.03% )
 1,158,597,369,659      cycles                    #    4.685 GHz                      ( +-  0.06% )
 1,675,710,800,162      instructions              #    1.45  insn per cycle           ( +-  0.00% )
   101,537,638,629      branches                  #  410.614 M/sec                    ( +-  0.00% )
       430,530,909      branch-misses             #    0.42% of all branches          ( +-  3.07% )

           16.3237 +- 0.0380 seconds time elapsed  ( +-  0.23% )


real    1m21.685s
user    20m34.398s
sys     0m2.249s

float

"spheres-white.tga" 1920x1080 225/225 (128x72)
"spheres-white.tga" 1920x1080 225/225 (128x72)
"spheres-white.tga" 1920x1080 225/225 (128x72)
"spheres-white.tga" 1920x1080 225/225 (128x72)
"spheres-white.tga" 1920x1080 225/225 (128x72)

 Performance counter stats for './build.tmp/clang-release/scenes/early/spheres-white -w 1920 -h 1080 -c 100 -s 20' (5 runs):

        269,443.50 msec task-clock                #   15.095 CPUs utilized            ( +-  0.02% )
            42,021      context-switches          #    0.156 K/sec                    ( +-  5.95% )
                24      cpu-migrations            #    0.000 K/sec                    ( +- 12.13% )
             3,538      page-faults               #    0.013 K/sec                    ( +-  0.02% )
 1,264,025,775,582      cycles                    #    4.691 GHz                      ( +-  0.03% )
 1,922,394,432,570      instructions              #    1.52  insn per cycle           ( +-  0.00% )
   130,794,362,626      branches                  #  485.424 M/sec                    ( +-  0.00% )
       418,536,777      branch-misses             #    0.32% of all branches          ( +-  1.42% )

           17.8497 +- 0.0287 seconds time elapsed  ( +-  0.16% )


real    1m29.309s
user    22m25.607s
sys     0m1.873s

long double

"spheres-white.tga" 1920x1080 225/225 (128x72)
"spheres-white.tga" 1920x1080 225/225 (128x72)
"spheres-white.tga" 1920x1080 225/225 (128x72)
"spheres-white.tga" 1920x1080 225/225 (128x72)
"spheres-white.tga" 1920x1080 225/225 (128x72)

 Performance counter stats for './build.tmp/clang-release/scenes/early/spheres-white -w 1920 -h 1080 -c 100 -s 20' (5 runs):

        627,579.12 msec task-clock                #   15.265 CPUs utilized            ( +-  0.03% )
            95,044      context-switches          #    0.151 K/sec                    ( +-  1.41% )
                68      cpu-migrations            #    0.000 K/sec                    ( +- 13.39% )
             3,553      page-faults               #    0.006 K/sec                    ( +-  0.03% )
 2,945,800,324,548      cycles                    #    4.694 GHz                      ( +-  0.03% )
 2,794,663,947,763      instructions              #    0.95  insn per cycle           ( +-  0.00% )
   223,291,426,057      branches                  #  355.798 M/sec                    ( +-  0.00% )
       534,881,092      branch-misses             #    0.24% of all branches          ( +-  0.58% )

           41.1129 +- 0.0418 seconds time elapsed  ( +-  0.10% )


real    3m25.630s
user    52m13.013s
sys     0m5.411s

Annotated perf output for hottest function compiled with float

 Percent |	Source code & Disassembly of spheres-white for cycles (282748 samples, percent: local period)
-------------------------------------------------------------------------------------------------------------
         :
         :
         :
         :            Disassembly of section .text:
         :
         :            000000000040d930 <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)>:
         :            __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag):
    0.01 :   40d930: push   %rbp
    0.03 :   40d931: push   %r15
    0.01 :   40d933: push   %r14
    0.04 :   40d935: push   %r13
    0.01 :   40d937: push   %r12
    0.03 :   40d939: push   %rbx
    0.03 :   40d93a: sub    $0x28,%rsp
    0.01 :   40d93e: movaps %xmm0,%xmm10
    0.03 :   40d942: mov    %rdx,%rbx
    0.00 :   40d945: mov    %rsi,%r14
    0.02 :   40d948: mov    %rdi,%r15
    0.01 :   40d94b: mov    %rsi,%r12
    0.03 :   40d94e: sub    %rdi,%r12
    0.01 :   40d951: movabs $0xcccccccccccccccd,%rcx
    0.02 :   40d95b: cmp    $0x3d,%r12
    0.01 :   40d95f: movss  %xmm0,0xc(%rsp)
    0.02 :   40d965: jl     40df2e <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x5fe>
    0.01 :   40d96b: mov    %r12,%rax
    0.04 :   40d96e: mul    %rcx
    0.03 :   40d971: mov    %rdx,%r13
    0.01 :   40d974: shr    $0x6,%r13
    0.02 :   40d978: add    $0x1,%r13
    0.01 :   40d97c: xor    %ebp,%ebp
    0.03 :   40d97e: movaps 0x779a(%rip),%xmm8        # 415120 <_IO_stdin_used+0x120>
    0.01 :   40d986: movss  0x76cd(%rip),%xmm9        # 41505c <_IO_stdin_used+0x5c>
    0.02 :   40d98f: xorps  %xmm11,%xmm11
    0.01 :   40d993: movaps 0x7705(%rip),%xmm12        # 4150a0 <_IO_stdin_used+0xa0>
    0.03 :   40d99b: jmp    40d9b2 <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x82>
    0.00 :   40d99d: nopl   (%rax)
    0.03 :   40d9a0: add    $0xffffffffffffffff,%r13
    0.00 :   40d9a4: add    $0x50,%rbp
    0.01 :   40d9a8: cmp    $0x1,%r13
    0.05 :   40d9ac: jle    40df1e <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x5ee>
    0.66 :   40d9b2: movsd  (%rbx),%xmm1
    0.05 :   40d9b6: movsd  0x8(%rbx),%xmm4
    0.01 :   40d9bb: movsd  0x14(%rbx),%xmm2
    0.03 :   40d9c0: movsd  0x4(%r15,%rbp,1),%xmm6
    0.66 :   40d9c7: movsd  0xc(%r15,%rbp,1),%xmm5
    0.04 :   40d9ce: movaps %xmm5,%xmm7
    0.03 :   40d9d1: shufps $0x55,%xmm5,%xmm7
    0.03 :   40d9d5: movaps %xmm6,%xmm0
    0.84 :   40d9d8: divss  %xmm7,%xmm0
    0.03 :   40d9dc: shufps $0xe1,%xmm1,%xmm1
    0.00 :   40d9e0: movaps %xmm4,%xmm3
    0.03 :   40d9e3: shufps $0x55,%xmm4,%xmm3
    0.85 :   40d9e7: divps  %xmm3,%xmm1
    0.03 :   40d9ea: movaps %xmm1,%xmm3
    0.04 :   40d9ed: shufps $0x55,%xmm1,%xmm3
    0.16 :   40d9f1: subss  %xmm0,%xmm3
    0.69 :   40d9f5: shufps $0x55,%xmm6,%xmm6
    0.11 :   40d9f9: divss  %xmm7,%xmm6
    0.00 :   40d9fd: movaps %xmm1,%xmm0
    0.28 :   40da00: subss  %xmm6,%xmm0
    0.61 :   40da04: divss  %xmm7,%xmm5
    0.02 :   40da08: movss  0x10(%rbx),%xmm6
    0.00 :   40da0d: unpcklps %xmm6,%xmm6
    0.11 :   40da10: movaps %xmm4,%xmm7
    0.56 :   40da13: movlhps %xmm6,%xmm7
    0.02 :   40da16: shufps $0x21,%xmm7,%xmm2
    0.00 :   40da1a: movss  0x1c(%rbx),%xmm6
    0.12 :   40da1f: movss  %xmm6,%xmm4
    0.57 :   40da23: shufps $0x40,%xmm4,%xmm4
    1.36 :   40da27: divps  %xmm4,%xmm2
    0.00 :   40da2a: movaps %xmm2,%xmm4
    0.35 :   40da2d: shufps $0xff,%xmm2,%xmm4
    1.43 :   40da31: subss  %xmm5,%xmm4
    0.02 :   40da35: movaps %xmm2,%xmm5
    0.01 :   40da38: unpckhpd %xmm2,%xmm5
    0.04 :   40da3c: unpcklps %xmm3,%xmm5
    0.71 :   40da3f: shufps $0x0,%xmm3,%xmm3
    0.53 :   40da43: mulps  %xmm5,%xmm3
    0.00 :   40da46: movaps %xmm0,%xmm5
    0.04 :   40da49: shufps $0xd4,%xmm2,%xmm5
    0.80 :   40da4d: shufps $0x52,%xmm2,%xmm5
    0.37 :   40da51: shufps $0x0,%xmm0,%xmm0
    0.59 :   40da55: mulps  %xmm5,%xmm0
    1.95 :   40da58: addps  %xmm3,%xmm0
    0.18 :   40da5b: movaps %xmm4,%xmm3
    0.02 :   40da5e: movlhps %xmm2,%xmm3
    0.00 :   40da61: shufps $0xe2,%xmm2,%xmm3
    0.52 :   40da65: shufps $0x0,%xmm4,%xmm4
    0.86 :   40da69: mulps  %xmm3,%xmm4
    2.72 :   40da6c: addps  %xmm0,%xmm4
    0.00 :   40da6f: movaps %xmm4,%xmm5
    2.09 :   40da72: addps  %xmm4,%xmm5
    0.18 :   40da75: addps  %xmm8,%xmm4
    0.57 :   40da79: shufps $0x1,%xmm5,%xmm4
    0.84 :   40da7d: shufps $0xe2,%xmm5,%xmm4
    0.74 :   40da81: movaps %xmm9,%xmm0
    0.10 :   40da85: movlhps %xmm5,%xmm0
    0.65 :   40da88: shufps $0xe2,%xmm5,%xmm0
    3.36 :   40da8c: mulps  %xmm4,%xmm0
    0.05 :   40da8f: movaps %xmm0,%xmm3
    0.67 :   40da92: shufps $0x55,%xmm0,%xmm3
    1.54 :   40da96: subss  %xmm3,%xmm0
    1.82 :   40da9a: ucomiss %xmm0,%xmm11
    0.69 :   40da9e: ja     40db41 <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x211>
    0.06 :   40daa4: ucomiss %xmm11,%xmm0
    0.00 :   40daa8: jb     40dab0 <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x180>
    0.06 :   40daaa: sqrtss %xmm0,%xmm0
    0.00 :   40daae: jmp    40dae3 <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x1b3>
    0.00 :   40dab0: movaps %xmm5,0x10(%rsp)
    0.00 :   40dab5: call   403540 <sqrtf@plt>
    0.00 :   40daba: movaps 0x10(%rsp),%xmm5
    0.00 :   40dabf: movaps 0x75d9(%rip),%xmm12        # 4150a0 <_IO_stdin_used+0xa0>
    0.00 :   40dac7: xorps  %xmm11,%xmm11
    0.00 :   40dacb: movss  0x7588(%rip),%xmm9        # 41505c <_IO_stdin_used+0x5c>
    0.00 :   40dad4: movaps 0x7644(%rip),%xmm8        # 415120 <_IO_stdin_used+0x120>
    0.00 :   40dadc: movss  0xc(%rsp),%xmm10
    0.00 :   40dae3: movaps %xmm5,%xmm1
    0.00 :   40dae6: xorps  %xmm12,%xmm1
    0.03 :   40daea: subss  %xmm0,%xmm1
    0.02 :   40daee: ucomiss %xmm10,%xmm1
    0.01 :   40daf2: jae    40e030 <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x700>
    0.00 :   40daf8: subss  %xmm5,%xmm0
    0.00 :   40dafc: ucomiss %xmm10,%xmm0
    0.00 :   40db00: jae    40e030 <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x700>
    0.01 :   40db06: movsd  (%rbx),%xmm1
    0.00 :   40db0a: movsd  0x8(%rbx),%xmm0
    0.00 :   40db0f: movsd  0x14(%rbx),%xmm2
    0.00 :   40db14: shufps $0xe1,%xmm1,%xmm1
    0.00 :   40db18: movaps %xmm0,%xmm3
    0.00 :   40db1b: shufps $0x55,%xmm0,%xmm3
    0.01 :   40db1f: divps  %xmm3,%xmm1
    0.00 :   40db22: movss  0x10(%rbx),%xmm3
    0.00 :   40db27: movaps %xmm0,%xmm4
    0.00 :   40db2a: movlhps %xmm3,%xmm4
    0.00 :   40db2d: shufps $0x21,%xmm4,%xmm2
    0.00 :   40db31: movss  0x1c(%rbx),%xmm3
    0.00 :   40db36: movss  %xmm3,%xmm0
    0.00 :   40db3a: shufps $0x40,%xmm0,%xmm0
    0.00 :   40db3e: divps  %xmm0,%xmm2
    0.03 :   40db41: movsd  0x18(%r15,%rbp,1),%xmm3
    0.01 :   40db48: movsd  0x20(%r15,%rbp,1),%xmm5
    0.01 :   40db4f: movaps %xmm5,%xmm6
    0.70 :   40db52: shufps $0x55,%xmm5,%xmm6
    0.00 :   40db56: movaps %xmm3,%xmm0
    0.08 :   40db59: divss  %xmm6,%xmm0
    0.01 :   40db5d: movaps %xmm1,%xmm4
    0.71 :   40db60: shufps $0x55,%xmm1,%xmm4
    0.03 :   40db64: subss  %xmm0,%xmm4
    0.01 :   40db68: shufps $0x55,%xmm3,%xmm3
    0.04 :   40db6c: divss  %xmm6,%xmm3
    0.68 :   40db70: movaps %xmm1,%xmm0
    0.13 :   40db73: subss  %xmm3,%xmm0
    0.04 :   40db77: divss  %xmm6,%xmm5
    0.00 :   40db7b: movaps %xmm2,%xmm3
    0.66 :   40db7e: shufps $0xff,%xmm2,%xmm3
    0.12 :   40db82: subss  %xmm5,%xmm3
    0.01 :   40db86: movaps %xmm2,%xmm5
    0.00 :   40db89: unpckhpd %xmm2,%xmm5
    0.63 :   40db8d: unpcklps %xmm4,%xmm5
    0.07 :   40db90: shufps $0x0,%xmm4,%xmm4
    0.02 :   40db94: mulps  %xmm5,%xmm4
    0.00 :   40db97: movaps %xmm0,%xmm5
    0.67 :   40db9a: shufps $0xd4,%xmm2,%xmm5
    0.17 :   40db9e: shufps $0x52,%xmm2,%xmm5
    0.01 :   40dba2: shufps $0x0,%xmm0,%xmm0
    0.12 :   40dba6: mulps  %xmm5,%xmm0
    1.17 :   40dba9: addps  %xmm4,%xmm0
    0.01 :   40dbac: movaps %xmm3,%xmm4
    0.00 :   40dbaf: movlhps %xmm2,%xmm4
    0.01 :   40dbb2: shufps $0xe2,%xmm2,%xmm4
    0.68 :   40dbb6: shufps $0x0,%xmm3,%xmm3
    0.20 :   40dbba: mulps  %xmm4,%xmm3
    1.75 :   40dbbd: addps  %xmm0,%xmm3
    0.01 :   40dbc0: movaps %xmm3,%xmm4
    2.30 :   40dbc3: addps  %xmm3,%xmm4
    0.12 :   40dbc6: addps  %xmm8,%xmm3
    0.43 :   40dbca: shufps $0x1,%xmm4,%xmm3
    0.58 :   40dbce: shufps $0xe2,%xmm4,%xmm3
    1.01 :   40dbd2: movaps %xmm9,%xmm0
    0.07 :   40dbd6: movlhps %xmm4,%xmm0
    0.56 :   40dbd9: shufps $0xe2,%xmm4,%xmm0
    2.80 :   40dbdd: mulps  %xmm3,%xmm0
    0.28 :   40dbe0: movaps %xmm0,%xmm3
    0.61 :   40dbe3: shufps $0x55,%xmm0,%xmm3
    1.39 :   40dbe7: subss  %xmm3,%xmm0
    1.71 :   40dbeb: ucomiss %xmm0,%xmm11
    0.70 :   40dbef: ja     40dca1 <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x371>
    0.05 :   40dbf5: ucomiss %xmm11,%xmm0
    0.00 :   40dbf9: jb     40dc10 <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x2e0>
    0.05 :   40dbfb: sqrtss %xmm0,%xmm0
    0.00 :   40dbff: jmp    40dc43 <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x313>
    0.00 :   40dc01: cs nopw 0x0(%rax,%rax,1)
    0.00 :   40dc0b: nopl   0x0(%rax,%rax,1)
    0.00 :   40dc10: movaps %xmm4,0x10(%rsp)
    0.00 :   40dc15: call   403540 <sqrtf@plt>
    0.00 :   40dc1a: movaps 0x10(%rsp),%xmm4
    0.00 :   40dc1f: movaps 0x7479(%rip),%xmm12        # 4150a0 <_IO_stdin_used+0xa0>
    0.00 :   40dc27: xorps  %xmm11,%xmm11
    0.00 :   40dc2b: movss  0x7428(%rip),%xmm9        # 41505c <_IO_stdin_used+0x5c>
    0.00 :   40dc34: movaps 0x74e4(%rip),%xmm8        # 415120 <_IO_stdin_used+0x120>
    0.00 :   40dc3c: movss  0xc(%rsp),%xmm10
    0.00 :   40dc43: movaps %xmm4,%xmm1
    0.00 :   40dc46: xorps  %xmm12,%xmm1
    0.03 :   40dc4a: subss  %xmm0,%xmm1
    0.01 :   40dc4e: ucomiss %xmm10,%xmm1
    0.00 :   40dc52: jae    40e038 <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x708>
    0.00 :   40dc58: subss  %xmm4,%xmm0
    0.00 :   40dc5c: ucomiss %xmm10,%xmm0
    0.00 :   40dc60: jae    40e038 <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x708>
    0.01 :   40dc66: movsd  (%rbx),%xmm1
    0.00 :   40dc6a: movsd  0x8(%rbx),%xmm0
    0.00 :   40dc6f: movsd  0x14(%rbx),%xmm2
    0.00 :   40dc74: shufps $0xe1,%xmm1,%xmm1
    0.00 :   40dc78: movaps %xmm0,%xmm3
    0.00 :   40dc7b: shufps $0x55,%xmm0,%xmm3
    0.00 :   40dc7f: divps  %xmm3,%xmm1
    0.00 :   40dc82: movss  0x10(%rbx),%xmm3
    0.00 :   40dc87: movaps %xmm0,%xmm4
    0.00 :   40dc8a: movlhps %xmm3,%xmm4
    0.00 :   40dc8d: shufps $0x21,%xmm4,%xmm2
    0.00 :   40dc91: movss  0x1c(%rbx),%xmm3
    0.00 :   40dc96: movss  %xmm3,%xmm0
    0.00 :   40dc9a: shufps $0x40,%xmm0,%xmm0
    0.00 :   40dc9e: divps  %xmm0,%xmm2
    0.02 :   40dca1: movsd  0x2c(%r15,%rbp,1),%xmm3
    0.01 :   40dca8: movsd  0x34(%r15,%rbp,1),%xmm5
    0.00 :   40dcaf: movaps %xmm5,%xmm6
    0.68 :   40dcb2: shufps $0x55,%xmm5,%xmm6
    0.00 :   40dcb6: movaps %xmm3,%xmm0
    0.02 :   40dcb9: divss  %xmm6,%xmm0
    0.00 :   40dcbd: movaps %xmm1,%xmm4
    0.72 :   40dcc0: shufps $0x55,%xmm1,%xmm4
    0.01 :   40dcc4: subss  %xmm0,%xmm4
    0.00 :   40dcc8: shufps $0x55,%xmm3,%xmm3
    0.02 :   40dccc: divss  %xmm6,%xmm3
    0.65 :   40dcd0: movaps %xmm1,%xmm0
    0.09 :   40dcd3: subss  %xmm3,%xmm0
    0.03 :   40dcd7: divss  %xmm6,%xmm5
    0.00 :   40dcdb: movaps %xmm2,%xmm3
    0.62 :   40dcde: shufps $0xff,%xmm2,%xmm3
    0.13 :   40dce2: subss  %xmm5,%xmm3
    0.00 :   40dce6: movaps %xmm2,%xmm5
    0.00 :   40dce9: unpckhpd %xmm2,%xmm5
    0.63 :   40dced: unpcklps %xmm4,%xmm5
    0.06 :   40dcf0: shufps $0x0,%xmm4,%xmm4
    0.02 :   40dcf4: mulps  %xmm5,%xmm4
    0.00 :   40dcf7: movaps %xmm0,%xmm5
    0.72 :   40dcfa: shufps $0xd4,%xmm2,%xmm5
    0.17 :   40dcfe: shufps $0x52,%xmm2,%xmm5
    0.01 :   40dd02: shufps $0x0,%xmm0,%xmm0
    0.15 :   40dd06: mulps  %xmm5,%xmm0
    1.34 :   40dd09: addps  %xmm4,%xmm0
    0.01 :   40dd0c: movaps %xmm3,%xmm4
    0.00 :   40dd0f: movlhps %xmm2,%xmm4
    0.02 :   40dd12: shufps $0xe2,%xmm2,%xmm4
    0.70 :   40dd16: shufps $0x0,%xmm3,%xmm3
    0.22 :   40dd1a: mulps  %xmm4,%xmm3
    2.11 :   40dd1d: addps  %xmm0,%xmm3
    0.00 :   40dd20: movaps %xmm3,%xmm4
    2.44 :   40dd23: addps  %xmm3,%xmm4
    0.14 :   40dd26: addps  %xmm8,%xmm3
    0.51 :   40dd2a: shufps $0x1,%xmm4,%xmm3
    0.71 :   40dd2e: shufps $0xe2,%xmm4,%xmm3
    1.05 :   40dd32: movaps %xmm9,%xmm0
    0.09 :   40dd36: movlhps %xmm4,%xmm0
    0.61 :   40dd39: shufps $0xe2,%xmm4,%xmm0
    3.10 :   40dd3d: mulps  %xmm3,%xmm0
    0.14 :   40dd40: movaps %xmm0,%xmm3
    0.69 :   40dd43: shufps $0x55,%xmm0,%xmm3
    1.44 :   40dd47: subss  %xmm3,%xmm0
    1.76 :   40dd4b: ucomiss %xmm0,%xmm11
    0.67 :   40dd4f: ja     40de01 <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x4d1>
    0.08 :   40dd55: ucomiss %xmm11,%xmm0
    0.00 :   40dd59: jb     40dd70 <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x440>
    0.05 :   40dd5b: sqrtss %xmm0,%xmm0
    0.00 :   40dd5f: jmp    40dda3 <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x473>
    0.00 :   40dd61: cs nopw 0x0(%rax,%rax,1)
    0.00 :   40dd6b: nopl   0x0(%rax,%rax,1)
    0.00 :   40dd70: movaps %xmm4,0x10(%rsp)
    0.00 :   40dd75: call   403540 <sqrtf@plt>
    0.00 :   40dd7a: movaps 0x10(%rsp),%xmm4
    0.00 :   40dd7f: movaps 0x7319(%rip),%xmm12        # 4150a0 <_IO_stdin_used+0xa0>
    0.00 :   40dd87: xorps  %xmm11,%xmm11
    0.00 :   40dd8b: movss  0x72c8(%rip),%xmm9        # 41505c <_IO_stdin_used+0x5c>
    0.00 :   40dd94: movaps 0x7384(%rip),%xmm8        # 415120 <_IO_stdin_used+0x120>
    0.00 :   40dd9c: movss  0xc(%rsp),%xmm10
    0.00 :   40dda3: movaps %xmm4,%xmm1
    0.00 :   40dda6: xorps  %xmm12,%xmm1
    0.02 :   40ddaa: subss  %xmm0,%xmm1
    0.01 :   40ddae: ucomiss %xmm10,%xmm1
    0.00 :   40ddb2: jae    40e044 <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x714>
    0.00 :   40ddb8: subss  %xmm4,%xmm0
    0.00 :   40ddbc: ucomiss %xmm10,%xmm0
    0.00 :   40ddc0: jae    40e044 <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x714>
    0.00 :   40ddc6: movsd  (%rbx),%xmm1
    0.00 :   40ddca: movsd  0x8(%rbx),%xmm0
    0.00 :   40ddcf: movsd  0x14(%rbx),%xmm2
    0.00 :   40ddd4: shufps $0xe1,%xmm1,%xmm1
    0.00 :   40ddd8: movaps %xmm0,%xmm3
    0.00 :   40dddb: shufps $0x55,%xmm0,%xmm3
    0.00 :   40dddf: divps  %xmm3,%xmm1
    0.00 :   40dde2: movss  0x10(%rbx),%xmm3
    0.00 :   40dde7: movaps %xmm0,%xmm4
    0.00 :   40ddea: movlhps %xmm3,%xmm4
    0.00 :   40dded: shufps $0x21,%xmm4,%xmm2
    0.00 :   40ddf1: movss  0x1c(%rbx),%xmm3
    0.00 :   40ddf6: movss  %xmm3,%xmm0
    0.00 :   40ddfa: shufps $0x40,%xmm0,%xmm0
    0.00 :   40ddfe: divps  %xmm0,%xmm2
    0.03 :   40de01: movsd  0x40(%r15,%rbp,1),%xmm3
    0.01 :   40de08: movsd  0x48(%r15,%rbp,1),%xmm4
    0.01 :   40de0f: movaps %xmm4,%xmm5
    0.68 :   40de12: shufps $0x55,%xmm4,%xmm5
    0.00 :   40de16: movaps %xmm3,%xmm6
    0.02 :   40de19: divss  %xmm5,%xmm6
    0.01 :   40de1d: movaps %xmm1,%xmm0
    0.71 :   40de20: shufps $0x55,%xmm1,%xmm0
    0.03 :   40de24: subss  %xmm6,%xmm0
    0.00 :   40de28: shufps $0x55,%xmm3,%xmm3
    0.02 :   40de2c: divss  %xmm5,%xmm3
    0.76 :   40de30: subss  %xmm3,%xmm1
    0.03 :   40de34: divss  %xmm5,%xmm4
    0.00 :   40de38: movaps %xmm2,%xmm3
    0.00 :   40de3b: shufps $0xff,%xmm2,%xmm3
    0.74 :   40de3f: subss  %xmm4,%xmm3
    0.00 :   40de43: movaps %xmm2,%xmm4
    0.00 :   40de46: unpckhpd %xmm2,%xmm4
    0.00 :   40de4a: unpcklps %xmm0,%xmm4
    0.71 :   40de4d: shufps $0x0,%xmm0,%xmm0
    0.02 :   40de51: mulps  %xmm4,%xmm0
    0.00 :   40de54: movaps %xmm1,%xmm4
    0.01 :   40de57: shufps $0xd4,%xmm2,%xmm4
    1.30 :   40de5b: shufps $0x52,%xmm2,%xmm4
    0.02 :   40de5f: shufps $0x0,%xmm1,%xmm1
    0.10 :   40de63: mulps  %xmm4,%xmm1
    0.52 :   40de66: addps  %xmm0,%xmm1
    0.50 :   40de69: movaps %xmm3,%xmm0
    0.01 :   40de6c: movlhps %xmm2,%xmm0
    0.00 :   40de6f: shufps $0xe2,%xmm2,%xmm0
    0.19 :   40de73: shufps $0x0,%xmm3,%xmm3
    1.42 :   40de77: mulps  %xmm0,%xmm3
    1.38 :   40de7a: addps  %xmm1,%xmm3
    0.00 :   40de7d: movaps %xmm3,%xmm2
    1.93 :   40de80: addps  %xmm3,%xmm2
    0.27 :   40de83: addps  %xmm8,%xmm3
    0.44 :   40de87: shufps $0x1,%xmm2,%xmm3
    0.75 :   40de8b: shufps $0xe2,%xmm2,%xmm3
    0.76 :   40de8f: movaps %xmm9,%xmm0
    0.15 :   40de93: movlhps %xmm2,%xmm0
    0.58 :   40de96: shufps $0xe2,%xmm2,%xmm0
    3.32 :   40de9a: mulps  %xmm3,%xmm0
    0.04 :   40de9d: movaps %xmm0,%xmm1
    0.69 :   40dea0: shufps $0x55,%xmm0,%xmm1
    1.53 :   40dea4: subss  %xmm1,%xmm0
    1.77 :   40dea8: ucomiss %xmm0,%xmm11
    0.70 :   40deac: ja     40d9a0 <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x70>
    0.04 :   40deb2: ucomiss %xmm11,%xmm0
    0.00 :   40deb6: jb     40dec0 <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x590>
    0.05 :   40deb8: sqrtss %xmm0,%xmm0
    0.00 :   40debc: jmp    40def3 <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x5c3>
    0.00 :   40debe: xchg   %ax,%ax
    0.00 :   40dec0: movaps %xmm2,0x10(%rsp)
    0.00 :   40dec5: call   403540 <sqrtf@plt>
    0.00 :   40deca: movaps 0x10(%rsp),%xmm2
    0.00 :   40decf: movaps 0x71c9(%rip),%xmm12        # 4150a0 <_IO_stdin_used+0xa0>
    0.00 :   40ded7: xorps  %xmm11,%xmm11
    0.00 :   40dedb: movss  0x7178(%rip),%xmm9        # 41505c <_IO_stdin_used+0x5c>
    0.00 :   40dee4: movaps 0x7234(%rip),%xmm8        # 415120 <_IO_stdin_used+0x120>
    0.00 :   40deec: movss  0xc(%rsp),%xmm10
    0.00 :   40def3: movaps %xmm2,%xmm1
    0.00 :   40def6: xorps  %xmm12,%xmm1
    0.03 :   40defa: subss  %xmm0,%xmm1
    0.01 :   40defe: ucomiss %xmm10,%xmm1
    0.00 :   40df02: jae    40df12 <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x5e2>
    0.00 :   40df04: subss  %xmm2,%xmm0
    0.00 :   40df08: ucomiss %xmm10,%xmm0
    0.00 :   40df0c: jb     40d9a0 <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x70>
    0.01 :   40df12: add    %rbp,%r15
    0.00 :   40df15: add    $0x3c,%r15
    0.00 :   40df19: jmp    40e2bd <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x98d>
    0.00 :   40df1e: sub    %rbp,%r12
    0.00 :   40df21: add    %rbp,%r15
    0.00 :   40df24: movabs $0xcccccccccccccccd,%rcx
    0.04 :   40df2e: sar    $0x2,%r12
    0.00 :   40df32: imul   %rcx,%r12
    0.00 :   40df36: cmp    $0x1,%r12
    0.00 :   40df3a: je     40e1ab <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x87b>
    0.00 :   40df40: cmp    $0x3,%r12
    0.00 :   40df44: je     40df55 <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x625>
    0.04 :   40df46: cmp    $0x2,%r12
    0.00 :   40df4a: je     40e090 <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x760>
    0.00 :   40df50: jmp    40e2ba <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x98a>
    0.00 :   40df55: movsd  (%rbx),%xmm8
    0.00 :   40df5a: movsd  0x8(%rbx),%xmm1
    0.00 :   40df5f: movss  0x14(%rbx),%xmm0
    0.00 :   40df64: movss  0x10(%rbx),%xmm3
    0.00 :   40df69: movss  0x18(%rbx),%xmm2
    0.00 :   40df6e: unpcklps %xmm3,%xmm2
    0.00 :   40df71: movss  0x1c(%rbx),%xmm9
    0.00 :   40df77: movsd  0x4(%r15),%xmm5
    0.00 :   40df7d: movsd  0xc(%r15),%xmm3
    0.00 :   40df83: movaps %xmm3,%xmm7
    0.00 :   40df86: unpcklps %xmm5,%xmm7
    0.00 :   40df89: shufps $0x11,%xmm8,%xmm5
    0.00 :   40df8e: shufps $0xe2,%xmm8,%xmm5
    0.00 :   40df93: movaps %xmm1,%xmm4
    0.00 :   40df96: shufps $0x55,%xmm1,%xmm4
    0.00 :   40df9a: movaps %xmm3,%xmm6
    0.00 :   40df9d: shufps $0x55,%xmm1,%xmm6
    0.00 :   40dfa1: shufps $0x52,%xmm1,%xmm6
    0.00 :   40dfa5: divps  %xmm6,%xmm5
    0.00 :   40dfa8: movaps %xmm5,%xmm6
    0.00 :   40dfab: shufps $0x55,%xmm5,%xmm6
    0.00 :   40dfaf: subss  %xmm6,%xmm5
    0.00 :   40dfb3: unpcklps %xmm8,%xmm1
    0.00 :   40dfb7: divps  %xmm4,%xmm1
    0.00 :   40dfba: shufps $0x55,%xmm3,%xmm3
    0.00 :   40dfbe: divps  %xmm3,%xmm7
    0.00 :   40dfc1: subps  %xmm7,%xmm1
    0.00 :   40dfc4: divss  %xmm9,%xmm0
    0.00 :   40dfc9: mulss  %xmm5,%xmm0
    0.00 :   40dfcd: shufps $0x0,%xmm9,%xmm9
    0.00 :   40dfd2: divps  %xmm9,%xmm2
    0.00 :   40dfd6: mulps  %xmm1,%xmm2
    0.00 :   40dfd9: movaps %xmm2,%xmm3
    0.00 :   40dfdc: shufps $0x55,%xmm2,%xmm3
    0.00 :   40dfe0: addss  %xmm0,%xmm3
    0.00 :   40dfe4: addss  %xmm2,%xmm3
    0.00 :   40dfe8: mulps  %xmm1,%xmm1
    0.00 :   40dfeb: mulss  %xmm5,%xmm5
    0.00 :   40dfef: movaps %xmm1,%xmm0
    0.00 :   40dff2: shufps $0x55,%xmm1,%xmm0
    0.00 :   40dff6: addss  %xmm5,%xmm0
    0.00 :   40dffa: addss  %xmm1,%xmm0
    0.00 :   40dffe: addss  0x704e(%rip),%xmm0        # 415054 <_IO_stdin_used+0x54>
    0.00 :   40e006: addss  %xmm3,%xmm3
    0.00 :   40e00a: movaps %xmm3,%xmm1
    0.00 :   40e00d: mulss  %xmm3,%xmm1
    0.00 :   40e011: mulss  0x703f(%rip),%xmm0        # 415058 <_IO_stdin_used+0x58>
    0.00 :   40e019: addss  %xmm1,%xmm0
    0.00 :   40e01d: xorps  %xmm1,%xmm1
    0.00 :   40e020: ucomiss %xmm0,%xmm1
    0.00 :   40e023: ja     40e08c <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x75c>
    0.00 :   40e025: ucomiss %xmm1,%xmm0
    0.00 :   40e028: jb     40e050 <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x720>
    0.00 :   40e02a: sqrtss %xmm0,%xmm0
    0.00 :   40e02e: jmp    40e066 <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x736>
    0.00 :   40e030: add    %rbp,%r15
    0.00 :   40e033: jmp    40e2bd <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x98d>
    0.00 :   40e038: add    %rbp,%r15
    0.00 :   40e03b: add    $0x14,%r15
    0.00 :   40e03f: jmp    40e2bd <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x98d>
    0.00 :   40e044: add    %rbp,%r15
    0.00 :   40e047: add    $0x28,%r15
    0.00 :   40e04b: jmp    40e2bd <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x98d>
    0.00 :   40e050: movaps %xmm3,0x10(%rsp)
    0.00 :   40e055: call   403540 <sqrtf@plt>
    0.00 :   40e05a: movaps 0x10(%rsp),%xmm3
    0.00 :   40e05f: movss  0xc(%rsp),%xmm10
    0.00 :   40e066: movaps 0x7033(%rip),%xmm1        # 4150a0 <_IO_stdin_used+0xa0>
    0.00 :   40e06d: xorps  %xmm3,%xmm1
    0.00 :   40e070: subss  %xmm0,%xmm1
    0.00 :   40e074: ucomiss %xmm10,%xmm1
    0.00 :   40e078: jae    40e2bd <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x98d>
    0.00 :   40e07e: subss  %xmm3,%xmm0
    0.00 :   40e082: ucomiss %xmm10,%xmm0
    0.00 :   40e086: jae    40e2bd <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x98d>
    0.00 :   40e08c: add    $0x14,%r15
    0.00 :   40e090: movsd  (%rbx),%xmm8
    0.00 :   40e095: movsd  0x8(%rbx),%xmm1
    0.00 :   40e09a: movss  0x14(%rbx),%xmm0
    0.00 :   40e09f: movss  0x10(%rbx),%xmm3
    0.00 :   40e0a4: movss  0x18(%rbx),%xmm2
    0.00 :   40e0a9: unpcklps %xmm3,%xmm2
    0.00 :   40e0ac: movss  0x1c(%rbx),%xmm9
    0.00 :   40e0b2: movsd  0x4(%r15),%xmm5
    0.00 :   40e0b8: movsd  0xc(%r15),%xmm3
    0.00 :   40e0be: movaps %xmm3,%xmm7
    0.00 :   40e0c1: unpcklps %xmm5,%xmm7
    0.00 :   40e0c4: shufps $0x11,%xmm8,%xmm5
    0.00 :   40e0c9: shufps $0xe2,%xmm8,%xmm5
    0.00 :   40e0ce: movaps %xmm1,%xmm4
    0.00 :   40e0d1: shufps $0x55,%xmm1,%xmm4
    0.00 :   40e0d5: movaps %xmm3,%xmm6
    0.00 :   40e0d8: shufps $0x55,%xmm1,%xmm6
    0.00 :   40e0dc: shufps $0x52,%xmm1,%xmm6
    0.00 :   40e0e0: divps  %xmm6,%xmm5
    0.00 :   40e0e3: movaps %xmm5,%xmm6
    0.00 :   40e0e6: shufps $0x55,%xmm5,%xmm6
    0.00 :   40e0ea: subss  %xmm6,%xmm5
    0.00 :   40e0ee: unpcklps %xmm8,%xmm1
    0.00 :   40e0f2: divps  %xmm4,%xmm1
    0.00 :   40e0f5: shufps $0x55,%xmm3,%xmm3
    0.00 :   40e0f9: divps  %xmm3,%xmm7
    0.00 :   40e0fc: subps  %xmm7,%xmm1
    0.00 :   40e0ff: divss  %xmm9,%xmm0
    0.00 :   40e104: mulss  %xmm5,%xmm0
    0.00 :   40e108: shufps $0x0,%xmm9,%xmm9
    0.00 :   40e10d: divps  %xmm9,%xmm2
    0.00 :   40e111: mulps  %xmm1,%xmm2
    0.00 :   40e114: movaps %xmm2,%xmm3
    0.00 :   40e117: shufps $0x55,%xmm2,%xmm3
    0.00 :   40e11b: addss  %xmm0,%xmm3
    0.00 :   40e11f: addss  %xmm2,%xmm3
    0.00 :   40e123: mulps  %xmm1,%xmm1
    0.00 :   40e126: mulss  %xmm5,%xmm5
    0.00 :   40e12a: movaps %xmm1,%xmm0
    0.00 :   40e12d: shufps $0x55,%xmm1,%xmm0
    0.00 :   40e131: addss  %xmm5,%xmm0
    0.00 :   40e135: addss  %xmm1,%xmm0
    0.00 :   40e139: addss  0x6f13(%rip),%xmm0        # 415054 <_IO_stdin_used+0x54>
    0.00 :   40e141: addss  %xmm3,%xmm3
    0.00 :   40e145: movaps %xmm3,%xmm1
    0.00 :   40e148: mulss  %xmm3,%xmm1
    0.00 :   40e14c: mulss  0x6f04(%rip),%xmm0        # 415058 <_IO_stdin_used+0x58>
    0.00 :   40e154: addss  %xmm1,%xmm0
    0.00 :   40e158: xorps  %xmm1,%xmm1
    0.00 :   40e15b: ucomiss %xmm0,%xmm1
    0.00 :   40e15e: ja     40e1a7 <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x877>
    0.00 :   40e160: ucomiss %xmm1,%xmm0
    0.00 :   40e163: jb     40e16b <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x83b>
    0.00 :   40e165: sqrtss %xmm0,%xmm0
    0.00 :   40e169: jmp    40e181 <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x851>
    0.00 :   40e16b: movaps %xmm3,0x10(%rsp)
    0.00 :   40e170: call   403540 <sqrtf@plt>
    0.00 :   40e175: movaps 0x10(%rsp),%xmm3
    0.00 :   40e17a: movss  0xc(%rsp),%xmm10
    0.00 :   40e181: movaps 0x6f18(%rip),%xmm1        # 4150a0 <_IO_stdin_used+0xa0>
    0.00 :   40e188: xorps  %xmm3,%xmm1
    0.00 :   40e18b: subss  %xmm0,%xmm1
    0.00 :   40e18f: ucomiss %xmm10,%xmm1
    0.00 :   40e193: jae    40e2bd <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x98d>
    0.00 :   40e199: subss  %xmm3,%xmm0
    0.00 :   40e19d: ucomiss %xmm10,%xmm0
    0.00 :   40e1a1: jae    40e2bd <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x98d>
    0.00 :   40e1a7: add    $0x14,%r15
    0.00 :   40e1ab: movsd  (%rbx),%xmm8
    0.00 :   40e1b0: movsd  0x8(%rbx),%xmm1
    0.00 :   40e1b5: movss  0x14(%rbx),%xmm0
    0.00 :   40e1ba: movss  0x10(%rbx),%xmm3
    0.00 :   40e1bf: movss  0x18(%rbx),%xmm2
    0.00 :   40e1c4: unpcklps %xmm3,%xmm2
    0.00 :   40e1c7: movss  0x1c(%rbx),%xmm9
    0.00 :   40e1cd: movsd  0x4(%r15),%xmm5
    0.00 :   40e1d3: movsd  0xc(%r15),%xmm3
    0.00 :   40e1d9: movaps %xmm3,%xmm7
    0.00 :   40e1dc: unpcklps %xmm5,%xmm7
    0.00 :   40e1df: shufps $0x11,%xmm8,%xmm5
    0.00 :   40e1e4: shufps $0xe2,%xmm8,%xmm5
    0.00 :   40e1e9: movaps %xmm1,%xmm4
    0.00 :   40e1ec: shufps $0x55,%xmm1,%xmm4
    0.00 :   40e1f0: movaps %xmm3,%xmm6
    0.00 :   40e1f3: shufps $0x55,%xmm1,%xmm6
    0.00 :   40e1f7: shufps $0x52,%xmm1,%xmm6
    0.00 :   40e1fb: divps  %xmm6,%xmm5
    0.00 :   40e1fe: movaps %xmm5,%xmm6
    0.00 :   40e201: shufps $0x55,%xmm5,%xmm6
    0.00 :   40e205: subss  %xmm6,%xmm5
    0.00 :   40e209: unpcklps %xmm8,%xmm1
    0.00 :   40e20d: divps  %xmm4,%xmm1
    0.00 :   40e210: shufps $0x55,%xmm3,%xmm3
    0.00 :   40e214: divps  %xmm3,%xmm7
    0.00 :   40e217: subps  %xmm7,%xmm1
    0.00 :   40e21a: divss  %xmm9,%xmm0
    0.00 :   40e21f: mulss  %xmm5,%xmm0
    0.00 :   40e223: shufps $0x0,%xmm9,%xmm9
    0.00 :   40e228: divps  %xmm9,%xmm2
    0.00 :   40e22c: mulps  %xmm1,%xmm2
    0.00 :   40e22f: movaps %xmm2,%xmm3
    0.00 :   40e232: shufps $0x55,%xmm2,%xmm3
    0.00 :   40e236: addss  %xmm0,%xmm3
    0.00 :   40e23a: addss  %xmm2,%xmm3
    0.00 :   40e23e: mulps  %xmm1,%xmm1
    0.00 :   40e241: mulss  %xmm5,%xmm5
    0.00 :   40e245: movaps %xmm1,%xmm0
    0.00 :   40e248: shufps $0x55,%xmm1,%xmm0
    0.00 :   40e24c: addss  %xmm5,%xmm0
    0.00 :   40e250: addss  %xmm1,%xmm0
    0.00 :   40e254: addss  0x6df8(%rip),%xmm0        # 415054 <_IO_stdin_used+0x54>
    0.00 :   40e25c: addss  %xmm3,%xmm3
    0.00 :   40e260: movaps %xmm3,%xmm1
    0.00 :   40e263: mulss  %xmm3,%xmm1
    0.00 :   40e267: mulss  0x6de9(%rip),%xmm0        # 415058 <_IO_stdin_used+0x58>
    0.00 :   40e26f: addss  %xmm1,%xmm0
    0.00 :   40e273: xorps  %xmm1,%xmm1
    0.00 :   40e276: ucomiss %xmm0,%xmm1
    0.00 :   40e279: ja     40e2ba <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x98a>
    0.00 :   40e27b: ucomiss %xmm1,%xmm0
    0.00 :   40e27e: jb     40e286 <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x956>
    0.00 :   40e280: sqrtss %xmm0,%xmm0
    0.00 :   40e284: jmp    40e29c <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x96c>
    0.00 :   40e286: movaps %xmm3,0x10(%rsp)
    0.00 :   40e28b: call   403540 <sqrtf@plt>
    0.00 :   40e290: movaps 0x10(%rsp),%xmm3
    0.00 :   40e295: movss  0xc(%rsp),%xmm10
    0.00 :   40e29c: movaps 0x6dfd(%rip),%xmm1        # 4150a0 <_IO_stdin_used+0xa0>
    0.00 :   40e2a3: xorps  %xmm3,%xmm1
    0.00 :   40e2a6: subss  %xmm0,%xmm1
    0.00 :   40e2aa: ucomiss %xmm10,%xmm1
    0.00 :   40e2ae: jae    40e2bd <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x98d>
    0.00 :   40e2b0: subss  %xmm3,%xmm0
    0.00 :   40e2b4: ucomiss %xmm10,%xmm0
    0.00 :   40e2b8: jae    40e2bd <__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > > std::__find_if<__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}> >(__gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__normal_iterator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const*, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >, __gnu_cxx::__ops::_Iter_pred<animray::collection<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::vector<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>, std::allocator<animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> > > >::occludes<animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float>(animray::ray<float, animray::point3d<float>, animray::unit_vector<float> > const&, float) const::{lambda(animray::unit_sphere<animray::point3d<float>, animray::ray<float, animray::point3d<float>, animray::unit_vector<float> >, float> const&)#1}>, std::random_access_iterator_tag)+0x98d>
    0.00 :   40e2ba: mov    %r14,%r15
    0.00 :   40e2bd: mov    %r15,%rax
    0.05 :   40e2c0: add    $0x28,%rsp
    0.01 :   40e2c4: pop    %rbx
    0.01 :   40e2c5: pop    %r12
    0.00 :   40e2c7: pop    %r13
    0.05 :   40e2c9: pop    %r14
    0.00 :   40e2cb: pop    %r15
    0.01 :   40e2cd: pop    %rbp
    0.01 :   40e2ce: ret
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment