// File: 2TallTim[P]modern-raytracing/./aabb.hpp
// Function: aabb::surrounding_box(aabb const&, aabb const&)
static aabb surrounding_box(const aabb& box0, const aabb& box1){
        vec3 small( fmin(box0.min().x(), box1.min().x()),
                    fmin(box0.min().y(), box1.min().y()),
                    fmin(box0.min().z(), box1.min().z()));

        vec3 big( fmax(box0.max().x(), box1.max().x()),
                fmax(box0.max().y(), box1.max().y()),
                fmax(box0.max().z(), box1.max().z()));

        return aabb(small,big);
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1c0, %rsp            # imm = 0x1C0
movq %rdi, -0x170(%rbp)
movq %rdi, -0x168(%rbp)
movq %rsi, -0x8(%rbp)
movq %rdx, -0x10(%rbp)
movq -0x8(%rbp), %rsi
leaq -0x40(%rbp), %rdi
callq 0x4f00
leaq -0x40(%rbp), %rdi
callq 0x3f50
movsd %xmm0, -0x1c0(%rbp)
movq -0x10(%rbp), %rsi
leaq -0x58(%rbp), %rdi
callq 0x4f00
leaq -0x58(%rbp), %rdi
callq 0x3f50
movsd -0x1c0(%rbp), %xmm3
movaps %xmm0, %xmm2
movaps %xmm2, %xmm4
movaps %xmm3, %xmm0
cmpunordsd %xmm0, %xmm0
movaps %xmm0, %xmm1
pand %xmm4, %xmm1
minsd %xmm3, %xmm2
pandn %xmm2, %xmm0
por %xmm1, %xmm0
movsd %xmm0, -0x1a0(%rbp)
movq -0x8(%rbp), %rsi
leaq -0x70(%rbp), %rdi
callq 0x4f00
leaq -0x70(%rbp), %rdi
callq 0x3f70
movsd %xmm0, -0x1b8(%rbp)
movq -0x10(%rbp), %rsi
leaq -0x88(%rbp), %rdi
callq 0x4f00
leaq -0x88(%rbp), %rdi
callq 0x3f70
movsd -0x1b8(%rbp), %xmm3
movaps %xmm0, %xmm2
movaps %xmm2, %xmm4
movaps %xmm3, %xmm0
cmpunordsd %xmm0, %xmm0
movaps %xmm0, %xmm1
pand %xmm4, %xmm1
minsd %xmm3, %xmm2
pandn %xmm2, %xmm0
por %xmm1, %xmm0
movsd %xmm0, -0x1a8(%rbp)
movq -0x8(%rbp), %rsi
leaq -0xa0(%rbp), %rdi
callq 0x4f00
leaq -0xa0(%rbp), %rdi
callq 0x3f90
movsd %xmm0, -0x1b0(%rbp)
movq -0x10(%rbp), %rsi
leaq -0xb8(%rbp), %rdi
callq 0x4f00
leaq -0xb8(%rbp), %rdi
callq 0x3f90
movsd -0x1b0(%rbp), %xmm5
movsd -0x1a8(%rbp), %xmm1
movaps %xmm0, %xmm4
movsd -0x1a0(%rbp), %xmm0
movaps %xmm4, %xmm6
movaps %xmm5, %xmm2
cmpunordsd %xmm2, %xmm2
movaps %xmm2, %xmm3
pand %xmm6, %xmm3
minsd %xmm5, %xmm4
pandn %xmm4, %xmm2
por %xmm3, %xmm2
leaq -0x28(%rbp), %rdi
callq 0x3e10
movq -0x8(%rbp), %rsi
leaq -0xe8(%rbp), %rdi
callq 0x4f30
leaq -0xe8(%rbp), %rdi
callq 0x3f50
movsd %xmm0, -0x198(%rbp)
movq -0x10(%rbp), %rsi
leaq -0x100(%rbp), %rdi
callq 0x4f30
leaq -0x100(%rbp), %rdi
callq 0x3f50
movsd -0x198(%rbp), %xmm3
movaps %xmm0, %xmm2
movaps %xmm2, %xmm4
movaps %xmm3, %xmm0
cmpunordsd %xmm0, %xmm0
movaps %xmm0, %xmm1
pand %xmm4, %xmm1
maxsd %xmm3, %xmm2
pandn %xmm2, %xmm0
por %xmm1, %xmm0
movsd %xmm0, -0x178(%rbp)
movq -0x8(%rbp), %rsi
leaq -0x118(%rbp), %rdi
callq 0x4f30
leaq -0x118(%rbp), %rdi
callq 0x3f70
movsd %xmm0, -0x190(%rbp)
movq -0x10(%rbp), %rsi
leaq -0x130(%rbp), %rdi
callq 0x4f30
leaq -0x130(%rbp), %rdi
callq 0x3f70
movsd -0x190(%rbp), %xmm3
movaps %xmm0, %xmm2
movaps %xmm2, %xmm4
movaps %xmm3, %xmm0
cmpunordsd %xmm0, %xmm0
movaps %xmm0, %xmm1
pand %xmm4, %xmm1
maxsd %xmm3, %xmm2
pandn %xmm2, %xmm0
por %xmm1, %xmm0
movsd %xmm0, -0x180(%rbp)
movq -0x8(%rbp), %rsi
leaq -0x148(%rbp), %rdi
callq 0x4f30
leaq -0x148(%rbp), %rdi
callq 0x3f90
movsd %xmm0, -0x188(%rbp)
movq -0x10(%rbp), %rsi
leaq -0x160(%rbp), %rdi
callq 0x4f30
leaq -0x160(%rbp), %rdi
callq 0x3f90
movsd -0x188(%rbp), %xmm5
movsd -0x180(%rbp), %xmm1
movaps %xmm0, %xmm4
movsd -0x178(%rbp), %xmm0
movaps %xmm4, %xmm6
movaps %xmm5, %xmm2
cmpunordsd %xmm2, %xmm2
movaps %xmm2, %xmm3
pand %xmm6, %xmm3
maxsd %xmm5, %xmm4
pandn %xmm4, %xmm2
por %xmm3, %xmm2
leaq -0xd0(%rbp), %rdi
callq 0x3e10
movq -0x170(%rbp), %rdi
leaq -0x28(%rbp), %rsi
leaq -0xd0(%rbp), %rdx
callq 0x3f00
movq -0x168(%rbp), %rax
addq $0x1c0, %rsp            # imm = 0x1C0
popq %rbp
retq
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)