// File: /workspace/github_c_makefile_star2_O0/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
movq %rsp, %rbp
subq $0x670, %rsp            # imm = 0x670
movl $0x0, -0x4(%rbp)
callq 0xa6f0
movq %rax, %rsi
leaq 0xe0523(%rip), %rdi     # 0xe6004
movb $0x0, %al
callq 0x4060
leaq 0xe0529(%rip), %rdi     # 0xe6018
movl $0x18f92, %esi          # imm = 0x18F92
movb $0x0, %al
callq 0x4060
movl $0x800000, %edi         # imm = 0x800000
callq 0xa740
movq %rax, %rsi
leaq 0xe051d(%rip), %rdi     # 0xe602c
movb $0x0, %al
callq 0x4060
movl $0x8000000, %edi        # imm = 0x8000000
callq 0xa740
movq %rax, %rsi
leaq 0xe051a(%rip), %rdi     # 0xe6044
movb $0x0, %al
callq 0x4060
movl $0x20000000, %edi       # imm = 0x20000000
callq 0xa740
movq %rax, %rsi
leaq 0xe0514(%rip), %rdi     # 0xe6059
movb $0x0, %al
callq 0x4060
movl $0x10000000, %edi       # imm = 0x10000000
callq 0xa740
movq %rax, %rsi
leaq 0xe050d(%rip), %rdi     # 0xe606d
movb $0x0, %al
callq 0x4060
movl $0x40000000, %edi       # imm = 0x40000000
callq 0xa740
movq %rax, %rsi
leaq 0xe0506(%rip), %rdi     # 0xe6081
movb $0x0, %al
callq 0x4060
callq 0xa700
movl %eax, -0x8(%rbp)
movl -0x8(%rbp), %esi
leaq 0xe0501(%rip), %rdi     # 0xe6095
movb $0x0, %al
callq 0x4060
movl -0x8(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x5bb4
leaq 0xe04ff(%rip), %rdi     # 0xe60ac
movb $0x0, %al
callq 0x4060
movl -0x8(%rbp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x5bcd
leaq 0xe050d(%rip), %rdi     # 0xe60d3
movb $0x0, %al
callq 0x4060
movl -0x8(%rbp), %eax
andl $0x400, %eax            # imm = 0x400
cmpl $0x0, %eax
je 0x5be8
leaq 0xe0517(%rip), %rdi     # 0xe60f8
movb $0x0, %al
callq 0x4060
movl -0x8(%rbp), %eax
andl $0x800, %eax            # imm = 0x800
cmpl $0x0, %eax
je 0x5c03
leaq 0xe0521(%rip), %rdi     # 0xe611d
movb $0x0, %al
callq 0x4060
movl -0x8(%rbp), %eax
andl $0x1000, %eax           # imm = 0x1000
cmpl $0x0, %eax
je 0x5c1e
leaq 0xe0526(%rip), %rdi     # 0xe613d
movb $0x0, %al
callq 0x4060
movl -0x8(%rbp), %eax
andl $0x100000, %eax         # imm = 0x100000
cmpl $0x0, %eax
je 0x5c39
leaq 0xe052c(%rip), %rdi     # 0xe615e
movb $0x0, %al
callq 0x4060
movl -0x8(%rbp), %eax
andl $0x200000, %eax         # imm = 0x200000
cmpl $0x0, %eax
je 0x5c54
leaq 0xe0539(%rip), %rdi     # 0xe6186
movb $0x0, %al
callq 0x4060
movl -0x8(%rbp), %eax
andl $0x400000, %eax         # imm = 0x400000
cmpl $0x0, %eax
je 0x5c6f
leaq 0xe0540(%rip), %rdi     # 0xe61a8
movb $0x0, %al
callq 0x4060
movl -0x8(%rbp), %eax
andl $0x800000, %eax         # imm = 0x800000
cmpl $0x0, %eax
je 0x5c8a
leaq 0xe0548(%rip), %rdi     # 0xe61cb
movb $0x0, %al
callq 0x4060
callq 0xa9a0
movq %rax, %rsi
leaq 0xe0559(%rip), %rdi     # 0xe61f2
movb $0x0, %al
callq 0x4060
leaq 0xe0560(%rip), %rdi     # 0xe6207
movb $0x0, %al
callq 0x4060
movl $0x64, -0x334(%rbp)
leaq -0x330(%rbp), %rdi
leaq -0x334(%rbp), %rsi
callq 0x7cf0
cmpl $0x0, %eax
jge 0x5cdc
movl $0x1, -0x4(%rbp)
jmp 0x5dbf
movl $0x0, -0x338(%rbp)
movl -0x338(%rbp), %eax
cmpl -0x334(%rbp), %eax
jge 0x5db8
movl $0x64, -0x664(%rbp)
movslq -0x338(%rbp), %rax
movq -0x330(%rbp,%rax,8), %rdi
leaq -0x660(%rbp), %rsi
leaq -0x664(%rbp), %rdx
callq 0x7ae0
cmpl $0x0, %eax
jge 0x5d35
movl $0x1, -0x4(%rbp)
jmp 0x5dbf
movslq -0x338(%rbp), %rax
movq -0x330(%rbp,%rax,8), %rsi
leaq 0xe04cf(%rip), %rdi     # 0xe621a
movb $0x0, %al
callq 0x4060
movl $0x0, -0x33c(%rbp)
movl -0x33c(%rbp), %eax
cmpl -0x664(%rbp), %eax
jge 0x5d98
movslq -0x33c(%rbp), %rax
movq -0x660(%rbp,%rax,8), %rsi
leaq 0xe04a3(%rip), %rdi     # 0xe6223
movb $0x0, %al
callq 0x4060
movl -0x33c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x33c(%rbp)
jmp 0x5d5c
leaq 0xe0ddb(%rip), %rdi     # 0xe6b7a
callq 0x47b0
movl -0x338(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x338(%rbp)
jmp 0x5ce6
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x670, %rsp            # imm = 0x670
popq %rbp
retq
nopl (%rax,%rax)