// File: /workspace/github_cpp_makefile_star2_O2/Lut99[P]RayTracer/src/lib/RenderAnimation.cpp
// Function: RayTracer::RenderAnimation::from_json(nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer>)
RenderAnimation* RenderAnimation::from_json(json json_obj) {
    // Check if the object has an object type
    if (!json_obj.is_object()) {
        throw InvalidObjectFormat("RenderAnimation", json::object().type_name(), json_obj.type_name());
    }

    // Check if the required type field exists and is an array
    if (json_obj["type"].is_null()) {
        throw MissingFieldException("RenderAnimation", "type");
    }
    
    // Parse the raw type
    RenderAnimationType type;
    try {
        type = (RenderAnimationType) json_obj["type"].get<unsigned long>();
    } catch (nlohmann::detail::type_error&) {
        throw InvalidFieldFormat("RenderAnimation", "type", "unsigned long", json_obj["type"].type_name());
    }

    // Decide how to parse the rest of the JSON
    if (true) {
        throw UnknownSubtypeException("RenderAnimation", type);
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x158, %rsp            # imm = 0x158
movq %rdi, %r15
cmpb $0x1, (%rdi)
jne 0x87698
leaq 0x9ebd(%rip), %rsi      # 0x914cf
movq %r15, %rdi
callq 0x56e34
cmpb $0x0, (%rax)
jne 0x87748
pushq $0x68
popq %rdi
callq 0x52220
movq %rax, %rbx
leaq 0xb7c6(%rip), %rsi      # 0x92dfb
leaq 0xd8(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x56548
leaq 0x9e81(%rip), %rsi      # 0x914cf
leaq 0xb8(%rsp), %rdi
leaq 0x5(%rsp), %rdx
callq 0x56548
movb $0x1, %bpl
leaq 0xd8(%rsp), %rsi
leaq 0xb8(%rsp), %rdx
movq %rbx, %rdi
callq 0x80690
xorl %ebp, %ebp
leaq 0x29f84(%rip), %rsi     # 0xb1608
leaq -0x6f2b(%rip), %rdx     # 0x80760
movq %rbx, %rdi
callq 0x52760
jmp 0x8790c
movl $0x88, %edi
callq 0x52220
movq %rax, %rbx
leaq 0xb74f(%rip), %rsi      # 0x92dfb
leaq 0x138(%rsp), %rdi
leaq 0x5(%rsp), %rdx
callq 0x56548
leaq 0x8(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x8067c
leaq 0x8(%rsp), %rdi
callq 0x6f406
leaq 0x118(%rsp), %rdi
leaq 0x7(%rsp), %rdx
movq %rax, %rsi
callq 0x56548
movq %r15, %rdi
callq 0x6f406
leaq 0xf8(%rsp), %rdi
leaq 0x6(%rsp), %rdx
movq %rax, %rsi
callq 0x56548
movb $0x1, %bpl
leaq 0x138(%rsp), %rsi
leaq 0x118(%rsp), %rdx
leaq 0xf8(%rsp), %rcx
movq %rbx, %rdi
callq 0x7f052
xorl %ebp, %ebp
leaq 0x29d84(%rip), %rsi     # 0xb14b8
leaq -0x8595(%rip), %rdx     # 0x7f1a6
movq %rbx, %rdi
callq 0x52760
jmp 0x8790c
leaq 0x9d80(%rip), %rsi      # 0x914cf
movq %r15, %rdi
callq 0x56e34
movq %rax, %rdi
callq 0x80780
movq %rax, %r14
pushq $0x50
popq %rdi
callq 0x52220
movq %rax, %rbx
leaq 0xb687(%rip), %rsi      # 0x92dfb
leaq 0x18(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x56548
movl %r14d, %edx
movb $0x1, %bpl
leaq 0x18(%rsp), %rsi
movq %rbx, %rdi
callq 0x809b2
xorl %ebp, %ebp
leaq 0x29e99(%rip), %rsi     # 0xb1638
leaq -0x8480(%rip), %rdx     # 0x7f326
movq %rbx, %rdi
callq 0x52760
jmp 0x8790c
movq %rax, %r14
leaq 0x18(%rsp), %rdi
jmp 0x8782b
movq %rax, %r14
leaq 0xf8(%rsp), %rdi
callq 0x52888
jmp 0x877da
jmp 0x87975
movq %rax, %r14
movb $0x1, %bpl
leaq 0x118(%rsp), %rdi
callq 0x52888
jmp 0x87801
movq %rax, %r14
leaq 0xb8(%rsp), %rdi
callq 0x52888
jmp 0x87813
movq %rax, %r14
movb $0x1, %bpl
leaq 0x8(%rsp), %rdi
callq 0x56fca
jmp 0x87823
movq %rax, %r14
movb $0x1, %bpl
leaq 0xd8(%rsp), %rdi
jmp 0x8782b
movq %rax, %r14
movb $0x1, %bpl
leaq 0x138(%rsp), %rdi
callq 0x52888
testb %bpl, %bpl
jne 0x87978
jmp 0x87980
jmp 0x87975
movq %rax, %r14
cmpl $0x1, %edx
jne 0x87980
movq %r14, %rdi
callq 0x521b0
movl $0xa8, %edi
callq 0x52220
movq %rax, %rbx
leaq 0xb590(%rip), %rsi      # 0x92dfb
leaq 0x98(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x56548
leaq 0x9c4b(%rip), %rsi      # 0x914cf
leaq 0x78(%rsp), %rdi
leaq 0x5(%rsp), %rdx
callq 0x56548
leaq 0xad3b(%rip), %rsi      # 0x925d5
leaq 0x58(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x56548
leaq 0x9c1f(%rip), %rsi      # 0x914cf
movq %r15, %rdi
callq 0x56e34
movq %rax, %rdi
callq 0x6f406
leaq 0x38(%rsp), %rdi
leaq 0x6(%rsp), %rdx
movq %rax, %rsi
callq 0x56548
movb $0x1, %bpl
leaq 0x98(%rsp), %rsi
leaq 0x78(%rsp), %rdx
leaq 0x58(%rsp), %rcx
leaq 0x38(%rsp), %r8
movq %rbx, %rdi
callq 0x8079c
xorl %ebp, %ebp
leaq 0x29d23(%rip), %rsi     # 0xb1620
leaq -0x6f76(%rip), %rdx     # 0x8098e
movq %rbx, %rdi
callq 0x52760
movq %rax, %r14
leaq 0x38(%rsp), %rdi
callq 0x52888
jmp 0x87923
jmp 0x8791d
movq %rax, %r14
movb $0x1, %bpl
leaq 0x58(%rsp), %rdi
callq 0x52888
jmp 0x87935
movq %rax, %r14
movb $0x1, %bpl
leaq 0x78(%rsp), %rdi
callq 0x52888
jmp 0x87947
movq %rax, %r14
movb $0x1, %bpl
leaq 0x98(%rsp), %rdi
callq 0x52888
testb %bpl, %bpl
jne 0x8795e
jmp 0x87966
movq %rax, %r14
movq %rbx, %rdi
callq 0x52350
callq 0x52720
jmp 0x87980
movq %rax, %rdi
callq 0x56ca4
movq %rax, %r14
movq %rbx, %rdi
callq 0x52350
movq %r14, %rdi
callq 0x527a0