// File: /workspace/github_c_makefile_star2_O1/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 0x8a07
leaq 0x8b20b(%rip), %rdi     # 0x91004
movq %rax, %rsi
xorl %eax, %eax
callq 0x4060
leaq 0x8b20e(%rip), %rdi     # 0x91018
movl $0x18f92, %esi          # imm = 0x18F92
xorl %eax, %eax
callq 0x4060
movl $0x800000, %edi         # imm = 0x800000
callq 0x8a15
leaq 0x8b205(%rip), %rdi     # 0x9102c
movq %rax, %rsi
xorl %eax, %eax
callq 0x4060
movl $0x8000000, %edi        # imm = 0x8000000
callq 0x8a15
leaq 0x8b202(%rip), %rdi     # 0x91044
movq %rax, %rsi
xorl %eax, %eax
callq 0x4060
movl $0x20000000, %edi       # imm = 0x20000000
callq 0x8a15
leaq 0x8b1fc(%rip), %rdi     # 0x91059
movq %rax, %rsi
xorl %eax, %eax
callq 0x4060
movl $0x10000000, %edi       # imm = 0x10000000
callq 0x8a15
leaq 0x8b1f5(%rip), %rdi     # 0x9106d
movq %rax, %rsi
xorl %eax, %eax
callq 0x4060
movl $0x40000000, %edi       # imm = 0x40000000
callq 0x8a15
leaq 0x8b1ee(%rip), %rdi     # 0x91081
movq %rax, %rsi
xorl %eax, %eax
callq 0x4060
callq 0x8a0f
movl %eax, %ebx
leaq 0x8b1ea(%rip), %rdi     # 0x91095
movl %eax, %esi
xorl %eax, %eax
callq 0x4060
testb $0x1, %bl
je 0x5ec5
leaq 0x8b20f(%rip), %rdi     # 0x910cf
callq 0x47e0
testb $0x2, %bl
je 0x5ed6
leaq 0x8b224(%rip), %rdi     # 0x910f5
callq 0x47e0
btl $0xa, %ebx
jae 0x5ee8
leaq 0x8b236(%rip), %rdi     # 0x91119
callq 0x47e0
btl $0xb, %ebx
jae 0x5efa
leaq 0x8b248(%rip), %rdi     # 0x9113d
callq 0x47e0
btl $0xc, %ebx
jae 0x5f0c
leaq 0x8b255(%rip), %rdi     # 0x9115c
callq 0x47e0
btl $0x14, %ebx
jae 0x5f1e
leaq 0x8b263(%rip), %rdi     # 0x9117c
callq 0x47e0
btl $0x15, %ebx
jae 0x5f30
leaq 0x8b278(%rip), %rdi     # 0x911a3
callq 0x47e0
btl $0x16, %ebx
jae 0x5f42
leaq 0x8b287(%rip), %rdi     # 0x911c4
callq 0x47e0
btl $0x17, %ebx
jae 0x5f54
leaq 0x8b297(%rip), %rdi     # 0x911e6
callq 0x47e0
callq 0x8af1
leaq 0x8b14c(%rip), %rdi     # 0x910ac
xorl %ebx, %ebx
movq %rax, %rsi
xorl %eax, %eax
callq 0x4060
leaq 0x8b299(%rip), %rdi     # 0x9120c
callq 0x47e0
leaq 0xc(%rsp), %rsi
movl $0x64, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x711f
testl %eax, %eax
js 0x603a
cmpl $0x0, 0xc(%rsp)
jle 0x603f
leaq 0x8(%rsp), %r15
leaq 0x8b11e(%rip), %r13     # 0x910ca
xorl %r12d, %r12d
xorl %ebx, %ebx
movl $0x64, 0x8(%rsp)
movq 0x10(%rsp,%r12,8), %rdi
leaq 0x330(%rsp), %rsi
movq %r15, %rdx
callq 0x6f7c
movl %eax, %ebp
testl %eax, %eax
js 0x601c
movq 0x10(%rsp,%r12,8), %rsi
leaq 0x8b0e1(%rip), %rdi     # 0x910c1
xorl %eax, %eax
callq 0x4060
cmpl $0x0, 0x8(%rsp)
jle 0x6010
xorl %r14d, %r14d
movq 0x330(%rsp,%r14,8), %rsi
movq %r13, %rdi
xorl %eax, %eax
callq 0x4060
incq %r14
movslq 0x8(%rsp), %rax
cmpq %rax, %r14
jl 0x5ff1
movl $0xa, %edi
callq 0x46c0
jmp 0x6021
movl $0x1, %ebx
testl %ebp, %ebp
js 0x603f
incq %r12
movslq 0xc(%rsp), %rax
cmpq %rax, %r12
jl 0x5fb1
xorl %ebx, %ebx
jmp 0x603f
movl $0x1, %ebx
movl %ebx, %eax
addq $0x658, %rsp            # imm = 0x658
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop