// File: Karunika[P]Taxi_Agency_OODB/./src/TaxiAgency.cpp
// Function: operator<<(std::ostream&, TaxiAgency&)
ostream& operator<<(ostream& output, TaxiAgency& A){
    output << rang::fg::blue << "Taxi Agency Details:" << rang::fg::reset << endl;
    output << "{" <<
        "\n\tcapacity : " <<
            "\n\t\tgarage Limit : " << A.GarageLimit <<
            "\n\t\teach Car Limit : " << A.EachCarLimit <<
            "\n\t\tdriver Limit : " << A.DriverLimit <<
            "\n\t\tcustomer Limit : " << A.DriverLimit <<
        "\n\tdriver stats : " <<
        // driver_limit = (driver_onshift + driver_idol) + drvier_vacancy
            "\n\t\tdriver limit : " << A.DriverLimit <<
            "\n\t\tdrivers on shift : " << A.current_shifts.size() <<
            "\n\t\tdrivers IDLE : " << A.driver_db.size() - A.current_shifts.size() <<
            "\n\t\tdriver vacancy : " << A.DriverLimit - A.driver_db.size() <<
        "\n\ttaxies : " <<
            "\n\t\ttotal : " << A.stats["total_taxies"] <<
            "\n\t\tavailable : " << A.stats["total_idol_taxies"] <<
            "\n\t\ton shifts : " << A.stats["taxies on shift"] <<
        "\n\t}" << endl;
    return output;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x140, %rsp            # imm = 0x140
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movl $0x22, %esi
callq 0x1d2a0
movq %rax, %rdi
leaq 0xefad(%rip), %rsi      # 0x31a28
callq 0x42d0
movq %rax, %rdi
movl $0x27, %esi
callq 0x1d2a0
movq %rax, %rdi
movq 0x234b1(%rip), %rsi     # 0x45f48
callq 0x4310
movq -0x8(%rbp), %rdi
leaq 0xede1(%rip), %rsi      # 0x31888
callq 0x42d0
movq %rax, %rdi
leaq 0xef87(%rip), %rsi      # 0x31a3d
callq 0x42d0
movq %rax, %rdi
leaq 0xef86(%rip), %rsi      # 0x31a4b
callq 0x42d0
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x7c(%rax), %esi
callq 0x44d0
movq %rax, %rdi
leaq 0xef7b(%rip), %rsi      # 0x31a5e
callq 0x42d0
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x80(%rax), %esi
callq 0x44d0
movq %rax, %rdi
leaq 0xef6f(%rip), %rsi      # 0x31a73
callq 0x42d0
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x84(%rax), %esi
callq 0x44d0
movq %rax, %rdi
leaq 0xef61(%rip), %rsi      # 0x31a86
callq 0x42d0
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x84(%rax), %esi
callq 0x44d0
movq %rax, %rdi
leaq 0xef55(%rip), %rsi      # 0x31a9b
callq 0x42d0
movq %rax, %rdi
leaq 0xef58(%rip), %rsi      # 0x31aad
callq 0x42d0
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x84(%rax), %esi
callq 0x44d0
movq %rax, %rdi
leaq 0xef4a(%rip), %rsi      # 0x31ac0
callq 0x42d0
movq %rax, -0xd8(%rbp)
movq -0x10(%rbp), %rdi
addq $0x48, %rdi
callq 0x29540
movq -0xd8(%rbp), %rdi
movq %rax, %rsi
callq 0x40e0
movq %rax, %rdi
leaq 0xef2f(%rip), %rsi      # 0x31ad7
callq 0x42d0
movq %rax, -0xc8(%rbp)
movq -0x10(%rbp), %rdi
addq $0x18, %rdi
callq 0x29570
movq %rax, -0xd0(%rbp)
movq -0x10(%rbp), %rdi
addq $0x48, %rdi
callq 0x29540
movq -0xd0(%rbp), %rsi
movq -0xc8(%rbp), %rdi
subq %rax, %rsi
callq 0x40e0
movq %rax, %rdi
leaq 0xeef5(%rip), %rsi      # 0x31aea
callq 0x42d0
movq %rax, -0xb8(%rbp)
movq -0x10(%rbp), %rdi
movslq 0x84(%rdi), %rax
movq %rax, -0xc0(%rbp)
addq $0x18, %rdi
callq 0x29570
movq -0xc0(%rbp), %rsi
movq -0xb8(%rbp), %rdi
subq %rax, %rsi
callq 0x40e0
movq %rax, %rdi
leaq 0xeec3(%rip), %rsi      # 0x31aff
callq 0x42d0
movq %rax, %rdi
leaq 0xeec0(%rip), %rsi      # 0x31b0b
callq 0x42d0
movq %rax, -0xb0(%rbp)
movq -0x10(%rbp), %rax
addq $0xa0, %rax
movq %rax, -0xa8(%rbp)
leaq -0x31(%rbp), %rdi
movq %rdi, -0xa0(%rbp)
callq 0x4500
movq -0xa0(%rbp), %rdx
leaq 0xed55(%rip), %rsi      # 0x319db
leaq -0x30(%rbp), %rdi
callq 0x43d0
jmp 0x22c91
movq -0xa8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x203b0
movq %rax, -0xe0(%rbp)
jmp 0x22caa
movq -0xb0(%rbp), %rdi
movq -0xe0(%rbp), %rax
movl (%rax), %esi
callq 0x44d0
movq %rax, -0xe8(%rbp)
jmp 0x22cc8
movq -0xe8(%rbp), %rdi
leaq 0xee41(%rip), %rsi      # 0x31b17
callq 0x42d0
movq %rax, -0xf0(%rbp)
jmp 0x22ce4
movq -0x10(%rbp), %rax
addq $0xa0, %rax
movq %rax, -0x100(%rbp)
leaq -0x69(%rbp), %rdi
movq %rdi, -0xf8(%rbp)
callq 0x4500
movq -0xf8(%rbp), %rdx
leaq 0xeca6(%rip), %rsi      # 0x319b9
leaq -0x68(%rbp), %rdi
callq 0x43d0
jmp 0x22d1e
movq -0x100(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x203b0
movq %rax, -0x108(%rbp)
jmp 0x22d37
movq -0xf0(%rbp), %rdi
movq -0x108(%rbp), %rax
movl (%rax), %esi
callq 0x44d0
movq %rax, -0x110(%rbp)
jmp 0x22d55
movq -0x110(%rbp), %rdi
leaq 0xedc4(%rip), %rsi      # 0x31b27
callq 0x42d0
movq %rax, -0x118(%rbp)
jmp 0x22d71
movq -0x10(%rbp), %rax
addq $0xa0, %rax
movq %rax, -0x128(%rbp)
leaq -0x91(%rbp), %rdi
movq %rdi, -0x120(%rbp)
callq 0x4500
movq -0x120(%rbp), %rdx
leaq 0xed94(%rip), %rsi      # 0x31b37
leaq -0x90(%rbp), %rdi
callq 0x43d0
jmp 0x22db1
movq -0x128(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x203b0
movq %rax, -0x130(%rbp)
jmp 0x22dcd
movq -0x118(%rbp), %rdi
movq -0x130(%rbp), %rax
movl (%rax), %esi
callq 0x44d0
movq %rax, -0x138(%rbp)
jmp 0x22deb
movq -0x138(%rbp), %rdi
leaq 0xeae5(%rip), %rsi      # 0x318de
callq 0x42d0
movq %rax, -0x140(%rbp)
jmp 0x22e07
movq -0x140(%rbp), %rdi
movq 0x23133(%rip), %rsi     # 0x45f48
callq 0x4310
jmp 0x22e1c
leaq -0x90(%rbp), %rdi
callq 0x41f0
leaq -0x91(%rbp), %rdi
callq 0x4330
leaq -0x68(%rbp), %rdi
callq 0x41f0
leaq -0x69(%rbp), %rdi
callq 0x4330
leaq -0x30(%rbp), %rdi
callq 0x41f0
leaq -0x31(%rbp), %rdi
callq 0x4330
movq -0x8(%rbp), %rax
addq $0x140, %rsp            # imm = 0x140
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x22eea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x22ee1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x22ed8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x22ecf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x22ec3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x41f0
leaq -0x91(%rbp), %rdi
callq 0x4330
leaq -0x68(%rbp), %rdi
callq 0x41f0
leaq -0x69(%rbp), %rdi
callq 0x4330
leaq -0x30(%rbp), %rdi
callq 0x41f0
leaq -0x31(%rbp), %rdi
callq 0x4330
movq -0x40(%rbp), %rdi
callq 0x44f0
nopl (%rax)