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

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x3a0, %rsp            # imm = 0x3A0
movq %r8, -0x368(%rbp)
movq %rcx, -0x360(%rbp)
movq %rdx, -0x348(%rbp)
movq %rdi, -0x358(%rbp)
movq %rdi, %rax
movq %rax, -0x350(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movl $0x3, -0x2c(%rbp)
leaq -0x290(%rbp), %rdi
callq 0x3d300
movq -0x348(%rbp), %rsi
leaq -0x2b0(%rbp), %rdi
callq 0x61f0
jmp 0x3c0dd
movq -0x360(%rbp), %rsi
leaq -0x2e0(%rbp), %rdi
callq 0x61f0
jmp 0x3c0f2
movq -0x368(%rbp), %rsi
leaq -0x300(%rbp), %rdi
callq 0x61f0
jmp 0x3c107
leaq -0x290(%rbp), %rdi
movl $0x1, %esi
leaq -0x2b0(%rbp), %rdx
leaq -0x2e0(%rbp), %rcx
leaq -0x300(%rbp), %r8
callq 0x3d520
jmp 0x3c12f
leaq -0x300(%rbp), %rdi
callq 0x68a8
leaq -0x2e0(%rbp), %rdi
callq 0x68a8
leaq -0x2b0(%rbp), %rdi
callq 0x68a8
movb $0x0, -0x301(%rbp)
movslq -0x2c(%rbp), %rdx
leaq -0x320(%rbp), %rdi
movl $0x1, %esi
callq 0x1df90
jmp 0x3c171
movq -0x358(%rbp), %rdi
leaq -0x320(%rbp), %rsi
callq 0x3d040
jmp 0x3c186
movl $0x1, -0x33c(%rbp)
movl $0x0, -0x340(%rbp)
leaq -0x290(%rbp), %rdi
leaq -0x328(%rbp), %rsi
leaq -0x330(%rbp), %rdx
leaq -0x338(%rbp), %rcx
callq 0x3d7b0
movb %al, -0x369(%rbp)
jmp 0x3c1c3
movb -0x369(%rbp), %al
testb $0x1, %al
jne 0x3c1d2
jmp 0x3c370
movq -0x358(%rbp), %rdi
movslq -0x33c(%rbp), %rsi
movslq -0x2c(%rbp), %rdx
callq 0x3d260
jmp 0x3c1eb
movq -0x358(%rbp), %rdi
movsd -0x328(%rbp), %xmm0
movsd %xmm0, -0x380(%rbp)
movslq -0x340(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x8540
movq %rax, -0x378(%rbp)
jmp 0x3c21b
movq -0x358(%rbp), %rdi
movq -0x378(%rbp), %rax
movsd -0x380(%rbp), %xmm0
movsd %xmm0, (%rax)
movsd -0x330(%rbp), %xmm0
movsd %xmm0, -0x390(%rbp)
movslq -0x340(%rbp), %rsi
movl $0x1, %edx
callq 0x8540
movq %rax, -0x388(%rbp)
jmp 0x3c25f
movq -0x358(%rbp), %rdi
movq -0x388(%rbp), %rax
movsd -0x390(%rbp), %xmm0
movsd %xmm0, (%rax)
movsd -0x338(%rbp), %xmm0
movsd %xmm0, -0x3a0(%rbp)
movslq -0x340(%rbp), %rsi
movl $0x2, %edx
callq 0x8540
movq %rax, -0x398(%rbp)
jmp 0x3c2a3
movq -0x398(%rbp), %rax
movsd -0x3a0(%rbp), %xmm0
movsd %xmm0, (%rax)
movl -0x340(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x340(%rbp)
movl -0x33c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x33c(%rbp)
jmp 0x3c19a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2b8(%rbp)
movl %eax, -0x2bc(%rbp)
jmp 0x3c3a8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2b8(%rbp)
movl %eax, -0x2bc(%rbp)
jmp 0x3c342
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2b8(%rbp)
movl %eax, -0x2bc(%rbp)
jmp 0x3c336
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2b8(%rbp)
movl %eax, -0x2bc(%rbp)
leaq -0x300(%rbp), %rdi
callq 0x68a8
leaq -0x2e0(%rbp), %rdi
callq 0x68a8
leaq -0x2b0(%rbp), %rdi
callq 0x68a8
jmp 0x3c3a8
movq -0x358(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2b8(%rbp)
movl %eax, -0x2bc(%rbp)
callq 0x8220
jmp 0x3c3a8
movb $0x1, -0x301(%rbp)
testb $0x1, -0x301(%rbp)
jne 0x3c38c
movq -0x358(%rbp), %rdi
callq 0x8220
leaq -0x290(%rbp), %rdi
callq 0x3d920
movq -0x350(%rbp), %rax
addq $0x3a0, %rsp            # imm = 0x3A0
popq %rbp
retq
leaq -0x290(%rbp), %rdi
callq 0x3d920
movq -0x2b8(%rbp), %rdi
callq 0x67a0