// File: jimmiebergmann[P]fbx-file/miniz.c
// Function: mz_zip_reader_init_internal(mz_zip_archive*, unsigned int)
static mz_bool mz_zip_reader_init_internal(mz_zip_archive *pZip, mz_uint flags)
{
    (void)flags;
    if ((!pZip) || (pZip->m_pState) || (pZip->m_zip_mode != MZ_ZIP_MODE_INVALID))
        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);

    if (!pZip->m_pAlloc)
        pZip->m_pAlloc = miniz_def_alloc_func;
    if (!pZip->m_pFree)
        pZip->m_pFree = miniz_def_free_func;
    if (!pZip->m_pRealloc)
        pZip->m_pRealloc = miniz_def_realloc_func;

    pZip->m_archive_size = 0;
    pZip->m_central_directory_file_ofs = 0;
    pZip->m_total_files = 0;
    pZip->m_last_error = MZ_ZIP_NO_ERROR;

    if (NULL == (pZip->m_pState = (mz_zip_internal_state *)pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, sizeof(mz_zip_internal_state))))
        return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);

    memset(pZip->m_pState, 0, sizeof(mz_zip_internal_state));
    MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_central_dir, sizeof(mz_uint8));
    MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_central_dir_offsets, sizeof(mz_uint32));
    MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_sorted_central_dir_offsets, sizeof(mz_uint32));
    pZip->m_pState->m_init_flags = flags;
    pZip->m_pState->m_zip64 = MZ_FALSE;
    pZip->m_pState->m_zip64_has_extended_info_fields = MZ_FALSE;

    pZip->m_zip_mode = MZ_ZIP_MODE_READING;

    return MZ_TRUE;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x28(%rbp)
movl %esi, -0x2c(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0xbeab
movq -0x28(%rbp), %rax
cmpq $0x0, 0x68(%rax)
jne 0xbeab
movq -0x28(%rbp), %rax
cmpl $0x0, 0x14(%rax)
je 0xbed7
movq -0x28(%rbp), %rax
movq %rax, -0x8(%rbp)
movl $0x18, -0xc(%rbp)
cmpq $0x0, -0x8(%rbp)
je 0xbecb
movl -0xc(%rbp), %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x1c(%rax)
movl $0x0, -0x20(%rbp)
jmp 0xc028
movq -0x28(%rbp), %rax
cmpq $0x0, 0x28(%rax)
jne 0xbef1
movq -0x28(%rbp), %rax
leaq -0x846d(%rip), %rcx     # 0x3a80
movq %rcx, 0x28(%rax)
movq -0x28(%rbp), %rax
cmpq $0x0, 0x30(%rax)
jne 0xbf0b
movq -0x28(%rbp), %rax
leaq -0x8457(%rip), %rcx     # 0x3ab0
movq %rcx, 0x30(%rax)
movq -0x28(%rbp), %rax
cmpq $0x0, 0x38(%rax)
jne 0xbf25
movq -0x28(%rbp), %rax
leaq -0x8451(%rip), %rcx     # 0x3ad0
movq %rcx, 0x38(%rax)
movq -0x28(%rbp), %rax
movq $0x0, (%rax)
movq -0x28(%rbp), %rax
movq $0x0, 0x8(%rax)
movq -0x28(%rbp), %rax
movl $0x0, 0x10(%rax)
movq -0x28(%rbp), %rax
movl $0x0, 0x1c(%rax)
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x28(%rbp), %rcx
movq 0x40(%rcx), %rdi
movl $0x1, %esi
movl $0x98, %edx
callq *%rax
movq %rax, %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x68(%rax)
xorl %eax, %eax
cmpq %rcx, %rax
jne 0xbfa9
movq -0x28(%rbp), %rax
movq %rax, -0x18(%rbp)
movl $0x10, -0x1c(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0xbfa0
movl -0x1c(%rbp), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x1c(%rax)
movl $0x0, -0x20(%rbp)
jmp 0xc028
movq -0x28(%rbp), %rax
movq 0x68(%rax), %rdi
xorl %esi, %esi
movl $0x98, %edx
callq 0x3190
movq -0x28(%rbp), %rax
movq 0x68(%rax), %rax
movl $0x1, 0x18(%rax)
movq -0x28(%rbp), %rax
movq 0x68(%rax), %rax
movl $0x4, 0x38(%rax)
movq -0x28(%rbp), %rax
movq 0x68(%rax), %rax
movl $0x4, 0x58(%rax)
movl -0x2c(%rbp), %ecx
movq -0x28(%rbp), %rax
movq 0x68(%rax), %rax
movl %ecx, 0x60(%rax)
movq -0x28(%rbp), %rax
movq 0x68(%rax), %rax
movl $0x0, 0x64(%rax)
movq -0x28(%rbp), %rax
movq 0x68(%rax), %rax
movl $0x0, 0x68(%rax)
movq -0x28(%rbp), %rax
movl $0x1, 0x14(%rax)
movl $0x1, -0x20(%rbp)
movl -0x20(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)