// File: 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
movq %rsp, %rbp
subq $0x420, %rsp            # imm = 0x420
movq %rdi, -0x3b0(%rbp)
movq %rdi, %rax
movq %rax, -0x3a8(%rbp)
movq %rdi, -0x8(%rbp)
leaq -0x20(%rbp), %rdi
movq %rdi, -0x3a0(%rbp)
callq 0x8b80
movq -0x3a0(%rbp), %rdi
movl $0x32, %esi
callq 0x8ba0
jmp 0x26913
leaq -0x5c(%rbp), %rdi
movss 0x57be1(%rip), %xmm0    # 0x7e500
movss 0x57bdd(%rip), %xmm2    # 0x7e504
movaps %xmm2, %xmm1
callq 0xf9b0
jmp 0x26931
leaq -0x50(%rbp), %rdi
leaq -0x5c(%rbp), %rsi
callq 0x2cc80
jmp 0x26940
leaq -0x40(%rbp), %rdi
leaq -0x50(%rbp), %rsi
movq %rsi, -0x3b8(%rbp)
callq 0x2cf80
movq -0x3b8(%rbp), %rdi
callq 0x2cd40
leaq -0x8c(%rbp), %rdi
movss 0x57b99(%rip), %xmm2    # 0x7e508
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0xf9b0
jmp 0x2697c
leaq -0x80(%rbp), %rdi
leaq -0x8c(%rbp), %rsi
callq 0x2cc80
jmp 0x2698e
leaq -0x70(%rbp), %rdi
leaq -0x80(%rbp), %rsi
movq %rsi, -0x3c0(%rbp)
callq 0x2cf80
movq -0x3c0(%rbp), %rdi
callq 0x2cd40
leaq -0xbc(%rbp), %rdi
movss 0x57b4f(%rip), %xmm0    # 0x7e50c
movss 0x57b4b(%rip), %xmm1    # 0x7e510
movss 0x57b47(%rip), %xmm2    # 0x7e514
callq 0xf9b0
jmp 0x269d4
leaq -0xb0(%rbp), %rdi
leaq -0xbc(%rbp), %rsi
callq 0x2cc80
jmp 0x269e9
leaq -0xa0(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
movq %rsi, -0x3c8(%rbp)
callq 0x2cf80
movq -0x3c8(%rbp), %rdi
callq 0x2cd40
leaq -0xec(%rbp), %rdi
movss 0x57afa(%rip), %xmm2    # 0x7e518
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0xf9b0
jmp 0x26a2b
leaq -0xe0(%rbp), %rdi
leaq -0xec(%rbp), %rsi
callq 0x2cc80
jmp 0x26a40
leaq -0xd0(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
movq %rsi, -0x3d0(%rbp)
callq 0x2cf80
movq -0x3d0(%rbp), %rdi
callq 0x2cd40
leaq -0x100(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x2cea0
jmp 0x26a78
leaq -0x110(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x2cea0
jmp 0x26a8a
leaq -0x120(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x2cea0
jmp 0x26a9f
leaq -0x130(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x2d3d0
jmp 0x26ab4
movl $0x0, -0x164(%rbp)
movl $0x22b, -0x168(%rbp)    # imm = 0x22B
movl $0x0, -0x16c(%rbp)
movl $0x22b, -0x170(%rbp)    # imm = 0x22B
movl $0x22b, -0x174(%rbp)    # imm = 0x22B
movq %rsp, %rax
leaq -0x120(%rbp), %rcx
movq %rcx, (%rax)
leaq -0x160(%rbp), %rdi
leaq -0x164(%rbp), %rsi
leaq -0x168(%rbp), %rdx
leaq -0x16c(%rbp), %rcx
leaq -0x170(%rbp), %r8
leaq -0x174(%rbp), %r9
callq 0x2d7f0
jmp 0x26b24
leaq -0x150(%rbp), %rdi
leaq -0x160(%rbp), %rsi
callq 0x9150
jmp 0x26b39
leaq -0x140(%rbp), %rdi
movq %rdi, -0x3d8(%rbp)
leaq -0x150(%rbp), %rsi
callq 0x8eb0
movq -0x3d8(%rbp), %rsi
leaq -0x20(%rbp), %rdi
callq 0x8ca0
jmp 0x26b65
leaq -0x140(%rbp), %rdi
callq 0x8e00
leaq -0x150(%rbp), %rdi
callq 0x8ee0
leaq -0x160(%rbp), %rdi
callq 0x9130
movl $0x0, -0x19c(%rbp)
movl $0x22b, -0x1a0(%rbp)    # imm = 0x22B
movl $0x0, -0x1a4(%rbp)
movl $0x22b, -0x1a8(%rbp)    # imm = 0x22B
movl $0x0, -0x1ac(%rbp)
movq %rsp, %rax
leaq -0x100(%rbp), %rcx
movq %rcx, (%rax)
leaq -0x198(%rbp), %rdi
leaq -0x19c(%rbp), %rsi
leaq -0x1a0(%rbp), %rdx
leaq -0x1a4(%rbp), %rcx
leaq -0x1a8(%rbp), %r8
leaq -0x1ac(%rbp), %r9
callq 0x2d7f0
jmp 0x26bf9
leaq -0x188(%rbp), %rdi
movq %rdi, -0x3e0(%rbp)
leaq -0x198(%rbp), %rsi
callq 0x9100
movq -0x3e0(%rbp), %rsi
leaq -0x20(%rbp), %rdi
callq 0x8ca0
jmp 0x26c25
leaq -0x188(%rbp), %rdi
callq 0x8e00
leaq -0x198(%rbp), %rdi
callq 0x9130
movl $0xd5, -0x1d4(%rbp)
movl $0x157, -0x1d8(%rbp)    # imm = 0x157
movl $0xe3, -0x1dc(%rbp)
movl $0x14c, -0x1e0(%rbp)    # imm = 0x14C
movl $0x22a, -0x1e4(%rbp)    # imm = 0x22A
movq %rsp, %rax
leaq -0x130(%rbp), %rcx
movq %rcx, (%rax)
leaq -0x1d0(%rbp), %rdi
leaq -0x1d4(%rbp), %rsi
leaq -0x1d8(%rbp), %rdx
leaq -0x1dc(%rbp), %rcx
leaq -0x1e0(%rbp), %r8
leaq -0x1e4(%rbp), %r9
callq 0x2d890
jmp 0x26cad
leaq -0x1c0(%rbp), %rdi
movq %rdi, -0x3e8(%rbp)
leaq -0x1d0(%rbp), %rsi
callq 0x8fa0
movq -0x3e8(%rbp), %rsi
leaq -0x20(%rbp), %rdi
callq 0x8ca0
jmp 0x26cd9
leaq -0x1c0(%rbp), %rdi
callq 0x8e00
leaq -0x1d0(%rbp), %rdi
callq 0x8fd0
movl $0x0, -0x21c(%rbp)
movl $0x22b, -0x220(%rbp)    # imm = 0x22B
movl $0x0, -0x224(%rbp)
movl $0x22b, -0x228(%rbp)    # imm = 0x22B
movl $0x22b, -0x22c(%rbp)    # imm = 0x22B
movq %rsp, %rax
leaq -0x110(%rbp), %rcx
movq %rcx, (%rax)
leaq -0x218(%rbp), %rdi
leaq -0x21c(%rbp), %rsi
leaq -0x220(%rbp), %rdx
leaq -0x224(%rbp), %rcx
leaq -0x228(%rbp), %r8
leaq -0x22c(%rbp), %r9
callq 0x2d930
jmp 0x26d61
leaq -0x208(%rbp), %rdi
leaq -0x218(%rbp), %rsi
callq 0x8ff0
jmp 0x26d76
leaq -0x1f8(%rbp), %rdi
movq %rdi, -0x3f0(%rbp)
leaq -0x208(%rbp), %rsi
callq 0x8eb0
movq -0x3f0(%rbp), %rsi
leaq -0x20(%rbp), %rdi
callq 0x8ca0
jmp 0x26da2
leaq -0x1f8(%rbp), %rdi
callq 0x8e00
leaq -0x208(%rbp), %rdi
callq 0x8ee0
leaq -0x218(%rbp), %rdi
callq 0x8fd0
movl $0x0, -0x254(%rbp)
movl $0x22b, -0x258(%rbp)    # imm = 0x22B
movl $0x0, -0x25c(%rbp)
movl $0x22b, -0x260(%rbp)    # imm = 0x22B
movl $0x0, -0x264(%rbp)
movq %rsp, %rax
leaq -0x110(%rbp), %rcx
movq %rcx, (%rax)
leaq -0x250(%rbp), %rdi
leaq -0x254(%rbp), %rsi
leaq -0x258(%rbp), %rdx
leaq -0x25c(%rbp), %rcx
leaq -0x260(%rbp), %r8
leaq -0x264(%rbp), %r9
callq 0x2d930
jmp 0x26e36
leaq -0x240(%rbp), %rdi
movq %rdi, -0x3f8(%rbp)
leaq -0x250(%rbp), %rsi
callq 0x8fa0
movq -0x3f8(%rbp), %rsi
leaq -0x20(%rbp), %rdi
callq 0x8ca0
jmp 0x26e62
leaq -0x240(%rbp), %rdi
callq 0x8e00
leaq -0x250(%rbp), %rdi
callq 0x8fd0
movl $0x0, -0x29c(%rbp)
movl $0x22b, -0x2a0(%rbp)    # imm = 0x22B
movl $0x0, -0x2a4(%rbp)
movl $0x22b, -0x2a8(%rbp)    # imm = 0x22B
movl $0x22b, -0x2ac(%rbp)    # imm = 0x22B
movq %rsp, %rax
leaq -0x110(%rbp), %rcx
movq %rcx, (%rax)
leaq -0x298(%rbp), %rdi
leaq -0x29c(%rbp), %rsi
leaq -0x2a0(%rbp), %rdx
leaq -0x2a4(%rbp), %rcx
leaq -0x2a8(%rbp), %r8
leaq -0x2ac(%rbp), %r9
callq 0x2d9d0
jmp 0x26eea
leaq -0x288(%rbp), %rdi
leaq -0x298(%rbp), %rsi
callq 0x8e40
jmp 0x26eff
leaq -0x278(%rbp), %rdi
movq %rdi, -0x400(%rbp)
leaq -0x288(%rbp), %rsi
callq 0x8eb0
movq -0x400(%rbp), %rsi
leaq -0x20(%rbp), %rdi
callq 0x8ca0
jmp 0x26f2b
leaq -0x278(%rbp), %rdi
callq 0x8e00
leaq -0x288(%rbp), %rdi
callq 0x8ee0
leaq -0x298(%rbp), %rdi
callq 0x8e20
leaq -0x2fc(%rbp), %rdi
xorps %xmm2, %xmm2
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0xf9b0
jmp 0x26f66
leaq -0x308(%rbp), %rdi
movss 0x575a7(%rip), %xmm2    # 0x7e51c
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0xf9b0
jmp 0x26f82
leaq -0x2f0(%rbp), %rdi
leaq -0x2fc(%rbp), %rsi
leaq -0x308(%rbp), %rdx
leaq -0x110(%rbp), %rcx
callq 0x2db70
jmp 0x26fa5
movl $0xc1900000, -0x30c(%rbp) # imm = 0xC1900000
leaq -0x2e0(%rbp), %rdi
leaq -0x2f0(%rbp), %rsi
leaq -0x30c(%rbp), %rdx
callq 0x2daf0
jmp 0x26fcb
leaq -0x318(%rbp), %rdi
movss 0x57546(%rip), %xmm0    # 0x7e520
xorps %xmm1, %xmm1
movss 0x5753f(%rip), %xmm2    # 0x7e524
callq 0xf9b0
jmp 0x26fec
leaq -0x2d0(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
leaq -0x318(%rbp), %rdx
callq 0x2da70
jmp 0x27008
leaq -0x2c0(%rbp), %rdi
movq %rdi, -0x408(%rbp)
leaq -0x2d0(%rbp), %rsi
callq 0x2dbf0
movq -0x408(%rbp), %rsi
leaq -0x20(%rbp), %rdi
callq 0x8ca0
jmp 0x27034
leaq -0x2c0(%rbp), %rdi
callq 0x8e00
leaq -0x2d0(%rbp), %rdi
callq 0x2dc20
leaq -0x2e0(%rbp), %rdi
callq 0x2dc40
leaq -0x2f0(%rbp), %rdi
callq 0x2dc60
leaq -0x364(%rbp), %rdi
xorps %xmm2, %xmm2
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0xf9b0
jmp 0x2707b
leaq -0x370(%rbp), %rdi
movss 0x5749e(%rip), %xmm1    # 0x7e528
movss 0x5748a(%rip), %xmm2    # 0x7e51c
movaps %xmm2, %xmm0
callq 0xf9b0
jmp 0x2709c
leaq -0x358(%rbp), %rdi
leaq -0x364(%rbp), %rsi
leaq -0x370(%rbp), %rdx
leaq -0x110(%rbp), %rcx
callq 0x2db70
jmp 0x270bf
movl $0x41700000, -0x374(%rbp) # imm = 0x41700000
leaq -0x348(%rbp), %rdi
leaq -0x358(%rbp), %rsi
leaq -0x374(%rbp), %rdx
callq 0x2daf0
jmp 0x270e5
leaq -0x380(%rbp), %rdi
movss 0x57438(%rip), %xmm0    # 0x7e52c
xorps %xmm1, %xmm1
movss 0x57431(%rip), %xmm2    # 0x7e530
callq 0xf9b0
jmp 0x27106
leaq -0x338(%rbp), %rdi
leaq -0x348(%rbp), %rsi
leaq -0x380(%rbp), %rdx
callq 0x2da70
jmp 0x27122
leaq -0x328(%rbp), %rdi
movq %rdi, -0x410(%rbp)
leaq -0x338(%rbp), %rsi
callq 0x2dbf0
movq -0x410(%rbp), %rsi
leaq -0x20(%rbp), %rdi
callq 0x8ca0
jmp 0x2714e
leaq -0x328(%rbp), %rdi
callq 0x8e00
leaq -0x338(%rbp), %rdi
callq 0x2dc20
leaq -0x348(%rbp), %rdi
callq 0x2dc40
leaq -0x358(%rbp), %rdi
callq 0x2dc60
movl $0x0, -0x394(%rbp)
movl $0x3f800000, -0x398(%rbp) # imm = 0x3F800000
leaq -0x390(%rbp), %rdi
leaq -0x20(%rbp), %rsi
leaq -0x394(%rbp), %rdx
leaq -0x398(%rbp), %rcx
callq 0x2d4e0
jmp 0x271b2
movq -0x3b0(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0x2d560
leaq -0x390(%rbp), %rdi
callq 0x13be0
leaq -0x130(%rbp), %rdi
callq 0x2d440
leaq -0x120(%rbp), %rdi
callq 0x2cf60
leaq -0x110(%rbp), %rdi
callq 0x2cf60
leaq -0x100(%rbp), %rdi
callq 0x2cf60
leaq -0xd0(%rbp), %rdi
callq 0x12a50
leaq -0xa0(%rbp), %rdi
callq 0x12a50
leaq -0x70(%rbp), %rdi
callq 0x12a50
leaq -0x40(%rbp), %rdi
callq 0x12a50
leaq -0x20(%rbp), %rdi
callq 0x92d0
movq -0x3a8(%rbp), %rax
addq $0x420, %rsp            # imm = 0x420
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x2752d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x27524
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x2751b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x2750f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x27503
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x274f7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x274eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x274df
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x274d3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x2730f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x140(%rbp), %rdi
callq 0x8e00
leaq -0x150(%rbp), %rdi
callq 0x8ee0
leaq -0x160(%rbp), %rdi
callq 0x9130
jmp 0x274d3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x188(%rbp), %rdi
callq 0x8e00
leaq -0x198(%rbp), %rdi
callq 0x9130
jmp 0x274d3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x1c0(%rbp), %rdi
callq 0x8e00
leaq -0x1d0(%rbp), %rdi
callq 0x8fd0
jmp 0x274d3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x273a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0x8e00
leaq -0x208(%rbp), %rdi
callq 0x8ee0
leaq -0x218(%rbp), %rdi
callq 0x8fd0
jmp 0x274d3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x240(%rbp), %rdi
callq 0x8e00
leaq -0x250(%rbp), %rdi
callq 0x8fd0
jmp 0x274d3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x27410
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x278(%rbp), %rdi
callq 0x8e00
leaq -0x288(%rbp), %rdi
callq 0x8ee0
leaq -0x298(%rbp), %rdi
callq 0x8e20
jmp 0x274d3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x2746d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x27461
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x2c0(%rbp), %rdi
callq 0x8e00
leaq -0x2d0(%rbp), %rdi
callq 0x2dc20
leaq -0x2e0(%rbp), %rdi
callq 0x2dc40
leaq -0x2f0(%rbp), %rdi
callq 0x2dc60
jmp 0x274d3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x274c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x274bb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x328(%rbp), %rdi
callq 0x8e00
leaq -0x338(%rbp), %rdi
callq 0x2dc20
leaq -0x348(%rbp), %rdi
callq 0x2dc40
leaq -0x358(%rbp), %rdi
callq 0x2dc60
leaq -0x130(%rbp), %rdi
callq 0x2d440
leaq -0x120(%rbp), %rdi
callq 0x2cf60
leaq -0x110(%rbp), %rdi
callq 0x2cf60
leaq -0x100(%rbp), %rdi
callq 0x2cf60
leaq -0xd0(%rbp), %rdi
callq 0x12a50
leaq -0xa0(%rbp), %rdi
callq 0x12a50
leaq -0x70(%rbp), %rdi
callq 0x12a50
leaq -0x40(%rbp), %rdi
callq 0x12a50
leaq -0x20(%rbp), %rdi
callq 0x92d0
movq -0x28(%rbp), %rdi
callq 0x7860
nop