// File: jimmiebergmann[P]fbx-file/miniz.c
// Function: mz_zip_get_error_string
const char *mz_zip_get_error_string(mz_zip_error mz_err)
{
    switch (mz_err)
    {
        case MZ_ZIP_NO_ERROR:
            return "no error";
        case MZ_ZIP_UNDEFINED_ERROR:
            return "undefined error";
        case MZ_ZIP_TOO_MANY_FILES:
            return "too many files";
        case MZ_ZIP_FILE_TOO_LARGE:
            return "file too large";
        case MZ_ZIP_UNSUPPORTED_METHOD:
            return "unsupported method";
        case MZ_ZIP_UNSUPPORTED_ENCRYPTION:
            return "unsupported encryption";
        case MZ_ZIP_UNSUPPORTED_FEATURE:
            return "unsupported feature";
        case MZ_ZIP_FAILED_FINDING_CENTRAL_DIR:
            return "failed finding central directory";
        case MZ_ZIP_NOT_AN_ARCHIVE:
            return "not a ZIP archive";
        case MZ_ZIP_INVALID_HEADER_OR_CORRUPTED:
            return "invalid header or archive is corrupted";
        case MZ_ZIP_UNSUPPORTED_MULTIDISK:
            return "unsupported multidisk archive";
        case MZ_ZIP_DECOMPRESSION_FAILED:
            return "decompression failed or archive is corrupted";
        case MZ_ZIP_COMPRESSION_FAILED:
            return "compression failed";
        case MZ_ZIP_UNEXPECTED_DECOMPRESSED_SIZE:
            return "unexpected decompressed size";
        case MZ_ZIP_CRC_CHECK_FAILED:
            return "CRC-32 check failed";
        case MZ_ZIP_UNSUPPORTED_CDIR_SIZE:
            return "unsupported central directory size";
        case MZ_ZIP_ALLOC_FAILED:
            return "allocation failed";
        case MZ_ZIP_FILE_OPEN_FAILED:
            return "file open failed";
        case MZ_ZIP_FILE_CREATE_FAILED:
            return "file create failed";
        case MZ_ZIP_FILE_WRITE_FAILED:
            return "file write failed";
        case MZ_ZIP_FILE_READ_FAILED:
            return "file read failed";
        case MZ_ZIP_FILE_CLOSE_FAILED:
            return "file close failed";
        case MZ_ZIP_FILE_SEEK_FAILED:
            return "file seek failed";
        case MZ_ZIP_FILE_STAT_FAILED:
            return "file stat failed";
        case MZ_ZIP_INVALID_PARAMETER:
            return "invalid parameter";
        case MZ_ZIP_INVALID_FILENAME:
            return "invalid filename";
        case MZ_ZIP_BUF_TOO_SMALL:
            return "buffer too small";
        case MZ_ZIP_INTERNAL_ERROR:
            return "internal error";
        case MZ_ZIP_FILE_NOT_FOUND:
            return "file not found";
        case MZ_ZIP_ARCHIVE_TOO_LARGE:
            return "archive is too large";
        case MZ_ZIP_VALIDATION_FAILED:
            return "validation failed";
        case MZ_ZIP_WRITE_CALLBACK_FAILED:
            return "write calledback failed";
        default:
            break;
    }

    return "unknown error";
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movl %edi, -0xc(%rbp)
movl -0xc(%rbp), %eax
movq %rax, -0x18(%rbp)
subq $0x1f, %rax
ja 0x1cdb1
movq -0x18(%rbp), %rax
leaq 0x18525(%rip), %rcx     # 0x350e8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x198d8(%rip), %rax     # 0x364ab
movq %rax, -0x8(%rbp)
jmp 0x1cdbe
leaq 0x198d1(%rip), %rax     # 0x364b4
movq %rax, -0x8(%rbp)
jmp 0x1cdbe
leaq 0x198d1(%rip), %rax     # 0x364c4
movq %rax, -0x8(%rbp)
jmp 0x1cdbe
leaq 0x198d0(%rip), %rax     # 0x364d3
movq %rax, -0x8(%rbp)
jmp 0x1cdbe
leaq 0x198cf(%rip), %rax     # 0x364e2
movq %rax, -0x8(%rbp)
jmp 0x1cdbe
leaq 0x198d2(%rip), %rax     # 0x364f5
movq %rax, -0x8(%rbp)
jmp 0x1cdbe
leaq 0x198d9(%rip), %rax     # 0x3650c
movq %rax, -0x8(%rbp)
jmp 0x1cdbe
leaq 0x198dd(%rip), %rax     # 0x36520
movq %rax, -0x8(%rbp)
jmp 0x1cdbe
leaq 0x198ee(%rip), %rax     # 0x36541
movq %rax, -0x8(%rbp)
jmp 0x1cdbe
leaq 0x198f0(%rip), %rax     # 0x36553
movq %rax, -0x8(%rbp)
jmp 0x1cdbe
leaq 0x19907(%rip), %rax     # 0x3657a
movq %rax, -0x8(%rbp)
jmp 0x1cdbe
leaq 0x19915(%rip), %rax     # 0x36598
movq %rax, -0x8(%rbp)
jmp 0x1cdbe
leaq 0x19932(%rip), %rax     # 0x365c5
movq %rax, -0x8(%rbp)
jmp 0x1cdbe
leaq 0x19935(%rip), %rax     # 0x365d8
movq %rax, -0x8(%rbp)
jmp 0x1cdbe
leaq 0x19942(%rip), %rax     # 0x365f5
movq %rax, -0x8(%rbp)
jmp 0x1cdbe
leaq 0x19946(%rip), %rax     # 0x36609
movq %rax, -0x8(%rbp)
jmp 0x1cdbe
leaq 0x19959(%rip), %rax     # 0x3662c
movq %rax, -0x8(%rbp)
jmp 0x1cdbe
leaq 0x1995b(%rip), %rax     # 0x3663e
movq %rax, -0x8(%rbp)
jmp 0x1cdbe
leaq 0x1995c(%rip), %rax     # 0x3664f
movq %rax, -0x8(%rbp)
jmp 0x1cdbe
leaq 0x1995f(%rip), %rax     # 0x36662
movq %rax, -0x8(%rbp)
jmp 0x1cdbe
leaq 0x19961(%rip), %rax     # 0x36674
movq %rax, -0x8(%rbp)
jmp 0x1cdbe
leaq 0x19962(%rip), %rax     # 0x36685
movq %rax, -0x8(%rbp)
jmp 0x1cdbe
leaq 0x19964(%rip), %rax     # 0x36697
movq %rax, -0x8(%rbp)
jmp 0x1cdbe
leaq 0x19965(%rip), %rax     # 0x366a8
movq %rax, -0x8(%rbp)
jmp 0x1cdbe
leaq 0x19969(%rip), %rax     # 0x366b9
movq %rax, -0x8(%rbp)
jmp 0x1cdbe
leaq 0x1996e(%rip), %rax     # 0x366cb
movq %rax, -0x8(%rbp)
jmp 0x1cdbe
leaq 0x19972(%rip), %rax     # 0x366dc
movq %rax, -0x8(%rbp)
jmp 0x1cdbe
leaq 0x19976(%rip), %rax     # 0x366ed
movq %rax, -0x8(%rbp)
jmp 0x1cdbe
leaq 0x19978(%rip), %rax     # 0x366fc
movq %rax, -0x8(%rbp)
jmp 0x1cdbe
leaq 0x1997a(%rip), %rax     # 0x3670b
movq %rax, -0x8(%rbp)
jmp 0x1cdbe
leaq 0x19982(%rip), %rax     # 0x36720
movq %rax, -0x8(%rbp)
jmp 0x1cdbe
leaq 0x19987(%rip), %rax     # 0x36732
movq %rax, -0x8(%rbp)
jmp 0x1cdbe
jmp 0x1cdb3
leaq 0x19990(%rip), %rax     # 0x3674a
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
popq %rbp
retq
nopw %cs:(%rax,%rax)