// File: /workspace/github_cpp_makefile_star2_O3/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 $0x138, %rsp            # imm = 0x138
movq %rdi, %r12
xorps %xmm0, %xmm0
leaq 0x90(%rsp), %rdi
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movl $0x32, %esi
callq 0x7616
movl $0x28, %edi
callq 0x63f0
movabsq $0x100000001, %rbx      # imm = 0x100000001
movq %rbx, 0x8(%rax)
leaq 0x37c09(%rip), %r14     # 0x4e458
movq %r14, (%rax)
movq %rax, %rcx
addq $0x10, %rcx
leaq 0x37888(%rip), %r15     # 0x4e0e8
addq $0x10, %r15
movq %r15, 0x10(%rax)
movsd 0x25db0(%rip), %xmm0    # 0x3c620
movsd %xmm0, 0x18(%rax)
movl $0x3d4ccccd, 0x20(%rax) # imm = 0x3D4CCCCD
movq %rcx, 0x110(%rsp)
movq %rax, 0x118(%rsp)
movl $0x28, %edi
callq 0x63f0
movq %rbx, 0x8(%rax)
movq %r14, (%rax)
movq %rax, %rcx
addq $0x10, %rcx
movq %r15, 0x10(%rax)
movsd 0x25d80(%rip), %xmm0    # 0x3c630
movsd %xmm0, 0x18(%rax)
movl $0x3f3ae148, 0x20(%rax) # imm = 0x3F3AE148
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 0x25d50(%rip), %xmm0    # 0x3c640
movsd %xmm0, 0x18(%rax)
movl $0x3e19999a, 0x20(%rax) # imm = 0x3E19999A
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 0x25d20(%rip), %xmm0    # 0x3c650
movsd %xmm0, 0x18(%rax)
movl $0x41700000, 0x20(%rax) # imm = 0x41700000
movq %rcx, 0xe0(%rsp)
movq %rax, 0xe8(%rsp)
leaq 0x130(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x128(%rsp), %r13
leaq 0xb0(%rsp), %rdx
leaq 0x110(%rsp), %rcx
movq %r13, %rsi
callq 0x20b4e
leaq 0xb8(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0xb0(%rsp), %r14
leaq 0xd0(%rsp), %rdx
leaq 0x100(%rsp), %rcx
movq %r14, %rsi
callq 0x20b4e
leaq 0xd8(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0xd0(%rsp), %rbp
leaq 0xc0(%rsp), %rdx
leaq 0xf0(%rsp), %rcx
movq %rbp, %rsi
callq 0x20b4e
movq %r12, 0x120(%rsp)
leaq 0xc8(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0xc0(%rsp), %r15
leaq 0x40(%rsp), %rdx
leaq 0xe0(%rsp), %rcx
movq %r15, %rsi
callq 0x21348
xorl %eax, %eax
leaq 0x50(%rsp), %rcx
movl %eax, (%rcx)
movl $0x22b, %edx            # imm = 0x22B
leaq 0x80(%rsp), %r8
movl %edx, (%r8)
leaq 0x70(%rsp), %r12
movl %eax, (%r12)
leaq 0x60(%rsp), %rbx
movl %edx, (%rbx)
leaq 0x2c(%rsp), %rax
movl %edx, (%rax)
leaq 0x38(%rsp), %rdi
movq $0x0, -0x8(%rdi)
subq $0x8, %rsp
leaq 0x38(%rsp), %rsi
leaq 0x17(%rsp), %rdx
movq %r12, %r9
pushq %rbp
pushq %rax
pushq %rbx
callq 0x21afe
addq $0x20, %rsp
leaq 0x18(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x10(%rsp), %rsi
leaq 0xf(%rsp), %rdx
leaq 0x30(%rsp), %rcx
callq 0x8306
movaps 0x10(%rsp), %xmm0
leaq 0x40(%rsp), %rsi
movaps %xmm0, (%rsi)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
leaq 0x90(%rsp), %rdi
callq 0x7c1c
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
je 0x16abd
callq 0x7774
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x16acc
callq 0x7774
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x16adb
callq 0x7774
xorl %eax, %eax
leaq 0x30(%rsp), %rcx
movl %eax, (%rcx)
movl $0x22b, %edx            # imm = 0x22B
leaq 0x50(%rsp), %r8
movl %edx, (%r8)
leaq 0x80(%rsp), %r9
movl %eax, (%r9)
movl %edx, 0x70(%rsp)
movl %eax, 0x60(%rsp)
leaq 0x18(%rsp), %rdi
movq $0x0, -0x8(%rdi)
subq $0x8, %rsp
leaq 0x18(%rsp), %rsi
leaq 0x34(%rsp), %rdx
pushq %r13
pushq %rbx
pushq %r12
callq 0x21afe
addq $0x20, %rsp
movaps 0x10(%rsp), %xmm0
leaq 0x40(%rsp), %rsi
movaps %xmm0, (%rsi)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
leaq 0x90(%rsp), %rdi
callq 0x7c1c
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
je 0x16b5e
callq 0x7774
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x16b6d
callq 0x7774
leaq 0x30(%rsp), %rcx
movl $0xd5, (%rcx)
leaq 0x50(%rsp), %r8
movl $0x157, (%r8)           # imm = 0x157
leaq 0x80(%rsp), %r9
movl $0xe3, (%r9)
movl $0x14c, 0x70(%rsp)      # imm = 0x14C
movl $0x22a, 0x60(%rsp)      # imm = 0x22A
leaq 0x18(%rsp), %rdi
movq $0x0, -0x8(%rdi)
subq $0x8, %rsp
leaq 0x18(%rsp), %rsi
leaq 0x34(%rsp), %r13
movq %r13, %rdx
pushq %r15
pushq %rbx
pushq %r12
callq 0x21c4c
addq $0x20, %rsp
movaps 0x10(%rsp), %xmm0
leaq 0x40(%rsp), %rsi
movaps %xmm0, (%rsi)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
leaq 0x90(%rsp), %rdi
callq 0x7c1c
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
je 0x16c00
callq 0x7774
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x16c0f
callq 0x7774
xorl %eax, %eax
leaq 0x50(%rsp), %rcx
movl %eax, (%rcx)
movl $0x22b, %edx            # imm = 0x22B
leaq 0x80(%rsp), %r8
movl %edx, (%r8)
leaq 0x70(%rsp), %r15
movl %eax, (%r15)
movl %edx, 0x60(%rsp)
movl %edx, 0x2c(%rsp)
leaq 0x38(%rsp), %rdi
movq $0x0, -0x8(%rdi)
subq $0x8, %rsp
leaq 0x38(%rsp), %rsi
leaq 0x17(%rsp), %rdx
movq %r15, %r9
pushq %r14
pushq %r13
pushq %rbx
callq 0x21d9a
addq $0x20, %rsp
leaq 0x18(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x10(%rsp), %rsi
leaq 0xf(%rsp), %rdx
leaq 0x30(%rsp), %rcx
callq 0x8098
movaps 0x10(%rsp), %xmm0
leaq 0x40(%rsp), %rsi
movaps %xmm0, (%rsi)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
leaq 0x90(%rsp), %rdi
callq 0x7c1c
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
je 0x16cb6
callq 0x7774
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x16cc5
callq 0x7774
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x16cd4
callq 0x7774
xorl %eax, %eax
leaq 0x30(%rsp), %rcx
movl %eax, (%rcx)
movl $0x22b, %edx            # imm = 0x22B
leaq 0x50(%rsp), %r8
movl %edx, (%r8)
leaq 0x80(%rsp), %r9
movl %eax, (%r9)
movl %edx, 0x70(%rsp)
movl %eax, 0x60(%rsp)
leaq 0x18(%rsp), %rdi
movq $0x0, -0x8(%rdi)
subq $0x8, %rsp
leaq 0x18(%rsp), %rsi
leaq 0x34(%rsp), %r12
movq %r12, %rdx
pushq %r14
pushq %rbx
pushq %r15
callq 0x21d9a
addq $0x20, %rsp
movaps 0x10(%rsp), %xmm0
leaq 0x40(%rsp), %rsi
movaps %xmm0, (%rsi)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
leaq 0x90(%rsp), %rdi
callq 0x7c1c
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
je 0x16d5a
callq 0x7774
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x16d69
callq 0x7774
xorl %eax, %eax
leaq 0x50(%rsp), %rcx
movl %eax, (%rcx)
movl $0x22b, %edx            # imm = 0x22B
leaq 0x80(%rsp), %r8
movl %edx, (%r8)
leaq 0x70(%rsp), %r9
movl %eax, (%r9)
movl %edx, 0x60(%rsp)
movl %edx, 0x2c(%rsp)
leaq 0x38(%rsp), %rdi
movq $0x0, -0x8(%rdi)
subq $0x8, %rsp
leaq 0x38(%rsp), %rsi
leaq 0x17(%rsp), %rdx
pushq %r14
pushq %r12
pushq %rbx
callq 0x21ee8
addq $0x20, %rsp
leaq 0x18(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x10(%rsp), %rsi
leaq 0xf(%rsp), %rdx
leaq 0x30(%rsp), %rcx
callq 0x7db6
movq 0x120(%rsp), %rbx
movaps 0x10(%rsp), %xmm0
leaq 0x40(%rsp), %rsi
movaps %xmm0, (%rsi)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
leaq 0x90(%rsp), %rdi
callq 0x7c1c
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
je 0x16e15
callq 0x7774
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x16e24
callq 0x7774
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x16e33
callq 0x7774
xorl %eax, %eax
leaq 0x80(%rsp), %rcx
movq %rax, (%rcx)
movl $0x0, 0x8(%rcx)
movsd 0x25811(%rip), %xmm0    # 0x3c660
leaq 0x70(%rsp), %r8
movsd %xmm0, (%r8)
movl $0x43250000, 0x8(%r8)   # imm = 0x43250000
leaq 0x58(%rsp), %rdi
movq %rax, -0x8(%rdi)
leaq 0x50(%rsp), %rsi
leaq 0x60(%rsp), %rdx
leaq 0xb0(%rsp), %r9
callq 0x22036
leaq 0x2c(%rsp), %r8
movl $0xc1900000, (%r8)      # imm = 0xC1900000
leaq 0x38(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x30(%rsp), %rsi
leaq 0x60(%rsp), %rdx
leaq 0x50(%rsp), %rcx
callq 0x221ba
movss 0x25626(%rip), %xmm0    # 0x3c4dc
leaq 0x60(%rsp), %r8
movlps %xmm0, (%r8)
movl $0x42820000, 0x8(%r8)   # imm = 0x42820000
leaq 0x18(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x10(%rsp), %rsi
leaq 0xf(%rsp), %rdx
leaq 0x30(%rsp), %rcx
callq 0x22304
movaps 0x10(%rsp), %xmm0
leaq 0x40(%rsp), %rsi
movaps %xmm0, (%rsi)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
leaq 0x90(%rsp), %rdi
callq 0x7c1c
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
je 0x16f19
callq 0x7774
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x16f28
callq 0x7774
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x16f37
callq 0x7774
movq 0x58(%rsp), %rdi
testq %rdi, %rdi
je 0x16f46
callq 0x7774
xorl %eax, %eax
leaq 0x80(%rsp), %rcx
movq %rax, (%rcx)
movl $0x0, 0x8(%rcx)
movsd 0x2570e(%rip), %xmm0    # 0x3c670
leaq 0x70(%rsp), %r8
movsd %xmm0, (%r8)
movl $0x43250000, 0x8(%r8)   # imm = 0x43250000
leaq 0x58(%rsp), %rdi
movq %rax, -0x8(%rdi)
leaq 0x50(%rsp), %rsi
leaq 0x60(%rsp), %rdx
leaq 0xb0(%rsp), %r9
callq 0x22036
leaq 0x2c(%rsp), %r8
movl $0x41700000, (%r8)      # imm = 0x41700000
leaq 0x38(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x30(%rsp), %rsi
leaq 0x60(%rsp), %rdx
leaq 0x50(%rsp), %rcx
callq 0x221ba
movss 0x25517(%rip), %xmm0    # 0x3c4e0
leaq 0x60(%rsp), %r8
movlps %xmm0, (%r8)
movl $0x43938000, 0x8(%r8)   # imm = 0x43938000
leaq 0x18(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x10(%rsp), %rsi
leaq 0xf(%rsp), %rdx
leaq 0x30(%rsp), %rcx
callq 0x22304
movaps 0x10(%rsp), %xmm0
leaq 0x40(%rsp), %rsi
movaps %xmm0, (%rsi)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
leaq 0x90(%rsp), %rdi
callq 0x7c1c
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
je 0x1702c
callq 0x7774
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x1703b
callq 0x7774
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x1704a
callq 0x7774
movq 0x58(%rsp), %rdi
testq %rdi, %rdi
je 0x17059
callq 0x7774
leaq 0x10(%rsp), %r8
movl $0x0, (%r8)
leaq 0x30(%rsp), %r9
movl $0x3f800000, (%r9)      # imm = 0x3F800000
leaq 0x48(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x40(%rsp), %rsi
leaq 0x50(%rsp), %rdx
leaq 0x90(%rsp), %rcx
callq 0x2169c
movaps 0x40(%rsp), %xmm0
movups %xmm0, (%rbx)
movq 0xc8(%rsp), %rdi
testq %rdi, %rdi
je 0x170af
callq 0x7774
movq 0xd8(%rsp), %rdi
testq %rdi, %rdi
je 0x170c1
callq 0x7774
movq 0xb8(%rsp), %rdi
testq %rdi, %rdi
je 0x170d3
callq 0x7774
movq 0x130(%rsp), %rdi
testq %rdi, %rdi
je 0x170e5
callq 0x7774
movq 0xe8(%rsp), %rdi
testq %rdi, %rdi
je 0x170f7
callq 0x7774
movq 0xf8(%rsp), %rdi
testq %rdi, %rdi
je 0x17109
callq 0x7774
movq 0x108(%rsp), %rdi
testq %rdi, %rdi
je 0x1711b
callq 0x7774
movq 0x118(%rsp), %rdi
testq %rdi, %rdi
je 0x1712d
callq 0x7774
leaq 0x90(%rsp), %rdi
callq 0x7726
movq %rbx, %rax
addq $0x138, %rsp            # imm = 0x138
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x1730b
movq %rax, %rbx
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
je 0x17166
callq 0x7774
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x1717a
callq 0x7774
jmp 0x1717a
movq %rax, %rbx
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x1718e
callq 0x7774
jmp 0x1718e
movq %rax, %rbx
movq 0x58(%rsp), %rdi
testq %rdi, %rdi
je 0x1730e
jmp 0x17304
jmp 0x1730b
movq %rax, %rbx
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
je 0x171b8
callq 0x7774
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x171cc
callq 0x7774
jmp 0x171cc
movq %rax, %rbx
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x171e0
callq 0x7774
jmp 0x171e0
movq %rax, %rbx
movq 0x58(%rsp), %rdi
testq %rdi, %rdi
je 0x1730e
jmp 0x17304
jmp 0x1730b
movq %rax, %rbx
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
je 0x1720a
callq 0x7774
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x1721e
callq 0x7774
jmp 0x1721e
movq %rax, %rbx
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x1730e
jmp 0x17304
jmp 0x1730b
movq %rax, %rbx
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
je 0x17248
callq 0x7774
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x1730e
jmp 0x17304
jmp 0x1730b
movq %rax, %rbx
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
je 0x17272
callq 0x7774
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x17286
callq 0x7774
jmp 0x17286
movq %rax, %rbx
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x1730e
jmp 0x17304
jmp 0x1730b
movq %rax, %rbx
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
je 0x172a6
callq 0x7774
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x1730e
jmp 0x17304
jmp 0x1730b
movq %rax, %rbx
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
je 0x172c6
callq 0x7774
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x1730e
jmp 0x17304
jmp 0x1730b
movq %rax, %rbx
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
je 0x172e6
callq 0x7774
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x172fa
callq 0x7774
jmp 0x172fa
movq %rax, %rbx
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x1730e
callq 0x7774
jmp 0x1730e
movq %rax, %rbx
movq 0xc8(%rsp), %rdi
testq %rdi, %rdi
je 0x17320
callq 0x7774
movq 0xd8(%rsp), %rdi
testq %rdi, %rdi
je 0x17332
callq 0x7774
movq 0xb8(%rsp), %rdi
testq %rdi, %rdi
je 0x17344
callq 0x7774
movq 0x130(%rsp), %rdi
testq %rdi, %rdi
je 0x17356
callq 0x7774
movq 0xe8(%rsp), %rdi
testq %rdi, %rdi
je 0x17368
callq 0x7774
movq 0xf8(%rsp), %rdi
testq %rdi, %rdi
je 0x1737a
callq 0x7774
movq 0x108(%rsp), %rdi
testq %rdi, %rdi
je 0x1738c
callq 0x7774
movq 0x118(%rsp), %rdi
testq %rdi, %rdi
je 0x1739e
callq 0x7774
leaq 0x90(%rsp), %rdi
callq 0x7726
movq %rbx, %rdi
callq 0x66e0
movq %rax, %rbx
jmp 0x17320
movq %rax, %rbx
jmp 0x17332
movq %rax, %rbx
jmp 0x17344
movq %rax, %rbx
jmp 0x17356
movq %rax, %rbx
jmp 0x17368
movq %rax, %rbx
jmp 0x1737a
movq %rax, %rbx
jmp 0x1738c
jmp 0x173e1
movq %rax, %rbx
jmp 0x1739e