// File: /workspace/github_cpp_makefile_star2_O3/istellartech[P]OpenTsiolkovsky/src/../lib/csv.h
// Function: void io::CSVReader<4u, io::trim_chars<(char)32, (char)9>, io::no_quote_escape<(char)44>, io::throw_on_overflow, io::no_comment>::read_header<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>(unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void read_header(ignore_column ignore_policy, ColNames...cols){
                        static_assert(sizeof...(ColNames)>=column_count, "not enough column names specified");
                        static_assert(sizeof...(ColNames)<=column_count, "too many column names specified");
                        try{
                                set_column_names(std::forward<ColNames>(cols)...);

                                char*line;
                                do{
                                        line = in.next_line();
                                        if(!line)
                                                throw error::header_missing();
                                }while(comment_policy::is_comment(line));

                                detail::parse_header_line
                                        <column_count, trim_policy, quote_policy>
                                        (line, col_order, column_names, ignore_policy);
                        }catch(error::with_file_name&err){
                                err.set_file_name(in.get_truncated_file_name());
                                throw;
                        }
                }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x88, %rsp
movl %esi, %ebp
movq %rdi, %rbx
leaq 0x58(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rdx), %rsi
leaq 0x10(%rdx), %rax
cmpq %rax, %rsi
je 0x1c5ad
movq %rsi, 0x48(%rsp)
movq (%rax), %rsi
movq %rsi, 0x58(%rsp)
jmp 0x1c5b5
movups (%rax), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rdx), %rsi
movq %rsi, 0x50(%rsp)
movq %rax, (%rdx)
movq $0x0, 0x8(%rdx)
movb $0x0, 0x10(%rdx)
leaq 0x38(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%rcx), %rdx
leaq 0x10(%rcx), %rax
cmpq %rax, %rdx
je 0x1c5f1
movq %rdx, 0x28(%rsp)
movq (%rax), %rdx
movq %rdx, 0x38(%rsp)
jmp 0x1c5f9
movups (%rax), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rcx), %rdx
movq %rdx, 0x30(%rsp)
movq %rax, (%rcx)
movq $0x0, 0x8(%rcx)
movb $0x0, 0x10(%rcx)
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%r8), %rcx
leaq 0x10(%r8), %rax
cmpq %rax, %rcx
je 0x1c635
movq %rcx, 0x8(%rsp)
movq (%rax), %rcx
movq %rcx, 0x18(%rsp)
jmp 0x1c63c
movups (%rax), %xmm0
movups %xmm0, (%r15)
movq 0x8(%r8), %rcx
movq %rcx, 0x10(%rsp)
movq %rax, (%r8)
movq $0x0, 0x8(%r8)
movb $0x0, 0x10(%r8)
leaq 0x78(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%r9), %rcx
leaq 0x10(%r9), %rax
cmpq %rax, %rcx
je 0x1c679
movq %rcx, 0x68(%rsp)
movq (%rax), %rcx
movq %rcx, 0x78(%rsp)
jmp 0x1c680
movups (%rax), %xmm0
movups %xmm0, (%r14)
movq 0x8(%r9), %rcx
leaq 0x68(%rsp), %r8
movq %rcx, 0x8(%r8)
movq %rax, (%r9)
movq $0x0, 0x8(%r9)
movb $0x0, 0x10(%r9)
leaq 0x48(%rsp), %rsi
leaq 0x28(%rsp), %rdx
leaq 0x8(%rsp), %rcx
movq %rbx, %rdi
callq 0x1f5f4
movq 0x68(%rsp), %rdi
cmpq %r14, %rdi
je 0x1c6cb
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x53b0
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x1c6e2
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x53b0
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0x1c6f9
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x53b0
movq 0x48(%rsp), %rdi
cmpq %r12, %rdi
je 0x1c710
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x53b0
movq %rbx, %rdi
callq 0x1d940
testq %rax, %rax
je 0x1c747
leaq 0x270(%rbx), %rsi
leaq 0x1f0(%rbx), %rdx
movq %rax, %rdi
movl %ebp, %ecx
callq 0x1f788
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x208, %edi            # imm = 0x208
callq 0x51e0
movq %rax, %r14
movl $0x208, %edx            # imm = 0x208
movq %rax, %rdi
xorl %esi, %esi
callq 0x5230
leaq 0x152b6(%rip), %rax     # 0x31a20
movq %rax, (%r14)
leaq 0x151dc(%rip), %rsi     # 0x31950
movq 0x15855(%rip), %rdx     # 0x31fd0
movq %r14, %rdi
callq 0x5620
jmp 0x1c829
movq %rdx, (%rsp)
movq %rax, %rbp
movq 0x68(%rsp), %rdi
cmpq %r14, %rdi
je 0x1c7a6
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x53b0
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x1c7bd
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x53b0
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0x1c7d4
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x53b0
movq 0x48(%rsp), %rdi
cmpq %r12, %rdi
je 0x1c7f4
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x53b0
jmp 0x1c7f4
movq %rdx, (%rsp)
movq %rax, %rbp
cmpl $0x1, (%rsp)
jne 0x1c831
movq %rbp, %rdi
callq 0x5190
movq %rax, %r14
addq $0xc8, %rbx
movl $0xff, %edx
movq %rax, %rdi
movq %rbx, %rsi
callq 0x5200
movb $0x0, 0xff(%r14)
callq 0x54f0
movq %rax, %rbp
callq 0x55a0
movq %rbp, %rdi
callq 0x5650
movq %rax, %rdi
callq 0x722d
nop