// File: /workspace/github_cpp_makefile_star2_O1/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 0x177c5(%rip), %r15     # 0x1dfd0
leaq 0x10b79(%rip), %rsi     # 0x1738b
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 0x3160
leaq -0x40(%rbp), %r13
movq %r13, -0x10(%r13)
leaq 0x10b42(%rip), %rsi     # 0x17397
leaq 0x10b45(%rip), %rdx     # 0x173a1
leaq -0x50(%rbp), %rdi
callq 0xa4ce
movq 0x8(%rbx), %rsi
leaq -0x90(%rbp), %rdi
leaq -0x29(%rbp), %rdx
callq 0x6ae6
leaq -0x90(%rbp), %rdi
movss 0x107f8(%rip), %xmm0    # 0x17080
movl $0x3e8, %esi            # imm = 0x3E8
movl $0x3e8, %edx            # imm = 0x3E8
callq 0x4ebc
movq %rax, %r15
leaq -0x80(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x68b3
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x3220
movq 0x17716(%rip), %r12     # 0x1dfd0
leaq 0x10ae1(%rip), %rsi     # 0x173a2
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 0x176e3(%rip), %rdi     # 0x1dfd0
callq 0x3040
movq %rax, %rdi
callq 0x3160
movq %r15, %rdi
callq 0x7246
movq 0x176c7(%rip), %r12     # 0x1dfd0
leaq 0x10aa5(%rip), %rsi     # 0x173b5
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 0x17694(%rip), %rdi     # 0x1dfd0
callq 0x3040
movq %rax, %rdi
callq 0x3160
movq 0x17680(%rip), %r12     # 0x1dfd0
leaq 0x10a76(%rip), %rsi     # 0x173cd
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 0x1764d(%rip), %rdi     # 0x1dfd0
callq 0x3040
movq %rax, %rdi
callq 0x3160
cmpl $0x3, %r14d
jl 0x69bd
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 0xa23e
leaq -0x70(%rbp), %rsi
movq %r15, %rdi
movl $0x3e8, %edx            # imm = 0x3E8
movl $0x3e8, %ecx            # imm = 0x3E8
callq 0x73d0
movq -0x70(%rbp), %rdi
cmpq %r14, %rdi
je 0x6a04
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x3220
movq 0x175c5(%rip), %rdi     # 0x1dfd0
leaq 0x109ce(%rip), %rsi     # 0x173e0
movl $0xf, %edx
callq 0x3260
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rdx
movq 0x175a5(%rip), %rdi     # 0x1dfd0
callq 0x3260
movq %rax, %rbx
leaq 0x109a4(%rip), %rsi     # 0x173de
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 0x3160
movq -0x50(%rbp), %rdi
cmpq %r13, %rdi
je 0x6a83
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 0x6ac9
movq -0x60(%rbp), %rsi
jmp 0x6aba
movq %rax, %rbx
leaq -0x80(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6ac9
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x3220
jmp 0x6ac9
jmp 0x6ac6
movq %rax, %rbx
movq -0x50(%rbp), %rdi
cmpq %r13, %rdi
je 0x6ade
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x3220
movq %rbx, %rdi
callq 0x3450