// File: /workspace/github_cpp_makefile_star2_O2/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 0x7144
testb %al, %al
je 0x771c
testq %rbx, %rbx
je 0x773b
xorl %edi, %edi
callq 0x44d0
leaq 0x8(%rsp), %rdi
movq %rax, (%rdi)
callq 0x43d0
movl $0x76c, %edx            # imm = 0x76C
addl 0x14(%rax), %edx
movl 0xc(%rax), %r8d
movl 0x10(%rax), %ecx
incl %ecx
leaq 0x3a1e3(%rip), %rsi     # 0x417f0
movq %rbx, %rdi
xorl %eax, %eax
callq 0x4770
cmpq $0x0, 0x8(%r12)
je 0x7634
movq (%r12), %rdx
leaq 0x3a203(%rip), %rsi     # 0x4182d
movq %rbx, %rdi
xorl %eax, %eax
callq 0x4770
leaq 0x3a206(%rip), %rsi     # 0x41841
pushq $0x10
popq %rdx
movq %rbx, %rdi
xorl %eax, %eax
callq 0x4770
leaq 0x3a217(%rip), %rsi     # 0x41866
pushq $0x3
popq %rdx
movq %rbx, %rdi
xorl %eax, %eax
callq 0x4770
cmpq $0x0, 0x8(%r15)
je 0x7677
movq (%r15), %rdx
leaq 0x3a216(%rip), %rsi     # 0x41883
movq %rbx, %rdi
xorl %eax, %eax
callq 0x4770
leaq 0x3a215(%rip), %r15     # 0x41893
xorl %r12d, %r12d
xorl %r13d, %r13d
movslq (%r14), %rax
cmpq %rax, %r13
jge 0x76b2
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
addq $0x8, %r12
jmp 0x7684
leaq 0x3a1f7(%rip), %rdi     # 0x418b0
pushq $0x56
popq %rsi
pushq $0x1
popq %r14
movq %r14, %rdx
movq %rbx, %rcx
callq 0x4a20
leaq 0x3a235(%rip), %rdi     # 0x41907
pushq $0x4f
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x4a20
leaq 0x3a270(%rip), %rdi     # 0x41957
movl $0x97, %esi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x4a20
leaq 0x3a2f1(%rip), %rdi     # 0x419ef
pushq $0x27
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x4a20
xorl %eax, %eax
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
leaq 0x39c74(%rip), %rdi     # 0x41397
leaq 0x39c80(%rip), %rsi     # 0x413aa
leaq 0x3a00f(%rip), %rcx     # 0x41740
movl $0x1cf, %edx            # imm = 0x1CF
callq 0x4360
leaq 0x3a09a(%rip), %rdi     # 0x417dc
leaq 0x39c61(%rip), %rsi     # 0x413aa
leaq 0x39ff0(%rip), %rcx     # 0x41740
movl $0x1d0, %edx            # imm = 0x1D0
callq 0x4360