// File: /workspace/github_cpp_makefile_star2_O2/Kyle-Alvares[P]SQA1/session.cpp
// Function: Session::prompt()
void Session::prompt() {
    int max = user.isAdmin() ? 8 : 4;
    while(true) {
        int option;
        bool validOption = false;
        cout << endl << "===========OPTIONS============" << endl;
        cout << "[0] Logout" << endl;
        cout << "[1] Withdraw" << endl;
        cout << "[2] Transfer" << endl;
        cout << "[3] Pay-Bill" << endl;
        cout << "[4] Deposit" << endl;
        if(user.isAdmin()) {
            cout << "[5] Create Account" << endl;
            cout << "[6] Delete Account" << endl;
            cout << "[7] Disable Account" << endl;
            cout << "[8] Change Plan" << endl;
        }
        while(!validOption) {
            validOption = true;
            cout << "Option: ";
            cin >> option;
            if(option < 0 || option > max) { validOption = false; } 
        }
        if(option == 0) {
            break;
        } else if (option == 1) {
            withdraw(500, true);
        } else if (option == 2) {
            transfer();
        } else if (option == 3) {
            payBill();
        } else if (option == 4) {
            deposit();
        } else if (option == 5) {
            createAccount();
        } else if (option == 6) {
            deleteAccount();
        } else if (option == 7) {
            disableAccount();
        } else if (option == 8) {
            changePlan();
        }
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
callq 0x339e
movzbl %al, %eax
leal 0x4(,%rax,4), %r12d
movq 0x6d4d(%rip), %r14      # 0xafc0
leaq 0x3433(%rip), %r13      # 0x76ad
movq 0x6d57(%rip), %rbp      # 0xafd8
leaq 0x4(%rsp), %r15
movq %r14, %rdi
callq 0x2120
movq %rax, %rdi
leaq 0x336e(%rip), %rsi      # 0x7606
callq 0x21f0
movq %rax, %rdi
callq 0x2120
movq %r14, %rdi
leaq 0x3376(%rip), %rsi      # 0x7625
callq 0x21f0
movq %rax, %rdi
callq 0x2120
movq %r14, %rdi
leaq 0x336a(%rip), %rsi      # 0x7630
callq 0x21f0
movq %rax, %rdi
callq 0x2120
movq %r14, %rdi
leaq 0x3360(%rip), %rsi      # 0x763d
callq 0x21f0
movq %rax, %rdi
callq 0x2120
movq %r14, %rdi
leaq 0x3356(%rip), %rsi      # 0x764a
callq 0x21f0
movq %rax, %rdi
callq 0x2120
movq %r14, %rdi
leaq 0x334c(%rip), %rsi      # 0x7657
callq 0x21f0
movq %rax, %rdi
callq 0x2120
movq %rbx, %rdi
callq 0x339e
testb %al, %al
je 0x4380
movq %r14, %rdi
leaq 0x3335(%rip), %rsi      # 0x7663
callq 0x21f0
movq %rax, %rdi
callq 0x2120
movq %r14, %rdi
leaq 0x3331(%rip), %rsi      # 0x7676
callq 0x21f0
movq %rax, %rdi
callq 0x2120
movq %r14, %rdi
leaq 0x332d(%rip), %rsi      # 0x7689
callq 0x21f0
movq %rax, %rdi
callq 0x2120
movq %r14, %rdi
leaq 0x332a(%rip), %rsi      # 0x769d
callq 0x21f0
movq %rax, %rdi
callq 0x2120
movq %r14, %rdi
movq %r13, %rsi
callq 0x21f0
movq %rbp, %rdi
movq %r15, %rsi
callq 0x2160
movl 0x4(%rsp), %eax
cmpl %r12d, %eax
ja 0x4380
cmpl $0x8, %eax
ja 0x4286
movl %eax, %eax
leaq 0x2f5f(%rip), %rcx      # 0x7310
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rbx, %rdi
movsd 0x2f2b(%rip), %xmm0     # 0x72f0
pushq $0x1
popq %rsi
callq 0x444a
jmp 0x4286
movq %rbx, %rdi
callq 0x5078
jmp 0x4286
movq %rbx, %rdi
callq 0x49c0
jmp 0x4286
movq %rbx, %rdi
callq 0x4d3a
jmp 0x4286
movq %rbx, %rdi
callq 0x5542
jmp 0x4286
movq %rbx, %rdi
callq 0x4746
jmp 0x4286
movq %rbx, %rdi
callq 0x5262
jmp 0x4286
movq %rbx, %rdi
callq 0x53d2
jmp 0x4286
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq