// File: jimmiebergmann[P]fbx-file/fbx.cpp
// Function: unsigned long Fbx::(anonymous namespace)::PropertyReader::readCompressedArray<int>(unsigned int, unsigned int) const
size_t readCompressedArray(uint32_t arrayLength, uint32_t compressedLength) const
            {
                mz_ulong uncompressedLength = arrayLength * sizeof(T);
                std::unique_ptr<T[]> pArray(new T[arrayLength]);
                std::unique_ptr<unsigned char[]> pCmpData(new unsigned char[compressedLength]);

                m_file.read(reinterpret_cast<char*>(pCmpData.get()), compressedLength);
                if (uncompress(reinterpret_cast<unsigned char*>(pArray.get()), &uncompressedLength, pCmpData.get(), compressedLength) != Z_OK)
                {
                    throw std::runtime_error("Failed to uncompress array of record: " + m_pRecord->name());
                }

                m_pRecord->properties().insert(new Property(pArray.get(), arrayLength));
                return compressedLength + 12;
            }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl %edx, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x78(%rbp)
movl -0xc(%rbp), %eax
shlq $0x2, %rax
movq %rax, -0x18(%rbp)
movl -0xc(%rbp), %eax
movl %eax, %edi
shlq $0x2, %rdi
callq 0x3030
movq %rax, %rsi
leaq -0x20(%rbp), %rdi
callq 0x2ac30
movl -0x10(%rbp), %eax
movl %eax, %edi
callq 0x3030
movq %rax, -0x70(%rbp)
jmp 0x26dd2
movq -0x70(%rbp), %rsi
leaq -0x28(%rbp), %rdi
movq %rdi, -0x88(%rbp)
callq 0x2a470
movq -0x78(%rbp), %rax
movq -0x88(%rbp), %rdi
movq (%rax), %rax
movq %rax, -0x80(%rbp)
callq 0x2a4a0
movq -0x80(%rbp), %rdi
movq %rax, %rsi
movl -0x10(%rbp), %eax
movl %eax, %edx
callq 0x33b0
jmp 0x26e10
leaq -0x20(%rbp), %rdi
callq 0x2ac60
movq %rax, -0x98(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x2a4a0
movq -0x98(%rbp), %rdi
movq %rax, %rdx
movl -0x10(%rbp), %eax
movl %eax, %ecx
leaq -0x18(%rbp), %rsi
callq 0x7a50
movl %eax, -0x8c(%rbp)
jmp 0x26e49
movl -0x8c(%rbp), %eax
cmpl $0x0, %eax
je 0x26f25
movb $0x1, -0x59(%rbp)
movl $0x10, %edi
callq 0x3160
movq %rax, %rcx
movq -0x78(%rbp), %rax
movq %rcx, -0xa0(%rbp)
movq 0x8(%rax), %rdi
callq 0x23530
movq %rax, %rdx
leaq 0x1019b(%rip), %rsi     # 0x37022
leaq -0x58(%rbp), %rdi
callq 0x28ae0
jmp 0x26e92
movq -0xa0(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x34d0
jmp 0x26ea4
movq -0xa0(%rbp), %rdi
movb $0x0, -0x59(%rbp)
movq 0x1e13a(%rip), %rsi     # 0x44ff0
movq 0x1e10b(%rip), %rdx     # 0x44fc8
callq 0x3520
jmp 0x26ff4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x26fe2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x26fd9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x26f0c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x31c0
testb $0x1, -0x59(%rbp)
jne 0x26f14
jmp 0x26f20
movq -0xa0(%rbp), %rdi
callq 0x3230
jmp 0x26fd9
movq -0x78(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x25fd0
movq %rax, -0xb0(%rbp)
movl $0x40, %edi
callq 0x3310
movq %rax, -0xa8(%rbp)
jmp 0x26f4c
leaq -0x20(%rbp), %rdi
callq 0x2ac60
movq -0xa8(%rbp), %rdi
movq %rax, %rsi
movl -0xc(%rbp), %edx
callq 0x20b30
jmp 0x26f69
movq -0xa8(%rbp), %rsi
movq -0xb0(%rbp), %rdi
callq 0x216d0
movq %rax, -0xb8(%rbp)
jmp 0x26f85
movq -0xb8(%rbp), %rax
movq %rax, -0x68(%rbp)
movl -0x10(%rbp), %eax
addl $0xc, %eax
movl %eax, %eax
movq %rax, -0xc0(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x2a540
leaq -0x20(%rbp), %rdi
callq 0x2ac90
movq -0xc0(%rbp), %rax
addq $0xc0, %rsp
popq %rbp
retq
movq -0xa8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
callq 0x32e0
leaq -0x28(%rbp), %rdi
callq 0x2a540
leaq -0x20(%rbp), %rdi
callq 0x2ac90
movq -0x30(%rbp), %rdi
callq 0x3560
nopw %cs:(%rax,%rax)