// File: /workspace/github_cpp_makefile_star2_O1/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
sarq $0x3, %rax
movabsq $0x4ec4ec4ec4ec4ec5, %rcx # imm = 0x4EC4EC4EC4EC4EC5
imulq %rcx, %rax
movslq 0x84(%rdi), %rcx
incq %rcx
cmpq %rcx, %rax
je 0x13d70
movq %rdi, %r13
leaq 0x30(%rdi), %rax
movq %rax, -0x38(%rbp)
movq 0x30(%rdi), %rdi
cmpq %rdi, 0x38(%r13)
setne %r14b
je 0x13c17
xorl %r15d, %r15d
xorl %ebx, %ebx
addq %r15, %rdi
movq %r12, %rsi
callq 0xfe0c
testb %al, %al
jne 0x13d3e
movq -0x38(%rbp), %rax
movq (%rax), %rdi
addq %r15, %rdi
movq %r12, %rsi
callq 0xfdf0
testb %al, %al
jne 0x13af7
incq %rbx
movq 0x30(%r13), %rdi
movq 0x38(%r13), %rax
subq %rdi, %rax
sarq $0x3, %rax
movabsq $0x4ec4ec4ec4ec4ec5, %rcx # imm = 0x4EC4EC4EC4EC4EC5
imulq %rcx, %rax
addq $0x68, %r15
cmpq %rbx, %rax
seta %r14b
ja 0x13a9c
jmp 0x13c17
leaq -0x58(%rbp), %rax
movq %rax, -0x10(%rax)
movq -0x40(%rbp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0x68(%rbp), %rdi
callq 0xf530
leaq -0xf8(%rbp), %r13
movq %r13, -0x10(%r13)
movq -0x48(%rbp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0x108(%rbp), %rdi
callq 0xf530
leaq -0xd8(%rbp), %rbx
movq %rbx, -0x10(%rbx)
movq (%r12), %rsi
movq 0x8(%r12), %rdx
addq %rsi, %rdx
leaq -0xe8(%rbp), %rdi
callq 0xf530
leaq -0x170(%rbp), %rdi
leaq -0x68(%rbp), %rsi
leaq -0x108(%rbp), %rdx
leaq -0xe8(%rbp), %rcx
movl -0x2c(%rbp), %r8d
movl -0x30(%rbp), %r9d
callq 0x10200
movq -0xe8(%rbp), %rdi
cmpq %rbx, %rdi
je 0x13b95
callq 0x4280
movq -0x108(%rbp), %rdi
cmpq %r13, %rdi
je 0x13ba6
callq 0x4280
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x13bb8
callq 0x4280
movq -0x38(%rbp), %rdi
addq (%rdi), %r15
leaq -0x170(%rbp), %rdx
movq %r15, %rsi
callq 0x178e8
leaq -0x120(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13be3
callq 0x4280
leaq -0x140(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13bf8
callq 0x4280
leaq -0x160(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13c0d
callq 0x4280
testb $0x1, %r14b
jne 0x13d2c
leaq -0xb8(%rbp), %r14
movq %r14, -0x10(%r14)
movq -0x40(%rbp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0xc8(%rbp), %rdi
callq 0xf530
leaq -0x98(%rbp), %r15
movq %r15, -0x10(%r15)
movq -0x48(%rbp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0xa8(%rbp), %rdi
callq 0xf530
leaq -0x78(%rbp), %rbx
movq %rbx, -0x10(%rbx)
movq (%r12), %rsi
movq 0x8(%r12), %rdx
addq %rsi, %rdx
leaq -0x88(%rbp), %rdi
callq 0xf530
leaq -0x170(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
leaq -0xa8(%rbp), %rdx
leaq -0x88(%rbp), %rcx
movl -0x2c(%rbp), %r8d
movl -0x30(%rbp), %r9d
callq 0x10200
movq -0x88(%rbp), %rdi
cmpq %rbx, %rdi
je 0x13cbb
callq 0x4280
movq -0xa8(%rbp), %rdi
cmpq %r15, %rdi
je 0x13ccc
callq 0x4280
movq -0xc8(%rbp), %rdi
cmpq %r14, %rdi
je 0x13cdd
callq 0x4280
leaq -0x170(%rbp), %rsi
movq -0x38(%rbp), %rdi
callq 0x178b0
leaq -0x120(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13d02
callq 0x4280
leaq -0x140(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13d17
callq 0x4280
leaq -0x160(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13d2c
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 0x7c27(%rip), %rsi      # 0x1b979
movq %rax, %rdi
callq 0x44d0
movq 0xf257(%rip), %rsi      # 0x22fb8
movq 0xf230(%rip), %rdx      # 0x22f98
movq %r14, %rdi
callq 0x4440
movl $0x10, %edi
callq 0x4170
movq %rax, %r14
leaq 0x7bac(%rip), %rsi      # 0x1b930
movq %rax, %rdi
callq 0x4450
movq 0xf20d(%rip), %rsi      # 0x22fa0
movq 0xf1ce(%rip), %rdx      # 0x22f68
jmp 0x13d68
jmp 0x13dde
movq %rax, %r12
movq -0xe8(%rbp), %rdi
cmpq %rbx, %rdi
je 0x13db7
callq 0x4280
jmp 0x13db7
movq %rax, %r12
movq -0x108(%rbp), %rdi
cmpq %r13, %rdi
je 0x13dcd
callq 0x4280
jmp 0x13dcd
movq %rax, %r12
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
jne 0x13e2a
jmp 0x13e3c
jmp 0x13e31
movq %rax, %r12
leaq -0x170(%rbp), %rdi
callq 0x101b8
jmp 0x13e3c
movq %rax, %r12
movq -0x88(%rbp), %rdi
cmpq %rbx, %rdi
je 0x13e08
callq 0x4280
jmp 0x13e08
movq %rax, %r12
movq -0xa8(%rbp), %rdi
cmpq %r15, %rdi
je 0x13e1e
callq 0x4280
jmp 0x13e1e
movq %rax, %r12
movq -0xc8(%rbp), %rdi
cmpq %r14, %rdi
je 0x13e3c
callq 0x4280
jmp 0x13e3c
movq %rax, %r12
movq %r14, %rdi
callq 0x4220
movq %r12, %rdi
callq 0x4490