// File: Aries-orz[P]Ari-RayTracing/src/Demo.cpp
// Function: generateWorld(rt::Scene&)
void generateWorld(Scene& scene) {
    //Add the walls
    scene.addObj(new RTPlane(Vec3d(1, 0, 0), Vec3d(1, 0, 0), RTObject::DIFFUSE, Vec3d(), Vec3d(.75, .25, .25)));//left
    scene.addObj(new RTPlane(Vec3d(99, 0, 0), Vec3d(-1, 0, 0), RTObject::DIFFUSE, Vec3d(), Vec3d(.25, .75, .25)));//right
    scene.addObj(new RTPlane(Vec3d(0, 0, 0), Vec3d(0, 0, 1), RTObject::REFRACTIVE, Vec3d(), Vec3d(1, 1, 1)));//back
    scene.addObj(new RTPlane(Vec3d(0, 0, 300), Vec3d(0, 0, -1), RTObject::REFRACTIVE, Vec3d(), Vec3d()));//front
    scene.addObj(new RTPlane(Vec3d(0, 0, 0), Vec3d(0, 1, 0), RTObject::DIFFUSE, Vec3d(), Vec3d(.75, .75, .75)));//bottom
    scene.addObj(new RTPlane(Vec3d(0, 81.6, 0), Vec3d(0, -1, 0), RTObject::DIFFUSE, Vec3d(), Vec3d(.75, .75, .75)));//top
    
    //Add the light
    scene.addObj(new RTTriangle(Vec3d(40, 81.6-.01, 70), Vec3d(60, 81.6-.01, 70), Vec3d(40, 81.6-.01, 90),
                                RTObject::DIFFUSE, Vec3d(12, 12, 12), Vec3d()));
    scene.addObj(new RTTriangle(Vec3d(60, 81.6-.01, 90), Vec3d(60, 81.6-.01, 70), Vec3d(40, 81.6-.01, 90),
                                RTObject::DIFFUSE, Vec3d(12, 12, 12), Vec3d()));
    
    //Add two sphere
    scene.addObj(new RTSphere(Vec3d(45,12,120),    Vec3d(), Vec3d(1,1,1)*.999, 12, RTObject::REFRACTIVE));
    scene.addObj(new RTSphere(Vec3d(27,52.001,47), Vec3d(), Vec3d(1,1,1)*.999, 12, RTObject::DIFFUSE));

    //Add one box
    scene.addObj(new RTBox(Vec3d(10.5,0,30.5), Vec3d(43.5,40,63.5), RTObject::DIFFUSE, Vec3d(), Vec3d(1,1,1)*.999));
    
    //Parse the .obj file
    ObjParser parser;
    parser.readFromObj("test_data/block.obj");
    int num = parser.numOfFaces;
    
    //Add the block object
    RTTriangle* indices = new RTTriangle[num];
    for (int i=0; i<num; ++i) {
        Vec3d p0 = parser.verticeList[parser.faceList[i][0]];
        Vec3d p1 = parser.verticeList[parser.faceList[i][1]];
        Vec3d p2 = parser.verticeList[parser.faceList[i][2]];
        indices[i] = RTTriangle(p0+Vec3d(73,10,79), p1+Vec3d(73,10,79), p2+Vec3d(73,10,79), RTObject::DIFFUSE, Vec3d(), Vec3d(0,0,1));
    }
    RTBBox *bbox = new RTBBox(Vec3d(53,0,68), Vec3d(93,20,88)); //Add a bounding box for the complex object
    scene.addObj(new RTComplexObj(indices, bbox, num, RTObject::DIFFUSE, Vec3d(), Vec3d(0,0,1)));
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x810, %rsp            # imm = 0x810
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x6b8(%rbp)
movl $0x70, %edi
callq 0x2100
movq %rax, -0x6b0(%rbp)
leaq -0x20(%rbp), %rdi
movsd 0x8ce1(%rip), %xmm0     # 0xb008
xorps %xmm2, %xmm2
movaps %xmm2, %xmm1
callq 0x3540
jmp 0x2334
leaq -0x48(%rbp), %rdi
movsd 0x8cc8(%rip), %xmm0     # 0xb008
xorps %xmm2, %xmm2
movaps %xmm2, %xmm1
callq 0x3540
jmp 0x234d
leaq -0x60(%rbp), %rdi
xorps %xmm2, %xmm2
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x3540
jmp 0x2361
leaq -0x78(%rbp), %rdi
movsd 0x8ca3(%rip), %xmm0     # 0xb010
movsd 0x8ca3(%rip), %xmm2     # 0xb018
movaps %xmm2, %xmm1
callq 0x3540
jmp 0x237f
movq -0x6b0(%rbp), %rdi
leaq -0x20(%rbp), %rsi
leaq -0x48(%rbp), %rdx
xorl %ecx, %ecx
leaq -0x60(%rbp), %r8
leaq -0x78(%rbp), %r9
callq 0x8040
jmp 0x239f
movq -0x6b0(%rbp), %rsi
movq -0x6b8(%rbp), %rdi
callq 0x8ca0
movq -0x8(%rbp), %rax
movq %rax, -0x6c8(%rbp)
movl $0x70, %edi
callq 0x2100
movq %rax, -0x6c0(%rbp)
leaq -0x90(%rbp), %rdi
movsd 0x8c43(%rip), %xmm0     # 0xb020
xorps %xmm2, %xmm2
movaps %xmm2, %xmm1
callq 0x3540
jmp 0x23ea
leaq -0xa8(%rbp), %rdi
movsd 0x8c2f(%rip), %xmm0     # 0xb028
xorps %xmm2, %xmm2
movaps %xmm2, %xmm1
callq 0x3540
jmp 0x2406
leaq -0xc0(%rbp), %rdi
xorps %xmm2, %xmm2
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x3540
jmp 0x241d
leaq -0xd8(%rbp), %rdi
movsd 0x8be4(%rip), %xmm1     # 0xb010
movsd 0x8be4(%rip), %xmm2     # 0xb018
movaps %xmm2, %xmm0
callq 0x3540
jmp 0x243e
movq -0x6c0(%rbp), %rdi
leaq -0x90(%rbp), %rsi
leaq -0xa8(%rbp), %rdx
xorl %ecx, %ecx
leaq -0xc0(%rbp), %r8
leaq -0xd8(%rbp), %r9
callq 0x8040
jmp 0x246a
movq -0x6c0(%rbp), %rsi
movq -0x6c8(%rbp), %rdi
callq 0x8ca0
movq -0x8(%rbp), %rax
movq %rax, -0x6d8(%rbp)
movl $0x70, %edi
callq 0x2100
movq %rax, -0x6d0(%rbp)
leaq -0xf0(%rbp), %rdi
xorps %xmm2, %xmm2
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x3540
jmp 0x24b0
leaq -0x108(%rbp), %rdi
xorps %xmm1, %xmm1
movsd 0x8b46(%rip), %xmm2     # 0xb008
movaps %xmm1, %xmm0
callq 0x3540
jmp 0x24cc
leaq -0x120(%rbp), %rdi
xorps %xmm2, %xmm2
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x3540
jmp 0x24e3
leaq -0x138(%rbp), %rdi
movsd 0x8b16(%rip), %xmm2     # 0xb008
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x3540
jmp 0x24ff
movq -0x6d0(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
leaq -0x108(%rbp), %rdx
movl $0x2, %ecx
leaq -0x120(%rbp), %r8
leaq -0x138(%rbp), %r9
callq 0x8040
jmp 0x252e
movq -0x6d0(%rbp), %rsi
movq -0x6d8(%rbp), %rdi
callq 0x8ca0
movq -0x8(%rbp), %rax
movq %rax, -0x6e8(%rbp)
movl $0x70, %edi
callq 0x2100
movq %rax, -0x6e0(%rbp)
leaq -0x150(%rbp), %rdi
xorps %xmm1, %xmm1
movsd 0x8ac1(%rip), %xmm2     # 0xb030
movaps %xmm1, %xmm0
callq 0x3540
jmp 0x2579
leaq -0x168(%rbp), %rdi
xorps %xmm1, %xmm1
movsd 0x8a9d(%rip), %xmm2     # 0xb028
movaps %xmm1, %xmm0
callq 0x3540
jmp 0x2595
leaq -0x180(%rbp), %rdi
xorps %xmm2, %xmm2
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x3540
jmp 0x25ac
leaq -0x198(%rbp), %rdi
xorps %xmm2, %xmm2
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x3540
jmp 0x25c3
movq -0x6e0(%rbp), %rdi
leaq -0x150(%rbp), %rsi
leaq -0x168(%rbp), %rdx
movl $0x2, %ecx
leaq -0x180(%rbp), %r8
leaq -0x198(%rbp), %r9
callq 0x8040
jmp 0x25f2
movq -0x6e0(%rbp), %rsi
movq -0x6e8(%rbp), %rdi
callq 0x8ca0
movq -0x8(%rbp), %rax
movq %rax, -0x6f8(%rbp)
movl $0x70, %edi
callq 0x2100
movq %rax, -0x6f0(%rbp)
leaq -0x1b0(%rbp), %rdi
xorps %xmm2, %xmm2
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x3540
jmp 0x2638
leaq -0x1c8(%rbp), %rdi
movsd 0x89c1(%rip), %xmm1     # 0xb008
xorps %xmm2, %xmm2
movaps %xmm2, %xmm0
callq 0x3540
jmp 0x2654
leaq -0x1e0(%rbp), %rdi
xorps %xmm2, %xmm2
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x3540
jmp 0x266b
leaq -0x1f8(%rbp), %rdi
movsd 0x8996(%rip), %xmm2     # 0xb010
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x3540
jmp 0x2687
movq -0x6f0(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
leaq -0x1c8(%rbp), %rdx
xorl %ecx, %ecx
leaq -0x1e0(%rbp), %r8
leaq -0x1f8(%rbp), %r9
callq 0x8040
jmp 0x26b3
movq -0x6f0(%rbp), %rsi
movq -0x6f8(%rbp), %rdi
callq 0x8ca0
movq -0x8(%rbp), %rax
movq %rax, -0x708(%rbp)
movl $0x70, %edi
callq 0x2100
movq %rax, -0x700(%rbp)
leaq -0x210(%rbp), %rdi
movsd 0x8947(%rip), %xmm1     # 0xb038
xorps %xmm2, %xmm2
movaps %xmm2, %xmm0
callq 0x3540
jmp 0x26fe
leaq -0x228(%rbp), %rdi
movsd 0x891b(%rip), %xmm1     # 0xb028
xorps %xmm2, %xmm2
movaps %xmm2, %xmm0
callq 0x3540
jmp 0x271a
leaq -0x240(%rbp), %rdi
xorps %xmm2, %xmm2
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x3540
jmp 0x2731
leaq -0x258(%rbp), %rdi
movsd 0x88d0(%rip), %xmm2     # 0xb010
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x3540
jmp 0x274d
movq -0x700(%rbp), %rdi
leaq -0x210(%rbp), %rsi
leaq -0x228(%rbp), %rdx
xorl %ecx, %ecx
leaq -0x240(%rbp), %r8
leaq -0x258(%rbp), %r9
callq 0x8040
jmp 0x2779
movq -0x700(%rbp), %rsi
movq -0x708(%rbp), %rdi
callq 0x8ca0
movq -0x8(%rbp), %rax
movq %rax, -0x718(%rbp)
movl $0x88, %edi
callq 0x2100
movq %rax, -0x710(%rbp)
leaq -0x270(%rbp), %rdi
movsd 0x8889(%rip), %xmm0     # 0xb040
movsd 0x8889(%rip), %xmm1     # 0xb048
movsd 0x8889(%rip), %xmm2     # 0xb050
callq 0x3540
jmp 0x27ce
leaq -0x288(%rbp), %rdi
movsd 0x887b(%rip), %xmm0     # 0xb058
movsd 0x8863(%rip), %xmm1     # 0xb048
movsd 0x8863(%rip), %xmm2     # 0xb050
callq 0x3540
jmp 0x27f4
leaq -0x2a0(%rbp), %rdi
movsd 0x883d(%rip), %xmm0     # 0xb040
movsd 0x883d(%rip), %xmm1     # 0xb048
movsd 0x884d(%rip), %xmm2     # 0xb060
callq 0x3540
jmp 0x281a
leaq -0x2b8(%rbp), %rdi
movsd 0x883f(%rip), %xmm2     # 0xb068
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x3540
jmp 0x2836
leaq -0x2d0(%rbp), %rdi
xorps %xmm2, %xmm2
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x3540
jmp 0x284d
movq -0x710(%rbp), %rdi
movq %rsp, %rax
leaq -0x2d0(%rbp), %rcx
movq %rcx, (%rax)
leaq -0x270(%rbp), %rsi
leaq -0x288(%rbp), %rdx
leaq -0x2a0(%rbp), %rcx
xorl %r8d, %r8d
leaq -0x2b8(%rbp), %r9
callq 0x8650
jmp 0x2887
movq -0x710(%rbp), %rsi
movq -0x718(%rbp), %rdi
callq 0x8ca0
movq -0x8(%rbp), %rax
movq %rax, -0x728(%rbp)
movl $0x88, %edi
callq 0x2100
movq %rax, -0x720(%rbp)
leaq -0x2e8(%rbp), %rdi
movsd 0x8793(%rip), %xmm0     # 0xb058
movsd 0x877b(%rip), %xmm1     # 0xb048
movsd 0x878b(%rip), %xmm2     # 0xb060
callq 0x3540
jmp 0x28dc
leaq -0x300(%rbp), %rdi
movsd 0x876d(%rip), %xmm0     # 0xb058
movsd 0x8755(%rip), %xmm1     # 0xb048
movsd 0x8755(%rip), %xmm2     # 0xb050
callq 0x3540
jmp 0x2902
leaq -0x318(%rbp), %rdi
movsd 0x872f(%rip), %xmm0     # 0xb040
movsd 0x872f(%rip), %xmm1     # 0xb048
movsd 0x873f(%rip), %xmm2     # 0xb060
callq 0x3540
jmp 0x2928
leaq -0x330(%rbp), %rdi
movsd 0x8731(%rip), %xmm2     # 0xb068
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x3540
jmp 0x2944
leaq -0x348(%rbp), %rdi
xorps %xmm2, %xmm2
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x3540
jmp 0x295b
movq -0x720(%rbp), %rdi
movq %rsp, %rax
leaq -0x348(%rbp), %rcx
movq %rcx, (%rax)
leaq -0x2e8(%rbp), %rsi
leaq -0x300(%rbp), %rdx
leaq -0x318(%rbp), %rcx
xorl %r8d, %r8d
leaq -0x330(%rbp), %r9
callq 0x8650
jmp 0x2995
movq -0x720(%rbp), %rsi
movq -0x728(%rbp), %rdi
callq 0x8ca0
movq -0x8(%rbp), %rax
movq %rax, -0x738(%rbp)
movl $0x60, %edi
callq 0x2100
movq %rax, -0x730(%rbp)
leaq -0x360(%rbp), %rdi
movsd 0x869d(%rip), %xmm0     # 0xb070
movsd 0x868d(%rip), %xmm1     # 0xb068
movsd 0x8695(%rip), %xmm2     # 0xb078
callq 0x3540
jmp 0x29ea
leaq -0x378(%rbp), %rdi
xorps %xmm2, %xmm2
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x3540
jmp 0x2a01
leaq -0x3a8(%rbp), %rdi
movsd 0x85f8(%rip), %xmm2     # 0xb008
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x3540
jmp 0x2a1d
leaq -0x390(%rbp), %rdi
leaq -0x3a8(%rbp), %rsi
movsd 0x864d(%rip), %xmm0     # 0xb080
callq 0xa000
jmp 0x2a3a
movq -0x730(%rbp), %rdi
leaq -0x360(%rbp), %rsi
leaq -0x378(%rbp), %rdx
leaq -0x390(%rbp), %rcx
movsd 0x860a(%rip), %xmm0     # 0xb068
movl $0x2, %r8d
callq 0x8290
jmp 0x2a6b
movq -0x730(%rbp), %rsi
movq -0x738(%rbp), %rdi
callq 0x8ca0
movq -0x8(%rbp), %rax
movq %rax, -0x748(%rbp)
movl $0x60, %edi
callq 0x2100
movq %rax, -0x740(%rbp)
leaq -0x3c0(%rbp), %rdi
movsd 0x85df(%rip), %xmm0     # 0xb088
movsd 0x85df(%rip), %xmm1     # 0xb090
movsd 0x85df(%rip), %xmm2     # 0xb098
callq 0x3540
jmp 0x2ac0
leaq -0x3d8(%rbp), %rdi
xorps %xmm2, %xmm2
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x3540
jmp 0x2ad7
leaq -0x408(%rbp), %rdi
movsd 0x8522(%rip), %xmm2     # 0xb008
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x3540
jmp 0x2af3
leaq -0x3f0(%rbp), %rdi
leaq -0x408(%rbp), %rsi
movsd 0x8577(%rip), %xmm0     # 0xb080
callq 0xa000
jmp 0x2b10
movq -0x740(%rbp), %rdi
leaq -0x3c0(%rbp), %rsi
leaq -0x3d8(%rbp), %rdx
leaq -0x3f0(%rbp), %rcx
movsd 0x8534(%rip), %xmm0     # 0xb068
xorl %r8d, %r8d
callq 0x8290
jmp 0x2b3e
movq -0x740(%rbp), %rsi
movq -0x748(%rbp), %rdi
callq 0x8ca0
movq -0x8(%rbp), %rax
movq %rax, -0x758(%rbp)
movl $0x78, %edi
callq 0x2100
movq %rax, -0x750(%rbp)
leaq -0x420(%rbp), %rdi
movsd 0x8524(%rip), %xmm0     # 0xb0a0
xorps %xmm1, %xmm1
movsd 0x8521(%rip), %xmm2     # 0xb0a8
callq 0x3540
jmp 0x2b8e
leaq -0x438(%rbp), %rdi
movsd 0x8513(%rip), %xmm0     # 0xb0b0
movsd 0x849b(%rip), %xmm1     # 0xb040
movsd 0x850b(%rip), %xmm2     # 0xb0b8
callq 0x3540
jmp 0x2bb4
leaq -0x450(%rbp), %rdi
xorps %xmm2, %xmm2
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x3540
jmp 0x2bcb
leaq -0x480(%rbp), %rdi
movsd 0x842e(%rip), %xmm2     # 0xb008
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x3540
jmp 0x2be7
leaq -0x468(%rbp), %rdi
leaq -0x480(%rbp), %rsi
movsd 0x8483(%rip), %xmm0     # 0xb080
callq 0xa000
jmp 0x2c04
movq -0x750(%rbp), %rdi
leaq -0x420(%rbp), %rsi
leaq -0x438(%rbp), %rdx
xorl %ecx, %ecx
leaq -0x450(%rbp), %r8
leaq -0x468(%rbp), %r9
callq 0x75b0
jmp 0x2c30
movq -0x750(%rbp), %rsi
movq -0x758(%rbp), %rdi
callq 0x8ca0
leaq -0x498(%rbp), %rdi
movq %rdi, -0x760(%rbp)
callq 0x4c90
movq -0x760(%rbp), %rdi
leaq 0x84bc(%rip), %rsi      # 0xb120
callq 0x4d80
jmp 0x2c6b
movl -0x494(%rbp), %eax
movl %eax, -0x49c(%rbp)
movslq -0x49c(%rbp), %rax
movq %rax, -0x778(%rbp)
movl $0x88, %ecx
mulq %rcx
movq %rax, %rdi
seto %cl
addq $0x8, %rdi
movq $-0x1, %rax
cmovbq %rax, %rdi
testb %cl, %cl
cmovneq %rax, %rdi
movq %rdi, -0x770(%rbp)
callq 0x2030
movq %rax, -0x768(%rbp)
jmp 0x2cbd
movq -0x778(%rbp), %rax
movq -0x768(%rbp), %rcx
movq %rax, (%rcx)
addq $0x8, %rcx
movq %rcx, -0x780(%rbp)
cmpq $0x0, %rax
je 0x2d3d
movq -0x780(%rbp), %rax
movq -0x778(%rbp), %rcx
imulq $0x88, %rcx, %rdx
movq %rax, %rcx
addq %rdx, %rcx
movq %rcx, -0x790(%rbp)
movq %rax, -0x788(%rbp)
movq -0x788(%rbp), %rdi
movq %rdi, -0x798(%rbp)
callq 0x85c0
jmp 0x2d1d
movq -0x790(%rbp), %rcx
movq -0x798(%rbp), %rax
addq $0x88, %rax
cmpq %rcx, %rax
movq %rax, -0x788(%rbp)
jne 0x2d08
movq -0x780(%rbp), %rax
movq %rax, -0x4a8(%rbp)
movl $0x0, -0x4ac(%rbp)
movl -0x4ac(%rbp), %eax
cmpl -0x49c(%rbp), %eax
jge 0x320f
movq -0x490(%rbp), %rax
movq %rax, -0x7a8(%rbp)
movq -0x488(%rbp), %rax
movslq -0x4ac(%rbp), %rcx
leaq (%rcx,%rcx,2), %rcx
leaq (%rax,%rcx,4), %rdi
xorl %esi, %esi
callq 0x35a0
movq %rax, -0x7a0(%rbp)
jmp 0x2d9b
movq -0x7a8(%rbp), %rax
movq -0x7a0(%rbp), %rcx
movslq (%rcx), %rcx
leaq (%rcx,%rcx,2), %rcx
leaq (%rax,%rcx,8), %rsi
leaq -0x4c8(%rbp), %rdi
callq 0x9ea0
jmp 0x2dc2
movq -0x490(%rbp), %rax
movq %rax, -0x7b8(%rbp)
movq -0x488(%rbp), %rax
movslq -0x4ac(%rbp), %rcx
leaq (%rcx,%rcx,2), %rcx
leaq (%rax,%rcx,4), %rdi
movl $0x1, %esi
callq 0x35a0
movq %rax, -0x7b0(%rbp)
jmp 0x2df9
movq -0x7b8(%rbp), %rax
movq -0x7b0(%rbp), %rcx
movslq (%rcx), %rcx
leaq (%rcx,%rcx,2), %rcx
leaq (%rax,%rcx,8), %rsi
leaq -0x4e0(%rbp), %rdi
callq 0x9ea0
jmp 0x2e20
movq -0x490(%rbp), %rax
movq %rax, -0x7c8(%rbp)
movq -0x488(%rbp), %rax
movslq -0x4ac(%rbp), %rcx
leaq (%rcx,%rcx,2), %rcx
leaq (%rax,%rcx,4), %rdi
movl $0x2, %esi
callq 0x35a0
movq %rax, -0x7c0(%rbp)
jmp 0x2e57
movq -0x7c8(%rbp), %rax
movq -0x7c0(%rbp), %rcx
movslq (%rcx), %rcx
leaq (%rcx,%rcx,2), %rcx
leaq (%rax,%rcx,8), %rsi
leaq -0x4f8(%rbp), %rdi
callq 0x9ea0
jmp 0x2e7e
leaq -0x5b0(%rbp), %rdi
movsd 0x825b(%rip), %xmm0     # 0xb0e8
movsd 0x825b(%rip), %xmm1     # 0xb0f0
movsd 0x825b(%rip), %xmm2     # 0xb0f8
callq 0x3540
jmp 0x2ea4
leaq -0x598(%rbp), %rdi
leaq -0x4c8(%rbp), %rsi
leaq -0x5b0(%rbp), %rdx
callq 0x9ee0
jmp 0x2ec0
leaq -0x5e0(%rbp), %rdi
movsd 0x8219(%rip), %xmm0     # 0xb0e8
movsd 0x8219(%rip), %xmm1     # 0xb0f0
movsd 0x8219(%rip), %xmm2     # 0xb0f8
callq 0x3540
jmp 0x2ee6
leaq -0x5c8(%rbp), %rdi
leaq -0x4e0(%rbp), %rsi
leaq -0x5e0(%rbp), %rdx
callq 0x9ee0
jmp 0x2f02
leaq -0x610(%rbp), %rdi
movsd 0x81d7(%rip), %xmm0     # 0xb0e8
movsd 0x81d7(%rip), %xmm1     # 0xb0f0
movsd 0x81d7(%rip), %xmm2     # 0xb0f8
callq 0x3540
jmp 0x2f28
leaq -0x5f8(%rbp), %rdi
leaq -0x4f8(%rbp), %rsi
leaq -0x610(%rbp), %rdx
callq 0x9ee0
jmp 0x2f44
leaq -0x628(%rbp), %rdi
xorps %xmm2, %xmm2
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x3540
jmp 0x2f5b
leaq -0x640(%rbp), %rdi
xorps %xmm1, %xmm1
movsd 0x809b(%rip), %xmm2     # 0xb008
movaps %xmm1, %xmm0
callq 0x3540
jmp 0x2f77
movq %rsp, %rax
leaq -0x640(%rbp), %rcx
movq %rcx, (%rax)
leaq -0x580(%rbp), %rdi
leaq -0x598(%rbp), %rsi
leaq -0x5c8(%rbp), %rdx
leaq -0x5f8(%rbp), %rcx
xorl %r8d, %r8d
leaq -0x628(%rbp), %r9
callq 0x8650
jmp 0x2fb1
movq -0x4a8(%rbp), %rdi
movslq -0x4ac(%rbp), %rcx
movq %rcx, %rax
shlq $0x7, %rax
leaq (%rax,%rcx,8), %rax
addq %rax, %rdi
leaq -0x580(%rbp), %rsi
callq 0x3620
jmp 0x2fdb
leaq -0x580(%rbp), %rdi
callq 0x3580
movl -0x4ac(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4ac(%rbp)
jmp 0x2d55
movq -0x6b0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
movl $0x70, %esi
callq 0x2110
jmp 0x33b7
movq -0x6c0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
movl $0x70, %esi
callq 0x2110
jmp 0x33b7
movq -0x6d0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
movl $0x70, %esi
callq 0x2110
jmp 0x33b7
movq -0x6e0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
movl $0x70, %esi
callq 0x2110
jmp 0x33b7
movq -0x6f0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
movl $0x70, %esi
callq 0x2110
jmp 0x33b7
movq -0x700(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
movl $0x70, %esi
callq 0x2110
jmp 0x33b7
movq -0x710(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
movl $0x88, %esi
callq 0x2110
jmp 0x33b7
movq -0x720(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
movl $0x88, %esi
callq 0x2110
jmp 0x33b7
movq -0x730(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
movl $0x60, %esi
callq 0x2110
jmp 0x33b7
movq -0x740(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
movl $0x60, %esi
callq 0x2110
jmp 0x33b7
movq -0x750(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
movl $0x78, %esi
callq 0x2110
jmp 0x33b7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x33ab
movq -0x780(%rbp), %rcx
movq %rax, %rsi
movq -0x798(%rbp), %rax
movq %rsi, -0x28(%rbp)
movl %edx, -0x2c(%rbp)
cmpq %rax, %rcx
movq %rax, -0x7d0(%rbp)
je 0x31da
movq -0x7d0(%rbp), %rdi
addq $-0x88, %rdi
movq %rdi, -0x7d8(%rbp)
callq 0x3580
movq -0x780(%rbp), %rcx
movq -0x7d8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x7d0(%rbp)
jne 0x31a6
movq -0x770(%rbp), %rsi
movq -0x768(%rbp), %rdi
callq 0x21e0
jmp 0x33ab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x580(%rbp), %rdi
callq 0x3580
jmp 0x33ab
movl $0x70, %edi
callq 0x2100
movq %rax, -0x7e0(%rbp)
jmp 0x3222
leaq -0x660(%rbp), %rdi
movsd 0x7e8f(%rip), %xmm0     # 0xb0c0
xorps %xmm1, %xmm1
movsd 0x7e8c(%rip), %xmm2     # 0xb0c8
callq 0x3540
jmp 0x3243
leaq -0x678(%rbp), %rdi
movsd 0x7e7e(%rip), %xmm0     # 0xb0d0
movsd 0x7e7e(%rip), %xmm1     # 0xb0d8
movsd 0x7e7e(%rip), %xmm2     # 0xb0e0
callq 0x3540
jmp 0x3269
movq -0x7e0(%rbp), %rdi
leaq -0x660(%rbp), %rsi
leaq -0x678(%rbp), %rdx
callq 0x7150
jmp 0x3285
movq -0x7e0(%rbp), %rax
movq %rax, -0x648(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x7f0(%rbp)
movl $0x58, %edi
callq 0x2100
movq %rax, -0x7e8(%rbp)
jmp 0x32b1
movq -0x4a8(%rbp), %rax
movq %rax, -0x808(%rbp)
movq -0x648(%rbp), %rax
movq %rax, -0x800(%rbp)
movl -0x49c(%rbp), %eax
movl %eax, -0x7f4(%rbp)
leaq -0x690(%rbp), %rdi
xorps %xmm2, %xmm2
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x3540
jmp 0x32f0
leaq -0x6a8(%rbp), %rdi
xorps %xmm1, %xmm1
movsd 0x7d06(%rip), %xmm2     # 0xb008
movaps %xmm1, %xmm0
callq 0x3540
jmp 0x330c
movl -0x7f4(%rbp), %ecx
movq -0x800(%rbp), %rdx
movq -0x808(%rbp), %rsi
movq -0x7e8(%rbp), %rdi
movq %rsp, %rax
leaq -0x6a8(%rbp), %r8
movq %r8, (%rax)
xorl %r8d, %r8d
leaq -0x690(%rbp), %r9
callq 0x7c70
jmp 0x3345
movq -0x7e8(%rbp), %rsi
movq -0x7f0(%rbp), %rdi
callq 0x8ca0
jmp 0x335a
leaq -0x498(%rbp), %rdi
callq 0x4cc0
addq $0x810, %rsp            # imm = 0x810
popq %rbp
retq
movq -0x7e0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
movl $0x70, %esi
callq 0x2110
jmp 0x33ab
movq -0x7e8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
movl $0x58, %esi
callq 0x2110
leaq -0x498(%rbp), %rdi
callq 0x4cc0
movq -0x28(%rbp), %rdi
callq 0x21b0