LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: mahdibohloul[P]SnapTrip/./Models/Hotel.cpp
// Function: Database::Hotel::cost_to_reserve(int, int) const
long double Database::Hotel::cost_to_reserve(int type, int quantity) const
{
    long double cost = 0.0f;
    int q = 0;
    for(auto room_itr = rooms.begin(); room_itr != rooms.end() && q < quantity; room_itr++)
    {
        if((*room_itr)->type == type){
            q++;
            cost += (*room_itr)->price;
        }
    }
    return cost;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl %edx, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x48(%rbp)
fldz
fstpt -0x20(%rbp)
movl $0x0, -0x24(%rbp)
addq $0xe0, %rdi
callq 0x56ef0
movq %rax, -0x30(%rbp)
movq -0x48(%rbp), %rdi
addq $0xe0, %rdi
callq 0x56f20
movq %rax, -0x38(%rbp)
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x5a890
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x49(%rbp)
jne 0x58f75
jmp 0x58f81
movl -0x24(%rbp), %eax
cmpl -0x10(%rbp), %eax
setl %al
movb %al, -0x49(%rbp)
movb -0x49(%rbp), %al
testb $0x1, %al
jne 0x58f8a
jmp 0x58fd3
leaq -0x30(%rbp), %rdi
callq 0x5a8d0
movq (%rax), %rax
movl 0x8(%rax), %eax
cmpl -0xc(%rbp), %eax
jne 0x58fbd
movl -0x24(%rbp), %eax
incl %eax
movl %eax, -0x24(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x5a8d0
movq (%rax), %rax
fldt 0x10(%rax)
fldt -0x20(%rbp)
faddp %st, %st(1)
fstpt -0x20(%rbp)
jmp 0x58fbf
leaq -0x30(%rbp), %rdi
xorl %esi, %esi
callq 0x5a8f0
movq %rax, -0x40(%rbp)
jmp 0x58f46
fldt -0x20(%rbp)
addq $0x50, %rsp
popq %rbp
retq
nopl (%rax)
// File: mahdibohloul[P]SnapTrip/./Models/Hotel.cpp
// Function: Database::Hotel::get_rooms_price[abi:cxx11]()
info_t Database::Hotel::get_rooms_price()
{
    auto map_of_price = get_map_of_rooms_price();
    ostringstream os;
    os << map_of_price[Room::Room_Class::Standard] << ConstNames::Space << map_of_price[Room::Room_Class::Deluxe] << ConstNames::Space << map_of_price[Room::Room_Class::Luxury] << ConstNames::Space << map_of_price[Room::Room_Class::Premium];
    return os.str();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x250, %rsp            # imm = 0x250
movq %rdi, -0x1e8(%rbp)
movq %rdi, %rax
movq %rax, -0x1e0(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rsi
leaq -0x40(%rbp), %rdi
callq 0x59560
leaq -0x1b8(%rbp), %rdi
callq 0x65b0
jmp 0x598af
movl $0x0, -0x1c8(%rbp)
leaq -0x40(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
callq 0x5b0f0
movq %rax, -0x1f0(%rbp)
jmp 0x598d2
movq -0x1f0(%rbp), %rax
fldt (%rax)
movq %rsp, %rax
fstpt (%rax)
leaq -0x1b8(%rbp), %rdi
callq 0x6510
movq %rax, -0x1f8(%rbp)
jmp 0x598f5
movq -0x1f8(%rbp), %rdi
movl $0x20, %esi
callq 0x6520
movq %rax, -0x200(%rbp)
jmp 0x5990f
movl $0x1, -0x1cc(%rbp)
leaq -0x40(%rbp), %rdi
leaq -0x1cc(%rbp), %rsi
callq 0x5b0f0
movq %rax, -0x208(%rbp)
jmp 0x59932
movq -0x200(%rbp), %rdi
movq -0x208(%rbp), %rax
fldt (%rax)
movq %rsp, %rax
fstpt (%rax)
callq 0x6510
movq %rax, -0x210(%rbp)
jmp 0x59955
movq -0x210(%rbp), %rdi
movl $0x20, %esi
callq 0x6520
movq %rax, -0x218(%rbp)
jmp 0x5996f
movl $0x2, -0x1d0(%rbp)
leaq -0x40(%rbp), %rdi
leaq -0x1d0(%rbp), %rsi
callq 0x5b0f0
movq %rax, -0x220(%rbp)
jmp 0x59992
movq -0x218(%rbp), %rdi
movq -0x220(%rbp), %rax
fldt (%rax)
movq %rsp, %rax
fstpt (%rax)
callq 0x6510
movq %rax, -0x228(%rbp)
jmp 0x599b5
movq -0x228(%rbp), %rdi
movl $0x20, %esi
callq 0x6520
movq %rax, -0x230(%rbp)
jmp 0x599cf
movl $0x3, -0x1d4(%rbp)
leaq -0x40(%rbp), %rdi
leaq -0x1d4(%rbp), %rsi
callq 0x5b0f0
movq %rax, -0x238(%rbp)
jmp 0x599f2
movq -0x230(%rbp), %rdi
movq -0x238(%rbp), %rax
fldt (%rax)
movq %rsp, %rax
fstpt (%rax)
callq 0x6510
jmp 0x59a0e
movq -0x1e8(%rbp), %rdi
leaq -0x1b8(%rbp), %rsi
callq 0x6460
jmp 0x59a23
leaq -0x1b8(%rbp), %rdi
callq 0x60f0
leaq -0x40(%rbp), %rdi
callq 0x5b1d0
movq -0x1e0(%rbp), %rax
addq $0x250, %rsp            # imm = 0x250
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
jmp 0x59a7a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
leaq -0x1b8(%rbp), %rdi
callq 0x60f0
leaq -0x40(%rbp), %rdi
callq 0x5b1d0
movq -0x1c0(%rbp), %rdi
callq 0x6750
nop
// File: mahdibohloul[P]SnapTrip/./Models/Hotel.cpp
// Function: Database::Hotel::calculate_avg_weighted(Database::Hotel::RatingInfo const&)
long double Database::Hotel::calculate_avg_weighted(const RatingInfo &weights)
{
    long double sum = 0.0f;
    long double f_weights = 0.0f;
    sum += default_rating.location * weights.location;
    sum += default_rating.cleanliness * weights.cleanliness;
    sum += default_rating.staff * weights.staff;
    sum += default_rating.facilities * weights.facilities;
    sum += default_rating.value_for_money * weights.value_for_money;
    f_weights += weights.location;
    f_weights += weights.cleanliness;
    f_weights += weights.staff;
    f_weights += weights.facilities;
    f_weights += weights.value_for_money;
    return sum / f_weights;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
fldz
fld %st(0)
fstpt -0x20(%rbp)
fstpt -0x30(%rbp)
fldt 0x150(%rax)
movq -0x10(%rbp), %rcx
fldt 0x20(%rcx)
fldt -0x20(%rbp)
fxch %st(2)
fmulp %st, %st(1)
faddp %st, %st(1)
fstpt -0x20(%rbp)
fldt 0x160(%rax)
movq -0x10(%rbp), %rcx
fldt 0x30(%rcx)
fldt -0x20(%rbp)
fxch %st(2)
fmulp %st, %st(1)
faddp %st, %st(1)
fstpt -0x20(%rbp)
fldt 0x170(%rax)
movq -0x10(%rbp), %rcx
fldt 0x40(%rcx)
fldt -0x20(%rbp)
fxch %st(2)
fmulp %st, %st(1)
faddp %st, %st(1)
fstpt -0x20(%rbp)
fldt 0x180(%rax)
movq -0x10(%rbp), %rcx
fldt 0x50(%rcx)
fldt -0x20(%rbp)
fxch %st(2)
fmulp %st, %st(1)
faddp %st, %st(1)
fstpt -0x20(%rbp)
fldt 0x190(%rax)
movq -0x10(%rbp), %rax
fldt 0x60(%rax)
fldt -0x20(%rbp)
fxch %st(2)
fmulp %st, %st(1)
faddp %st, %st(1)
fstpt -0x20(%rbp)
movq -0x10(%rbp), %rax
fldt 0x20(%rax)
fldt -0x30(%rbp)
faddp %st, %st(1)
fstpt -0x30(%rbp)
movq -0x10(%rbp), %rax
fldt 0x30(%rax)
fldt -0x30(%rbp)
faddp %st, %st(1)
fstpt -0x30(%rbp)
movq -0x10(%rbp), %rax
fldt 0x40(%rax)
fldt -0x30(%rbp)
faddp %st, %st(1)
fstpt -0x30(%rbp)
movq -0x10(%rbp), %rax
fldt 0x50(%rax)
fldt -0x30(%rbp)
faddp %st, %st(1)
fstpt -0x30(%rbp)
movq -0x10(%rbp), %rax
fldt 0x60(%rax)
fldt -0x30(%rbp)
faddp %st, %st(1)
fstpt -0x30(%rbp)
fldt -0x20(%rbp)
fldt -0x30(%rbp)
fdivrp %st, %st(1)
popq %rbp
retq
nopl (%rax)
// File: mahdibohloul[P]SnapTrip/./Models/Hotel.cpp
// Function: void Database::Hotel::construct_rooms<StandardRoom>(std::vector<Database::Hotel::Room*, std::allocator<Database::Hotel::Room*>>&, int, long double)
void Database::Hotel::construct_rooms(v_room& rooms, int quantity, long double price)
{
    if(quantity == ConstNames::No_Room)
        return;
    for(num_t count = 0; count < quantity; count++)
        rooms.push_back(new room(price));

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
fldt 0x10(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
fstpt -0x30(%rbp)
cmpl $0x0, -0x14(%rbp)
jne 0x5adc1
jmp 0x5ae32
movl $0x0, -0x34(%rbp)
movl -0x34(%rbp), %eax
cmpl -0x14(%rbp), %eax
jge 0x5ae32
movq -0x10(%rbp), %rax
movq %rax, -0x60(%rbp)
movl $0x60, %edi
callq 0x6440
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x58(%rbp)
fldt -0x30(%rbp)
movq %rsp, %rax
fstpt (%rax)
callq 0x63760
jmp 0x5adfb
movq -0x60(%rbp), %rdi
movq -0x58(%rbp), %rax
movq %rax, -0x40(%rbp)
leaq -0x40(%rbp), %rsi
callq 0x5df70
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x5adc8
movq -0x58(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
callq 0x6400
jmp 0x5ae38
addq $0x70, %rsp
popq %rbp
retq
movq -0x48(%rbp), %rdi
callq 0x6750
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)
// File: mahdibohloul[P]SnapTrip/./Models/Rooms/Room.cpp
// Function: Database::Hotel::Room::Room(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, Database::Hotel::Room::Room_Class, long double)
Database::Hotel::Room::Room(std::string id, enum Room_Class type, long double price)
{
    this->id = id;
    this->type = type;
    this->price = price;
    this->reserves = v_reserve();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rsi, -0x60(%rbp)
fldt 0x10(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
fstpt -0x30(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x78(%rbp)
leaq 0xa6a31(%rip), %rax     # 0x107600
movq %rax, (%rdi)
addq $0x20, %rdi
movq %rdi, -0x68(%rbp)
callq 0x65d0
movq -0x78(%rbp), %rdi
addq $0x40, %rdi
movq %rdi, -0x70(%rbp)
callq 0x61170
movq -0x68(%rbp), %rdi
movq -0x60(%rbp), %rsi
callq 0x6060
jmp 0x60bff
movq -0x78(%rbp), %rax
movl -0x14(%rbp), %ecx
movl %ecx, 0x8(%rax)
fldt -0x30(%rbp)
fstpt 0x10(%rax)
leaq -0x58(%rbp), %rdi
xorl %esi, %esi
movl $0x18, %edx
callq 0x6250
leaq -0x58(%rbp), %rdi
callq 0x61170
movq -0x78(%rbp), %rdi
addq $0x40, %rdi
leaq -0x58(%rbp), %rsi
callq 0x61190
leaq -0x58(%rbp), %rdi
callq 0x611c0
addq $0x80, %rsp
popq %rbp
retq
movq -0x70(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
callq 0x611c0
movq -0x68(%rbp), %rdi
callq 0x6828
movq -0x38(%rbp), %rdi
callq 0x6750
nopw %cs:(%rax,%rax)
// File: mahdibohloul[P]SnapTrip/./Models/Rooms/Room.cpp
// Function: Database::Hotel::Room::can_reserve(int, int) const
bool Database::Hotel::Room::can_reserve(int check_in, int check_out) const
{
    for(auto reserve_itr = reserves.begin(); reserve_itr != reserves.end(); reserve_itr++)
    {
        if(overlap(*reserve_itr, check_in, check_out) == ConstNames::Overlapping)
            return false;
    }
    return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movl %edx, -0x18(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x40(%rbp)
addq $0x40, %rdi
callq 0x61240
movq %rax, -0x20(%rbp)
movq -0x40(%rbp), %rdi
addq $0x40, %rdi
callq 0x612b0
movq %rax, -0x28(%rbp)
leaq -0x20(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x61270
testb $0x1, %al
jne 0x60d9b
jmp 0x60de2
leaq -0x20(%rbp), %rdi
callq 0x612e0
movq -0x40(%rbp), %rdi
movq (%rax), %rax
movq %rax, -0x30(%rbp)
movl -0x14(%rbp), %edx
movl -0x18(%rbp), %ecx
movq -0x30(%rbp), %rsi
movq (%rdi), %rax
callq *0x30(%rax)
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x60dcf
movb $0x0, -0x1(%rbp)
jmp 0x60de6
jmp 0x60dd1
leaq -0x20(%rbp), %rdi
xorl %esi, %esi
callq 0x61300
movq %rax, -0x38(%rbp)
jmp 0x60d77
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: mahdibohloul[P]SnapTrip/./Models/Rooms/Room.cpp
// Function: Database::Hotel::Room::delete_reserve(int, int)
void Database::Hotel::Room::delete_reserve(int check_in, int check_out)
{
    auto want_delete = reserves.begin();
    for(auto reserve_itr = reserves.begin(); reserve_itr != reserves.end(); reserve_itr++)
    {
        if((*reserve_itr).check_in == check_in && (*reserve_itr).check_out == check_out)
        {
            want_delete = reserve_itr;
            break;
        }
    }
    reserves.erase(want_delete);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl %edx, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x48(%rbp)
addq $0x40, %rdi
callq 0x61390
movq -0x48(%rbp), %rdi
movq %rax, -0x18(%rbp)
addq $0x40, %rdi
callq 0x61390
movq %rax, -0x20(%rbp)
movq -0x48(%rbp), %rdi
addq $0x40, %rdi
callq 0x61400
movq %rax, -0x28(%rbp)
leaq -0x20(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x613c0
testb $0x1, %al
jne 0x60edc
jmp 0x60f1a
leaq -0x20(%rbp), %rdi
callq 0x61430
movl (%rax), %eax
cmpl -0xc(%rbp), %eax
jne 0x60f07
leaq -0x20(%rbp), %rdi
callq 0x61430
movl 0x4(%rax), %eax
cmpl -0x10(%rbp), %eax
jne 0x60f07
movq -0x20(%rbp), %rax
movq %rax, -0x18(%rbp)
jmp 0x60f1a
jmp 0x60f09
leaq -0x20(%rbp), %rdi
xorl %esi, %esi
callq 0x61450
movq %rax, -0x30(%rbp)
jmp 0x60eb8
movq -0x48(%rbp), %rax
addq $0x40, %rax
movq %rax, -0x50(%rbp)
leaq -0x38(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x61500
movq -0x50(%rbp), %rdi
movq -0x38(%rbp), %rsi
callq 0x61490
movq %rax, -0x40(%rbp)
addq $0x50, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: mahdibohloul[P]SnapTrip/./Models/Rooms/StandardRoom.cpp
// Function: StandardRoom::generate_id[abi:cxx11]()
string StandardRoom::generate_id()
{
    ostringstream os;
    os << ConstNames::Standard_Room_Prefix << current_id;
    current_id++;
    return os.str();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1c0, %rsp            # imm = 0x1C0
movq %rdi, -0x1b8(%rbp)
movq %rdi, %rax
movq %rax, -0x1b0(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0x188(%rbp), %rdi
movq %rdi, -0x1a8(%rbp)
callq 0x65b0
movq -0x1a8(%rbp), %rdi
leaq 0xa81db(%rip), %rsi     # 0x10ba60
callq 0x63d0
movq %rax, -0x1a0(%rbp)
jmp 0x63893
movq -0x1a0(%rbp), %rdi
movl 0xa4b88(%rip), %esi     # 0x108428
callq 0x6730
jmp 0x638a7
movq -0x1b8(%rbp), %rdi
movl 0xa4b74(%rip), %eax     # 0x108428
incl %eax
movl %eax, 0xa4b6c(%rip)     # 0x108428
leaq -0x188(%rbp), %rsi
callq 0x6460
jmp 0x638ca
leaq -0x188(%rbp), %rdi
callq 0x60f0
movq -0x1b0(%rbp), %rax
addq $0x1c0, %rsp            # imm = 0x1C0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
leaq -0x188(%rbp), %rdi
callq 0x60f0
movq -0x190(%rbp), %rdi
callq 0x6750
// File: mahdibohloul[P]SnapTrip/./Models/Rooms/DeluxeRoom.cpp
// Function: DeluxeRoom::generate_id[abi:cxx11]()
string DeluxeRoom::generate_id()
{
    ostringstream os;
    os << ConstNames::Delux_Room_Prefix << current_id;
    current_id++;
    return os.str();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1c0, %rsp            # imm = 0x1C0
movq %rdi, -0x1b8(%rbp)
movq %rdi, %rax
movq %rax, -0x1b0(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0x188(%rbp), %rdi
movq %rdi, -0x1a8(%rbp)
callq 0x65b0
movq -0x1a8(%rbp), %rdi
leaq 0xa8c6b(%rip), %rsi     # 0x10c6c0
callq 0x63d0
movq %rax, -0x1a0(%rbp)
jmp 0x63a63
movq -0x1a0(%rbp), %rdi
movl 0xa49bc(%rip), %esi     # 0x10842c
callq 0x6730
jmp 0x63a77
movq -0x1b8(%rbp), %rdi
movl 0xa49a8(%rip), %eax     # 0x10842c
incl %eax
movl %eax, 0xa49a0(%rip)     # 0x10842c
leaq -0x188(%rbp), %rsi
callq 0x6460
jmp 0x63a9a
leaq -0x188(%rbp), %rdi
callq 0x60f0
movq -0x1b0(%rbp), %rax
addq $0x1c0, %rsp            # imm = 0x1C0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
leaq -0x188(%rbp), %rdi
callq 0x60f0
movq -0x190(%rbp), %rdi
callq 0x6750
// File: mahdibohloul[P]SnapTrip/./Models/Rooms/LuxuryRoom.cpp
// Function: LuxuryRoom::generate_id[abi:cxx11]()
string LuxuryRoom::generate_id()
{
    ostringstream os;
    os << ConstNames::Luxury_Room_Prefix << current_id;
    current_id++;
    return os.str();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1c0, %rsp            # imm = 0x1C0
movq %rdi, -0x1b8(%rbp)
movq %rdi, %rax
movq %rax, -0x1b0(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0x188(%rbp), %rdi
movq %rdi, -0x1a8(%rbp)
callq 0x65b0
movq -0x1a8(%rbp), %rdi
leaq 0xa96fb(%rip), %rsi     # 0x10d320
callq 0x63d0
movq %rax, -0x1a0(%rbp)
jmp 0x63c33
movq -0x1a0(%rbp), %rdi
movl 0xa47f0(%rip), %esi     # 0x108430
callq 0x6730
jmp 0x63c47
movq -0x1b8(%rbp), %rdi
movl 0xa47dc(%rip), %eax     # 0x108430
incl %eax
movl %eax, 0xa47d4(%rip)     # 0x108430
leaq -0x188(%rbp), %rsi
callq 0x6460
jmp 0x63c6a
leaq -0x188(%rbp), %rdi
callq 0x60f0
movq -0x1b0(%rbp), %rax
addq $0x1c0, %rsp            # imm = 0x1C0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
leaq -0x188(%rbp), %rdi
callq 0x60f0
movq -0x190(%rbp), %rdi
callq 0x6750
// File: mahdibohloul[P]SnapTrip/./Models/Rooms/PremiumRoom.cpp
// Function: PremiumRoom::generate_id[abi:cxx11]()
string PremiumRoom::generate_id()
{
    ostringstream os;
    os << ConstNames::Premium_Room_Prefix << current_id;
    current_id++;
    return os.str();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1c0, %rsp            # imm = 0x1C0
movq %rdi, -0x1b8(%rbp)
movq %rdi, %rax
movq %rax, -0x1b0(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0x188(%rbp), %rdi
movq %rdi, -0x1a8(%rbp)
callq 0x65b0
movq -0x1a8(%rbp), %rdi
leaq 0xaa18b(%rip), %rsi     # 0x10df80
callq 0x63d0
movq %rax, -0x1a0(%rbp)
jmp 0x63e03
movq -0x1a0(%rbp), %rdi
movl 0xa4624(%rip), %esi     # 0x108434
callq 0x6730
jmp 0x63e17
movq -0x1b8(%rbp), %rdi
movl 0xa4610(%rip), %eax     # 0x108434
incl %eax
movl %eax, 0xa4608(%rip)     # 0x108434
leaq -0x188(%rbp), %rsi
callq 0x6460
jmp 0x63e3a
leaq -0x188(%rbp), %rdi
callq 0x60f0
movq -0x1b0(%rbp), %rax
addq $0x1c0, %rsp            # imm = 0x1C0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
leaq -0x188(%rbp), %rdi
callq 0x60f0
movq -0x190(%rbp), %rdi
callq 0x6750
// File: mahdibohloul[P]SnapTrip/./Models/User/ReserveCase.cpp
// Function: Database::User::ReserveCase::ReserveCase(Database::Hotel*, std::vector<Database::Hotel::Room*, std::allocator<Database::Hotel::Room*>>&, long double, int, int, std::__cxx11::list<int, std::allocator<int>>&)
Database::User::ReserveCase::ReserveCase(Database::Hotel* hotel, v_rooms& b_rooms, long double price, int check_in, int check_out, list<int>& l_id)
{
    this->id = this->generate_id(l_id);
    this->hotel = hotel;
    this->rooms = b_rooms;
    this->cost = price;
    this->check_in = check_in;
    this->check_out = check_out;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
fldt 0x10(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
fstpt -0x30(%rbp)
movl %ecx, -0x34(%rbp)
movl %r8d, -0x38(%rbp)
movq %r9, -0x40(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x58(%rbp)
addq $0x10, %rdi
movq %rdi, -0x60(%rbp)
callq 0x5a5a0
movq -0x58(%rbp), %rdi
movq -0x40(%rbp), %rsi
callq 0x63f50
movl %eax, -0x50(%rbp)
jmp 0x63eec
movq -0x58(%rbp), %rdi
movl -0x50(%rbp), %eax
movl %eax, (%rdi)
movq -0x10(%rbp), %rax
movq %rax, 0x8(%rdi)
movq -0x18(%rbp), %rsi
addq $0x10, %rdi
callq 0x641e0
jmp 0x63f0c
movq -0x58(%rbp), %rax
fldt -0x30(%rbp)
fstpt 0x30(%rax)
movl -0x34(%rbp), %ecx
movl %ecx, 0x40(%rax)
movl -0x38(%rbp), %ecx
movl %ecx, 0x44(%rax)
addq $0x60, %rsp
popq %rbp
retq
movq -0x60(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
callq 0x552f0
movq -0x48(%rbp), %rdi
callq 0x6750
nopw %cs:(%rax,%rax)
// File: mahdibohloul[P]SnapTrip/./Models/User/ReserveCase.cpp
// Function: Database::User::ReserveCase::generate_id(std::__cxx11::list<int, std::allocator<int>>&)
int Database::User::ReserveCase::generate_id(std::list<int> &l_id)
{
    if(l_id.empty())
    {
        l_id.push_front(ConstNames::First_Reserve_Id);
        return *l_id.begin();
    }
    auto id = l_id.begin();
    l_id.push_front(*id + 1);
    return *l_id.begin();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0x64430
testb $0x1, %al
jne 0x63f6f
jmp 0x63f9c
movq -0x18(%rbp), %rdi
leaq 0x514ea(%rip), %rsi     # 0xb5464
callq 0x64450
movq -0x18(%rbp), %rdi
callq 0x64490
movq %rax, -0x20(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x644c0
movl (%rax), %eax
movl %eax, -0x4(%rbp)
jmp 0x63fea
movq -0x18(%rbp), %rdi
callq 0x64490
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x40(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x644c0
movq -0x40(%rbp), %rdi
movl (%rax), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
leaq -0x2c(%rbp), %rsi
callq 0x644e0
movq -0x18(%rbp), %rdi
callq 0x64490
movq %rax, -0x38(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x644c0
movl (%rax), %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: mahdibohloul[P]SnapTrip/./Models/User/User.cpp
// Function: Database::User::Weights::operator[](int)
long double Database::User::Weights::operator[](const int which)
{
    switch(which)
    {
        case WE_Location: return weights.location;
        case WE_Cleanliness : return weights.cleanliness;
        case WE_Staff : return weights.staff;
        case WE_Facilities : return weights.facilities;
        case WE_Value : return weights.value_for_money;
        default: return 0;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x18(%rbp)
movl %esi, -0x1c(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x30(%rbp)
movl -0x1c(%rbp), %eax
movq %rax, -0x28(%rbp)
subq $0x4, %rax
ja 0x66370
movq -0x28(%rbp), %rax
leaq 0x4f141(%rip), %rcx     # 0xb546c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x30(%rbp), %rax
fldt 0x20(%rax)
fstpt -0x10(%rbp)
jmp 0x66375
movq -0x30(%rbp), %rax
fldt 0x30(%rax)
fstpt -0x10(%rbp)
jmp 0x66375
movq -0x30(%rbp), %rax
fldt 0x40(%rax)
fstpt -0x10(%rbp)
jmp 0x66375
movq -0x30(%rbp), %rax
fldt 0x50(%rax)
fstpt -0x10(%rbp)
jmp 0x66375
movq -0x30(%rbp), %rax
fldt 0x60(%rax)
fstpt -0x10(%rbp)
jmp 0x66375
fldz
fstpt -0x10(%rbp)
fldt -0x10(%rbp)
popq %rbp
retq
nopw (%rax,%rax)
// File: mahdibohloul[P]SnapTrip/./Models/User/User.cpp
// Function: Database::User::Weights::initialize_weights(std::vector<long double, std::allocator<long double>>)
void Database::User::Weights::initialize_weights(v_double i_weights)
{
    weights.location = i_weights[WE_Location];
    weights.cleanliness = i_weights[WE_Cleanliness];
    weights.staff = i_weights[WE_Staff];
    weights.facilities = i_weights[WE_Facilities];
    weights.value_for_money = i_weights[WE_Value];
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rsi, -0x28(%rbp)
movq %rdi, %rax
movq -0x28(%rbp), %rdi
movq %rdi, -0x20(%rbp)
movq %rax, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x18(%rbp)
xorl %eax, %eax
movl %eax, %esi
callq 0x68ff0
movq -0x20(%rbp), %rdi
movq %rax, %rcx
movq -0x18(%rbp), %rax
fldt (%rcx)
fstpt 0x20(%rax)
movl $0x1, %esi
callq 0x68ff0
movq -0x20(%rbp), %rdi
movq %rax, %rcx
movq -0x18(%rbp), %rax
fldt (%rcx)
fstpt 0x30(%rax)
movl $0x2, %esi
callq 0x68ff0
movq -0x20(%rbp), %rdi
movq %rax, %rcx
movq -0x18(%rbp), %rax
fldt (%rcx)
fstpt 0x40(%rax)
movl $0x3, %esi
callq 0x68ff0
movq -0x20(%rbp), %rdi
movq %rax, %rcx
movq -0x18(%rbp), %rax
fldt (%rcx)
fstpt 0x50(%rax)
movl $0x4, %esi
callq 0x68ff0
movq %rax, %rcx
movq -0x18(%rbp), %rax
fldt (%rcx)
fstpt 0x60(%rax)
addq $0x30, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: mahdibohloul[P]SnapTrip/./Models/User/User.cpp
// Function: Database::User::generate_id[abi:cxx11]()
string Database::User::generate_id()
{
    ostringstream os;
    os << ConstNames::User_Id_Prefix << current_id;
    current_id++;
    return os.str();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1c0, %rsp            # imm = 0x1C0
movq %rdi, -0x1b8(%rbp)
movq %rdi, %rax
movq %rax, -0x1b0(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0x188(%rbp), %rdi
movq %rdi, -0x1a8(%rbp)
callq 0x65b0
movq -0x1a8(%rbp), %rdi
leaq 0xa8dcb(%rip), %rsi     # 0x10f820
callq 0x63d0
movq %rax, -0x1a0(%rbp)
jmp 0x66a63
movq -0x1a0(%rbp), %rdi
movl 0xa19c8(%rip), %esi     # 0x108438
callq 0x6730
jmp 0x66a77
movq -0x1b8(%rbp), %rdi
movl 0xa19b4(%rip), %eax     # 0x108438
incl %eax
movl %eax, 0xa19ac(%rip)     # 0x108438
leaq -0x188(%rbp), %rsi
callq 0x6460
jmp 0x66a9a
leaq -0x188(%rbp), %rdi
callq 0x60f0
movq -0x1b0(%rbp), %rax
addq $0x1c0, %rsp            # imm = 0x1C0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
leaq -0x188(%rbp), %rdi
callq 0x60f0
movq -0x190(%rbp), %rdi
callq 0x6750
// File: mahdibohloul[P]SnapTrip/./Models/User/User.cpp
// Function: Database::User::clean_filters_up()
void Database::User::clean_filters_up()
{
    for(auto filter_itr = filters.begin(); filter_itr != filters.end(); filter_itr++)
    {
        delete (*filter_itr).second;
        (*filter_itr).second = nullptr;
    }
    filters.clear();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x28(%rbp)
addq $0x120, %rdi            # imm = 0x120
callq 0x69720
movq %rax, -0x10(%rbp)
movq -0x28(%rbp), %rdi
addq $0x120, %rdi            # imm = 0x120
callq 0x69890
movq %rax, -0x18(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x69b20
testb $0x1, %al
jne 0x66c0b
jmp 0x66c4e
leaq -0x10(%rbp), %rdi
callq 0x699a0
movq 0x8(%rax), %rax
movq %rax, -0x30(%rbp)
cmpq $0x0, %rax
je 0x66c2c
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
leaq -0x10(%rbp), %rdi
callq 0x699a0
movq $0x0, 0x8(%rax)
leaq -0x10(%rbp), %rdi
xorl %esi, %esi
callq 0x69b50
movq %rax, -0x20(%rbp)
jmp 0x66be4
movq -0x28(%rbp), %rdi
addq $0x120, %rdi            # imm = 0x120
callq 0x69bc0
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: mahdibohloul[P]SnapTrip/./Models/User/User.cpp
// Function: Database::User::clean_reservations_up()
void Database::User::clean_reservations_up()
{
    for(auto book_itr = booked_rooms.begin(); book_itr != booked_rooms.end(); book_itr++)
    {
        delete *book_itr;
        *book_itr = nullptr;
    }
    booked_rooms.clear();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x28(%rbp)
addq $0xd8, %rdi
callq 0x69c60
movq %rax, -0x10(%rbp)
movq -0x28(%rbp), %rdi
addq $0xd8, %rdi
callq 0x57810
movq %rax, -0x18(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x69c90
testb $0x1, %al
jne 0x66cbb
jmp 0x66d04
leaq -0x10(%rbp), %rdi
callq 0x69cc0
movq (%rax), %rax
movq %rax, -0x30(%rbp)
cmpq $0x0, %rax
je 0x66ce3
movq -0x30(%rbp), %rdi
callq 0x64000
movq -0x30(%rbp), %rdi
callq 0x6400
leaq -0x10(%rbp), %rdi
callq 0x69cc0
movq $0x0, (%rax)
leaq -0x10(%rbp), %rdi
xorl %esi, %esi
callq 0x69ce0
movq %rax, -0x20(%rbp)
jmp 0x66c94
movq -0x28(%rbp), %rdi
addq $0xd8, %rdi
callq 0x69d80
addq $0x30, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: mahdibohloul[P]SnapTrip/./Models/User/User.cpp
// Function: Database::User::get_account_information[abi:cxx11](int)
Database::User::l_transactions Database::User::get_account_information(int num_transactions)
{
    l_transactions transactions;
    if(!wallet.transactions.empty())
    {
        for(auto transaction_itr = wallet.transactions.begin(); transaction_itr != wallet.transactions.end() && num_transactions > ConstNames::Minimum_No_Transactions; transaction_itr++, num_transactions--)
            transactions.push_back(*transaction_itr);
        return transactions;
    }
    return {0};
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb0, %rsp
movq %rdi, -0xa0(%rbp)
movq %rdi, %rax
movq %rax, -0x98(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x90(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x693e0
movq -0x90(%rbp), %rdi
addq $0x70, %rdi
addq $0x10, %rdi
callq 0x69400
testb $0x1, %al
jne 0x66e7e
movq -0x90(%rbp), %rdi
addq $0x70, %rdi
addq $0x10, %rdi
callq 0x69420
movq %rax, -0x38(%rbp)
movq -0x90(%rbp), %rdi
addq $0x70, %rdi
addq $0x10, %rdi
callq 0x69480
movq %rax, -0x40(%rbp)
leaq -0x38(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x69450
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0xa1(%rbp)
jne 0x66e05
jmp 0x66e12
cmpl $0x0, -0x14(%rbp)
setg %al
movb %al, -0xa1(%rbp)
movb -0xa1(%rbp), %al
testb $0x1, %al
jne 0x66e1e
jmp 0x66e65
leaq -0x38(%rbp), %rdi
callq 0x694f0
movq %rax, %rsi
leaq -0x30(%rbp), %rdi
callq 0x694b0
jmp 0x66e35
jmp 0x66e37
leaq -0x38(%rbp), %rdi
xorl %esi, %esi
callq 0x69510
movq %rax, -0x58(%rbp)
movl -0x14(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x66dcf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x66f0b
movq -0xa0(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x69540
movl $0x1, -0x5c(%rbp)
jmp 0x66ef2
fldz
fstpt -0x80(%rbp)
leaq -0x80(%rbp), %rax
movq %rax, -0x70(%rbp)
movq $0x1, -0x68(%rbp)
leaq -0x81(%rbp), %rdi
movq %rdi, -0xb0(%rbp)
callq 0x5aba0
movq -0xa0(%rbp), %rdi
movq -0xb0(%rbp), %rcx
movq -0x70(%rbp), %rsi
movq -0x68(%rbp), %rdx
callq 0x69570
jmp 0x66ec3
leaq -0x81(%rbp), %rdi
callq 0x5ac40
movl $0x1, -0x5c(%rbp)
jmp 0x66ef2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x81(%rbp), %rdi
callq 0x5ac40
jmp 0x66f0b
leaq -0x30(%rbp), %rdi
callq 0x69620
movq -0x98(%rbp), %rax
addq $0xb0, %rsp
popq %rbp
retq
leaq -0x30(%rbp), %rdi
callq 0x69620
movq -0x48(%rbp), %rdi
callq 0x6750
nopl (%rax)
// File: mahdibohloul[P]SnapTrip/./Models/User/User.cpp
// Function: Database::User::get_hotels(std::__cxx11::list<Database::Hotel*, std::allocator<Database::Hotel*>>&)
Database::l_hotels Database::User::get_hotels(Database::l_hotels& hotels)
{
    sort_hotels(hotels);
    if(could_apply_default_filter())
        apply_default_filter(hotels);
    if(filters.empty())
        return hotels;
    else{
        auto filter_itr = filters.begin();
        return get_filtered_hotels(hotels, filter_itr);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x38(%rbp)
movq %rdi, %rax
movq %rax, -0x30(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x28(%rbp)
movq -0x18(%rbp), %rsi
callq 0x66fd0
movq -0x28(%rbp), %rdi
callq 0x67000
testb $0x1, %al
jne 0x66f5f
jmp 0x66f6c
movq -0x28(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x67090
movq -0x28(%rbp), %rdi
addq $0x120, %rdi            # imm = 0x120
callq 0x69640
testb $0x1, %al
jne 0x66f82
jmp 0x66f91
movq -0x38(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x69660
jmp 0x66fba
movq -0x28(%rbp), %rdi
addq $0x120, %rdi            # imm = 0x120
callq 0x69720
movq -0x38(%rbp), %rdi
movq -0x28(%rbp), %rsi
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdx
leaq -0x20(%rbp), %rcx
callq 0x67130
movq -0x30(%rbp), %rax
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: mahdibohloul[P]SnapTrip/./Models/User/User.cpp
// Function: Database::User::could_apply_default_filter()
bool Database::User::could_apply_default_filter()
{
    auto avg_filter = filters.find(FilterMode::AvgPrice);
    if(avg_filter != filters.end())
        return false;
    if(booked_rooms.size() < ConstNames::Minimum_Reservation_Count)
        return false;
    return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x30(%rbp)
addq $0x120, %rdi            # imm = 0x120
movl $0x3, -0x1c(%rbp)
leaq -0x1c(%rbp), %rsi
callq 0x69830
movq -0x30(%rbp), %rdi
movq %rax, -0x18(%rbp)
addq $0x120, %rdi            # imm = 0x120
callq 0x69890
movq %rax, -0x28(%rbp)
leaq -0x18(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x69b20
testb $0x1, %al
jne 0x67056
jmp 0x6705c
movb $0x0, -0x1(%rbp)
jmp 0x6707c
movq -0x30(%rbp), %rdi
addq $0xd8, %rdi
callq 0x69b90
cmpq $0xa, %rax
jae 0x67078
movb $0x0, -0x1(%rbp)
jmp 0x6707c
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x30, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: mahdibohloul[P]SnapTrip/./Models/User/User.cpp
// Function: Database::User::apply_default_filter(std::__cxx11::list<Database::Hotel*, std::allocator<Database::Hotel*>>&)
void Database::User::apply_default_filter(Database::l_hotels& hotels)
{
    set_filters(FilterMode::DefaultAvgPrice);
    auto default_filter = filters[FilterMode::DefaultAvgPrice];
    if(default_filter->get_activity_status() == ConstNames::Active_Mode){
        default_filter->reset_filter();
        default_filter->filter(hotels);
        hotels = default_filter->get_hotels();
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x40(%rbp)
xorl %esi, %esi
callq 0x67310
movq -0x40(%rbp), %rdi
addq $0x120, %rdi            # imm = 0x120
movl $0x0, -0x1c(%rbp)
leaq -0x1c(%rbp), %rsi
callq 0x69750
movq (%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
movq (%rdi), %rax
callq *0x38(%rax)
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x67121
movq -0x18(%rbp), %rdi
movq (%rdi), %rax
callq *0x20(%rax)
movq -0x18(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq (%rdi), %rax
callq *0x10(%rax)
movq -0x18(%rbp), %rsi
movq (%rsi), %rax
leaq -0x38(%rbp), %rdi
callq *0x18(%rax)
movq -0x10(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x54bf0
leaq -0x38(%rbp), %rdi
callq 0x54c20
addq $0x40, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: mahdibohloul[P]SnapTrip/./Models/User/User.cpp
// Function: Database::User::get_filtered_hotels(std::__cxx11::list<Database::Hotel*, std::allocator<Database::Hotel*>>&, std::_Rb_tree_iterator<std::pair<Database::User::FilterMode const, Database::User::Filter*>>&)
Database::l_hotels Database::User::get_filtered_hotels(Database::l_hotels& hotels, m_filter::iterator& map_itr)
{
    if(map_itr == filters.end()){
        if(hotels.empty())
            throw Exception(ConstNames::Empty_msg);
        return hotels;
    }
    ((*map_itr).second)->reset_filter();
    ((*map_itr).second)->filter(hotels);
    auto new_hotels = ((*map_itr).second)->get_hotels();
    map_itr++;
    return get_filtered_hotels(new_hotels, map_itr);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb0, %rsp
movq %rdi, -0x98(%rbp)
movq %rdi, %rax
movq %rax, -0x90(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x88(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x80(%rbp)
addq $0x120, %rdi            # imm = 0x120
callq 0x69890
movq -0x80(%rbp), %rdi
movq %rax, -0x28(%rbp)
leaq -0x28(%rbp), %rsi
callq 0x69860
testb $0x1, %al
jne 0x67195
jmp 0x67254
movq -0x18(%rbp), %rdi
callq 0x55160
testb $0x1, %al
jne 0x671a7
jmp 0x6723f
movb $0x1, -0x55(%rbp)
movl $0x28, %edi
callq 0x6210
movq %rax, -0xa0(%rbp)
leaq 0xa87bd(%rip), %rsi     # 0x10f980
leaq -0x48(%rbp), %rdi
callq 0x61d0
jmp 0x671ce
movq -0xa0(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0xabc90
jmp 0x671e0
movq -0xa0(%rbp), %rdi
movb $0x0, -0x55(%rbp)
leaq 0xa0a76(%rip), %rsi     # 0x107c68
leaq 0x44b07(%rip), %rdx     # 0xabd00
callq 0x6710
jmp 0x6730f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x67226
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x6828
testb $0x1, -0x55(%rbp)
jne 0x6722e
jmp 0x6723a
movq -0xa0(%rbp), %rdi
callq 0x6360
jmp 0x67306
movq -0x98(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x69660
jmp 0x672f6
movq -0x20(%rbp), %rdi
callq 0x699a0
movq 0x8(%rax), %rdi
movq (%rdi), %rax
movq 0x20(%rax), %rax
callq *%rax
movq -0x20(%rbp), %rdi
callq 0x699a0
movq 0x8(%rax), %rdi
movq -0x18(%rbp), %rsi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq -0x20(%rbp), %rdi
callq 0x699a0
movq 0x8(%rax), %rsi
movq (%rsi), %rax
movq 0x18(%rax), %rax
leaq -0x70(%rbp), %rdi
movq %rdi, -0xa8(%rbp)
callq *%rax
movq -0x20(%rbp), %rdi
xorl %esi, %esi
callq 0x69b50
movq -0x98(%rbp), %rdi
movq -0x88(%rbp), %rsi
movq -0xa8(%rbp), %rdx
movq %rax, -0x78(%rbp)
movq -0x20(%rbp), %rcx
callq 0x67130
jmp 0x672d4
leaq -0x70(%rbp), %rdi
callq 0x54c20
jmp 0x672f6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x70(%rbp), %rdi
callq 0x54c20
jmp 0x67306
movq -0x90(%rbp), %rax
addq $0xb0, %rsp
popq %rbp
retq
movq -0x50(%rbp), %rdi
callq 0x6750
nop
// File: mahdibohloul[P]SnapTrip/./Models/User/User.cpp
// Function: Database::User::set_filters(Database::User::FilterMode)
void Database::User::set_filters(const enum FilterMode mode)
{
    auto default_filter = filters.find(FilterMode::DefaultAvgPrice);
    if(default_filter == filters.end())
        filters[mode] = new DefaultAvgPriceFilter(booked_rooms);
    else
    {
        if(((*default_filter).second)->get_activity_status() == ConstNames::Active_Mode)
        {
            filters.erase(default_filter);
            filters[mode] = new DefaultAvgPriceFilter(booked_rooms);
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x50(%rbp)
addq $0x120, %rdi            # imm = 0x120
movl $0x0, -0x1c(%rbp)
leaq -0x1c(%rbp), %rsi
callq 0x69830
movq -0x50(%rbp), %rdi
movq %rax, -0x18(%rbp)
addq $0x120, %rdi            # imm = 0x120
callq 0x69890
movq %rax, -0x28(%rbp)
leaq -0x18(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x69860
testb $0x1, %al
jne 0x67369
jmp 0x673c9
movl $0x50, %edi
callq 0x6440
movq -0x50(%rbp), %rsi
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x58(%rbp)
addq $0xd8, %rsi
callq 0xb35d0
jmp 0x6738f
movq -0x50(%rbp), %rdi
addq $0x120, %rdi            # imm = 0x120
leaq -0xc(%rbp), %rsi
callq 0x698c0
movq -0x58(%rbp), %rcx
movq %rcx, (%rax)
jmp 0x67462
movq -0x58(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
callq 0x6400
jmp 0x67468
leaq -0x18(%rbp), %rdi
callq 0x699a0
movq 0x8(%rax), %rdi
movq (%rdi), %rax
callq *0x38(%rax)
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x67460
movq -0x50(%rbp), %rdi
addq $0x120, %rdi            # imm = 0x120
movq -0x18(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rsi
callq 0x699c0
movq %rax, -0x48(%rbp)
movl $0x50, %edi
callq 0x6440
movq -0x50(%rbp), %rsi
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x60(%rbp)
addq $0xd8, %rsi
callq 0xb35d0
jmp 0x6742c
movq -0x50(%rbp), %rdi
addq $0x120, %rdi            # imm = 0x120
leaq -0xc(%rbp), %rsi
callq 0x698c0
movq -0x60(%rbp), %rcx
movq %rcx, (%rax)
jmp 0x67460
movq -0x60(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
callq 0x6400
jmp 0x67468
jmp 0x67462
addq $0x60, %rsp
popq %rbp
retq
movq -0x30(%rbp), %rdi
callq 0x6750
nopw %cs:(%rax,%rax)
// File: mahdibohloul[P]SnapTrip/./Models/User/User.cpp
// Function: Database::User::set_filters(Database::User::FilterInfo const&)
void Database::User::set_filters(const FilterInfo &filter_info)
{
    if(filter_info.mode == FilterMode::City)
        filters[FilterMode::City] = new CityFilter(filter_info);
    else if(filter_info.mode == FilterMode::AvgPrice)
        filters[FilterMode::AvgPrice] = new AvgPriceFilter(filter_info);
    else if(filter_info.mode == FilterMode::StarRange)
        filters[FilterMode::StarRange] = new StarRangeFilter(filter_info);
    else if(filter_info.mode == FilterMode::Advanced)
        filters[FilterMode::Advanced] = new AdvancedFilter(filter_info);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x1, 0x30(%rax)
jne 0x67502
movl $0x48, %edi
callq 0x6440
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x40(%rbp)
movq -0x10(%rbp), %rsi
callq 0x71900
jmp 0x674c1
movq -0x38(%rbp), %rdi
addq $0x120, %rdi            # imm = 0x120
movl $0x1, -0x20(%rbp)
leaq -0x20(%rbp), %rsi
callq 0x69750
movq -0x40(%rbp), %rcx
movq %rcx, (%rax)
jmp 0x6763a
movq -0x40(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0x6400
jmp 0x67640
movq -0x10(%rbp), %rax
cmpl $0x3, 0x30(%rax)
jne 0x6756c
movl $0x50, %edi
callq 0x6440
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x48(%rbp)
movq -0x10(%rbp), %rsi
callq 0x72010
jmp 0x6752b
movq -0x38(%rbp), %rdi
addq $0x120, %rdi            # imm = 0x120
movl $0x3, -0x24(%rbp)
leaq -0x24(%rbp), %rsi
callq 0x69750
movq -0x48(%rbp), %rcx
movq %rcx, (%rax)
jmp 0x67638
movq -0x48(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0x6400
jmp 0x67640
movq -0x10(%rbp), %rax
cmpl $0x2, 0x30(%rax)
jne 0x675d0
movl $0x30, %edi
callq 0x6440
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x50(%rbp)
movq -0x10(%rbp), %rsi
callq 0xabdb0
jmp 0x67595
movq -0x38(%rbp), %rdi
addq $0x120, %rdi            # imm = 0x120
movl $0x2, -0x28(%rbp)
leaq -0x28(%rbp), %rsi
callq 0x69750
movq -0x50(%rbp), %rcx
movq %rcx, (%rax)
jmp 0x67636
movq -0x50(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0x6400
jmp 0x67640
movq -0x10(%rbp), %rax
cmpl $0x4, 0x30(%rax)
jne 0x67634
movl $0x38, %edi
callq 0x6440
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x58(%rbp)
movq -0x10(%rbp), %rsi
callq 0x721e0
jmp 0x675f9
movq -0x38(%rbp), %rdi
addq $0x120, %rdi            # imm = 0x120
movl $0x4, -0x2c(%rbp)
leaq -0x2c(%rbp), %rsi
callq 0x69750
movq -0x58(%rbp), %rcx
movq %rcx, (%rax)
jmp 0x67634
movq -0x58(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0x6400
jmp 0x67640
jmp 0x67636
jmp 0x67638
jmp 0x6763a
addq $0x60, %rsp
popq %rbp
retq
movq -0x18(%rbp), %rdi
callq 0x6750
nopl (%rax)
// File: mahdibohloul[P]SnapTrip/./Models/User/User.cpp
// Function: Database::User::set_default_filter(bool)
void Database::User::set_default_filter(const bool activation_mode)
{
    if(activation_mode && could_apply_default_filter())
        set_filters(FilterMode::DefaultAvgPrice);
    else
        deactivate_default_filter();

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
andb $0x1, %al
movb %al, -0x9(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x18(%rbp)
testb $0x1, -0x9(%rbp)
je 0x6772e
movq -0x18(%rbp), %rdi
callq 0x67000
testb $0x1, %al
jne 0x67721
jmp 0x6772e
movq -0x18(%rbp), %rdi
xorl %esi, %esi
callq 0x67310
jmp 0x67737
movq -0x18(%rbp), %rdi
callq 0x67740
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: mahdibohloul[P]SnapTrip/./Models/User/User.cpp
// Function: Database::User::deactivate_default_filter()
void Database::User::deactivate_default_filter()
{
    auto default_filter = filters.find(FilterMode::DefaultAvgPrice);
    if(default_filter != filters.end())
        ((*default_filter).second)->deactivate();
    else
    {
        set_filters(FilterMode::DefaultAvgPrice);
        deactivate_default_filter();
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x28(%rbp)
addq $0x120, %rdi            # imm = 0x120
movl $0x0, -0x14(%rbp)
leaq -0x14(%rbp), %rsi
callq 0x69830
movq -0x28(%rbp), %rdi
movq %rax, -0x10(%rbp)
addq $0x120, %rdi            # imm = 0x120
callq 0x69890
movq %rax, -0x20(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x69b20
testb $0x1, %al
jne 0x67796
jmp 0x677ab
leaq -0x10(%rbp), %rdi
callq 0x699a0
movq 0x8(%rax), %rdi
movq (%rdi), %rax
callq *0x28(%rax)
jmp 0x677bf
movq -0x28(%rbp), %rdi
xorl %esi, %esi
callq 0x67310
movq -0x28(%rbp), %rdi
callq 0x67740
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: mahdibohloul[P]SnapTrip/./Models/User/User.cpp
// Function: Database::User::delete_reserve(int)
void Database::User::delete_reserve(int id)
{
    auto reserve = query_in_reserves(id);
    if(reserve == nullptr)
        throw Exception(ConstNames::Not_Found_msg);
    delete_from_reserves(reserve);
    deposit(reserve->cost * ConstNames::Fifty_Percent);
    delete reserve;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x50(%rbp)
movl -0xc(%rbp), %esi
callq 0x67b30
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
jne 0x67ad7
movb $0x1, -0x45(%rbp)
movl $0x28, %edi
callq 0x6210
movq %rax, -0x58(%rbp)
leaq 0xa7e79(%rip), %rsi     # 0x10f8e0
leaq -0x38(%rbp), %rdi
callq 0x61d0
jmp 0x67a72
movq -0x58(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0xabc90
jmp 0x67a81
movq -0x58(%rbp), %rdi
movb $0x0, -0x45(%rbp)
leaq 0xa01d8(%rip), %rsi     # 0x107c68
leaq 0x44269(%rip), %rdx     # 0xabd00
callq 0x6710
jmp 0x67b30
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x67ac4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x6828
testb $0x1, -0x45(%rbp)
jne 0x67acc
jmp 0x67ad5
movq -0x58(%rbp), %rdi
callq 0x6360
jmp 0x67b27
movq -0x50(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x67bd0
movq -0x50(%rbp), %rdi
movq -0x18(%rbp), %rax
fldt 0x30(%rax)
flds 0x4d98f(%rip)           # 0xb5484
fmulp %st, %st(1)
movq %rsp, %rax
fstpt (%rax)
callq 0x66d20
movq -0x18(%rbp), %rax
movq %rax, -0x60(%rbp)
cmpq $0x0, %rax
je 0x67b21
movq -0x60(%rbp), %rdi
callq 0x64000
movq -0x60(%rbp), %rdi
callq 0x6400
addq $0x70, %rsp
popq %rbp
retq
movq -0x40(%rbp), %rdi
callq 0x6750
// File: mahdibohloul[P]SnapTrip/./Models/User/User.cpp
// Function: Database::User::query_in_reserves(int)
Database::User::ReserveCase* Database::User::query_in_reserves(int id)
{
    for(auto reserve_itr = booked_rooms.begin(); reserve_itr != booked_rooms.end(); reserve_itr++)
    {
        if((*reserve_itr)->id == id)
            return *reserve_itr;
    }
    return nullptr;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x38(%rbp)
addq $0xd8, %rdi
callq 0x69c60
movq %rax, -0x20(%rbp)
movq -0x38(%rbp), %rdi
addq $0xd8, %rdi
callq 0x57810
movq %rax, -0x28(%rbp)
leaq -0x20(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x69c90
testb $0x1, %al
jne 0x67b7e
jmp 0x67bb6
leaq -0x20(%rbp), %rdi
callq 0x69cc0
movq (%rax), %rax
movl (%rax), %eax
cmpl -0x14(%rbp), %eax
jne 0x67ba3
leaq -0x20(%rbp), %rdi
callq 0x69cc0
movq (%rax), %rax
movq %rax, -0x8(%rbp)
jmp 0x67bbe
jmp 0x67ba5
leaq -0x20(%rbp), %rdi
xorl %esi, %esi
callq 0x69ce0
movq %rax, -0x30(%rbp)
jmp 0x67b57
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: mahdibohloul[P]SnapTrip/./Models/User/User.cpp
// Function: Database::User::delete_from_reserves(Database::User::ReserveCase*)
void Database::User::delete_from_reserves(ReserveCase* reserve)
{
    auto want_delete = booked_rooms.begin();
    for(auto reserve_itr = booked_rooms.begin(); reserve_itr != booked_rooms.end(); reserve_itr++)
    {
        if(*reserve_itr == reserve)
        {
            want_delete = reserve_itr;
            break;
        }
    }
    booked_rooms.erase(want_delete);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x48(%rbp)
addq $0xd8, %rdi
callq 0x69c60
movq -0x48(%rbp), %rdi
movq %rax, -0x18(%rbp)
addq $0xd8, %rdi
callq 0x69c60
movq %rax, -0x20(%rbp)
movq -0x48(%rbp), %rdi
addq $0xd8, %rdi
callq 0x57810
movq %rax, -0x28(%rbp)
leaq -0x20(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x69c90
testb $0x1, %al
jne 0x67c33
jmp 0x67c62
leaq -0x20(%rbp), %rdi
callq 0x69cc0
movq (%rax), %rax
cmpq -0x10(%rbp), %rax
jne 0x67c4f
movq -0x20(%rbp), %rax
movq %rax, -0x18(%rbp)
jmp 0x67c62
jmp 0x67c51
leaq -0x20(%rbp), %rdi
xorl %esi, %esi
callq 0x69ce0
movq %rax, -0x30(%rbp)
jmp 0x67c0c
movq -0x48(%rbp), %rax
addq $0xd8, %rax
movq %rax, -0x50(%rbp)
leaq -0x38(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x69d60
movq -0x50(%rbp), %rdi
movq -0x38(%rbp), %rsi
callq 0x69d10
movq %rax, -0x40(%rbp)
addq $0x50, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: mahdibohloul[P]SnapTrip/./Models/User/User.cpp
// Function: Database::User::the_default_filter_applied()
bool Database::User::the_default_filter_applied()
{
    auto default_filter = filters.find(FilterMode::DefaultAvgPrice);
    if(default_filter != filters.end())
        return filters[FilterMode::DefaultAvgPrice]->get_activity_status();
    return false;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x38(%rbp)
addq $0x120, %rdi            # imm = 0x120
movl $0x0, -0x1c(%rbp)
leaq -0x1c(%rbp), %rsi
callq 0x69830
movq -0x38(%rbp), %rdi
movq %rax, -0x18(%rbp)
addq $0x120, %rdi            # imm = 0x120
callq 0x69890
movq %rax, -0x28(%rbp)
leaq -0x18(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x69b20
testb $0x1, %al
jne 0x68156
jmp 0x68181
movq -0x38(%rbp), %rdi
addq $0x120, %rdi            # imm = 0x120
movl $0x0, -0x2c(%rbp)
leaq -0x2c(%rbp), %rsi
callq 0x69750
movq (%rax), %rdi
movq (%rdi), %rax
callq *0x38(%rax)
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x68185
movb $0x0, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x40, %rsp
popq %rbp
retq