// File: /workspace/github_cpp_makefile_star2_O1/karel-brinda[P]ococo/src/stats.h
// Function: ococo::stats_t<unsigned short, 3, 4>::print_vcf_header(_IO_FILE*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>) const
int stats_t<T, counter_size, refbase_size>::print_vcf_header(
    FILE *vcf_file, std::string cmd, std::string fasta) const {
    assert(check_allocation());
    assert(vcf_file != nullptr);

    std::time_t tt = std::time(nullptr);
    tm *tm         = localtime(&tt);

    fprintf(vcf_file,
            "##fileformat=VCFv4.3\n"
            "##fileDate=%04d%02d%02d\n"
            "##source=Ococo\n",
            tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday);

    if (!cmd.empty()) {
        fprintf(vcf_file, "##ococo_command=%s\n", cmd.c_str());
    }
    fprintf(vcf_file, "##ococo_stats_datatype_size=%zubits\n", 8 * sizeof(T));
    fprintf(vcf_file, "##ococo_counter_size=%dbits\n", counter_size);

    if (!fasta.empty()) {
        fprintf(vcf_file, "##reference=%s\n", fasta.c_str());
    }

    for (int seqid = 0; seqid < n_seqs; seqid++) {
        fprintf(vcf_file, "##contig=<ID=%s,length=%" PRId64 ">\n",
                seq_name[seqid].c_str(), seq_len[seqid]);
    }

    fprintf(vcf_file,
            "##INFO=<ID=AF,Number=A,Type=Float,Description="
            "\"Allele frequency for the ALT allele.\">\n");
    fprintf(vcf_file,
            "##INFO=<ID=CS,Number=4,Type=Integer,Description="
            "\"Values of A,C,G,T counters.\">\n");
    fprintf(vcf_file,
            "##INFO=<ID=COV,Number=1,Type=Integer,Description="
            "\"Coverage (correct if no shift has been performed so far and "
            "reference nucleotide was unambiguous).\">\n");
    fprintf(vcf_file, "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\n");

    return 0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x10, %rsp
movq %rcx, %r15
movq %rdx, %r12
movq %rsi, %rbx
movq %rdi, %r14
callq 0x902a
testb %al, %al
je 0x9630
testq %rbx, %rbx
je 0x964f
xorl %edi, %edi
callq 0x44d0
leaq 0x8(%rsp), %rdi
movq %rax, (%rdi)
callq 0x43e0
movl $0x76c, %edx            # imm = 0x76C
addl 0x14(%rax), %edx
movl 0xc(%rax), %r8d
movl 0x10(%rax), %ecx
incl %ecx
leaq 0x472c1(%rip), %rsi     # 0x507d0
movq %rbx, %rdi
xorl %eax, %eax
callq 0x4770
cmpq $0x0, 0x8(%r12)
je 0x9536
movq (%r12), %rdx
leaq 0x472e1(%rip), %rsi     # 0x5080d
movq %rbx, %rdi
xorl %eax, %eax
callq 0x4770
leaq 0x472e4(%rip), %rsi     # 0x50821
movl $0x10, %edx
movq %rbx, %rdi
xorl %eax, %eax
callq 0x4770
leaq 0x472f3(%rip), %rsi     # 0x50846
movq %rbx, %rdi
movl $0x3, %edx
xorl %eax, %eax
callq 0x4770
cmpq $0x0, 0x8(%r15)
je 0x957d
movq (%r15), %rdx
leaq 0x472f0(%rip), %rsi     # 0x50863
movq %rbx, %rdi
xorl %eax, %eax
callq 0x4770
cmpl $0x0, (%r14)
jle 0x95bc
leaq 0x472e9(%rip), %r15     # 0x50873
xorl %r12d, %r12d
xorl %r13d, %r13d
movq 0x10(%r14), %rax
movq 0x18(%r14), %rcx
movq (%rcx,%r12,4), %rdx
movq (%rax,%r12), %rcx
movq %rbx, %rdi
movq %r15, %rsi
xorl %eax, %eax
callq 0x4770
incq %r13
movslq (%r14), %rax
addq $0x8, %r12
cmpq %rax, %r13
jl 0x9590
leaq 0x472cd(%rip), %rdi     # 0x50890
movl $0x56, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x4a30
leaq 0x4730b(%rip), %rdi     # 0x508e7
movl $0x4f, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x4a30
leaq 0x47342(%rip), %rdi     # 0x50937
movl $0x97, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x4a30
leaq 0x473c1(%rip), %rdi     # 0x509cf
movl $0x27, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x4a30
xorl %eax, %eax
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
leaq 0x46d40(%rip), %rdi     # 0x50377
leaq 0x46d4c(%rip), %rsi     # 0x5038a
leaq 0x470db(%rip), %rcx     # 0x50720
movl $0x1cf, %edx            # imm = 0x1CF
callq 0x4350
leaq 0x47166(%rip), %rdi     # 0x507bc
leaq 0x46d2d(%rip), %rsi     # 0x5038a
leaq 0x470bc(%rip), %rcx     # 0x50720
movl $0x1d0, %edx            # imm = 0x1D0
callq 0x4350