// File: 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
movq %rsp, %rbp
subq $0x750, %rsp            # imm = 0x750
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movl %ecx, -0x1c(%rbp)
movq -0x10(%rbp), %rdi
callq 0x42160
leaq -0x1e(%rbp), %rdi
leaq -0x1e(%rbp), %rsi
addq $0x2, %rsi
movb $0x0, -0x1f(%rbp)
leaq -0x1f(%rbp), %rdx
callq 0x42180
cmpq $0x0, -0x8(%rbp)
je 0x41bc1
leaq -0x8(%rbp), %rdi
leaq -0x28(%rbp), %rsi
leaq -0x30(%rbp), %rdx
callq 0x421b0
leaq -0x28(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x42270
leaq -0x28(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x42340
movl $0x0, -0x34(%rbp)
cmpl $0x2, -0x34(%rbp)
jae 0x41b05
movq -0x28(%rbp), %rdi
movq -0x18(%rbp), %rsi
movl -0x34(%rbp), %eax
shlq $0x5, %rax
addq %rax, %rsi
callq 0x42350
testb $0x1, %al
jne 0x41a43
jmp 0x41af5
movl -0x34(%rbp), %eax
testb $0x1, -0x1e(%rbp,%rax)
je 0x41aca
leaq -0x280(%rbp), %rdi
callq 0x42380
leaq -0x78(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x42400
jmp 0x41a68
movl $0x248, %edi            # imm = 0x248
callq 0x6250
movq %rax, %rdi
movq %rdi, -0x738(%rbp)
leaq -0x280(%rbp), %rsi
callq 0x42440
movq -0x738(%rbp), %rdi
leaq 0x36faa(%rip), %rsi     # 0x78a40
leaq 0xa23(%rip), %rdx       # 0x424c0
callq 0x6760
jmp 0x41cc2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x288(%rbp)
movl %eax, -0x28c(%rbp)
leaq -0x280(%rbp), %rdi
callq 0x424c0
jmp 0x41cb6
movl -0x34(%rbp), %eax
movb $0x1, -0x1e(%rbp,%rax)
movq -0x10(%rbp), %rdi
movl -0x34(%rbp), %eax
movl %eax, -0x290(%rbp)
leaq -0x290(%rbp), %rsi
callq 0x424e0
movq $0x0, -0x28(%rbp)
jmp 0x41b05
jmp 0x41af7
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x41a19
cmpq $0x0, -0x28(%rbp)
je 0x41bbc
movl -0x1c(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x41b3a
movq -0x10(%rbp), %rdi
movl $0xffffffff, -0x294(%rbp) # imm = 0xFFFFFFFF
leaq -0x294(%rbp), %rsi
callq 0x424e0
jmp 0x41bba
leaq -0x4e0(%rbp), %rdi
callq 0x42510
leaq -0x2d8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x42400
jmp 0x41b58
movl $0x248, %edi            # imm = 0x248
callq 0x6250
movq %rax, %rdi
movq %rdi, -0x740(%rbp)
leaq -0x4e0(%rbp), %rsi
callq 0x42570
movq -0x740(%rbp), %rdi
leaq 0x36f02(%rip), %rsi     # 0x78a88
leaq 0xa63(%rip), %rdx       # 0x425f0
callq 0x6760
jmp 0x41cc2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x288(%rbp)
movl %eax, -0x28c(%rbp)
leaq -0x4e0(%rbp), %rdi
callq 0x425f0
jmp 0x41cb6
jmp 0x41bbc
jmp 0x419dc
movl -0x1c(%rbp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
jne 0x41cad
movl $0x0, -0x4e4(%rbp)
cmpl $0x2, -0x4e4(%rbp)
jae 0x41cab
movl -0x4e4(%rbp), %eax
testb $0x1, -0x1e(%rbp,%rax)
jne 0x41c95
leaq -0x730(%rbp), %rdi
callq 0x42610
leaq -0x528(%rbp), %rax
movq %rax, -0x748(%rbp)
movq -0x18(%rbp), %rdi
movl -0x4e4(%rbp), %eax
shlq $0x5, %rax
addq %rax, %rdi
callq 0x61e0
movq -0x748(%rbp), %rdi
movq %rax, %rsi
callq 0x42400
jmp 0x41c39
movl $0x248, %edi            # imm = 0x248
callq 0x6250
movq %rax, %rdi
movq %rdi, -0x750(%rbp)
leaq -0x730(%rbp), %rsi
callq 0x42670
movq -0x750(%rbp), %rdi
leaq 0x36e69(%rip), %rsi     # 0x78ad0
leaq 0xa82(%rip), %rdx       # 0x426f0
callq 0x6760
jmp 0x41cc2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x288(%rbp)
movl %eax, -0x28c(%rbp)
leaq -0x730(%rbp), %rdi
callq 0x426f0
jmp 0x41cb6
jmp 0x41c97
movl -0x4e4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4e4(%rbp)
jmp 0x41bda
jmp 0x41cad
addq $0x750, %rsp            # imm = 0x750
popq %rbp
retq
movq -0x288(%rbp), %rdi
callq 0x67a0
nopw %cs:(%rax,%rax)
nopl (%rax)