// File: /workspace/github_c_makefile_star2_O3/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 0x891d
leaq 0x881fb(%rip), %rdi     # 0x8e004
movq %rax, %rsi
xorl %eax, %eax
callq 0x4060
leaq 0x881fe(%rip), %rdi     # 0x8e018
movl $0x18f92, %esi          # imm = 0x18F92
xorl %eax, %eax
callq 0x4060
movl $0x800000, %edi         # imm = 0x800000
callq 0x892b
leaq 0x881f5(%rip), %rdi     # 0x8e02c
movq %rax, %rsi
xorl %eax, %eax
callq 0x4060
movl $0x8000000, %edi        # imm = 0x8000000
callq 0x892b
leaq 0x881f2(%rip), %rdi     # 0x8e044
movq %rax, %rsi
xorl %eax, %eax
callq 0x4060
movl $0x20000000, %edi       # imm = 0x20000000
callq 0x892b
leaq 0x881ec(%rip), %rdi     # 0x8e059
movq %rax, %rsi
xorl %eax, %eax
callq 0x4060
movl $0x10000000, %edi       # imm = 0x10000000
callq 0x892b
leaq 0x881e5(%rip), %rdi     # 0x8e06d
movq %rax, %rsi
xorl %eax, %eax
callq 0x4060
movl $0x40000000, %edi       # imm = 0x40000000
callq 0x892b
leaq 0x881de(%rip), %rdi     # 0x8e081
movq %rax, %rsi
xorl %eax, %eax
callq 0x4060
callq 0x8925
movl %eax, %ebx
leaq 0x881da(%rip), %rdi     # 0x8e095
movl %eax, %esi
xorl %eax, %eax
callq 0x4060
testb $0x1, %bl
je 0x5ed5
leaq 0x881ff(%rip), %rdi     # 0x8e0cf
callq 0x47e0
testb $0x2, %bl
je 0x5ee6
leaq 0x88214(%rip), %rdi     # 0x8e0f5
callq 0x47e0
btl $0xa, %ebx
jae 0x5ef8
leaq 0x88226(%rip), %rdi     # 0x8e119
callq 0x47e0
btl $0xb, %ebx
jae 0x5f0a
leaq 0x88238(%rip), %rdi     # 0x8e13d
callq 0x47e0
btl $0xc, %ebx
jae 0x5f1c
leaq 0x88245(%rip), %rdi     # 0x8e15c
callq 0x47e0
btl $0x14, %ebx
jae 0x5f2e
leaq 0x88253(%rip), %rdi     # 0x8e17c
callq 0x47e0
btl $0x15, %ebx
jae 0x5f40
leaq 0x88268(%rip), %rdi     # 0x8e1a3
callq 0x47e0
btl $0x16, %ebx
jae 0x5f52
leaq 0x88277(%rip), %rdi     # 0x8e1c4
callq 0x47e0
btl $0x17, %ebx
jae 0x5f64
leaq 0x88287(%rip), %rdi     # 0x8e1e6
callq 0x47e0
callq 0x8a07
leaq 0x8813c(%rip), %rdi     # 0x8e0ac
xorl %ebx, %ebx
movq %rax, %rsi
xorl %eax, %eax
callq 0x4060
leaq 0x88289(%rip), %rdi     # 0x8e20c
callq 0x47e0
leaq 0xc(%rsp), %rsi
movl $0x64, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x70cf
testl %eax, %eax
js 0x603c
cmpl $0x0, 0xc(%rsp)
jle 0x6041
leaq 0x330(%rsp), %rbx
leaq 0x8(%rsp), %r14
leaq 0x880fd(%rip), %r15     # 0x8e0c1
leaq 0x880ff(%rip), %r12     # 0x8e0ca
xorl %r13d, %r13d
movl $0x64, 0x8(%rsp)
movq 0x10(%rsp,%r13,8), %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x6f2c
testl %eax, %eax
js 0x603c
movq 0x10(%rsp,%r13,8), %rsi
movq %r15, %rdi
xorl %eax, %eax
callq 0x4060
cmpl $0x0, 0x8(%rsp)
jle 0x6021
xorl %ebp, %ebp
movq 0x330(%rsp,%rbp,8), %rsi
movq %r12, %rdi
xorl %eax, %eax
callq 0x4060
incq %rbp
movslq 0x8(%rsp), %rax
cmpq %rax, %rbp
jl 0x6002
movl $0xa, %edi
callq 0x46c0
incq %r13
movslq 0xc(%rsp), %rax
cmpq %rax, %r13
jl 0x5fce
xorl %ebx, %ebx
jmp 0x6041
movl $0x1, %ebx
movl %ebx, %eax
addq $0x658, %rsp            # imm = 0x658
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nopl (%rax)