// File: jimmiebergmann[P]fbx-file/fbx.cpp
// Function: Fbx::(anonymous namespace)::PropertyReader::readRaw(unsigned char) const
size_t readRaw(uint8_t code) const
            {
                uint32_t size;
                m_file.read(reinterpret_cast<char*>(&size), 4);
                if (size == 0)
                {
                    if (code == 'S')
                    {
                        m_pRecord->properties().insert(new Property(std::string("")));
                    }
                    return 4;
                }

                std::unique_ptr<uint8_t[]> data(new uint8_t[size]);
                m_file.read(reinterpret_cast<char*>(data.get()), size);

                switch (code)
                {
                case 'S': m_pRecord->properties().insert(new Property(std::string(data.get(), data.get() + size))); break;
                case 'R': m_pRecord->properties().insert(new Property(data.get(), size)); break;
                default: throw std::runtime_error("Unkown raw property type:" + code); break;
                }

                return size + 4;
            }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x130, %rsp            # imm = 0x130
movb %sil, %al
movq %rdi, -0x10(%rbp)
movb %al, -0x11(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq (%rax), %rdi
leaq -0x18(%rbp), %rsi
movl $0x4, %edx
callq 0x33b0
cmpl $0x0, -0x18(%rbp)
jne 0x22de0
movzbl -0x11(%rbp), %eax
cmpl $0x53, %eax
jne 0x22dd3
movq -0xa0(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x25fd0
movq %rax, -0xb8(%rbp)
movl $0x40, %edi
callq 0x3310
movq %rax, -0xb0(%rbp)
movb $0x1, -0x4d(%rbp)
leaq -0x39(%rbp), %rdi
movq %rdi, -0xa8(%rbp)
callq 0x3570
movq -0xa8(%rbp), %rdx
leaq 0x13451(%rip), %rsi     # 0x36183
leaq -0x38(%rbp), %rdi
callq 0x3420
jmp 0x22d3d
movq -0xb0(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x20ea0
jmp 0x22d4f
movq -0xb0(%rbp), %rsi
movq -0xb8(%rbp), %rdi
movb $0x0, -0x4d(%rbp)
callq 0x216d0
movq %rax, -0xc0(%rbp)
jmp 0x22d6f
movq -0xc0(%rbp), %rax
movq %rax, -0x58(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x31c0
leaq -0x39(%rbp), %rdi
callq 0x3340
jmp 0x22dd3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x22db1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x31c0
leaq -0x39(%rbp), %rdi
callq 0x3340
testb $0x1, -0x4d(%rbp)
jne 0x22dc2
jmp 0x22dce
movq -0xb0(%rbp), %rdi
callq 0x32e0
jmp 0x230c0
movq $0x4, -0x8(%rbp)
jmp 0x230b3
movl -0x18(%rbp), %eax
movl %eax, %edi
callq 0x3030
movq %rax, %rsi
leaq -0x60(%rbp), %rdi
movq %rdi, -0xd0(%rbp)
callq 0x2a470
movq -0xa0(%rbp), %rax
movq -0xd0(%rbp), %rdi
movq (%rax), %rax
movq %rax, -0xc8(%rbp)
callq 0x2a4a0
movq -0xc8(%rbp), %rdi
movq %rax, %rsi
movl -0x18(%rbp), %eax
movl %eax, %edx
callq 0x33b0
jmp 0x22e30
movzbl -0x11(%rbp), %eax
movl %eax, -0xd4(%rbp)
subl $0x52, %eax
je 0x22fa2
jmp 0x22e45
movl -0xd4(%rbp), %eax
subl $0x53, %eax
je 0x22e66
jmp 0x2302f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x230a8
movq -0xa0(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x25fd0
movq %rax, -0xe8(%rbp)
movl $0x40, %edi
callq 0x3310
movq %rax, -0xe0(%rbp)
jmp 0x22e90
movb $0x1, -0x82(%rbp)
leaq -0x60(%rbp), %rdi
movq %rdi, -0x108(%rbp)
callq 0x2a4a0
movq -0x108(%rbp), %rdi
movq %rax, -0x100(%rbp)
callq 0x2a4a0
movl -0x18(%rbp), %ecx
addq %rcx, %rax
movq %rax, -0xf8(%rbp)
leaq -0x81(%rbp), %rdi
movq %rdi, -0xf0(%rbp)
callq 0x3570
movq -0x100(%rbp), %rsi
movq -0xf8(%rbp), %rdx
movq -0xf0(%rbp), %rcx
leaq -0x80(%rbp), %rdi
callq 0x2a4d0
jmp 0x22efa
movq -0xe0(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x20ea0
jmp 0x22f0c
movq -0xe0(%rbp), %rsi
movq -0xe8(%rbp), %rdi
movb $0x0, -0x82(%rbp)
callq 0x216d0
movq %rax, -0x110(%rbp)
jmp 0x22f2f
movq -0x110(%rbp), %rax
movq %rax, -0x90(%rbp)
leaq -0x80(%rbp), %rdi
callq 0x31c0
leaq -0x81(%rbp), %rdi
callq 0x3340
jmp 0x23091
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x22f7a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x80(%rbp), %rdi
callq 0x31c0
leaq -0x81(%rbp), %rdi
callq 0x3340
testb $0x1, -0x82(%rbp)
jne 0x22f91
jmp 0x22f9d
movq -0xe0(%rbp), %rdi
callq 0x32e0
jmp 0x230a8
movq -0xa0(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x25fd0
movq %rax, -0x120(%rbp)
movl $0x40, %edi
callq 0x3310
movq %rax, -0x118(%rbp)
jmp 0x22fcc
leaq -0x60(%rbp), %rdi
callq 0x2a4a0
movq -0x118(%rbp), %rdi
movq %rax, %rsi
movl -0x18(%rbp), %edx
callq 0x20f70
jmp 0x22fe9
movq -0x118(%rbp), %rsi
movq -0x120(%rbp), %rdi
callq 0x216d0
movq %rax, -0x128(%rbp)
jmp 0x23005
movq -0x128(%rbp), %rax
movq %rax, -0x98(%rbp)
jmp 0x23091
movq -0x118(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
callq 0x32e0
jmp 0x230a8
movl $0x10, %edi
callq 0x3160
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x130(%rbp)
movzbl -0x11(%rbp), %eax
leaq 0x13f61(%rip), %rsi     # 0x36fb2
addq %rax, %rsi
callq 0x3100
jmp 0x2305b
movq -0x130(%rbp), %rdi
movq 0x21f87(%rip), %rsi     # 0x44ff0
movq 0x21f58(%rip), %rdx     # 0x44fc8
callq 0x3520
jmp 0x230c9
movq -0x130(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
callq 0x3230
jmp 0x230a8
movl -0x18(%rbp), %eax
addl $0x4, %eax
movl %eax, %eax
movq %rax, -0x8(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x2a540
jmp 0x230b3
leaq -0x60(%rbp), %rdi
callq 0x2a540
jmp 0x230c0
movq -0x8(%rbp), %rax
addq $0x130, %rsp            # imm = 0x130
popq %rbp
retq
movq -0x48(%rbp), %rdi
callq 0x3560
nopl (%rax)