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

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x230, %rsp            # imm = 0x230
movq %rsi, -0x208(%rbp)
movq %rdx, -0x200(%rbp)
movq %rcx, -0x1f8(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movl %r8d, -0x24(%rbp)
movl %r9d, -0x28(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x1f0(%rbp)
addq $0x30, %rdi
callq 0x29d90
movq -0x1f0(%rbp), %rcx
movl 0x84(%rcx), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
cmpq %rcx, %rax
jne 0x24d40
movl $0x10, %edi
callq 0x41a0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x210(%rbp)
leaq 0xcfd7(%rip), %rsi      # 0x31cd9
callq 0x44c0
jmp 0x24d09
movq -0x210(%rbp), %rdi
movq 0x21299(%rip), %rsi     # 0x45fb0
movq 0x2124a(%rip), %rdx     # 0x45f68
callq 0x44b0
movq -0x210(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
callq 0x4240
jmp 0x250da
movl $0x0, -0x38(%rbp)
movq -0x1f0(%rbp), %rdi
movslq -0x38(%rbp), %rax
movq %rax, -0x218(%rbp)
addq $0x30, %rdi
callq 0x29d90
movq %rax, %rcx
movq -0x218(%rbp), %rax
cmpq %rcx, %rax
jae 0x24fba
movq -0x1f0(%rbp), %rdi
addq $0x30, %rdi
movslq -0x38(%rbp), %rsi
callq 0x29dc0
movq -0x1f8(%rbp), %rsi
movq %rax, %rdi
callq 0x1e880
testb $0x1, %al
jne 0x24d9e
jmp 0x24dfa
movl $0x10, %edi
callq 0x41a0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x220(%rbp)
leaq 0xcf66(%rip), %rsi      # 0x31d22
callq 0x4530
jmp 0x24dc3
movq -0x220(%rbp), %rdi
movq 0x211f7(%rip), %rsi     # 0x45fc8
movq 0x211d0(%rip), %rdx     # 0x45fa8
callq 0x44b0
movq -0x220(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
callq 0x4240
jmp 0x250da
movq -0x1f0(%rbp), %rdi
addq $0x30, %rdi
movslq -0x38(%rbp), %rsi
callq 0x29dc0
movq -0x1f8(%rbp), %rsi
movq %rax, %rdi
callq 0x1e850
testb $0x1, %al
jne 0x24e26
jmp 0x24faa
movq -0x208(%rbp), %rsi
leaq -0xc0(%rbp), %rdi
callq 0x4170
movq -0x200(%rbp), %rsi
leaq -0xe0(%rbp), %rdi
callq 0x4170
jmp 0x24e4e
movq -0x1f8(%rbp), %rsi
leaq -0x100(%rbp), %rdi
callq 0x4170
jmp 0x24e63
movl -0x24(%rbp), %r8d
movl -0x28(%rbp), %r9d
leaq -0xa0(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
leaq -0xe0(%rbp), %rdx
leaq -0x100(%rbp), %rcx
callq 0x1ee20
jmp 0x24e8e
leaq -0x100(%rbp), %rdi
callq 0x41f0
leaq -0xe0(%rbp), %rdi
callq 0x41f0
leaq -0xc0(%rbp), %rdi
callq 0x41f0
movq -0x1f0(%rbp), %rdi
addq $0x30, %rdi
movq %rdi, -0x230(%rbp)
callq 0x29c70
movq %rax, -0x118(%rbp)
movslq -0x38(%rbp), %rsi
leaq -0x118(%rbp), %rdi
callq 0x29ff0
movq %rax, -0x110(%rbp)
leaq -0x108(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0x2a030
movq -0x230(%rbp), %rdi
movq -0x108(%rbp), %rsi
leaq -0xa0(%rbp), %rdx
callq 0x29de0
movq %rax, -0x228(%rbp)
jmp 0x24f1d
movq -0x228(%rbp), %rax
movq %rax, -0x120(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x29be0
jmp 0x2506b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x24f7c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x24f70
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x100(%rbp), %rdi
callq 0x41f0
leaq -0xe0(%rbp), %rdi
callq 0x41f0
leaq -0xc0(%rbp), %rdi
callq 0x41f0
jmp 0x250da
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x29be0
jmp 0x250da
jmp 0x24fac
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x24d47
movq -0x208(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0x4170
movq -0x200(%rbp), %rsi
leaq -0x1c8(%rbp), %rdi
callq 0x4170
jmp 0x24fe2
movq -0x1f8(%rbp), %rsi
leaq -0x1e8(%rbp), %rdi
callq 0x4170
jmp 0x24ff7
movl -0x24(%rbp), %r8d
movl -0x28(%rbp), %r9d
leaq -0x188(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
leaq -0x1c8(%rbp), %rdx
leaq -0x1e8(%rbp), %rcx
callq 0x1ee20
jmp 0x25022
leaq -0x1e8(%rbp), %rdi
callq 0x41f0
leaq -0x1c8(%rbp), %rdi
callq 0x41f0
leaq -0x1a8(%rbp), %rdi
callq 0x41f0
movq -0x1f0(%rbp), %rdi
addq $0x30, %rdi
leaq -0x188(%rbp), %rsi
callq 0x29c00
jmp 0x2505f
leaq -0x188(%rbp), %rdi
callq 0x29be0
addq $0x230, %rsp            # imm = 0x230
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x250b4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x250a8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x1e8(%rbp), %rdi
callq 0x41f0
leaq -0x1c8(%rbp), %rdi
callq 0x41f0
leaq -0x1a8(%rbp), %rdi
callq 0x41f0
jmp 0x250da
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x188(%rbp), %rdi
callq 0x29be0
movq -0x30(%rbp), %rdi
callq 0x44f0
nopw %cs:(%rax,%rax)