// File: /workspace/github_cpp_makefile_star2_O1/istellartech[P]OpenTsiolkovsky/src/../lib/csv.h
// Function: void io::detail::parse_header_line<2u, io::trim_chars<(char)32, (char)9>, io::no_quote_escape<(char)44>>(char*, std::vector<int, std::allocator<int>>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const*, unsigned int)
void parse_header_line(
                        char*line,
                        std::vector<int>&col_order,
                        const std::string*col_name,
                        ignore_column ignore_policy
                ){
                        col_order.clear();

                        bool found[column_count];
                        std::fill(found, found + column_count, false);
                        while(line){
                                char*col_begin,*col_end;
                                chop_next_column<quote_policy>(line, col_begin, col_end);

                                trim_policy::trim(col_begin, col_end);
                                quote_policy::unescape(col_begin, col_end);
                               
                                for(unsigned i=0; i<column_count; ++i)
                                        if(col_begin == col_name[i]){
                                                if(found[i]){
                                                        error::duplicated_column_in_header err;
                                                        err.set_column_name(col_begin);
                                                        throw err;
                                                }
                                                found[i] = true;
                                                col_order.push_back(i);
                                                col_begin = 0;
                                                break;
                                        }
                                if(col_begin){
                                        if(ignore_policy & ::io::ignore_extra_column)
                                                col_order.push_back(-1);
                                        else{
                                                error::extra_column_in_header err;
                                                err.set_column_name(col_begin);
                                                throw err;
                                        }
                                }
                        }
                        if(!(ignore_policy & ::io::ignore_missing_column)){
                                for(unsigned i=0; i<column_count; ++i){
                                        if(!found[i]){
                                                error::missing_column_in_header err;
                                                err.set_column_name(col_name[i].c_str());
                                                throw err;
                                        }
                                }
                        }
                }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x268, %rsp            # imm = 0x268
