// File: /workspace/github_c_makefile_star2_O2/samtools[P]htslib/test/test_introspection.c
// Function: main
int main(void) {
    printf("Version string: %s\n", hts_version());
    printf("Version number: %d\n", HTS_VERSION);
    printf("\nhtscodecs version: %s\n",
           hts_test_feature(HTS_FEATURE_HTSCODECS));

    printf("\nCC:             %s\n", hts_test_feature(HTS_FEATURE_CC));
    printf("CPPFLAGS:       %s\n", hts_test_feature(HTS_FEATURE_CPPFLAGS));
    printf("CFLAGS:         %s\n", hts_test_feature(HTS_FEATURE_CFLAGS));
    printf("LDFLAGS:        %s\n", hts_test_feature(HTS_FEATURE_LDFLAGS));

    unsigned int feat = hts_features();
    printf("\nFeature number: 0x%x\n", feat);
    if (feat & HTS_FEATURE_CONFIGURE)
        printf("                HTS_FEATURE_CONFIGURE\n");
    if (feat & HTS_FEATURE_PLUGINS)
        printf("                HTS_FEATURE_PLUGINS\n");
    if (feat & HTS_FEATURE_LIBCURL)
        printf("                HTS_FEATURE_LIBCURL\n");
    if (feat & HTS_FEATURE_S3)
        printf("                HTS_FEATURE_S3\n");
    if (feat & HTS_FEATURE_GCS)
        printf("                HTS_FEATURE_GCS\n");
    if (feat & HTS_FEATURE_LIBDEFLATE)
        printf("                HTS_FEATURE_LIBDEFLATE\n");
    if (feat & HTS_FEATURE_LZMA)
        printf("                HTS_FEATURE_LZMA\n");
    if (feat & HTS_FEATURE_BZIP2)
        printf("                HTS_FEATURE_BZIP2\n");
    if (feat & HTS_FEATURE_HTSCODECS)
        printf("                HTS_FEATURE_HTSCODECS\n");

    printf("\nFeature string: %s\n", hts_feature_string());


    // Plugins and schemes
    printf("\nPlugins present:\n");
    const char *plugins[100];
    int np = 100, i, j;

    if (hfile_list_plugins(plugins, &np) < 0)
        return 1;

    for (i = 0; i < np; i++) {
        const char *sc_list[100];
        int nschemes = 100;
        if (hfile_list_schemes(plugins[i], sc_list, &nschemes) < 0)
            return 1;

        printf("    %s:\n", plugins[i]);
        for (j = 0; j < nschemes; j++)
            printf("\t%s\n", sc_list[j]);
        puts("");
    }

    return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x658, %rsp            # imm = 0x658
callq 0x8290
leaq 0x6b52b(%rip), %rdi     # 0x71004
movq %rax, %rsi
xorl %eax, %eax
callq 0x4060
leaq 0x6b52e(%rip), %rdi     # 0x71018
movl $0x18f92, %esi          # imm = 0x18F92
xorl %eax, %eax
callq 0x4060
movl $0x800000, %edi         # imm = 0x800000
callq 0x829e
leaq 0x6b525(%rip), %rdi     # 0x7102c
movq %rax, %rsi
xorl %eax, %eax
callq 0x4060
movl $0x8000000, %edi        # imm = 0x8000000
callq 0x829e
leaq 0x6b522(%rip), %rdi     # 0x71044
movq %rax, %rsi
xorl %eax, %eax
callq 0x4060
movl $0x20000000, %edi       # imm = 0x20000000
callq 0x829e
leaq 0x6b51c(%rip), %rdi     # 0x71059
movq %rax, %rsi
xorl %eax, %eax
callq 0x4060
movl $0x10000000, %edi       # imm = 0x10000000
callq 0x829e
leaq 0x6b515(%rip), %rdi     # 0x7106d
movq %rax, %rsi
xorl %eax, %eax
callq 0x4060
movl $0x40000000, %edi       # imm = 0x40000000
callq 0x829e
leaq 0x6b50e(%rip), %rdi     # 0x71081
movq %rax, %rsi
xorl %eax, %eax
callq 0x4060
callq 0x8298
movl %eax, %ebx
leaq 0x6b50a(%rip), %rdi     # 0x71095
movl %eax, %esi
xorl %eax, %eax
callq 0x4060
testb $0x1, %bl
je 0x5ba5
leaq 0x6b52f(%rip), %rdi     # 0x710cf
callq 0x47e0
testb $0x2, %bl
je 0x5bb6
leaq 0x6b544(%rip), %rdi     # 0x710f5
callq 0x47e0
btl $0xa, %ebx
jae 0x5bc8
leaq 0x6b556(%rip), %rdi     # 0x71119
callq 0x47e0
btl $0xb, %ebx
jae 0x5bda
leaq 0x6b568(%rip), %rdi     # 0x7113d
callq 0x47e0
btl $0xc, %ebx
jae 0x5bec
leaq 0x6b575(%rip), %rdi     # 0x7115c
callq 0x47e0
btl $0x14, %ebx
jae 0x5bfe
leaq 0x6b583(%rip), %rdi     # 0x7117c
callq 0x47e0
btl $0x15, %ebx
jae 0x5c10
leaq 0x6b598(%rip), %rdi     # 0x711a3
callq 0x47e0
btl $0x16, %ebx
jae 0x5c22
leaq 0x6b5a7(%rip), %rdi     # 0x711c4
callq 0x47e0
btl $0x17, %ebx
jae 0x5c34
leaq 0x6b5b7(%rip), %rdi     # 0x711e6
callq 0x47e0
callq 0x8359
leaq 0x6b46c(%rip), %rdi     # 0x710ac
movq %rax, %rsi
xorl %eax, %eax
callq 0x4060
leaq 0x6b5bb(%rip), %rdi     # 0x7120c
callq 0x47e0
leaq 0xc(%rsp), %rsi
movl $0x64, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x6c8d
pushq $0x1
popq %rcx
testl %eax, %eax
js 0x5cff
leaq 0x330(%rsp), %r14
leaq 0x8(%rsp), %r15
leaq 0x6b440(%rip), %r13     # 0x710ca
pushq $0xa
popq %rbp
xorl %ebx, %ebx
movslq 0xc(%rsp), %rax
cmpq %rax, %rbx
jge 0x5cf8
movl $0x64, 0x8(%rsp)
movq 0x10(%rsp,%rbx,8), %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x6af9
testl %eax, %eax
js 0x5cfc
movq 0x10(%rsp,%rbx,8), %rsi
leaq 0x6b400(%rip), %rdi     # 0x710c1
xorl %eax, %eax
callq 0x4060
xorl %r12d, %r12d
movslq 0x8(%rsp), %rax
cmpq %rax, %r12
jge 0x5cec
movq 0x330(%rsp,%r12,8), %rsi
movq %r13, %rdi
xorl %eax, %eax
callq 0x4060
incq %r12
jmp 0x5ccb
movl %ebp, %edi
callq 0x46c0
incq %rbx
jmp 0x5c8f
xorl %ecx, %ecx
jmp 0x5cff
pushq $0x1
popq %rcx
movl %ecx, %eax
addq $0x658, %rsp            # imm = 0x658
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop