// File: /workspace/github_cpp_makefile_star2_O2/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x148, %rsp            # imm = 0x148
movl %r9d, -0x30(%rbp)
movl %r8d, -0x2c(%rbp)
movq %rcx, %r12
movq %rdx, -0x48(%rbp)
movq %rsi, -0x40(%rbp)
movq 0x38(%rdi), %rax
subq 0x30(%rdi), %rax
pushq $0x68
popq %rcx
cqto
idivq %rcx
movslq 0x84(%rdi), %rcx
incq %rcx
cmpq %rcx, %rax
je 0xf3d7
movq %rdi, %r15
leaq 0x30(%rdi), %rax
movq %rax, -0x38(%rbp)
pushq $-0x1
popq %rbx
xorl %r13d, %r13d
movq 0x30(%r15), %rdi
movq 0x38(%r15), %rax
subq %rdi, %rax
cqto
pushq $0x68
popq %rcx
idivq %rcx
incq %rbx
cmpq %rbx, %rax
jbe 0xf306
addq %r13, %rdi
movq %r12, %rsi
callq 0xc530
testb %al, %al
jne 0xf3a7
leaq 0x68(%r13), %r14
movq -0x38(%rbp), %rax
addq (%rax), %r13
movq %r13, %rdi
movq %r12, %rsi
callq 0xc522
movq %r14, %r13
testb %al, %al
je 0xf21b
leaq -0x108(%rbp), %rdi
movq -0x40(%rbp), %rsi
callq 0x4360
leaq -0xe8(%rbp), %rdi
movq -0x48(%rbp), %rsi
callq 0x4360
leaq -0xc8(%rbp), %rdi
movq %r12, %rsi
callq 0x4360
leaq -0x170(%rbp), %rdi
leaq -0x108(%rbp), %rsi
leaq -0xe8(%rbp), %rdx
leaq -0xc8(%rbp), %rcx
movl -0x2c(%rbp), %r8d
movl -0x30(%rbp), %r9d
callq 0xc804
leaq -0xc8(%rbp), %rdi
callq 0x4170
leaq -0xe8(%rbp), %rdi
callq 0x4170
leaq -0x108(%rbp), %rdi
callq 0x4170
movq -0x38(%rbp), %rdi
movq (%rdi), %rax
leaq (%rax,%r14), %rsi
addq $-0x68, %rsi
leaq -0x170(%rbp), %rdx
callq 0x11e14
jmp 0xf389
leaq -0xa8(%rbp), %rdi
movq -0x40(%rbp), %rsi
callq 0x4360
leaq -0x88(%rbp), %rdi
movq -0x48(%rbp), %rsi
callq 0x4360
leaq -0x68(%rbp), %rdi
movq %r12, %rsi
callq 0x4360
leaq -0x170(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
leaq -0x88(%rbp), %rdx
leaq -0x68(%rbp), %rcx
movl -0x2c(%rbp), %r8d
movl -0x30(%rbp), %r9d
callq 0xc804
leaq -0x68(%rbp), %rdi
callq 0x4170
leaq -0x88(%rbp), %rdi
callq 0x4170
leaq -0xa8(%rbp), %rdi
callq 0x4170
leaq -0x170(%rbp), %rsi
movq -0x38(%rbp), %rdi
callq 0x11db8
leaq -0x170(%rbp), %rdi
callq 0xc7d8
addq $0x148, %rsp            # imm = 0x148
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
pushq $0x10
popq %rdi
callq 0x4190
movq %rax, %r14
leaq 0x6640(%rip), %rsi      # 0x159f9
movq %rax, %rdi
callq 0x4470
movq 0xebf0(%rip), %rsi      # 0x1dfb8
movq 0xebc9(%rip), %rdx      # 0x1df98
movq %r14, %rdi
callq 0x4410
pushq $0x10
popq %rdi
callq 0x4190
movq %rax, %r14
leaq 0x65c7(%rip), %rsi      # 0x159b0
movq %rax, %rdi
callq 0x4420
movq 0xeba8(%rip), %rsi      # 0x1dfa0
movq 0xeb61(%rip), %rdx      # 0x1df60
jmp 0xf3cf
jmp 0xf433
movq %rax, %rbx
leaq -0xc8(%rbp), %rdi
callq 0x4170
jmp 0xf417
movq %rax, %rbx
leaq -0xe8(%rbp), %rdi
callq 0x4170
jmp 0xf428
movq %rax, %rbx
leaq -0x108(%rbp), %rdi
jmp 0xf46d
jmp 0xf474
movq %rax, %rbx
leaq -0x170(%rbp), %rdi
callq 0xc7d8
jmp 0xf47f
movq %rax, %rbx
leaq -0x68(%rbp), %rdi
callq 0x4170
jmp 0xf455
movq %rax, %rbx
leaq -0x88(%rbp), %rdi
callq 0x4170
jmp 0xf466
movq %rax, %rbx
leaq -0xa8(%rbp), %rdi
callq 0x4170
jmp 0xf47f
movq %rax, %rbx
movq %r14, %rdi
callq 0x4220
movq %rbx, %rdi
callq 0x4450
nop