// File: jimmiebergmann[P]fbx-file/miniz.c
// Function: mz_zip_writer_create_zip64_extra_data(unsigned char*, unsigned long*, unsigned long*, unsigned long*)
static mz_uint32 mz_zip_writer_create_zip64_extra_data(mz_uint8 *pBuf, mz_uint64 *pUncomp_size, mz_uint64 *pComp_size, mz_uint64 *pLocal_header_ofs)
{
    mz_uint8 *pDst = pBuf;
    mz_uint32 field_size = 0;

    MZ_WRITE_LE16(pDst + 0, MZ_ZIP64_EXTENDED_INFORMATION_FIELD_HEADER_ID);
    MZ_WRITE_LE16(pDst + 2, 0);
    pDst += sizeof(mz_uint16) * 2;

    if (pUncomp_size)
    {
        MZ_WRITE_LE64(pDst, *pUncomp_size);
        pDst += sizeof(mz_uint64);
        field_size += sizeof(mz_uint64);
    }

    if (pComp_size)
    {
        MZ_WRITE_LE64(pDst, *pComp_size);
        pDst += sizeof(mz_uint64);
        field_size += sizeof(mz_uint64);
    }

    if (pLocal_header_ofs)
    {
        MZ_WRITE_LE64(pDst, *pLocal_header_ofs);
        pDst += sizeof(mz_uint64);
        field_size += sizeof(mz_uint64);
    }

    MZ_WRITE_LE16(pBuf + 2, field_size);

    return (mz_uint32)(pDst - pBuf);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0xc8(%rbp)
movq %rsi, -0xd0(%rbp)
movq %rdx, -0xd8(%rbp)
movq %rcx, -0xe0(%rbp)
movq -0xc8(%rbp), %rax
movq %rax, -0xe8(%rbp)
movl $0x0, -0xec(%rbp)
movq -0xe8(%rbp), %rax
movq %rax, -0x8(%rbp)
movw $0x1, -0xa(%rbp)
movw -0xa(%rbp), %ax
movb %al, %cl
movq -0x8(%rbp), %rax
movb %cl, (%rax)
movzwl -0xa(%rbp), %eax
sarl $0x8, %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movb %cl, 0x1(%rax)
movq -0xe8(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x18(%rbp)
movw $0x0, -0x1a(%rbp)
movw -0x1a(%rbp), %ax
movb %al, %cl
movq -0x18(%rbp), %rax
movb %cl, (%rax)
movzwl -0x1a(%rbp), %eax
sarl $0x8, %eax
movb %al, %cl
movq -0x18(%rbp), %rax
movb %cl, 0x1(%rax)
movq -0xe8(%rbp), %rax
addq $0x4, %rax
movq %rax, -0xe8(%rbp)
cmpq $0x0, -0xd0(%rbp)
je 0x1563b
movq -0xe8(%rbp), %rcx
movq -0xd0(%rbp), %rax
movq (%rax), %rax
movq %rcx, -0x58(%rbp)
movq %rax, -0x60(%rbp)
movq -0x58(%rbp), %rcx
movq -0x60(%rbp), %rax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
movb %al, %cl
movq -0x38(%rbp), %rax
movb %cl, (%rax)
movl -0x3c(%rbp), %eax
shrl $0x8, %eax
movb %al, %cl
movq -0x38(%rbp), %rax
movb %cl, 0x1(%rax)
movl -0x3c(%rbp), %eax
shrl $0x10, %eax
movb %al, %cl
movq -0x38(%rbp), %rax
movb %cl, 0x2(%rax)
movl -0x3c(%rbp), %eax
shrl $0x18, %eax
movb %al, %cl
movq -0x38(%rbp), %rax
movb %cl, 0x3(%rax)
movq -0x58(%rbp), %rcx
addq $0x4, %rcx
movq -0x60(%rbp), %rax
shrq $0x20, %rax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
movb %al, %cl
movq -0x48(%rbp), %rax
movb %cl, (%rax)
movl -0x4c(%rbp), %eax
shrl $0x8, %eax
movb %al, %cl
movq -0x48(%rbp), %rax
movb %cl, 0x1(%rax)
movl -0x4c(%rbp), %eax
shrl $0x10, %eax
movb %al, %cl
movq -0x48(%rbp), %rax
movb %cl, 0x2(%rax)
movl -0x4c(%rbp), %eax
shrl $0x18, %eax
movb %al, %cl
movq -0x48(%rbp), %rax
movb %cl, 0x3(%rax)
movq -0xe8(%rbp), %rax
addq $0x8, %rax
movq %rax, -0xe8(%rbp)
movl -0xec(%rbp), %eax
addq $0x8, %rax
movl %eax, -0xec(%rbp)
cmpq $0x0, -0xd8(%rbp)
je 0x1572c
movq -0xe8(%rbp), %rcx
movq -0xd8(%rbp), %rax
movq (%rax), %rax
movq %rcx, -0x88(%rbp)
movq %rax, -0x90(%rbp)
movq -0x88(%rbp), %rcx
movq -0x90(%rbp), %rax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
movl -0x6c(%rbp), %eax
movb %al, %cl
movq -0x68(%rbp), %rax
movb %cl, (%rax)
movl -0x6c(%rbp), %eax
shrl $0x8, %eax
movb %al, %cl
movq -0x68(%rbp), %rax
movb %cl, 0x1(%rax)
movl -0x6c(%rbp), %eax
shrl $0x10, %eax
movb %al, %cl
movq -0x68(%rbp), %rax
movb %cl, 0x2(%rax)
movl -0x6c(%rbp), %eax
shrl $0x18, %eax
movb %al, %cl
movq -0x68(%rbp), %rax
movb %cl, 0x3(%rax)
movq -0x88(%rbp), %rcx
addq $0x4, %rcx
movq -0x90(%rbp), %rax
shrq $0x20, %rax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
movl -0x7c(%rbp), %eax
movb %al, %cl
movq -0x78(%rbp), %rax
movb %cl, (%rax)
movl -0x7c(%rbp), %eax
shrl $0x8, %eax
movb %al, %cl
movq -0x78(%rbp), %rax
movb %cl, 0x1(%rax)
movl -0x7c(%rbp), %eax
shrl $0x10, %eax
movb %al, %cl
movq -0x78(%rbp), %rax
movb %cl, 0x2(%rax)
movl -0x7c(%rbp), %eax
shrl $0x18, %eax
movb %al, %cl
movq -0x78(%rbp), %rax
movb %cl, 0x3(%rax)
movq -0xe8(%rbp), %rax
addq $0x8, %rax
movq %rax, -0xe8(%rbp)
movl -0xec(%rbp), %eax
addq $0x8, %rax
movl %eax, -0xec(%rbp)
cmpq $0x0, -0xe0(%rbp)
je 0x15859
movq -0xe8(%rbp), %rcx
movq -0xe0(%rbp), %rax
movq (%rax), %rax
movq %rcx, -0xb8(%rbp)
movq %rax, -0xc0(%rbp)
movq -0xb8(%rbp), %rcx
movq -0xc0(%rbp), %rax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
movl -0x9c(%rbp), %eax
movb %al, %cl
movq -0x98(%rbp), %rax
movb %cl, (%rax)
movl -0x9c(%rbp), %eax
shrl $0x8, %eax
movb %al, %cl
movq -0x98(%rbp), %rax
movb %cl, 0x1(%rax)
movl -0x9c(%rbp), %eax
shrl $0x10, %eax
movb %al, %cl
movq -0x98(%rbp), %rax
movb %cl, 0x2(%rax)
movl -0x9c(%rbp), %eax
shrl $0x18, %eax
movb %al, %cl
movq -0x98(%rbp), %rax
movb %cl, 0x3(%rax)
movq -0xb8(%rbp), %rcx
addq $0x4, %rcx
movq -0xc0(%rbp), %rax
shrq $0x20, %rax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
movl -0xac(%rbp), %eax
movb %al, %cl
movq -0xa8(%rbp), %rax
movb %cl, (%rax)
movl -0xac(%rbp), %eax
shrl $0x8, %eax
movb %al, %cl
movq -0xa8(%rbp), %rax
movb %cl, 0x1(%rax)
movl -0xac(%rbp), %eax
shrl $0x10, %eax
movb %al, %cl
movq -0xa8(%rbp), %rax
movb %cl, 0x2(%rax)
movl -0xac(%rbp), %eax
shrl $0x18, %eax
movb %al, %cl
movq -0xa8(%rbp), %rax
movb %cl, 0x3(%rax)
movq -0xe8(%rbp), %rax
addq $0x8, %rax
movq %rax, -0xe8(%rbp)
movl -0xec(%rbp), %eax
addq $0x8, %rax
movl %eax, -0xec(%rbp)
movq -0xc8(%rbp), %rcx
addq $0x2, %rcx
movl -0xec(%rbp), %eax
movq %rcx, -0x28(%rbp)
movw %ax, -0x2a(%rbp)
movw -0x2a(%rbp), %ax
movb %al, %cl
movq -0x28(%rbp), %rax
movb %cl, (%rax)
movzwl -0x2a(%rbp), %eax
sarl $0x8, %eax
movb %al, %cl
movq -0x28(%rbp), %rax
movb %cl, 0x1(%rax)
movq -0xe8(%rbp), %rax
movq -0xc8(%rbp), %rcx
subq %rcx, %rax
addq $0x70, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)