// File: billDrett[P]Bulletin-Boards/boardPost.cpp
// Function: BoardPost::menu(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&)
int BoardPost::menu(string& line)
{
    string command, msg;
    int id;
    istringstream iss(line);

    iss>> command;
    if(iss.fail())
    {
        cout<<"error command"<<endl;
        cout<<line<<endl;
        return 0;
    }
    if(command == "list")
    {
        cout<<"Available chanels: "<<endl;
        this->getChanels();
    }
    else if(command == "write") //theloume na steiloume mnm me space
    {
        iss >>id >> msg ;
        if(!iss)
        {
            cout<<"error command"<<endl;
        }
        msg.insert(0, " "); //mporei to msg na einai substring tou command gia auto to logo vazoume to space etsi eksasfalizoume oti to find dn tha vrei kapoio substring tou command
        int pos = line.find(msg);
        line.erase(0, pos+1); //thelw na svisw to space pou prosthesa arxika gia auto to kanw pos+1

        this->sendMessage(line, id);
        cout<<"Message send"<<endl;
    }
    else if(command == "send")
    {
        iss >>id >> msg ;
        if(!iss)
        {
            cout<<"error command"<<endl;
        }
        this->sendFile(msg, id);
        cout<<"File send"<<endl;
    }
    else if(command == "exit")
    {
        cout<<"Exit boardPost"<<endl;
        this->exitBoardPost();
        return -1;
    }
    else //error
    {
        cout<<"error"<<endl;
    }
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2e0, %rsp            # imm = 0x2E0
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x240(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x2260
leaq -0x58(%rbp), %rdi
callq 0x2260
movq -0x18(%rbp), %rsi
leaq -0x1e0(%rbp), %rdi
movl $0x8, %edx
callq 0x2290
jmp 0x36d7
leaq -0x1e0(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x2230
jmp 0x36e9
movq -0x1e0(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x1e0(%rbp,%rax), %rdi
callq 0x2030
movb %al, -0x241(%rbp)
jmp 0x3709
movb -0x241(%rbp), %al
testb $0x1, %al
jne 0x3718
jmp 0x37bb
movq 0x28b1(%rip), %rdi      # 0x5fd0
leaq 0x9cb(%rip), %rsi       # 0x40f1
callq 0x21c0
movq %rax, -0x250(%rbp)
jmp 0x3734
movq -0x250(%rbp), %rdi
movq 0x287e(%rip), %rsi      # 0x5fc0
callq 0x2200
jmp 0x3749
movq -0x18(%rbp), %rsi
movq 0x287c(%rip), %rdi      # 0x5fd0
callq 0x21a0
movq %rax, -0x258(%rbp)
jmp 0x3762
movq -0x258(%rbp), %rdi
movq 0x2850(%rip), %rsi      # 0x5fc0
callq 0x2200
jmp 0x3777
movl $0x0, -0x4(%rbp)
movl $0x1, -0x1f0(%rbp)
jmp 0x3bb4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e8(%rbp)
movl %eax, -0x1ec(%rbp)
jmp 0x3bea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e8(%rbp)
movl %eax, -0x1ec(%rbp)
jmp 0x3bde
leaq 0x93d(%rip), %rsi       # 0x40ff
leaq -0x38(%rbp), %rdi
callq 0x3c20
movb %al, -0x259(%rbp)
jmp 0x37d3
movb -0x259(%rbp), %al
testb $0x1, %al
jne 0x37df
jmp 0x3823
movq 0x27ea(%rip), %rdi      # 0x5fd0
leaq 0x917(%rip), %rsi       # 0x4104
callq 0x21c0
movq %rax, -0x268(%rbp)
jmp 0x37fb
movq -0x268(%rbp), %rdi
movq 0x27b7(%rip), %rsi      # 0x5fc0
callq 0x2200
jmp 0x3810
movq -0x240(%rbp), %rdi
callq 0x2c70
jmp 0x381e
jmp 0x3ba3
leaq 0x8ee(%rip), %rsi       # 0x4118
leaq -0x38(%rbp), %rdi
callq 0x3c20
movb %al, -0x269(%rbp)
jmp 0x383b
movb -0x269(%rbp), %al
testb $0x1, %al
jne 0x384a
jmp 0x39b4
leaq -0x1e0(%rbp), %rdi
leaq -0x5c(%rbp), %rsi
callq 0x2140
movq %rax, -0x278(%rbp)
jmp 0x3863
movq -0x278(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x2230
jmp 0x3875
movq -0x1e0(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x1e0(%rbp,%rax), %rdi
callq 0x2100
movb %al, -0x279(%rbp)
jmp 0x3895
movb -0x279(%rbp), %al
testb $0x1, %al
jne 0x38a1
jmp 0x38d4
movq 0x2728(%rip), %rdi      # 0x5fd0
leaq 0x842(%rip), %rsi       # 0x40f1
callq 0x21c0
movq %rax, -0x288(%rbp)
jmp 0x38bd
movq -0x288(%rbp), %rdi
movq 0x26f5(%rip), %rsi      # 0x5fc0
callq 0x2200
jmp 0x38d2
jmp 0x38d4
leaq 0x83b(%rip), %rdx       # 0x4116
xorl %eax, %eax
movl %eax, %esi
leaq -0x58(%rbp), %rdi
callq 0x2080
jmp 0x38ea
movq -0x18(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
movq %rdx, -0x290(%rbp)
leaq -0x58(%rbp), %rsi
callq 0x2300
movq -0x290(%rbp), %rsi
movl %eax, -0x1f4(%rbp)
movq -0x18(%rbp), %rdi
movl -0x1f4(%rbp), %eax
incl %eax
movslq %eax, %rdx
callq 0x2070
jmp 0x3925
movq -0x18(%rbp), %rsi
leaq -0x218(%rbp), %rdi
callq 0x20e0
jmp 0x3937
movq -0x240(%rbp), %rdi
movl -0x5c(%rbp), %edx
leaq -0x218(%rbp), %rsi
callq 0x30a0
jmp 0x394f
leaq -0x218(%rbp), %rdi
callq 0x2150
movq 0x266e(%rip), %rdi      # 0x5fd0
leaq 0x7b5(%rip), %rsi       # 0x411e
callq 0x21c0
movq %rax, -0x298(%rbp)
jmp 0x3977
movq -0x298(%rbp), %rdi
movq 0x263b(%rip), %rsi      # 0x5fc0
callq 0x2200
jmp 0x398c
jmp 0x3ba1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e8(%rbp)
movl %eax, -0x1ec(%rbp)
leaq -0x218(%rbp), %rdi
callq 0x2150
jmp 0x3bde
leaq 0x76b(%rip), %rsi       # 0x4126
leaq -0x38(%rbp), %rdi
callq 0x3c20
movb %al, -0x299(%rbp)
jmp 0x39cc
movb -0x299(%rbp), %al
testb $0x1, %al
jne 0x39db
jmp 0x3af4
leaq -0x1e0(%rbp), %rdi
leaq -0x5c(%rbp), %rsi
callq 0x2140
movq %rax, -0x2a8(%rbp)
jmp 0x39f4
movq -0x2a8(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x2230
jmp 0x3a06
movq -0x1e0(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x1e0(%rbp,%rax), %rdi
callq 0x2100
movb %al, -0x2a9(%rbp)
jmp 0x3a26
movb -0x2a9(%rbp), %al
testb $0x1, %al
jne 0x3a32
jmp 0x3a65
movq 0x2597(%rip), %rdi      # 0x5fd0
leaq 0x6b1(%rip), %rsi       # 0x40f1
callq 0x21c0
movq %rax, -0x2b8(%rbp)
jmp 0x3a4e
movq -0x2b8(%rbp), %rdi
movq 0x2564(%rip), %rsi      # 0x5fc0
callq 0x2200
jmp 0x3a63
jmp 0x3a65
leaq -0x238(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x20e0
jmp 0x3a77
movq -0x240(%rbp), %rdi
movl -0x5c(%rbp), %edx
leaq -0x238(%rbp), %rsi
callq 0x3290
jmp 0x3a8f
leaq -0x238(%rbp), %rdi
callq 0x2150
movq 0x252e(%rip), %rdi      # 0x5fd0
leaq 0x682(%rip), %rsi       # 0x412b
callq 0x21c0
movq %rax, -0x2c0(%rbp)
jmp 0x3ab7
movq -0x2c0(%rbp), %rdi
movq 0x24fb(%rip), %rsi      # 0x5fc0
callq 0x2200
jmp 0x3acc
jmp 0x3b9f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e8(%rbp)
movl %eax, -0x1ec(%rbp)
leaq -0x238(%rbp), %rdi
callq 0x2150
jmp 0x3bde
leaq 0x63a(%rip), %rsi       # 0x4135
leaq -0x38(%rbp), %rdi
callq 0x3c20
movb %al, -0x2c1(%rbp)
jmp 0x3b0c
movb -0x2c1(%rbp), %al
testb $0x1, %al
jne 0x3b18
jmp 0x3b6a
movq 0x24b1(%rip), %rdi      # 0x5fd0
leaq 0x614(%rip), %rsi       # 0x413a
callq 0x21c0
movq %rax, -0x2d0(%rbp)
jmp 0x3b34
movq -0x2d0(%rbp), %rdi
movq 0x247e(%rip), %rsi      # 0x5fc0
callq 0x2200
jmp 0x3b49
movq -0x240(%rbp), %rdi
callq 0x2c10
jmp 0x3b57
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
movl $0x1, -0x1f0(%rbp)
jmp 0x3bb4
movq 0x245f(%rip), %rdi      # 0x5fd0
leaq 0x5d1(%rip), %rsi       # 0x4149
callq 0x21c0
movq %rax, -0x2d8(%rbp)
jmp 0x3b86
movq -0x2d8(%rbp), %rdi
movq 0x242c(%rip), %rsi      # 0x5fc0
callq 0x2200
jmp 0x3b9b
jmp 0x3b9d
jmp 0x3b9f
jmp 0x3ba1
jmp 0x3ba3
movl $0x0, -0x4(%rbp)
movl $0x1, -0x1f0(%rbp)
leaq -0x1e0(%rbp), %rdi
callq 0x2110
leaq -0x58(%rbp), %rdi
callq 0x2150
leaq -0x38(%rbp), %rdi
callq 0x2150
movl -0x4(%rbp), %eax
addq $0x2e0, %rsp            # imm = 0x2E0
popq %rbp
retq
leaq -0x1e0(%rbp), %rdi
callq 0x2110
leaq -0x58(%rbp), %rdi
callq 0x2150
leaq -0x38(%rbp), %rdi
callq 0x2150
movq -0x1e8(%rbp), %rdi
callq 0x22a0
nopl (%rax,%rax)