// File: /workspace/github_cpp_makefile_star2_O2/IsaacLaw12[P]RayTracer/./src/Scene.cpp
// Function: Scene::edit_camera(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void Scene::edit_camera(std::string driver_line){
    std::string eye = "eye";
    std::string look = "look";
    std::string up = "up";
    std::string focal_length = "d";
    std::string bounds = "bounds";
    std::string res = "res";
    std::string frames = "frames";
    std::string start_frame = "start_frame";
    std::string recursion = "recursionLevel";
    std::string focus_blur = "focus_blur";
    std::string anti_alias = "anti_alias";
    std::stringstream d_line(driver_line);

    std::string line_type;
    d_line >> line_type;
    double d1, d2, d3, d4;
    if (!driver_line.compare(0, eye.size(), eye)){
        d_line >> d1 >> d2 >> d3;
        scene_camera.set_eye(d1, d2, d3);
    }else if(!driver_line.compare(0, look.size(), look)){
        d_line >> d1 >> d2 >> d3;
        scene_camera.set_look(d1, d2, d3);
    }else if (!driver_line.compare(0, up.size(), up)){
        d_line >> d1 >> d2 >> d3;
        scene_camera.set_up(d1, d2, d3);
    }else if(!driver_line.compare(0, focal_length.size(), focal_length)){
        d_line >> d1;
        scene_camera.set_focal_length(d1);
    }else if(!driver_line.compare(0, bounds.size(), bounds)){
        d_line >> d1 >> d2 >> d3 >> d4;
        scene_camera.set_bounds(d1,d2,d3,d4);
    }else if(!driver_line.compare(0, res.size(), res)){
        d_line >> d1 >> d2;
        scene_camera.set_resolution(d1, d2);
        destination_image.set_dimensions(d1, d2);
    }else if(!driver_line.compare(0, focus_blur.size(), focus_blur)){
        d_line >> d1 >> d2 >> d3;
        destination_image.set_focus_blur(d1, d2, d3);
    }else if(!driver_line.compare(0, anti_alias.size(), anti_alias)){
        d_line >> d1;
        scene_camera.set_anti_alias(d1);
        destination_image.set_anti_alias(d1);
    }else if(!driver_line.compare(0, recursion.size(), recursion)){
        d_line >> recursion_level;
    }else if(!driver_line.compare(0, frames.size(), frames)) {
        d_line >> number_frames;
        if (number_frames < 1){
            number_frames = 1;
        }
    }else if(!driver_line.compare(0, start_frame.size(), start_frame)) {
        d_line >> current_frame;
    }
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x328, %rsp            # imm = 0x328
movq %rsi, %r14
movq %rdi, %rbx
leaq 0xa783(%rip), %rsi      # 0x1b13e
leaq 0x180(%rsp), %rdi
leaq 0x1a0(%rsp), %rdx
callq 0x61f6
leaq 0xa76b(%rip), %rsi      # 0x1b142
leaq 0x160(%rsp), %rdi
leaq 0x1a0(%rsp), %rdx
callq 0x61f6
leaq 0xa754(%rip), %rsi      # 0x1b147
leaq 0x140(%rsp), %rdi
leaq 0x1a0(%rsp), %rdx
callq 0x61f6
leaq 0x8491(%rip), %rsi      # 0x18ea0
leaq 0x120(%rsp), %rdi
leaq 0x1a0(%rsp), %rdx
callq 0x61f6
leaq 0xa71f(%rip), %rsi      # 0x1b14a
leaq 0x100(%rsp), %rdi
leaq 0x1a0(%rsp), %rdx
callq 0x61f6
leaq 0xa70a(%rip), %rsi      # 0x1b151
leaq 0xe0(%rsp), %rdi
leaq 0x1a0(%rsp), %rdx
callq 0x61f6
leaq 0xa6f2(%rip), %rsi      # 0x1b155
leaq 0xc0(%rsp), %rdi
leaq 0x1a0(%rsp), %rdx
callq 0x61f6
leaq 0xa6dd(%rip), %rsi      # 0x1b15c
leaq 0xa0(%rsp), %rdi
leaq 0x1a0(%rsp), %rdx
callq 0x61f6
leaq 0xa6cd(%rip), %rsi      # 0x1b168
leaq 0x80(%rsp), %rdi
leaq 0x1a0(%rsp), %rdx
callq 0x61f6
leaq 0xa6c0(%rip), %rsi      # 0x1b177
leaq 0x60(%rsp), %rdi
leaq 0x1a0(%rsp), %rdx
callq 0x61f6
leaq 0xa6b2(%rip), %rsi      # 0x1b182
leaq 0x40(%rsp), %rdi
leaq 0x1a0(%rsp), %rdx
callq 0x61f6
leaq 0x1a0(%rsp), %rdi
pushq $0x18
popq %rdx
movq %r14, %rsi
callq 0x33e0
leaq 0x30(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x1a0(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x3320
leaq 0x180(%rsp), %rcx
movq 0x8(%rcx), %rdx
movq %r14, %rdi
xorl %esi, %esi
callq 0x3340
testl %eax, %eax
je 0x10c66
leaq 0x160(%rsp), %rcx
movq 0x8(%rcx), %rdx
movq %r14, %rdi
xorl %esi, %esi
callq 0x3340
testl %eax, %eax
je 0x10cb2
leaq 0x140(%rsp), %rcx
movq 0x8(%rcx), %rdx
movq %r14, %rdi
xorl %esi, %esi
callq 0x3340
testl %eax, %eax
je 0x10cfe
leaq 0x120(%rsp), %rcx
movq 0x8(%rcx), %rdx
movq %r14, %rdi
xorl %esi, %esi
callq 0x3340
testl %eax, %eax
je 0x10d4a
leaq 0x100(%rsp), %rcx
movq 0x8(%rcx), %rdx
movq %r14, %rdi
xorl %esi, %esi
callq 0x3340
testl %eax, %eax
je 0x10d70
leaq 0xe0(%rsp), %rcx
movq 0x8(%rcx), %rdx
movq %r14, %rdi
xorl %esi, %esi
callq 0x3340
testl %eax, %eax
je 0x10dcf
leaq 0x60(%rsp), %rcx
movq 0x8(%rcx), %rdx
movq %r14, %rdi
xorl %esi, %esi
callq 0x3340
testl %eax, %eax
je 0x10e1f
leaq 0x40(%rsp), %rcx
movq 0x8(%rcx), %rdx
movq %r14, %rdi
xorl %esi, %esi
callq 0x3340
testl %eax, %eax
je 0x10e6b
leaq 0x80(%rsp), %rcx
movq 0x8(%rcx), %rdx
movq %r14, %rdi
xorl %esi, %esi
callq 0x3340
testl %eax, %eax
je 0x10e9f
leaq 0xc0(%rsp), %rcx
movq 0x8(%rcx), %rdx
movq %r14, %rdi
xorl %esi, %esi
callq 0x3340
testl %eax, %eax
je 0x10eb9
leaq 0xa0(%rsp), %rcx
movq 0x8(%rcx), %rdx
movq %r14, %rdi
xorl %esi, %esi
callq 0x3340
testl %eax, %eax
jne 0x10edb
movl $0x234, %eax            # imm = 0x234
jmp 0x10ea4
leaq 0x1a0(%rsp), %rdi
movq %rsp, %rsi
callq 0x31b0
leaq 0x8(%rsp), %rsi
movq %rax, %rdi
callq 0x31b0
leaq 0x10(%rsp), %rsi
movq %rax, %rdi
callq 0x31b0
addq $0x20, %rbx
movsd (%rsp), %xmm0
movsd 0x8(%rsp), %xmm1
movsd 0x10(%rsp), %xmm2
movq %rbx, %rdi
callq 0x4fbc
jmp 0x10edb
leaq 0x1a0(%rsp), %rdi
movq %rsp, %rsi
callq 0x31b0
leaq 0x8(%rsp), %rsi
movq %rax, %rdi
callq 0x31b0
leaq 0x10(%rsp), %rsi
movq %rax, %rdi
callq 0x31b0
addq $0x20, %rbx
movsd (%rsp), %xmm0
movsd 0x8(%rsp), %xmm1
movsd 0x10(%rsp), %xmm2
movq %rbx, %rdi
callq 0x4fe0
jmp 0x10edb
leaq 0x1a0(%rsp), %rdi
movq %rsp, %rsi
callq 0x31b0
leaq 0x8(%rsp), %rsi
movq %rax, %rdi
callq 0x31b0
leaq 0x10(%rsp), %rsi
movq %rax, %rdi
callq 0x31b0
addq $0x20, %rbx
movsd (%rsp), %xmm0
movsd 0x8(%rsp), %xmm1
movsd 0x10(%rsp), %xmm2
movq %rbx, %rdi
callq 0x5004
jmp 0x10edb
leaq 0x1a0(%rsp), %rdi
movq %rsp, %rsi
callq 0x31b0
addq $0x20, %rbx
movsd (%rsp), %xmm0
movq %rbx, %rdi
callq 0x5046
jmp 0x10edb
leaq 0x1a0(%rsp), %rdi
movq %rsp, %rsi
callq 0x31b0
leaq 0x8(%rsp), %rsi
movq %rax, %rdi
callq 0x31b0
leaq 0x10(%rsp), %rsi
movq %rax, %rdi
callq 0x31b0
leaq 0x18(%rsp), %rsi
movq %rax, %rdi
callq 0x31b0
addq $0x20, %rbx
movsd (%rsp), %xmm0
movsd 0x8(%rsp), %xmm1
movsd 0x10(%rsp), %xmm2
movsd 0x18(%rsp), %xmm3
movq %rbx, %rdi
callq 0x5050
jmp 0x10edb
leaq 0x1a0(%rsp), %rdi
movq %rsp, %rsi
callq 0x31b0
leaq 0x8(%rsp), %rsi
movq %rax, %rdi
callq 0x31b0
cvttsd2si (%rsp), %esi
leaq 0x20(%rbx), %rdi
cvttsd2si 0x8(%rsp), %edx
callq 0x5072
cvttsd2si (%rsp), %esi
addq $0xe8, %rbx
cvttsd2si 0x8(%rsp), %edx
movq %rbx, %rdi
callq 0x3922
jmp 0x10edb
leaq 0x1a0(%rsp), %rdi
movq %rsp, %rsi
callq 0x31b0
leaq 0x8(%rsp), %rsi
movq %rax, %rdi
callq 0x31b0
leaq 0x10(%rsp), %rsi
movq %rax, %rdi
callq 0x31b0
addq $0xe8, %rbx
movsd (%rsp), %xmm0
movsd 0x8(%rsp), %xmm1
movsd 0x10(%rsp), %xmm2
movq %rbx, %rdi
callq 0x423e
jmp 0x10edb
leaq 0x1a0(%rsp), %rdi
movq %rsp, %rsi
callq 0x31b0
leaq 0x20(%rbx), %rdi
cvttsd2si (%rsp), %esi
callq 0x5086
addq $0xe8, %rbx
cvttsd2si (%rsp), %esi
movq %rbx, %rdi
callq 0x425c
jmp 0x10edb
movl $0x238, %eax            # imm = 0x238
addq %rax, %rbx
leaq 0x1a0(%rsp), %rdi
movq %rbx, %rsi
callq 0x3190
jmp 0x10edb
addq $0x230, %rbx            # imm = 0x230
leaq 0x1a0(%rsp), %rdi
movq %rbx, %rsi
callq 0x3190
cmpl $0x0, (%rbx)
jg 0x10edb
movl $0x1, (%rbx)
leaq 0x20(%rsp), %rdi
callq 0x3100
leaq 0x1a0(%rsp), %rdi
callq 0x3200
leaq 0x40(%rsp), %rdi
callq 0x3100
leaq 0x60(%rsp), %rdi
callq 0x3100
leaq 0x80(%rsp), %rdi
callq 0x3100
leaq 0xa0(%rsp), %rdi
callq 0x3100
leaq 0xc0(%rsp), %rdi
callq 0x3100
leaq 0xe0(%rsp), %rdi
callq 0x3100
leaq 0x100(%rsp), %rdi
callq 0x3100
leaq 0x120(%rsp), %rdi
callq 0x3100
leaq 0x140(%rsp), %rdi
callq 0x3100
leaq 0x160(%rsp), %rdi
callq 0x3100
leaq 0x180(%rsp), %rdi
callq 0x3100
addq $0x328, %rsp            # imm = 0x328
popq %rbx
popq %r14
retq
jmp 0x10fce
movq %rax, %rbx
jmp 0x10fe8
movq %rax, %rbx
jmp 0x10ff2
movq %rax, %rbx
jmp 0x10ffc
movq %rax, %rbx
jmp 0x11009
movq %rax, %rbx
jmp 0x11016
movq %rax, %rbx
jmp 0x11023
movq %rax, %rbx
jmp 0x11030
movq %rax, %rbx
jmp 0x1103d
movq %rax, %rbx
jmp 0x1104a
movq %rax, %rbx
jmp 0x11057
movq %rax, %rbx
jmp 0x11064
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x3100
leaq 0x1a0(%rsp), %rdi
callq 0x3200
leaq 0x40(%rsp), %rdi
callq 0x3100
leaq 0x60(%rsp), %rdi
callq 0x3100
leaq 0x80(%rsp), %rdi
callq 0x3100
leaq 0xa0(%rsp), %rdi
callq 0x3100
leaq 0xc0(%rsp), %rdi
callq 0x3100
leaq 0xe0(%rsp), %rdi
callq 0x3100
leaq 0x100(%rsp), %rdi
callq 0x3100
leaq 0x120(%rsp), %rdi
callq 0x3100
leaq 0x140(%rsp), %rdi
callq 0x3100
leaq 0x160(%rsp), %rdi
callq 0x3100
leaq 0x180(%rsp), %rdi
callq 0x3100
movq %rbx, %rdi
callq 0x3490
nop