// File: /workspace/github_cpp_makefile_star2_O1/alan0201tw[P]RayTracer/src/util.cpp
// Function: cornell_box()
std::shared_ptr<hitable> cornell_box()
{
    std::vector<std::shared_ptr<hitable>> list;
    list.reserve(50);

    std::shared_ptr<texture> red_texture = std::make_shared<constant_texture>(vec3(0.65f, 0.05f, 0.05f));
    std::shared_ptr<texture> white_texture = std::make_shared<constant_texture>(vec3(0.73f, 0.73f, 0.73f));
    std::shared_ptr<texture> green_texture = std::make_shared<constant_texture>(vec3(0.12f, 0.45f, 0.15f));
    std::shared_ptr<texture> light_texture = std::make_shared<constant_texture>(vec3(15.0f, 15.0f, 15.0f));

    auto red_material = std::make_shared<lambertian>(red_texture);
    auto white_material = std::make_shared<lambertian>(white_texture);
    auto green_material = std::make_shared<lambertian>(green_texture);
    auto light = std::make_shared<diffuse_light>(light_texture);

    list.push_back(std::make_shared<flip_normals>(std::make_shared<yz_rect>(0, 555, 0, 555, 555, green_material)));
    list.push_back(std::make_shared<yz_rect>(0, 555, 0, 555, 0, red_material));
    list.push_back(std::make_shared<xz_rect>(213, 343, 227, 332, 554, light));
    list.push_back(std::make_shared<flip_normals>(std::make_shared<xz_rect>(0, 555, 0, 555, 555, white_material)));
    list.push_back(std::make_shared<xz_rect>(0, 555, 0, 555, 0, white_material));
    list.push_back(std::make_shared<flip_normals>(std::make_shared<xy_rect>(0, 555, 0, 555, 555, white_material)));

    //list.push_back(std::make_shared<sphere>(vec3(200, 250, 250), 150.0, std::make_shared<metal>(vec3(1.0, 1.0, 1.0), 0.0)));

    // not rotated
    // list.push_back(std::make_shared<box>(vec3(130, 0, 65), vec3(295, 165, 230), white_material));
    // list.push_back(std::make_shared<box>(vec3(265, 0, 295), vec3(430, 330, 460), white_material));

    list.push_back(std::make_shared<translate>(std::make_shared<rotate_y>(std::make_shared<box>(vec3(0, 0, 0), vec3(165, 165, 165), white_material), -18.0f), vec3(130, 0, 65)));
    list.push_back(std::make_shared<translate>(std::make_shared<rotate_y>(std::make_shared<box>(vec3(0, 0, 0), vec3(165, 330, 165), white_material),  15.0f), vec3(265, 0, 295)));

    return std::make_shared<bvh_node>(list, 0.0f, 1.0f);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x128, %rsp            # imm = 0x128
movq %rdi, %r12
xorps %xmm0, %xmm0
leaq 0x80(%rsp), %rdi
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movl $0x32, %esi
callq 0x7602
movl $0x28, %edi
callq 0x63f0
movabsq $0x100000001, %rbx      # imm = 0x100000001
movq %rbx, 0x8(%rax)
leaq 0x37387(%rip), %r14     # 0x4e470
movq %r14, (%rax)
movq %rax, %rcx
addq $0x10, %rcx
leaq 0x37006(%rip), %r15     # 0x4e100
addq $0x10, %r15
movq %r15, 0x10(%rax)
movsd 0x25426(%rip), %xmm0    # 0x3c530
movsd %xmm0, 0x18(%rax)
movl $0x3d4ccccd, 0x20(%rax) # imm = 0x3D4CCCCD
movq %rcx, 0x100(%rsp)
movq %rax, 0x108(%rsp)
movl $0x28, %edi
callq 0x63f0
movq %rbx, 0x8(%rax)
movq %r14, (%rax)
movq %rax, %rcx
addq $0x10, %rcx
movq %r15, 0x10(%rax)
movsd 0x253f6(%rip), %xmm0    # 0x3c540
movsd %xmm0, 0x18(%rax)
movl $0x3f3ae148, 0x20(%rax) # imm = 0x3F3AE148
movq %rcx, 0xf0(%rsp)
movq %rax, 0xf8(%rsp)
movl $0x28, %edi
callq 0x63f0
movq %rbx, 0x8(%rax)
movq %r14, (%rax)
movq %rax, %rcx
addq $0x10, %rcx
movq %r15, 0x10(%rax)
movsd 0x253c6(%rip), %xmm0    # 0x3c550
movsd %xmm0, 0x18(%rax)
movl $0x3e19999a, 0x20(%rax) # imm = 0x3E19999A
movq %rcx, 0xe0(%rsp)
movq %rax, 0xe8(%rsp)
movl $0x28, %edi
callq 0x63f0
movq %rbx, 0x8(%rax)
movq %r14, (%rax)
movq %rax, %rcx
addq $0x10, %rcx
movq %r15, 0x10(%rax)
movsd 0x25396(%rip), %xmm0    # 0x3c560
movsd %xmm0, 0x18(%rax)
movl $0x41700000, 0x20(%rax) # imm = 0x41700000
movq %rcx, 0xd0(%rsp)
movq %rax, 0xd8(%rsp)
leaq 0x120(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x118(%rsp), %r13
leaq 0xa0(%rsp), %rdx
leaq 0x100(%rsp), %rcx
movq %r13, %rsi
callq 0x215a2
leaq 0xa8(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0xa0(%rsp), %r14
leaq 0xc0(%rsp), %rdx
leaq 0xf0(%rsp), %rcx
movq %r14, %rsi
callq 0x215a2
leaq 0xc8(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0xc0(%rsp), %rbp
leaq 0xb0(%rsp), %rdx
leaq 0xe0(%rsp), %rcx
movq %rbp, %rsi
callq 0x215a2
movq %r12, 0x110(%rsp)
leaq 0xb8(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0xb0(%rsp), %r15
leaq 0x28(%rsp), %rdx
leaq 0xd0(%rsp), %rcx
movq %r15, %rsi
callq 0x21da8
xorl %eax, %eax
leaq 0x48(%rsp), %rcx
movl %eax, (%rcx)
movl $0x22b, %edx            # imm = 0x22B
leaq 0x74(%rsp), %r8
movl %edx, (%r8)
leaq 0x68(%rsp), %r12
movl %eax, (%r12)
leaq 0x5c(%rsp), %rbx
movl %edx, (%rbx)
leaq 0x24(%rsp), %rax
movl %edx, (%rax)
leaq 0x40(%rsp), %rdi
movq $0x0, -0x8(%rdi)
subq $0x8, %rsp
leaq 0x40(%rsp), %rsi
leaq 0x17(%rsp), %rdx
movq %r12, %r9
pushq %rbp
pushq %rax
pushq %rbx
callq 0x2252c
addq $0x20, %rsp
leaq 0x18(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x10(%rsp), %rsi
leaq 0xf(%rsp), %rdx
leaq 0x38(%rsp), %rcx
callq 0x8316
movups 0x10(%rsp), %xmm0
leaq 0x28(%rsp), %rsi
movups %xmm0, (%rsi)
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rsp)
leaq 0x80(%rsp), %rdi
callq 0x7c02
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x17354
callq 0x7768
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x17363
callq 0x7768
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x17372
callq 0x7768
xorl %eax, %eax
leaq 0x38(%rsp), %rcx
movl %eax, (%rcx)
movl $0x22b, %edx            # imm = 0x22B
leaq 0x48(%rsp), %r8
movl %edx, (%r8)
leaq 0x74(%rsp), %r9
movl %eax, (%r9)
movl %edx, 0x68(%rsp)
movl %eax, 0x5c(%rsp)
leaq 0x18(%rsp), %rdi
movq $0x0, -0x8(%rdi)
subq $0x8, %rsp
leaq 0x18(%rsp), %rsi
leaq 0x2c(%rsp), %rdx
pushq %r13
pushq %rbx
pushq %r12
callq 0x2252c
addq $0x20, %rsp
movups 0x10(%rsp), %xmm0
leaq 0x28(%rsp), %rsi
movups %xmm0, (%rsi)
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rsp)
leaq 0x80(%rsp), %rdi
callq 0x7c02
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x173f2
callq 0x7768
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x17401
callq 0x7768
leaq 0x38(%rsp), %rcx
movl $0xd5, (%rcx)
leaq 0x48(%rsp), %r8
movl $0x157, (%r8)           # imm = 0x157
leaq 0x74(%rsp), %r9
movl $0xe3, (%r9)
movl $0x14c, 0x68(%rsp)      # imm = 0x14C
movl $0x22a, 0x5c(%rsp)      # imm = 0x22A
leaq 0x18(%rsp), %rdi
movq $0x0, -0x8(%rdi)
subq $0x8, %rsp
leaq 0x18(%rsp), %rsi
leaq 0x2c(%rsp), %r13
movq %r13, %rdx
pushq %r15
pushq %rbx
pushq %r12
callq 0x22662
addq $0x20, %rsp
movups 0x10(%rsp), %xmm0
leaq 0x28(%rsp), %rsi
movups %xmm0, (%rsi)
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rsp)
leaq 0x80(%rsp), %rdi
callq 0x7c02
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x17491
callq 0x7768
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x174a0
callq 0x7768
xorl %eax, %eax
leaq 0x48(%rsp), %rcx
movl %eax, (%rcx)
movl $0x22b, %edx            # imm = 0x22B
leaq 0x74(%rsp), %r8
movl %edx, (%r8)
leaq 0x68(%rsp), %r15
movl %eax, (%r15)
movl %edx, 0x5c(%rsp)
movl %edx, 0x24(%rsp)
leaq 0x40(%rsp), %rdi
movq $0x0, -0x8(%rdi)
subq $0x8, %rsp
leaq 0x40(%rsp), %rsi
leaq 0x17(%rsp), %rdx
movq %r15, %r9
pushq %r14
pushq %r13
pushq %rbx
callq 0x22798
addq $0x20, %rsp
leaq 0x18(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x10(%rsp), %rsi
leaq 0xf(%rsp), %rdx
leaq 0x38(%rsp), %rcx
callq 0x80a0
movups 0x10(%rsp), %xmm0
leaq 0x28(%rsp), %rsi
movups %xmm0, (%rsi)
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rsp)
leaq 0x80(%rsp), %rdi
callq 0x7c02
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x17544
callq 0x7768
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x17553
callq 0x7768
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x17562
callq 0x7768
xorl %eax, %eax
leaq 0x38(%rsp), %rcx
movl %eax, (%rcx)
movl $0x22b, %edx            # imm = 0x22B
leaq 0x48(%rsp), %r8
movl %edx, (%r8)
leaq 0x74(%rsp), %r9
movl %eax, (%r9)
movl %edx, 0x68(%rsp)
movl %eax, 0x5c(%rsp)
leaq 0x18(%rsp), %rdi
movq $0x0, -0x8(%rdi)
subq $0x8, %rsp
leaq 0x18(%rsp), %rsi
leaq 0x2c(%rsp), %r12
movq %r12, %rdx
pushq %r14
pushq %rbx
pushq %r15
callq 0x22798
addq $0x20, %rsp
movups 0x10(%rsp), %xmm0
leaq 0x28(%rsp), %rsi
movups %xmm0, (%rsi)
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rsp)
leaq 0x80(%rsp), %rdi
callq 0x7c02
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x175e5
callq 0x7768
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x175f4
callq 0x7768
xorl %eax, %eax
leaq 0x48(%rsp), %rcx
movl %eax, (%rcx)
movl $0x22b, %edx            # imm = 0x22B
leaq 0x74(%rsp), %r8
movl %edx, (%r8)
leaq 0x68(%rsp), %r9
movl %eax, (%r9)
movl %edx, 0x5c(%rsp)
movl %edx, 0x24(%rsp)
leaq 0x40(%rsp), %rdi
movq $0x0, -0x8(%rdi)
subq $0x8, %rsp
leaq 0x40(%rsp), %rsi
leaq 0x17(%rsp), %rdx
pushq %r14
pushq %r12
pushq %rbx
callq 0x228ce
addq $0x20, %rsp
leaq 0x18(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x10(%rsp), %rsi
leaq 0xf(%rsp), %rdx
leaq 0x38(%rsp), %rcx
callq 0x7db0
movq 0x110(%rsp), %rbx
movups 0x10(%rsp), %xmm0
leaq 0x28(%rsp), %rsi
movups %xmm0, (%rsi)
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rsp)
leaq 0x80(%rsp), %rdi
callq 0x7c02
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x1769d
callq 0x7768
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x176ac
callq 0x7768
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x176bb
callq 0x7768
xorl %eax, %eax
leaq 0x74(%rsp), %rcx
movq %rax, (%rcx)
movl $0x0, 0x8(%rcx)
movabsq $0x4325000043250000, %rdx # imm = 0x4325000043250000
leaq 0x68(%rsp), %r8
movq %rdx, (%r8)
movl $0x43250000, 0x8(%r8)   # imm = 0x43250000
leaq 0x50(%rsp), %rdi
movq %rax, -0x8(%rdi)
leaq 0x48(%rsp), %rsi
leaq 0x5c(%rsp), %rdx
leaq 0xa0(%rsp), %r9
callq 0x22a04
leaq 0x24(%rsp), %r8
movl $0xc1900000, (%r8)      # imm = 0xC1900000
leaq 0x40(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x38(%rsp), %rsi
leaq 0x5c(%rsp), %rdx
leaq 0x48(%rsp), %rcx
callq 0x22b8e
leaq 0x5c(%rsp), %r8
movq $0x43020000, (%r8)      # imm = 0x43020000
movl $0x42820000, 0x8(%r8)   # imm = 0x42820000
leaq 0x18(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x10(%rsp), %rsi
leaq 0xf(%rsp), %rdx
leaq 0x38(%rsp), %rcx
callq 0x22cea
movups 0x10(%rsp), %xmm0
leaq 0x28(%rsp), %rsi
movups %xmm0, (%rsi)
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rsp)
leaq 0x80(%rsp), %rdi
callq 0x7c02
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x17799
callq 0x7768
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x177a8
callq 0x7768
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x177b7
callq 0x7768
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x177c6
callq 0x7768
xorl %eax, %eax
leaq 0x74(%rsp), %rcx
movq %rax, (%rcx)
movl $0x0, 0x8(%rcx)
movabsq $0x43a5000043250000, %rdx # imm = 0x43A5000043250000
leaq 0x68(%rsp), %r8
movq %rdx, (%r8)
movl $0x43250000, 0x8(%r8)   # imm = 0x43250000
leaq 0x50(%rsp), %rdi
movq %rax, -0x8(%rdi)
leaq 0x48(%rsp), %rsi
leaq 0x5c(%rsp), %rdx
leaq 0xa0(%rsp), %r9
callq 0x22a04
leaq 0x24(%rsp), %r8
movl $0x41700000, (%r8)      # imm = 0x41700000
leaq 0x40(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x38(%rsp), %rsi
leaq 0x5c(%rsp), %rdx
leaq 0x48(%rsp), %rcx
callq 0x22b8e
leaq 0x5c(%rsp), %r8
movq $0x43848000, (%r8)      # imm = 0x43848000
movl $0x43938000, 0x8(%r8)   # imm = 0x43938000
leaq 0x18(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x10(%rsp), %rsi
leaq 0xf(%rsp), %rdx
leaq 0x38(%rsp), %rcx
callq 0x22cea
movups 0x10(%rsp), %xmm0
leaq 0x28(%rsp), %rsi
movups %xmm0, (%rsi)
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rsp)
leaq 0x80(%rsp), %rdi
callq 0x7c02
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x178a4
callq 0x7768
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x178b3
callq 0x7768
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x178c2
callq 0x7768
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x178d1
callq 0x7768
leaq 0x10(%rsp), %r8
movl $0x0, (%r8)
leaq 0x38(%rsp), %r9
movl $0x3f800000, (%r9)      # imm = 0x3F800000
leaq 0x30(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x28(%rsp), %rsi
leaq 0x48(%rsp), %rdx
leaq 0x80(%rsp), %rcx
callq 0x220f0
movq 0x28(%rsp), %rax
movq %rax, (%rbx)
xorl %eax, %eax
movq %rax, 0x8(%rbx)
movq 0x30(%rsp), %rcx
movq %rax, 0x30(%rsp)
movq %rcx, 0x8(%rbx)
movq 0xb8(%rsp), %rdi
testq %rdi, %rdi
je 0x1793b
callq 0x7768
movq 0xc8(%rsp), %rdi
testq %rdi, %rdi
je 0x1794d
callq 0x7768
movq 0xa8(%rsp), %rdi
testq %rdi, %rdi
je 0x1795f
callq 0x7768
movq 0x120(%rsp), %rdi
testq %rdi, %rdi
je 0x17971
callq 0x7768
movq 0xd8(%rsp), %rdi
testq %rdi, %rdi
je 0x17983
callq 0x7768
movq 0xe8(%rsp), %rdi
testq %rdi, %rdi
je 0x17995
callq 0x7768
movq 0xf8(%rsp), %rdi
testq %rdi, %rdi
je 0x179a7
callq 0x7768
movq 0x108(%rsp), %rdi
testq %rdi, %rdi
je 0x179b9
callq 0x7768
leaq 0x80(%rsp), %rdi
callq 0x7720
movq %rbx, %rax
addq $0x128, %rsp            # imm = 0x128
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x17b97
movq %rax, %rbx
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x179f2
callq 0x7768
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x17a06
callq 0x7768
jmp 0x17a06
movq %rax, %rbx
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x17a1a
callq 0x7768
jmp 0x17a1a
movq %rax, %rbx
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x17b9a
jmp 0x17b90
jmp 0x17b97
movq %rax, %rbx
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x17a44
callq 0x7768
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x17a58
callq 0x7768
jmp 0x17a58
movq %rax, %rbx
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x17a6c
callq 0x7768
jmp 0x17a6c
movq %rax, %rbx
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x17b9a
jmp 0x17b90
jmp 0x17b97
movq %rax, %rbx
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x17a96
callq 0x7768
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x17aaa
callq 0x7768
jmp 0x17aaa
movq %rax, %rbx
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x17b9a
jmp 0x17b90
jmp 0x17b97
movq %rax, %rbx
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x17ad4
callq 0x7768
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x17b9a
jmp 0x17b90
jmp 0x17b97
movq %rax, %rbx
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x17afe
callq 0x7768
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x17b12
callq 0x7768
jmp 0x17b12
movq %rax, %rbx
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x17b9a
jmp 0x17b90
jmp 0x17b97
movq %rax, %rbx
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x17b32
callq 0x7768
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x17b9a
jmp 0x17b90
jmp 0x17b97
movq %rax, %rbx
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x17b52
callq 0x7768
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x17b9a
jmp 0x17b90
jmp 0x17b97
movq %rax, %rbx
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x17b72
callq 0x7768
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x17b86
callq 0x7768
jmp 0x17b86
movq %rax, %rbx
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x17b9a
callq 0x7768
jmp 0x17b9a
movq %rax, %rbx
movq 0xb8(%rsp), %rdi
testq %rdi, %rdi
je 0x17bac
callq 0x7768
movq 0xc8(%rsp), %rdi
testq %rdi, %rdi
je 0x17bbe
callq 0x7768
movq 0xa8(%rsp), %rdi
testq %rdi, %rdi
je 0x17bd0
callq 0x7768
movq 0x120(%rsp), %rdi
testq %rdi, %rdi
je 0x17be2
callq 0x7768
movq 0xd8(%rsp), %rdi
testq %rdi, %rdi
je 0x17bf4
callq 0x7768
movq 0xe8(%rsp), %rdi
testq %rdi, %rdi
je 0x17c06
callq 0x7768
movq 0xf8(%rsp), %rdi
testq %rdi, %rdi
je 0x17c18
callq 0x7768
movq 0x108(%rsp), %rdi
testq %rdi, %rdi
je 0x17c2a
callq 0x7768
leaq 0x80(%rsp), %rdi
callq 0x7720
movq %rbx, %rdi
callq 0x66e0
movq %rax, %rbx
jmp 0x17bac
movq %rax, %rbx
jmp 0x17bbe
movq %rax, %rbx
jmp 0x17bd0
movq %rax, %rbx
jmp 0x17be2
movq %rax, %rbx
jmp 0x17bf4
movq %rax, %rbx
jmp 0x17c06
movq %rax, %rbx
jmp 0x17c18
jmp 0x17c6d
movq %rax, %rbx
jmp 0x17c2a