// File: /workspace/github_c_makefile_star2_O0/samtools[P]htslib/test/test_faidx.c
// Function: file_compare
int file_compare(const char *file1, const char *file2) {
    FILE *f1 = NULL;
    FILE *f2 = NULL;
    unsigned int lno = 1;
    size_t got1, got2, i;
    char buf1[1024], buf2[1024];
    int ret = -1;

    f1 = fopen(file1, "rb");
    if (!f1) {
        perror(file1);
        goto out;
    }
    f2 = fopen(file2, "rb");
    if (!f2) {
        perror(file2);
        goto out;
    }

    do {
        got1 = fread(buf1, 1, sizeof(buf1), f1);
        got2 = fread(buf2, 1, sizeof(buf2), f2);

        for (i = 0; i < got1 && i < got2 && buf1[i] == buf2[i]; i++)
            lno += (buf1[i] == '\n');
        if (i < got1 || i < got2) {
            fprintf(stderr, "%s and %s differ at line %u\n",
                    file1, file2, lno);
            goto out;
        }
    } while (got1 > 0 && got2 > 0);

    if (ferror(f1)) {
        perror(file1);
        goto out;
    }
    if (ferror(f2)) {
        perror(file2);
        goto out;
    }

    if (got1 > 0 || got2 > 0) {
        fprintf(stderr, "EOF on %s at line %u\n",
                got1 ? file2 : file1, lno);
        goto out;
    }

    ret = 0;
 out:
    if (f1) fclose(f1);
    if (f2) fclose(f2);
    return ret;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x860, %rsp            # imm = 0x860
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq $0x0, -0x18(%rbp)
movq $0x0, -0x20(%rbp)
movl $0x1, -0x24(%rbp)
movl $0xffffffff, -0x844(%rbp) # imm = 0xFFFFFFFF
movq -0x8(%rbp), %rdi
leaq 0xe1595(%rip), %rsi     # 0xe7094
callq 0x45a0
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
jne 0x5b1d
movq -0x8(%rbp), %rdi
callq 0x43d0
jmp 0x5d12
movq -0x10(%rbp), %rdi
leaq 0xe156c(%rip), %rsi     # 0xe7094
callq 0x45a0
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
jne 0x5b46
movq -0x10(%rbp), %rdi
callq 0x43d0
jmp 0x5d12
jmp 0x5b48
leaq -0x440(%rbp), %rdi
movq -0x18(%rbp), %rcx
movl $0x1, %esi
movl $0x400, %edx            # imm = 0x400
callq 0x4780
movq %rax, -0x30(%rbp)
leaq -0x840(%rbp), %rdi
movq -0x20(%rbp), %rcx
movl $0x1, %esi
movl $0x400, %edx            # imm = 0x400
callq 0x4780
movq %rax, -0x38(%rbp)
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rcx
xorl %eax, %eax
cmpq -0x30(%rbp), %rcx
movb %al, -0x845(%rbp)
jae 0x5bd3
movq -0x40(%rbp), %rcx
xorl %eax, %eax
cmpq -0x38(%rbp), %rcx
movb %al, -0x845(%rbp)
jae 0x5bd3
movq -0x40(%rbp), %rax
movsbl -0x440(%rbp,%rax), %eax
movq -0x40(%rbp), %rcx
movsbl -0x840(%rbp,%rcx), %ecx
cmpl %ecx, %eax
sete %al
movb %al, -0x845(%rbp)
movb -0x845(%rbp), %al
testb $0x1, %al
jne 0x5bdf
jmp 0x5c0a
movq -0x40(%rbp), %rax
movsbl -0x440(%rbp,%rax), %eax
cmpl $0xa, %eax
sete %al
andb $0x1, %al
movzbl %al, %eax
addl -0x24(%rbp), %eax
movl %eax, -0x24(%rbp)
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x5b8c
movq -0x40(%rbp), %rax
cmpq -0x30(%rbp), %rax
jb 0x5c1e
movq -0x40(%rbp), %rax
cmpq -0x38(%rbp), %rax
jae 0x5c47
movq 0xff3b3(%rip), %rax     # 0x104fd8
movq (%rax), %rdi
movq -0x8(%rbp), %rdx
movq -0x10(%rbp), %rcx
movl -0x24(%rbp), %r8d
leaq 0xe145c(%rip), %rsi     # 0xe7097
movb $0x0, %al
callq 0x46e0
jmp 0x5d12
jmp 0x5c49
xorl %eax, %eax
cmpq $0x0, -0x30(%rbp)
movb %al, -0x846(%rbp)
jbe 0x5c66
cmpq $0x0, -0x38(%rbp)
seta %al
movb %al, -0x846(%rbp)
movb -0x846(%rbp), %al
testb $0x1, %al
jne 0x5b48
movq -0x18(%rbp), %rdi
callq 0x4960
cmpl $0x0, %eax
je 0x5c90
movq -0x8(%rbp), %rdi
callq 0x43d0
jmp 0x5d12
movq -0x20(%rbp), %rdi
callq 0x4960
cmpl $0x0, %eax
je 0x5ca9
movq -0x10(%rbp), %rdi
callq 0x43d0
jmp 0x5d12
cmpq $0x0, -0x30(%rbp)
ja 0x5cb7
cmpq $0x0, -0x38(%rbp)
jbe 0x5d08
movq 0xff31a(%rip), %rax     # 0x104fd8
movq (%rax), %rax
movq %rax, -0x850(%rbp)
cmpq $0x0, -0x30(%rbp)
je 0x5cdc
movq -0x10(%rbp), %rax
movq %rax, -0x858(%rbp)
jmp 0x5ce7
movq -0x8(%rbp), %rax
movq %rax, -0x858(%rbp)
movq -0x850(%rbp), %rdi
movq -0x858(%rbp), %rdx
movl -0x24(%rbp), %ecx
leaq 0xe13b5(%rip), %rsi     # 0xe70b4
movb $0x0, %al
callq 0x46e0
jmp 0x5d12
movl $0x0, -0x844(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x5d22
movq -0x18(%rbp), %rdi
callq 0x44b0
cmpq $0x0, -0x20(%rbp)
je 0x5d32
movq -0x20(%rbp), %rdi
callq 0x44b0
movl -0x844(%rbp), %eax
addq $0x860, %rsp            # imm = 0x860
popq %rbp
retq
nopw %cs:(%rax,%rax)