// File: Karunika[P]Taxi_Agency_OODB/./src/TaxiAgency.cpp
// Function: TaxiAgency::import_current_shifts(char const*)
void TaxiAgency::import_current_shifts(const char* CURRENT_SHIFTS_FILE){
    ifstream File;
    File.open(CURRENT_SHIFTS_FILE);
    Shift shift;
    if(File.is_open()){
        string t, fields[Shift::ShiftAttributesCount];
        getline(File, t); // skip heading row
        while(getline(File, t)){
            populate_fields(t, fields, Shift::ShiftAttributesCount);
            shift = Shift(fields[0].substr(0, fields[0].length()-2),
                        fields[1].substr(1, fields[1].length()-2),
                        fields[2].substr(1, fields[2].length()-2),
                        stoi(fields[3]),
                        stoi(fields[4]));

            current_shifts.push_back(shift);
        }
        File.close();
    }else{
        throw runtime_error("File couldn't be resolved");
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x4c0, %rsp            # imm = 0x4C0
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x428(%rbp)
leaq -0x218(%rbp), %rdi
movq %rdi, -0x420(%rbp)
callq 0x4340
movq -0x420(%rbp), %rdi
movq -0x10(%rbp), %rsi
movl $0x8, %edx
callq 0x4200
jmp 0x26c68
leaq -0x2c8(%rbp), %rdi
callq 0x2a6b0
jmp 0x26c76
leaq -0x218(%rbp), %rdi
callq 0x4450
movb %al, -0x429(%rbp)
jmp 0x26c8a
movb -0x429(%rbp), %al
testb $0x1, %al
jne 0x26c99
jmp 0x270fa
leaq -0x2e8(%rbp), %rdi
callq 0x43e0
movl 0x1f659(%rip), %eax     # 0x46304
movq %rax, -0x440(%rbp)
movq %rsp, %rcx
movq %rcx, -0x2f0(%rbp)
movq %rax, %rdx
shlq $0x5, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x438(%rbp)
movq %rcx, %rsp
movq %rax, -0x2f8(%rbp)
cmpq $0x0, %rax
je 0x26d37
movq -0x438(%rbp), %rax
movq -0x440(%rbp), %rdx
shlq $0x5, %rdx
movq %rax, %rcx
addq %rdx, %rcx
movq %rcx, -0x450(%rbp)
movq %rax, -0x448(%rbp)
movq -0x448(%rbp), %rdi
movq %rdi, -0x458(%rbp)
callq 0x43e0
movq -0x458(%rbp), %rax
movq -0x450(%rbp), %rcx
addq $0x20, %rax
cmpq %rcx, %rax
movq %rax, -0x448(%rbp)
jne 0x26d06
leaq -0x218(%rbp), %rdi
leaq -0x2e8(%rbp), %rsi
callq 0x4090
jmp 0x26d4c
jmp 0x26d4e
leaq -0x218(%rbp), %rdi
leaq -0x2e8(%rbp), %rsi
callq 0x4090
movq %rax, -0x460(%rbp)
jmp 0x26d6a
movq -0x460(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x4380
movb %al, -0x461(%rbp)
jmp 0x26d88
movb -0x461(%rbp), %al
testb $0x1, %al
jne 0x26d97
jmp 0x27019
leaq -0x318(%rbp), %rdi
leaq -0x2e8(%rbp), %rsi
callq 0x4170
jmp 0x26dac
movq -0x438(%rbp), %rsi
movl 0x1f54b(%rip), %edx     # 0x46304
leaq -0x318(%rbp), %rdi
callq 0x23670
jmp 0x26dc7
leaq -0x318(%rbp), %rdi
callq 0x41f0
movq -0x438(%rbp), %rdi
callq 0x4430
movq -0x438(%rbp), %rsi
movq %rax, %rcx
addq $-0x2, %rcx
xorl %eax, %eax
movl %eax, %edx
leaq -0x3d8(%rbp), %rdi
callq 0x4300
jmp 0x26dff
movq -0x438(%rbp), %rdi
addq $0x20, %rdi
movq %rdi, -0x470(%rbp)
callq 0x4430
movq -0x470(%rbp), %rsi
movq %rax, %rcx
addq $-0x2, %rcx
leaq -0x3f8(%rbp), %rdi
movl $0x1, %edx
callq 0x4300
jmp 0x26e37
movq -0x438(%rbp), %rdi
addq $0x40, %rdi
movq %rdi, -0x478(%rbp)
callq 0x4430
movq -0x478(%rbp), %rsi
movq %rax, %rcx
addq $-0x2, %rcx
leaq -0x418(%rbp), %rdi
movl $0x1, %edx
callq 0x4300
jmp 0x26e6f
movq -0x438(%rbp), %rdi
addq $0x60, %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0xa, %edx
callq 0x29600
movl %eax, -0x47c(%rbp)
jmp 0x26e90
movq -0x438(%rbp), %rdi
subq $-0x80, %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0xa, %edx
callq 0x29600
movl %eax, -0x480(%rbp)
jmp 0x26eb1
movl -0x480(%rbp), %r9d
movl -0x47c(%rbp), %r8d
leaq -0x3b8(%rbp), %rdi
leaq -0x3d8(%rbp), %rsi
leaq -0x3f8(%rbp), %rdx
leaq -0x418(%rbp), %rcx
callq 0x1f130
jmp 0x26ee2
leaq -0x2c8(%rbp), %rdi
movq %rdi, -0x488(%rbp)
leaq -0x3b8(%rbp), %rsi
movq %rsi, -0x490(%rbp)
callq 0x2a950
movq -0x490(%rbp), %rdi
callq 0x2a9d0
leaq -0x418(%rbp), %rdi
callq 0x41f0
leaq -0x3f8(%rbp), %rdi
callq 0x41f0
leaq -0x3d8(%rbp), %rdi
callq 0x41f0
movq -0x428(%rbp), %rdi
movq -0x488(%rbp), %rsi
addq $0x48, %rdi
callq 0x2aa20
jmp 0x26f4c
jmp 0x26d4e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
jmp 0x27184
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
jmp 0x27178
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
jmp 0x27097
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
leaq -0x318(%rbp), %rdi
callq 0x41f0
jmp 0x27097
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
jmp 0x2700b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
jmp 0x26fff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
leaq -0x418(%rbp), %rdi
callq 0x41f0
leaq -0x3f8(%rbp), %rdi
callq 0x41f0
leaq -0x3d8(%rbp), %rdi
callq 0x41f0
jmp 0x27097
leaq -0x218(%rbp), %rdi
callq 0x40b0
jmp 0x27027
movq -0x438(%rbp), %rcx
movq -0x440(%rbp), %rdx
shlq $0x5, %rdx
movq %rcx, %rax
addq %rdx, %rax
cmpq %rax, %rcx
movq %rax, -0x498(%rbp)
je 0x2707c
movq -0x498(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x4a0(%rbp)
callq 0x41f0
movq -0x438(%rbp), %rcx
movq -0x4a0(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x498(%rbp)
jne 0x2704b
movq -0x2f0(%rbp), %rax
movq %rax, %rsp
leaq -0x2e8(%rbp), %rdi
callq 0x41f0
jmp 0x2715b
movq -0x438(%rbp), %rcx
movq -0x440(%rbp), %rdx
shlq $0x5, %rdx
movq %rcx, %rax
addq %rdx, %rax
cmpq %rax, %rcx
movq %rax, -0x4a8(%rbp)
je 0x270ec
movq -0x4a8(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x4b0(%rbp)
callq 0x41f0
movq -0x438(%rbp), %rcx
movq -0x4b0(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x4a8(%rbp)
jne 0x270bb
leaq -0x2e8(%rbp), %rdi
callq 0x41f0
jmp 0x27178
movl $0x10, %edi
callq 0x41a0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x4b8(%rbp)
leaq 0xaa36(%rip), %rsi      # 0x31b4e
callq 0x4140
jmp 0x2711f
movq -0x4b8(%rbp), %rdi
movq 0x1eec3(%rip), %rsi     # 0x45ff0
movq 0x1ee3c(%rip), %rdx     # 0x45f70
callq 0x44b0
jmp 0x2719c
movq -0x4b8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
callq 0x4240
jmp 0x27178
leaq -0x2c8(%rbp), %rdi
callq 0x2a9d0
leaq -0x218(%rbp), %rdi
callq 0x40f0
movq %rbp, %rsp
popq %rbp
retq
leaq -0x2c8(%rbp), %rdi
callq 0x2a9d0
leaq -0x218(%rbp), %rdi
callq 0x40f0
movq -0x220(%rbp), %rdi
callq 0x44f0
nopl (%rax)