// File: istellartech[P]OpenTsiolkovsky/src/fileio.cpp
// Function: read_csv_vector_2d(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>>)
MatrixXd read_csv_vector_2d(string filename, string col_name0, string col_name1){
//    ファイル名と列名を入れるとMatrixXd(n行2列)を返す
    int col_number = 2;
    io::CSVReader<2> in(filename);
    in.read_header(io::ignore_extra_column, col_name0, col_name1);
    MatrixXd value = MatrixXd::Zero(1,col_number);
    double value0, value1;
    int max_col = 1;
    int now_col = 0;
    while(in.read_row(value0, value1)){
        value.conservativeResize(max_col, col_number);
        value(now_col, 0) = value0;
        value(now_col, 1) = value1;
        now_col++; max_col++;
    }
    return value;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x330, %rsp            # imm = 0x330
movq %rcx, -0x308(%rbp)
movq %rdx, -0x2f0(%rbp)
movq %rdi, -0x300(%rbp)
movq %rdi, %rax
movq %rax, -0x2f8(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movl $0x2, -0x24(%rbp)
leaq -0x260(%rbp), %rdi
callq 0x3cbe0
movq -0x2f0(%rbp), %rsi
leaq -0x280(%rbp), %rdi
callq 0x61f0
jmp 0x3be12
movq -0x308(%rbp), %rsi
leaq -0x2b0(%rbp), %rdi
callq 0x61f0
jmp 0x3be27
leaq -0x260(%rbp), %rdi
movl $0x1, %esi
leaq -0x280(%rbp), %rdx
leaq -0x2b0(%rbp), %rcx
callq 0x3ce00
jmp 0x3be48
leaq -0x2b0(%rbp), %rdi
callq 0x68a8
leaq -0x280(%rbp), %rdi
callq 0x68a8
movb $0x0, -0x2b1(%rbp)
movslq -0x24(%rbp), %rdx
leaq -0x2d0(%rbp), %rdi
movl $0x1, %esi
callq 0x1df90
jmp 0x3be7e
movq -0x300(%rbp), %rdi
leaq -0x2d0(%rbp), %rsi
callq 0x3d040
jmp 0x3be93
movl $0x1, -0x2e4(%rbp)
movl $0x0, -0x2e8(%rbp)
leaq -0x260(%rbp), %rdi
leaq -0x2d8(%rbp), %rsi
leaq -0x2e0(%rbp), %rdx
callq 0x3d0f0
movb %al, -0x309(%rbp)
jmp 0x3bec9
movb -0x309(%rbp), %al
testb $0x1, %al
jne 0x3bed8
jmp 0x3c012
movq -0x300(%rbp), %rdi
movslq -0x2e4(%rbp), %rsi
movslq -0x24(%rbp), %rdx
callq 0x3d260
jmp 0x3bef1
movq -0x300(%rbp), %rdi
movsd -0x2d8(%rbp), %xmm0
movsd %xmm0, -0x320(%rbp)
movslq -0x2e8(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x8540
movq %rax, -0x318(%rbp)
jmp 0x3bf21
movq -0x300(%rbp), %rdi
movq -0x318(%rbp), %rax
movsd -0x320(%rbp), %xmm0
movsd %xmm0, (%rax)
movsd -0x2e0(%rbp), %xmm0
movsd %xmm0, -0x330(%rbp)
movslq -0x2e8(%rbp), %rsi
movl $0x1, %edx
callq 0x8540
movq %rax, -0x328(%rbp)
jmp 0x3bf65
movq -0x328(%rbp), %rax
movsd -0x330(%rbp), %xmm0
movsd %xmm0, (%rax)
movl -0x2e8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2e8(%rbp)
movl -0x2e4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2e4(%rbp)
jmp 0x3bea7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x288(%rbp)
movl %eax, -0x28c(%rbp)
jmp 0x3c04a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x288(%rbp)
movl %eax, -0x28c(%rbp)
jmp 0x3bfe4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x288(%rbp)
movl %eax, -0x28c(%rbp)
leaq -0x2b0(%rbp), %rdi
callq 0x68a8
leaq -0x280(%rbp), %rdi
callq 0x68a8
jmp 0x3c04a
movq -0x300(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x288(%rbp)
movl %eax, -0x28c(%rbp)
callq 0x8220
jmp 0x3c04a
movb $0x1, -0x2b1(%rbp)
testb $0x1, -0x2b1(%rbp)
jne 0x3c02e
movq -0x300(%rbp), %rdi
callq 0x8220
leaq -0x260(%rbp), %rdi
callq 0x3d290
movq -0x2f8(%rbp), %rax
addq $0x330, %rsp            # imm = 0x330
popq %rbp
retq
leaq -0x260(%rbp), %rdi
callq 0x3d290
movq -0x288(%rbp), %rdi
callq 0x67a0
nopw %cs:(%rax,%rax)