// File: /workspace/github_cpp_makefile_star2_O3/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
movq %rcx, %r13
movq %rdx, -0x48(%rbp)
movq %rsi, -0x40(%rbp)
movq %rdi, %r14
movq 0x30(%rdi), %rdi
movq 0x38(%r14), %rax
movq %rax, %rcx
subq %rdi, %rcx
sarq $0x3, %rcx
movabsq $0x4ec4ec4ec4ec4ec5, %r15 # imm = 0x4EC4EC4EC4EC4EC5
imulq %r15, %rcx
movslq 0x84(%r14), %rdx
incq %rdx
cmpq %rdx, %rcx
je 0x13c1e
movl %r8d, -0x2c(%rbp)
movl %r9d, -0x30(%rbp)
leaq 0x30(%r14), %rcx
movq %rcx, -0x38(%rbp)
cmpq %rdi, %rax
je 0x139ef
xorl %r12d, %r12d
xorl %ebx, %ebx
addq %r12, %rdi
movq %r13, %rsi
callq 0xfd92
testb %al, %al
jne 0x13bec
movq -0x38(%rbp), %rax
movq (%rax), %rdi
addq %r12, %rdi
movq %r13, %rsi
callq 0xfd76
testb %al, %al
jne 0x13abd
incq %rbx
movq 0x30(%r14), %rdi
movq 0x38(%r14), %rax
subq %rdi, %rax
sarq $0x3, %rax
imulq %r15, %rax
addq $0x68, %r12
cmpq %rbx, %rax
ja 0x139a3
leaq -0x98(%rbp), %r14
movq %r14, -0x10(%r14)
movq -0x40(%rbp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0xa8(%rbp), %rdi
callq 0xf492
leaq -0x78(%rbp), %r15
movq %r15, -0x10(%r15)
movq -0x48(%rbp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0x88(%rbp), %rdi
callq 0xf492
leaq -0x58(%rbp), %rbx
movq %rbx, -0x10(%rbx)
movq (%r13), %rsi
movq 0x8(%r13), %rdx
addq %rsi, %rdx
leaq -0x68(%rbp), %rdi
callq 0xf492
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 0x10188
movq -0x68(%rbp), %rdi
cmpq %rbx, %rdi
je 0x13a86
callq 0x4280
movq -0x88(%rbp), %rdi
cmpq %r15, %rdi
je 0x13a97
callq 0x4280
movq -0xa8(%rbp), %rdi
cmpq %r14, %rdi
je 0x13aa8
callq 0x4280
leaq -0x170(%rbp), %rsi
movq -0x38(%rbp), %rdi
callq 0x176d6
jmp 0x13b9b
leaq -0xf8(%rbp), %r14
movq %r14, -0x10(%r14)
movq -0x40(%rbp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0x108(%rbp), %rdi
callq 0xf492
leaq -0xd8(%rbp), %r15
movq %r15, -0x10(%r15)
movq -0x48(%rbp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0xe8(%rbp), %rdi
callq 0xf492
leaq -0xb8(%rbp), %rbx
movq %rbx, -0x10(%rbx)
movq (%r13), %rsi
movq 0x8(%r13), %rdx
addq %rsi, %rdx
leaq -0xc8(%rbp), %rdi
callq 0xf492
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 0x10188
movq -0xc8(%rbp), %rdi
cmpq %rbx, %rdi
je 0x13b63
callq 0x4280
movq -0xe8(%rbp), %rdi
cmpq %r15, %rdi
je 0x13b74
callq 0x4280
movq -0x108(%rbp), %rdi
cmpq %r14, %rdi
je 0x13b85
callq 0x4280
movq -0x38(%rbp), %rdi
addq (%rdi), %r12
leaq -0x170(%rbp), %rdx
movq %r12, %rsi
callq 0x1770e
leaq -0x120(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13bb0
callq 0x4280
leaq -0x140(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13bc5
callq 0x4280
leaq -0x160(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13bda
callq 0x4280
addq $0x148, %rsp            # imm = 0x148
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x10, %edi
callq 0x4170
movq %rax, %r14
leaq 0x7d79(%rip), %rsi      # 0x1b979
movq %rax, %rdi
callq 0x44d0
movq 0xf3a9(%rip), %rsi      # 0x22fb8
movq 0xf382(%rip), %rdx      # 0x22f98
movq %r14, %rdi
callq 0x4440
movl $0x10, %edi
callq 0x4170
movq %rax, %r14
leaq 0x7cfe(%rip), %rsi      # 0x1b930
movq %rax, %rdi
callq 0x4450
movq 0xf35f(%rip), %rsi      # 0x22fa0
movq 0xf320(%rip), %rdx      # 0x22f68
jmp 0x13c16
jmp 0x13c86
movq %rax, %r12
movq -0xc8(%rbp), %rdi
cmpq %rbx, %rdi
je 0x13c65
callq 0x4280
jmp 0x13c65
movq %rax, %r12
movq -0xe8(%rbp), %rdi
cmpq %r15, %rdi
je 0x13c7b
callq 0x4280
jmp 0x13c7b
movq %rax, %r12
movq -0x108(%rbp), %rdi
jmp 0x13cca
jmp 0x13cd6
movq %rax, %r12
leaq -0x170(%rbp), %rdi
callq 0x10140
jmp 0x13ce1
movq %rax, %r12
movq -0x68(%rbp), %rdi
cmpq %rbx, %rdi
je 0x13cad
callq 0x4280
jmp 0x13cad
movq %rax, %r12
movq -0x88(%rbp), %rdi
cmpq %r15, %rdi
je 0x13cc3
callq 0x4280
jmp 0x13cc3
movq %rax, %r12
movq -0xa8(%rbp), %rdi
cmpq %r14, %rdi
je 0x13ce1
callq 0x4280
jmp 0x13ce1
movq %rax, %r12
movq %r14, %rdi
callq 0x4220
movq %r12, %rdi
callq 0x4490
nop