// File: Karunika[P]Taxi_Agency_OODB/./src/TaxiAgency.cpp
// Function: TaxiAgency::add_driver(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>>, Status)
void TaxiAgency::add_driver(string firstname, string lastname, string uuid, string dln, Status status){
    if(driver_db.size() == DriverLimit+1)
        throw range_error("The maximum vacancy of driver is reached. Need to upgrade the Agency!");
    for(int i = 0; i < driver_db.size(); i++){
        if(driver_db[i] == uuid){
            throw invalid_argument("User with the UUID already exist.");
        }
        if(driver_db[i] > uuid){
            Driver new_driver(firstname, lastname, uuid, dln, status);
            driver_db.insert(driver_db.begin() + i, new_driver);
            return;
        }
    };
    Driver new_driver(firstname, lastname, uuid, dln, status);
    driver_db.push_back(new_driver);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2c0, %rsp            # imm = 0x2C0
movq %rsi, -0x298(%rbp)
movq %rdx, -0x290(%rbp)
movq %rcx, -0x288(%rbp)
movq %r8, -0x280(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movl %r9d, -0x2c(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x278(%rbp)
addq $0x18, %rdi
callq 0x29570
movq -0x278(%rbp), %rcx
movl 0x84(%rcx), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
cmpq %rcx, %rax
jne 0x26207
movl $0x10, %edi
callq 0x41a0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x2a0(%rbp)
leaq 0xbbed(%rip), %rsi      # 0x31db6
callq 0x44c0
jmp 0x261d0
movq -0x2a0(%rbp), %rdi
movq 0x1fdd2(%rip), %rsi     # 0x45fb0
movq 0x1fd83(%rip), %rdx     # 0x45f68
callq 0x44b0
movq -0x2a0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
callq 0x4240
jmp 0x2661d
movl $0x0, -0x40(%rbp)
movq -0x278(%rbp), %rdi
movslq -0x40(%rbp), %rax
movq %rax, -0x2a8(%rbp)
addq $0x18, %rdi
callq 0x29570
movq %rax, %rcx
movq -0x2a8(%rbp), %rax
cmpq %rcx, %rax
jae 0x264bf
movq -0x278(%rbp), %rdi
addq $0x18, %rdi
movslq -0x40(%rbp), %rsi
callq 0x2a380
movq -0x288(%rbp), %rsi
movq %rax, %rdi
callq 0x1e880
testb $0x1, %al
jne 0x26265
jmp 0x262c1
movl $0x10, %edi
callq 0x41a0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x2b0(%rbp)
leaq 0xba9f(%rip), %rsi      # 0x31d22
callq 0x4530
jmp 0x2628a
movq -0x2b0(%rbp), %rdi
movq 0x1fd30(%rip), %rsi     # 0x45fc8
movq 0x1fd09(%rip), %rdx     # 0x45fa8
callq 0x44b0
movq -0x2b0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
callq 0x4240
jmp 0x2661d
movq -0x278(%rbp), %rdi
addq $0x18, %rdi
movslq -0x40(%rbp), %rsi
callq 0x2a380
movq -0x288(%rbp), %rsi
movq %rax, %rdi
callq 0x1e850
testb $0x1, %al
jne 0x262ed
jmp 0x264af
movq -0x298(%rbp), %rsi
leaq -0xe8(%rbp), %rdi
callq 0x4170
movq -0x290(%rbp), %rsi
leaq -0x108(%rbp), %rdi
callq 0x4170
jmp 0x26315
movq -0x288(%rbp), %rsi
leaq -0x128(%rbp), %rdi
callq 0x4170
jmp 0x2632a
movq -0x280(%rbp), %rsi
leaq -0x148(%rbp), %rdi
callq 0x4170
jmp 0x2633f
movl -0x2c(%rbp), %r9d
leaq -0xc8(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
leaq -0x108(%rbp), %rdx
leaq -0x128(%rbp), %rcx
leaq -0x148(%rbp), %r8
callq 0x1eac0
jmp 0x2636d
leaq -0x148(%rbp), %rdi
callq 0x41f0
leaq -0x128(%rbp), %rdi
callq 0x41f0
leaq -0x108(%rbp), %rdi
callq 0x41f0
leaq -0xe8(%rbp), %rdi
callq 0x41f0
movq -0x278(%rbp), %rdi
addq $0x18, %rdi
movq %rdi, -0x2c0(%rbp)
callq 0x2a230
movq %rax, -0x160(%rbp)
movslq -0x40(%rbp), %rsi
leaq -0x160(%rbp), %rdi
callq 0x2a5c0
movq %rax, -0x158(%rbp)
leaq -0x150(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0x2a600
movq -0x2c0(%rbp), %rdi
movq -0x150(%rbp), %rsi
leaq -0xc8(%rbp), %rdx
callq 0x2a3a0
movq %rax, -0x2b8(%rbp)
jmp 0x26408
movq -0x2b8(%rbp), %rax
movq %rax, -0x168(%rbp)
leaq -0xc8(%rbp), %rdi
callq 0x2a190
jmp 0x26594
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x26481
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x26475
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x26469
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x148(%rbp), %rdi
callq 0x41f0
leaq -0x128(%rbp), %rdi
callq 0x41f0
leaq -0x108(%rbp), %rdi
callq 0x41f0
leaq -0xe8(%rbp), %rdi
callq 0x41f0
jmp 0x2661d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0xc8(%rbp), %rdi
callq 0x2a190
jmp 0x2661d
jmp 0x264b1
movl -0x40(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x40(%rbp)
jmp 0x2620e
movq -0x298(%rbp), %rsi
leaq -0x210(%rbp), %rdi
callq 0x4170
movq -0x290(%rbp), %rsi
leaq -0x230(%rbp), %rdi
callq 0x4170
jmp 0x264e7
movq -0x288(%rbp), %rsi
leaq -0x250(%rbp), %rdi
callq 0x4170
jmp 0x264fc
movq -0x280(%rbp), %rsi
leaq -0x270(%rbp), %rdi
callq 0x4170
jmp 0x26511
movl -0x2c(%rbp), %r9d
leaq -0x1f0(%rbp), %rdi
leaq -0x210(%rbp), %rsi
leaq -0x230(%rbp), %rdx
leaq -0x250(%rbp), %rcx
leaq -0x270(%rbp), %r8
callq 0x1eac0
jmp 0x2653f
leaq -0x270(%rbp), %rdi
callq 0x41f0
leaq -0x250(%rbp), %rdi
callq 0x41f0
leaq -0x230(%rbp), %rdi
callq 0x41f0
leaq -0x210(%rbp), %rdi
callq 0x41f0
movq -0x278(%rbp), %rdi
addq $0x18, %rdi
leaq -0x1f0(%rbp), %rsi
callq 0x2a1c0
jmp 0x26588
leaq -0x1f0(%rbp), %rdi
callq 0x2a190
addq $0x2c0, %rsp            # imm = 0x2C0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x265f7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x265eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x265df
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x270(%rbp), %rdi
callq 0x41f0
leaq -0x250(%rbp), %rdi
callq 0x41f0
leaq -0x230(%rbp), %rdi
callq 0x41f0
leaq -0x210(%rbp), %rdi
callq 0x41f0
jmp 0x2661d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x1f0(%rbp), %rdi
callq 0x2a190
movq -0x38(%rbp), %rdi
callq 0x44f0
nopw %cs:(%rax,%rax)