// File: jimmiebergmann[P]fbx-file/fbx.cpp
// Function: Fbx::Property::string[abi:cxx11]() const
std::string Property::string() const
    {
        switch (m_type)
        {
            case Type::Boolean: return m_primitive.boolean ? "true" : "false";
            case Type::Integer16: return std::to_string(m_primitive.integer16);
            case Type::Integer32: return std::to_string(m_primitive.integer32);
            case Type::Integer64: return std::to_string(m_primitive.integer64);
            case Type::Float32: return std::to_string(m_primitive.float32);
            case Type::Float64: return std::to_string(m_primitive.float64);
            case Type::BooleanArray: return "array(boolean)";
            case Type::Integer32Array: return "array(integer32)";
            case Type::Integer64Array: return "array(integer64)";
            case Type::Float32Array: return "array(float32)";
            case Type::Float64Array: return "array(float64)";
            case Type::String:
            case Type::Raw: return std::string(m_raw.begin(), m_raw.end());
            default: break;
        }

        return "";
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
movq %rdi, -0x68(%rbp)
movq %rdi, %rax
movq %rax, -0x60(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x58(%rbp)
movl (%rax), %eax
movq %rax, -0x50(%rbp)
subq $0xc, %rax
ja 0x214b4
movq -0x50(%rbp), %rax
leaq 0x15a0b(%rip), %rcx     # 0x36bdc
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x58(%rbp), %rax
movb 0x8(%rax), %dl
leaq 0x15bf1(%rip), %rcx     # 0x36dd9
leaq 0x15bef(%rip), %rax     # 0x36dde
testb $0x1, %dl
cmovneq %rcx, %rax
movq %rax, -0x78(%rbp)
leaq -0x11(%rbp), %rdi
movq %rdi, -0x70(%rbp)
callq 0x3570
movq -0x68(%rbp), %rdi
movq -0x78(%rbp), %rsi
movq -0x70(%rbp), %rdx
callq 0x3420
jmp 0x2121a
leaq -0x11(%rbp), %rdi
callq 0x3340
jmp 0x21501
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x11(%rbp), %rdi
callq 0x3340
jmp 0x2150e
movq -0x68(%rbp), %rdi
movq -0x58(%rbp), %rax
movswl 0x8(%rax), %esi
callq 0x28060
jmp 0x21501
movq -0x68(%rbp), %rdi
movq -0x58(%rbp), %rax
movl 0x8(%rax), %esi
callq 0x28060
jmp 0x21501
movq -0x68(%rbp), %rdi
movq -0x58(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x28180
jmp 0x21501
movq -0x68(%rbp), %rdi
movq -0x58(%rbp), %rax
movss 0x8(%rax), %xmm0
callq 0x282b0
jmp 0x21501
movq -0x68(%rbp), %rdi
movq -0x58(%rbp), %rax
movsd 0x8(%rax), %xmm0
callq 0x28300
jmp 0x21501
leaq -0x25(%rbp), %rdi
movq %rdi, -0x80(%rbp)
callq 0x3570
movq -0x68(%rbp), %rdi
movq -0x80(%rbp), %rdx
leaq 0x15b17(%rip), %rsi     # 0x36de4
callq 0x3420
jmp 0x212d4
leaq -0x25(%rbp), %rdi
callq 0x3340
jmp 0x21501
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x25(%rbp), %rdi
callq 0x3340
jmp 0x2150e
leaq -0x26(%rbp), %rdi
movq %rdi, -0x88(%rbp)
callq 0x3570
movq -0x68(%rbp), %rdi
movq -0x88(%rbp), %rdx
leaq 0x15ad5(%rip), %rsi     # 0x36df3
callq 0x3420
jmp 0x21325
leaq -0x26(%rbp), %rdi
callq 0x3340
jmp 0x21501
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x26(%rbp), %rdi
callq 0x3340
jmp 0x2150e
leaq -0x27(%rbp), %rdi
movq %rdi, -0x90(%rbp)
callq 0x3570
movq -0x68(%rbp), %rdi
movq -0x90(%rbp), %rdx
leaq 0x15a95(%rip), %rsi     # 0x36e04
callq 0x3420
jmp 0x21376
leaq -0x27(%rbp), %rdi
callq 0x3340
jmp 0x21501
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x27(%rbp), %rdi
callq 0x3340
jmp 0x2150e
leaq -0x28(%rbp), %rdi
movq %rdi, -0x98(%rbp)
callq 0x3570
movq -0x68(%rbp), %rdi
movq -0x98(%rbp), %rdx
leaq 0x15a55(%rip), %rsi     # 0x36e15
callq 0x3420
jmp 0x213c7
leaq -0x28(%rbp), %rdi
callq 0x3340
jmp 0x21501
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x3340
jmp 0x2150e
leaq -0x29(%rbp), %rdi
movq %rdi, -0xa0(%rbp)
callq 0x3570
movq -0x68(%rbp), %rdi
movq -0xa0(%rbp), %rdx
leaq 0x15a13(%rip), %rsi     # 0x36e24
callq 0x3420
jmp 0x21418
leaq -0x29(%rbp), %rdi
callq 0x3340
jmp 0x21501
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x29(%rbp), %rdi
callq 0x3340
jmp 0x2150e
movq -0x58(%rbp), %rdi
addq $0x28, %rdi
movq %rdi, -0xb0(%rbp)
callq 0x28350
movq -0xb0(%rbp), %rdi
movq %rax, -0x38(%rbp)
callq 0x28380
movq %rax, -0x40(%rbp)
leaq -0x41(%rbp), %rdi
movq %rdi, -0xa8(%rbp)
callq 0x3570
movq -0x68(%rbp), %rdi
movq -0xa8(%rbp), %rcx
movq -0x38(%rbp), %rsi
movq -0x40(%rbp), %rdx
callq 0x283b0
jmp 0x21492
leaq -0x41(%rbp), %rdi
callq 0x3340
jmp 0x21501
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x41(%rbp), %rdi
callq 0x3340
jmp 0x2150e
jmp 0x214b6
leaq -0x42(%rbp), %rdi
movq %rdi, -0xb8(%rbp)
callq 0x3570
movq -0x68(%rbp), %rdi
movq -0xb8(%rbp), %rdx
leaq 0x14cab(%rip), %rsi     # 0x36183
callq 0x3420
jmp 0x214df
leaq -0x42(%rbp), %rdi
callq 0x3340
jmp 0x21501
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x42(%rbp), %rdi
callq 0x3340
jmp 0x2150e
movq -0x60(%rbp), %rax
addq $0xc0, %rsp
popq %rbp
retq
movq -0x20(%rbp), %rdi
callq 0x3560
nopw (%rax,%rax)