// File: canzarlab[P]Trajan/src/read_csv.cpp
// Function: CSVReader::getStringData[abi:cxx11](int, int)
std::vector<std::vector<std::string> > CSVReader::getStringData(int from_row, int to_row)
{
	std::ifstream file(fileName);

	std::vector<std::vector<std::string> > dataList;

	std::string line = "";
	// Iterate through each line and split the content using delimeter
    int count = 0;
	while (getline(file, line))
	{
        if (count >= to_row) {
            break;
        }
		std::vector<std::string> vec;
        if (count >= from_row){
            boost::algorithm::split(vec, line, boost::is_any_of(delimeter));
            dataList.push_back(vec);
        }
        count ++;
	}
	// Close the File
	file.close();

	return dataList;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2c0, %rsp            # imm = 0x2C0
movq %rdi, -0x2a0(%rbp)
movq %rdi, %rax
movq %rax, -0x2b0(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movl %ecx, -0x18(%rbp)
movq -0x10(%rbp), %rsi
movq %rsi, -0x2a8(%rbp)
leaq -0x220(%rbp), %rdi
movl $0x8, %edx
callq 0x4460
movq -0x2a0(%rbp), %rdi
movb $0x0, -0x221(%rbp)
callq 0x15ad0
leaq -0x249(%rbp), %rdi
movq %rdi, -0x298(%rbp)
callq 0x44f0
movq -0x298(%rbp), %rdx
leaq 0x8fd2(%rip), %rsi      # 0x1e09c
leaq -0x248(%rbp), %rdi
callq 0x91e0
jmp 0x150d8
leaq -0x249(%rbp), %rdi
callq 0x4330
movl $0x0, -0x260(%rbp)
leaq -0x220(%rbp), %rdi
leaq -0x248(%rbp), %rsi
callq 0x4090
movq %rax, -0x2b8(%rbp)
jmp 0x1510a
movq -0x2b8(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x43a0
movb %al, -0x2b9(%rbp)
jmp 0x15128
movb -0x2b9(%rbp), %al
testb $0x1, %al
jne 0x15137
jmp 0x1525b
movl -0x260(%rbp), %eax
cmpl -0x18(%rbp), %eax
jl 0x15181
jmp 0x1525b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x258(%rbp)
movl %eax, -0x25c(%rbp)
leaq -0x249(%rbp), %rdi
callq 0x4330
jmp 0x152bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x258(%rbp)
movl %eax, -0x25c(%rbp)
jmp 0x15287
leaq -0x278(%rbp), %rdi
callq 0xb660
movl -0x260(%rbp), %eax
cmpl -0x14(%rbp), %eax
jl 0x1522d
movq -0x2a8(%rbp), %rsi
addq $0x20, %rsi
leaq -0x290(%rbp), %rdi
callq 0x15bc0
jmp 0x151b5
leaq -0x278(%rbp), %rdi
leaq -0x248(%rbp), %rsi
leaq -0x290(%rbp), %rdx
movl $0x1, %ecx
callq 0x15af0
jmp 0x151d6
leaq -0x290(%rbp), %rdi
callq 0x15c10
movq -0x2a0(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x15c60
jmp 0x151f7
jmp 0x1522d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x258(%rbp)
movl %eax, -0x25c(%rbp)
jmp 0x1524d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x258(%rbp)
movl %eax, -0x25c(%rbp)
leaq -0x290(%rbp), %rdi
callq 0x15c10
jmp 0x1524d
movl -0x260(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x260(%rbp)
leaq -0x278(%rbp), %rdi
callq 0xbd50
jmp 0x150ee
leaq -0x278(%rbp), %rdi
callq 0xbd50
jmp 0x15287
leaq -0x220(%rbp), %rdi
callq 0x40a0
jmp 0x15269
movb $0x1, -0x221(%rbp)
leaq -0x248(%rbp), %rdi
callq 0x41e0
testb $0x1, -0x221(%rbp)
jne 0x152a1
jmp 0x15295
leaq -0x248(%rbp), %rdi
callq 0x41e0
jmp 0x152bd
movq -0x2a0(%rbp), %rdi
callq 0x15cd0
leaq -0x220(%rbp), %rdi
callq 0x40b0
movq -0x2b0(%rbp), %rax
addq $0x2c0, %rsp            # imm = 0x2C0
popq %rbp
retq
movq -0x2a0(%rbp), %rdi
callq 0x15cd0
leaq -0x220(%rbp), %rdi
callq 0x40b0
movq -0x258(%rbp), %rdi
callq 0x44e0
nopw %cs:(%rax,%rax)