// File: /workspace/github_c_makefile_star2_O0/madler[P]pigz/pigz.c
// Function: list_info
local void list_info(void) {
    int method;             // get_header() return value
    size_t n;               // available trailer bytes
    off_t at;               // used to calculate compressed length
    unsigned char tail[8];  // trailer containing check and length
    unsigned long check;    // check value
    length_t len;           // length from trailer

    // initialize input buffer
    in_init();

    // read header information and position input after header
    method = get_header(1);
    if (method < 0) {
        complain(method == -6 ? "skipping: %s corrupt: header crc error" :
                 method == -1 ? "skipping: %s empty" :
                 "skipping: %s unrecognized format", g.inf);
        return;
    }

#ifndef NOTHREAD
    // wait for read thread to complete current read() operation, to permit
    // seeking and reading on g.ind here in the main thread
    load_wait();
#endif

    // list zip file
    if (g.form > 1) {
        more_zip_entries();         // get first entry comment, if any
        g.in_tot = g.zip_clen;
        show_info(method, g.zip_crc, g.zip_ulen, 0);
        return;
    }

    // list zlib file
    if (g.form == 1) {
        at = lseek(g.ind, 0, SEEK_END);
        if (at == -1) {
            check = 0;
            do {
                len = g.in_left < 4 ? g.in_left : 4;
                g.in_next += g.in_left - len;
                while (len--)
                    check = (check << 8) + *g.in_next++;
            } while (load() != 0);
            check &= LOW32;
        }
        else {
            g.in_tot = (length_t)at;
            lseek(g.ind, -4, SEEK_END);
            readn(g.ind, tail, 4);
            check = PULL4M(tail);
        }
        g.in_tot -= 6;
        show_info(method, check, 0, 0);
        return;
    }

    // list lzw file
    if (method == 257) {
        at = lseek(g.ind, 0, SEEK_END);
        if (at == -1)
            while (load() != 0)
                ;
        else
            g.in_tot = (length_t)at;
        g.in_tot -= 3;
        show_info(method, 0, 0, 0);
        return;
    }

    // skip to end to get trailer (8 bytes), compute compressed length
    if (g.in_short) {                   // whole thing already read
        if (g.in_left < 8) {
            complain("skipping: %s not a valid gzip file", g.inf);
            return;
        }
        g.in_tot = g.in_left - 8;       // compressed size
        memcpy(tail, g.in_next + (g.in_left - 8), 8);
    }
    else if ((at = lseek(g.ind, -8, SEEK_END)) != -1) {
        g.in_tot = (length_t)at - g.in_tot + g.in_left; // compressed size
        readn(g.ind, tail, 8);          // get trailer
    }
    else {                              // can't seek
        len = g.in_tot - g.in_left;     // save header size
        do {
            n = g.in_left < 8 ? g.in_left : 8;
            memcpy(tail, g.in_next + (g.in_left - n), n);
            load();
        } while (g.in_left == BUF);     // read until end
        if (g.in_left < 8) {
            if (n + g.in_left < 8) {
                complain("skipping: %s not a valid gzip file", g.inf);
                return;
            }
            if (g.in_left) {
                if (n + g.in_left > 8)
                    memcpy(tail, tail + n - (8 - g.in_left), 8 - g.in_left);
                memcpy(tail + 8 - g.in_left, g.in_next, g.in_left);
            }
        }
        else
            memcpy(tail, g.in_next + (g.in_left - 8), 8);
        g.in_tot -= len + 8;
    }
    if (g.in_tot < 2) {
        complain("skipping: %s not a valid gzip file", g.inf);
        return;
    }

    // convert trailer to check and uncompressed length (modulo 2^32)
    check = PULL4L(tail);
    len = PULL4L(tail + 4);

    // list information about contents
    show_info(method, check, len, 0);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
callq 0x69d0
movl $0x1, %edi
callq 0x6a10
movl %eax, -0x4(%rbp)
cmpl $0x0, -0x4(%rbp)
jge 0x63f6
cmpl $-0x6, -0x4(%rbp)
jne 0x63c3
leaq 0x16ebe(%rip), %rax     # 0x1d27b
movq %rax, -0x38(%rbp)
jmp 0x63df
movl -0x4(%rbp), %edx
leaq 0x16ee8(%rip), %rax     # 0x1d2b5
leaq 0x16ece(%rip), %rcx     # 0x1d2a2
cmpl $-0x1, %edx
cmoveq %rcx, %rax
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rdi
movq 0x1d3ae(%rip), %rsi     # 0x23798
movb $0x0, %al
callq 0x49e0
jmp 0x688f
callq 0xc640
cmpl $0x1, 0x1d3c6(%rip)     # 0x237c8
jle 0x6434
callq 0xc6a0
movq 0x1d458(%rip), %rax     # 0x23868
movq %rax, 0x254a9(%rip)     # 0x2b8c0
movl -0x4(%rbp), %edi
movq 0x1d43f(%rip), %rsi     # 0x23860
movq 0x1d448(%rip), %rdx     # 0x23870
xorl %ecx, %ecx
callq 0xa500
jmp 0x688f
cmpl $0x1, 0x1d38d(%rip)     # 0x237c8
jne 0x659a
movl 0x1d349(%rip), %edi     # 0x23790
xorl %eax, %eax
movl %eax, %esi
movl $0x2, %edx
callq 0x3550
movq %rax, -0x18(%rbp)
cmpq $-0x1, -0x18(%rbp)
jne 0x6512
movq $0x0, -0x28(%rbp)
cmpq $0x4, 0x2543c(%rip)     # 0x2b8b0
jae 0x6483
movq 0x25433(%rip), %rax     # 0x2b8b0
movq %rax, -0x40(%rbp)
jmp 0x648e
movl $0x4, %eax
movq %rax, -0x40(%rbp)
jmp 0x648e
movq -0x40(%rbp), %rax
movq %rax, -0x30(%rbp)
movq 0x25413(%rip), %rax     # 0x2b8b0
subq -0x30(%rbp), %rax
addq 0x25400(%rip), %rax     # 0x2b8a8
movq %rax, 0x253f9(%rip)     # 0x2b8a8
movq -0x30(%rbp), %rax
movq %rax, %rcx
addq $-0x1, %rcx
movq %rcx, -0x30(%rbp)
cmpq $0x0, %rax
je 0x64ed
movq -0x28(%rbp), %rax
shlq $0x8, %rax
movq 0x253d5(%rip), %rcx     # 0x2b8a8
movq %rcx, %rdx
addq $0x1, %rdx
movq %rdx, 0x253c7(%rip)     # 0x2b8a8
movzbl (%rcx), %ecx
addq %rcx, %rax
movq %rax, -0x28(%rbp)
jmp 0x64af
jmp 0x64ef
callq 0xcd80
cmpq $0x0, %rax
jne 0x646c
movabsq $0xffffffff, %rax       # imm = 0xFFFFFFFF
andq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x6571
movq -0x18(%rbp), %rax
movq %rax, 0x253a3(%rip)     # 0x2b8c0
movl 0x1d26d(%rip), %edi     # 0x23790
movq $-0x4, %rsi
movl $0x2, %edx
callq 0x3550
movl 0x1d256(%rip), %edi     # 0x23790
leaq -0x20(%rbp), %rsi
movl $0x4, %edx
callq 0xcf80
movzbl -0x20(%rbp), %eax
shll $0x8, %eax
movzbl -0x1f(%rbp), %ecx
addl %ecx, %eax
movl %eax, %eax
shlq $0x10, %rax
movzbl -0x1e(%rbp), %ecx
shll $0x8, %ecx
movzbl -0x1d(%rbp), %edx
addl %edx, %ecx
movl %ecx, %ecx
addq %rcx, %rax
movq %rax, -0x28(%rbp)
movq 0x25348(%rip), %rax     # 0x2b8c0
subq $0x6, %rax
movq %rax, 0x2533d(%rip)     # 0x2b8c0
movl -0x4(%rbp), %edi
movq -0x28(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edx
xorl %ecx, %ecx
callq 0xa500
jmp 0x688f
cmpl $0x101, -0x4(%rbp)      # imm = 0x101
jne 0x6606
movl 0x1d1e7(%rip), %edi     # 0x23790
xorl %eax, %eax
movl %eax, %esi
movl $0x2, %edx
callq 0x3550
movq %rax, -0x18(%rbp)
cmpq $-0x1, -0x18(%rbp)
jne 0x65d3
jmp 0x65c4
callq 0xcd80
cmpq $0x0, %rax
je 0x65d1
jmp 0x65c4
jmp 0x65de
movq -0x18(%rbp), %rax
movq %rax, 0x252e2(%rip)     # 0x2b8c0
movq 0x252db(%rip), %rax     # 0x2b8c0
subq $0x3, %rax
movq %rax, 0x252d0(%rip)     # 0x2b8c0
movl -0x4(%rbp), %edi
xorl %eax, %eax
movl %eax, %edx
xorl %ecx, %ecx
movq %rdx, %rsi
callq 0xa500
jmp 0x688f
cmpl $0x0, 0x252af(%rip)     # 0x2b8bc
je 0x6664
cmpq $0x8, 0x25299(%rip)     # 0x2b8b0
jae 0x6633
movq 0x1d178(%rip), %rsi     # 0x23798
leaq 0x16dff(%rip), %rdi     # 0x1d426
movb $0x0, %al
callq 0x49e0
jmp 0x688f
movq 0x25276(%rip), %rax     # 0x2b8b0
subq $0x8, %rax
movq %rax, 0x2527b(%rip)     # 0x2b8c0
movq 0x2525c(%rip), %rax     # 0x2b8a8
movq 0x2525d(%rip), %rcx     # 0x2b8b0
subq $0x8, %rcx
movq (%rax,%rcx), %rax
movq %rax, -0x20(%rbp)
jmp 0x680a
movl 0x1d126(%rip), %edi     # 0x23790
movq $-0x8, %rsi
movl $0x2, %edx
callq 0x3550
movq %rax, -0x18(%rbp)
cmpq $-0x1, %rax
je 0x66b7
movq -0x18(%rbp), %rax
subq 0x25230(%rip), %rax     # 0x2b8c0
addq 0x25219(%rip), %rax     # 0x2b8b0
movq %rax, 0x25222(%rip)     # 0x2b8c0
movl 0x1d0ec(%rip), %edi     # 0x23790
leaq -0x20(%rbp), %rsi
movl $0x8, %edx
callq 0xcf80
jmp 0x6808
movq 0x25202(%rip), %rax     # 0x2b8c0
subq 0x251eb(%rip), %rax     # 0x2b8b0
movq %rax, -0x30(%rbp)
cmpq $0x8, 0x251df(%rip)     # 0x2b8b0
jae 0x66e0
movq 0x251d6(%rip), %rax     # 0x2b8b0
movq %rax, -0x48(%rbp)
jmp 0x66eb
movl $0x8, %eax
movq %rax, -0x48(%rbp)
jmp 0x66eb
movq -0x48(%rbp), %rax
movq %rax, -0x10(%rbp)
leaq -0x20(%rbp), %rdi
movq 0x251aa(%rip), %rsi     # 0x2b8a8
movq 0x251ab(%rip), %rax     # 0x2b8b0
subq -0x10(%rbp), %rax
addq %rax, %rsi
movq -0x10(%rbp), %rdx
callq 0x3360
callq 0xcd80
cmpq $0x8000, 0x2518b(%rip) # imm = 0x8000
je 0x66c9
cmpq $0x8, 0x25181(%rip)     # 0x2b8b0
jae 0x67d5
movq -0x10(%rbp), %rax
addq 0x25170(%rip), %rax     # 0x2b8b0
cmpq $0x8, %rax
jae 0x6760
movq 0x1d04b(%rip), %rsi     # 0x23798
leaq 0x16cd2(%rip), %rdi     # 0x1d426
movb $0x0, %al
callq 0x49e0
jmp 0x688f
cmpq $0x0, 0x25148(%rip)     # 0x2b8b0
je 0x67d3
movq -0x10(%rbp), %rax
addq 0x2513b(%rip), %rax     # 0x2b8b0
cmpq $0x8, %rax
jbe 0x67ac
leaq -0x20(%rbp), %rdi
leaq -0x20(%rbp), %rsi
addq -0x10(%rbp), %rsi
movl $0x8, %ecx
subq 0x2511d(%rip), %rcx     # 0x2b8b0
xorl %eax, %eax
subq %rcx, %rax
addq %rax, %rsi
movl $0x8, %edx
subq 0x25109(%rip), %rdx     # 0x2b8b0
callq 0x3360
leaq -0x20(%rbp), %rdi
addq $0x8, %rdi
xorl %eax, %eax
subq 0x250f3(%rip), %rax     # 0x2b8b0
addq %rax, %rdi
movq 0x250e1(%rip), %rsi     # 0x2b8a8
movq 0x250e2(%rip), %rdx     # 0x2b8b0
callq 0x3360
jmp 0x67ef
movq 0x250cc(%rip), %rax     # 0x2b8a8
movq 0x250cd(%rip), %rcx     # 0x2b8b0
subq $0x8, %rcx
movq (%rax,%rcx), %rax
movq %rax, -0x20(%rbp)
movq -0x30(%rbp), %rcx
addq $0x8, %rcx
movq 0x250c2(%rip), %rax     # 0x2b8c0
subq %rcx, %rax
movq %rax, 0x250b8(%rip)     # 0x2b8c0
jmp 0x680a
cmpq $0x2, 0x250ae(%rip)     # 0x2b8c0
jae 0x682b
movq 0x1cf7d(%rip), %rsi     # 0x23798
leaq 0x16c04(%rip), %rdi     # 0x1d426
movb $0x0, %al
callq 0x49e0
jmp 0x688f
movzbl -0x20(%rbp), %eax
movzbl -0x1f(%rbp), %ecx
shll $0x8, %ecx
addl %ecx, %eax
movl %eax, %eax
movzbl -0x1e(%rbp), %ecx
movzbl -0x1d(%rbp), %edx
shll $0x8, %edx
addl %edx, %ecx
movl %ecx, %ecx
shlq $0x10, %rcx
addq %rcx, %rax
movq %rax, -0x28(%rbp)
movzbl -0x1c(%rbp), %eax
movzbl -0x1b(%rbp), %ecx
shll $0x8, %ecx
addl %ecx, %eax
movl %eax, %eax
movzbl -0x1a(%rbp), %ecx
movzbl -0x19(%rbp), %edx
shll $0x8, %edx
addl %edx, %ecx
movl %ecx, %ecx
shlq $0x10, %rcx
addq %rcx, %rax
movq %rax, -0x30(%rbp)
movl -0x4(%rbp), %edi
movq -0x28(%rbp), %rsi
movq -0x30(%rbp), %rdx
xorl %ecx, %ecx
callq 0xa500
addq $0x50, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)