// File: /workspace/github_cpp_makefile_star2_O3/logicx24[P]RayTracer/raytracer.cpp
// Function: main
int main(int argc, char* argv[]) {

    cout << "Ray Tracer!" << endl;

    string outFile = "output.png";

    float eps = 0.05f;
    int width = 1000;
    int height = 1000;

    Scene *scene = parseSceneFile(argv[1], eps, width, height);

    cout << "Rendering Scene..." << endl;

    scene->render();

    cout << "Scene render completed." << endl;
    cout << "Writing to file..." << endl;

    if (argc > 2) outFile = argv[2];
    scene->writeFile(outFile, width, height);

    cout << "Image saved as " << outFile << "." << endl;

	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
movq %rsi, %rbx
movl %edi, %r14d
movq 0x177b7(%rip), %r15     # 0x1dfd0
leaq 0x10b62(%rip), %rsi     # 0x17382
movl $0xb, %edx
movq %r15, %rdi
callq 0x3260
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31e0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3040
movq %rax, %rdi
callq 0x3170
leaq -0x40(%rbp), %r13
movq %r13, -0x10(%r13)
leaq 0x10b2b(%rip), %rsi     # 0x1738e
leaq 0x10b2e(%rip), %rdx     # 0x17398
leaq -0x50(%rbp), %rdi
callq 0xa0b6
movq 0x8(%rbx), %rsi
leaq -0x90(%rbp), %rdi
leaq -0x29(%rbp), %rdx
callq 0x6af4
leaq -0x90(%rbp), %rdi
movss 0x107ea(%rip), %xmm0    # 0x17080
movl $0x3e8, %esi            # imm = 0x3E8
movl $0x3e8, %edx            # imm = 0x3E8
callq 0x4eb5
movq %rax, %r15
leaq -0x80(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x68c1
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x3220
movq 0x17708(%rip), %r12     # 0x1dfd0
leaq 0x10aca(%rip), %rsi     # 0x17399
movl $0x12, %edx
movq %r12, %rdi
callq 0x3260
movq (%r12), %rax
addq -0x18(%rax), %r12
movq %r12, %rdi
movl $0xa, %esi
callq 0x31e0
movsbl %al, %esi
movq 0x176d5(%rip), %rdi     # 0x1dfd0
callq 0x3040
movq %rax, %rdi
callq 0x3170
movq %r15, %rdi
callq 0x7214
movq 0x176b9(%rip), %r12     # 0x1dfd0
leaq 0x10a8e(%rip), %rsi     # 0x173ac
movl $0x17, %edx
movq %r12, %rdi
callq 0x3260
movq (%r12), %rax
addq -0x18(%rax), %r12
movq %r12, %rdi
movl $0xa, %esi
callq 0x31e0
movsbl %al, %esi
movq 0x17686(%rip), %rdi     # 0x1dfd0
callq 0x3040
movq %rax, %rdi
callq 0x3170
movq 0x17672(%rip), %r12     # 0x1dfd0
leaq 0x10a5f(%rip), %rsi     # 0x173c4
movl $0x12, %edx
movq %r12, %rdi
callq 0x3260
movq (%r12), %rax
addq -0x18(%rax), %r12
movq %r12, %rdi
movl $0xa, %esi
callq 0x31e0
movsbl %al, %esi
movq 0x1763f(%rip), %rdi     # 0x1dfd0
callq 0x3040
movq %rax, %rdi
callq 0x3170
cmpl $0x3, %r14d
jl 0x69cb
movq 0x10(%rbx), %rbx
leaq -0x50(%rbp), %r14
movq 0x8(%r14), %r12
movq %rbx, %rdi
callq 0x3100
movq %r14, %rdi
xorl %esi, %esi
movq %r12, %rdx
movq %rbx, %rcx
movq %rax, %r8
callq 0x33a0
leaq -0x60(%rbp), %r14
movq %r14, -0x10(%r14)
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rdx
addq %rsi, %rdx
leaq -0x70(%rbp), %rdi
callq 0x9e20
leaq -0x70(%rbp), %rsi
movq %r15, %rdi
movl $0x3e8, %edx            # imm = 0x3E8
movl $0x3e8, %ecx            # imm = 0x3E8
callq 0x7390
movq -0x70(%rbp), %rdi
cmpq %r14, %rdi
je 0x6a12
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x3220
movq 0x175b7(%rip), %rdi     # 0x1dfd0
leaq 0x109b7(%rip), %rsi     # 0x173d7
movl $0xf, %edx
callq 0x3260
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rdx
movq 0x17597(%rip), %rdi     # 0x1dfd0
callq 0x3260
movq %rax, %rbx
leaq 0x1098d(%rip), %rsi     # 0x173d5
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x31e0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3040
movq %rax, %rdi
callq 0x3170
movq -0x50(%rbp), %rdi
cmpq %r13, %rdi
je 0x6a91
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x3220
xorl %eax, %eax
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq -0x70(%rbp), %rdi
cmpq %r14, %rdi
je 0x6ad7
movq -0x60(%rbp), %rsi
jmp 0x6ac8
movq %rax, %rbx
leaq -0x80(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6ad7
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x3220
jmp 0x6ad7
jmp 0x6ad4
movq %rax, %rbx
movq -0x50(%rbp), %rdi
cmpq %r13, %rdi
je 0x6aec
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x3220
movq %rbx, %rdi
callq 0x3450