movl %ecx, %ebp
movq %rdx, %r14
movq %rsi, %r15
movq %rdi, 0x18(%rsp)
movq (%rsi), %rax
cmpq %rax, 0x8(%rsi)
je 0x1f972
movq %rax, 0x8(%r15)
movw $0x0, 0x6(%rsp)
cmpq $0x0, 0x18(%rsp)
je 0x1faa0
leaq 0x10(%rsp), %rbx
leaq 0x18(%rsp), %rdi
leaq 0x8(%rsp), %rsi
movq %rbx, %rdx
callq 0x1fe99
movq 0x8(%rsp), %rax
movq 0x10(%rsp), %rcx
movzbl (%rax), %edx
cmpl $0x20, %edx
je 0x1f9b3
cmpl $0x9, %edx
jne 0x1f9c2
cmpq %rcx, %rax
je 0x1f9c2
incq %rax
movq %rax, 0x8(%rsp)
jmp 0x1f9a6
movq 0x10(%rsp), %rcx
movzbl -0x1(%rcx), %edx
cmpl $0x20, %edx
je 0x1f9d5
cmpl $0x9, %edx
jne 0x1f9e4
cmpq %rax, %rcx
je 0x1f9e4
decq %rcx
movq %rcx, 0x10(%rsp)
jmp 0x1f9c7
movb $0x0, (%rcx)
movq %r14, %r12
xorl %r13d, %r13d
movq 0x8(%rsp), %rsi
movq %r12, %rdi
callq 0x5120
testl %eax, %eax
je 0x1fa0d
incq %r13
addq $0x20, %r12
cmpq $0x1, %r13
je 0x1f9ed
jmp 0x1fa51
cmpb $0x1, 0x6(%rsp,%r13)
je 0x1fc7b
movb $0x1, 0x6(%rsp,%r13)
movl %r13d, 0x20(%rsp)
movq 0x8(%r15), %rsi
cmpq 0x10(%r15), %rsi
je 0x1fa3b
movl %r13d, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%r15)
jmp 0x1fa48
movq %r15, %rdi
leaq 0x20(%rsp), %rdx
callq 0x1ff30
movq $0x0, 0x8(%rsp)
movq 0x8(%rsp), %r12
testq %r12, %r12
je 0x1fa94
testb $0x1, %bpl
je 0x1fba6
movl $0xffffffff, 0x20(%rsp) # imm = 0xFFFFFFFF
movq 0x8(%r15), %rsi
cmpq 0x10(%r15), %rsi
je 0x1fa87
movl $0xffffffff, (%rsi)     # imm = 0xFFFFFFFF
addq $0x4, %rsi
movq %rsi, 0x8(%r15)
jmp 0x1fa94
movq %r15, %rdi
leaq 0x20(%rsp), %rdx
callq 0x1ff30
cmpq $0x0, 0x18(%rsp)
jne 0x1f98a
testb $0x2, %bpl
jne 0x1fabc
xorl %eax, %eax
cmpb $0x0, 0x6(%rsp,%rax)
je 0x1face
incq %rax
addq $0x20, %r14
cmpq $0x1, %rax
je 0x1faa8
addq $0x268, %rsp            # imm = 0x268
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x108, %ebx            # imm = 0x108
leaq 0x20(%rsp), %r12
leaq (%r12,%rbx), %r15
movl $0x140, %edx            # imm = 0x140
movq %r15, %rdi
xorl %esi, %esi
callq 0x5230
leaq 0x130a6(%rip), %r13     # 0x32b98
movq %r13, (%r12)
leaq 0x228(%rsp), %r12
movq (%r14), %rsi
movl $0x3f, %edx
movq %r12, %rdi
callq 0x5200
movb $0x0, 0x3f(%r12)
movl $0x248, %edi            # imm = 0x248
callq 0x51e0
movq %rax, %r14
leaq 0x12db8(%rip), %rax     # 0x328e0
movq %rax, (%r14)
leaq 0x8(%r14), %rdi
leaq 0x28(%rsp), %rsi
movl $0x100, %edx            # imm = 0x100
callq 0x52f0
addq %r14, %rbx
movl $0x100, %edx            # imm = 0x100
movq %rbx, %rdi
movq %r15, %rsi
callq 0x52f0
movups (%r12), %xmm0
movups 0x10(%r12), %xmm1
movups 0x20(%r12), %xmm2
movups 0x30(%r12), %xmm3
movups %xmm0, 0x208(%r14)
movups %xmm1, 0x218(%r14)
movups %xmm2, 0x228(%r14)
movups %xmm3, 0x238(%r14)
movq %r13, (%r14)
leaq 0x12f4e(%rip), %rsi     # 0x32ae0
movq 0x13437(%rip), %rdx     # 0x32fd0
movq %r14, %rdi
callq 0x5620
jmp 0x1fd4d
movl $0x108, %ebx            # imm = 0x108
leaq 0x20(%rsp), %rbp
addq %rbx, %rbp
movl $0x140, %edx            # imm = 0x140
movq %rbp, %rdi
xorl %esi, %esi
callq 0x5230
leaq 0x12f9f(%rip), %r13     # 0x32b68
leaq 0x228(%rsp), %r14
movq %r13, -0x208(%r14)
movl $0x3f, %edx
movq %r14, %rdi
movq %r12, %rsi
callq 0x5200
movb $0x0, 0x3f(%r14)
movl $0x248, %edi            # imm = 0x248
callq 0x51e0
movq %rax, %r15
leaq 0x12cdf(%rip), %rax     # 0x328e0
movq %rax, (%r15)
leaq 0x8(%r15), %rdi
leaq 0x28(%rsp), %rsi
movl $0x100, %edx            # imm = 0x100
callq 0x52f0
addq %r15, %rbx
movl $0x100, %edx            # imm = 0x100
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x52f0
movups (%r14), %xmm0
movups 0x10(%r14), %xmm1
movups 0x20(%r14), %xmm2
movups 0x30(%r14), %xmm3
movups %xmm0, 0x208(%r15)
movups %xmm1, 0x218(%r15)
movups %xmm2, 0x228(%r15)
movups %xmm3, 0x238(%r15)
movq %r13, (%r15)
leaq 0x12e31(%rip), %rsi     # 0x32a98
movq 0x13362(%rip), %rdx     # 0x32fd0
movq %r15, %rdi
callq 0x5620
jmp 0x1fd4d
movl $0x108, %ebx            # imm = 0x108
leaq 0x20(%rsp), %r13
addq %rbx, %r13
movl $0x140, %edx            # imm = 0x140
movq %r13, %rdi
xorl %esi, %esi
callq 0x5230
leaq 0x12e9a(%rip), %r12     # 0x32b38
leaq 0x228(%rsp), %r14
movq %r12, -0x208(%r14)
movq 0x8(%rsp), %rsi
movl $0x3f, %edx
movq %r14, %rdi
callq 0x5200
movb $0x0, 0x3f(%r14)
movl $0x248, %edi            # imm = 0x248
callq 0x51e0
movq %rax, %r15
leaq 0x12c08(%rip), %rax     # 0x328e0
movq %rax, (%r15)
leaq 0x8(%r15), %rdi
leaq 0x28(%rsp), %rsi
movl $0x100, %edx            # imm = 0x100
callq 0x52f0
addq %r15, %rbx
movl $0x100, %edx            # imm = 0x100
movq %rbx, %rdi
movq %r13, %rsi
callq 0x52f0
movups (%r14), %xmm0
movups 0x10(%r14), %xmm1
movups 0x20(%r14), %xmm2
movups 0x30(%r14), %xmm3
movups %xmm0, 0x208(%r15)
movups %xmm1, 0x218(%r15)
movups %xmm2, 0x228(%r15)
movups %xmm3, 0x238(%r15)
movq %r12, (%r15)
leaq 0x12d12(%rip), %rsi     # 0x32a50
movq 0x1328b(%rip), %rdx     # 0x32fd0
movq %r15, %rdi
callq 0x5620
jmp 0x1fd51
jmp 0x1fd51
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x56d8
movq %rbx, %rdi
callq 0x5650