// File: /workspace/github_cpp_makefile_star2_O2/nickgammon[P]tinymudserver/states.cpp
// Function: ProcessConfirmPassword(tPlayer*, std::istream&)
void ProcessConfirmPassword (tPlayer * p, istream & sArgs)
{
   string password;
   sArgs >> password;
  
  // password must agree
  if (password != p->password)
    {
    p->connstate = eAwaitingNewPassword;
    p->prompt = "Choose a password for " + p->playername + " ... ";
    throw runtime_error ("Password and confirmation do not agree.");
    }
  
  // that player might have been created while we were choosing a password, so check again
  ifstream f ((PLAYER_DIR + tocapitals (password) + PLAYER_EXT).c_str (), ios::in);
  if (f || FindPlayer (password))  // player file on disk, or playing without saving yet
    {
    p->connstate = eAwaitingNewName;
    p->prompt = "Please choose a name for your new character ... ";  // re-prompt for name
    throw runtime_error ("That player already exists, please choose another name.");
    }
  
  // New player now in the game
  PlayerEnteredGame (p, messagemap ["new_player"]);
         
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x290, %rsp            # imm = 0x290
movq %rsi, %rax
movq %rdi, %rbx
leaq -0x40(%rbp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
movb $0x0, (%rcx)
leaq -0x50(%rbp), %rsi
movq %rax, %rdi
callq 0x33c0
leaq 0xb0(%rbx), %rsi
leaq -0x50(%rbp), %rdi
callq 0xaf23
testb %al, %al
jne 0xaab4
leaq -0x90(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x45f8
leaq 0x9d4c(%rip), %rsi      # 0x146e0
leaq -0x70(%rbp), %rdi
leaq -0x90(%rbp), %rdx
callq 0xaef5
leaq 0x9d55(%rip), %rdx      # 0x14700
leaq -0x30(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x53f1
movq -0x30(%rbp), %rsi
leaq -0x298(%rbp), %rdi
pushq $0x8
popq %rdx
callq 0x3540
leaq -0x30(%rbp), %rdi
callq 0x35c8
leaq -0x70(%rbp), %rdi
callq 0x35c8
leaq -0x90(%rbp), %rdi
callq 0x35c8
movq -0x298(%rbp), %rax
movq -0x18(%rax), %rax
testb $0x5, -0x278(%rbp,%rax)
je 0xaa65
leaq -0x50(%rbp), %rdi
callq 0x48f8
testq %rax, %rax
jne 0xaa65
leaq 0x2e8e(%rip), %rsi      # 0xd8a1
leaq -0x30(%rbp), %rdi
leaq -0x70(%rbp), %rdx
callq 0x43b6
leaq 0x9e91(%rip), %rdi      # 0x148b8
leaq -0x30(%rbp), %rsi
callq 0x6792
movq %rbx, %rdi
movq %rax, %rsi
callq 0xa1ac
leaq -0x30(%rbp), %rdi
callq 0x35c8
leaq -0x298(%rbp), %rdi
callq 0x30d0
leaq -0x50(%rbp), %rdi
callq 0x35c8
addq $0x290, %rsp            # imm = 0x290
popq %rbx
popq %r14
popq %rbp
retq
movl $0x2, 0x68(%rbx)
addq $0x70, %rbx
leaq 0x2d0e(%rip), %rsi      # 0xd785
movq %rbx, %rdi
callq 0x3580
pushq $0x10
popq %rdi
callq 0x31b0
movq %rax, %r14
leaq 0x2d5a(%rip), %rsi      # 0xd7eb
movq %rax, %rdi
callq 0x3140
movq 0x9550(%rip), %rsi      # 0x13ff0
movq 0x9511(%rip), %rdx      # 0x13fb8
movq %r14, %rdi
callq 0x34e0
jmp 0xab40
movl $0x3, 0x68(%rbx)
leaq 0x90(%rbx), %rdx
leaq 0x2d5a(%rip), %rsi      # 0xd823
leaq -0x30(%rbp), %rdi
callq 0x90f3
leaq 0x2cf0(%rip), %rdx      # 0xd7c9
leaq -0x298(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x6851
addq $0x70, %rbx
leaq -0x298(%rbp), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x33b0
movq %r14, %rdi
callq 0x35c8
leaq -0x30(%rbp), %rdi
callq 0x35c8
pushq $0x10
popq %rdi
callq 0x31b0
movq %rax, %r14
leaq 0x2d57(%rip), %rsi      # 0xd879
movq %rax, %rdi
callq 0x3140
movq 0x94bf(%rip), %rsi      # 0x13ff0
movq 0x9480(%rip), %rdx      # 0x13fb8
movq %r14, %rdi
callq 0x34e0
movq %rax, %rbx
movq %r14, %rdi
callq 0x3270
jmp 0xabb8
movq %rax, %rbx
leaq -0x30(%rbp), %rdi
jmp 0xab8d
movq %rax, %rbx
movq %r14, %rdi
callq 0x3270
jmp 0xabac
jmp 0xab96
jmp 0xaba9
movq %rax, %rbx
leaq -0x30(%rbp), %rdi
callq 0x35c8
jmp 0xab78
movq %rax, %rbx
leaq -0x70(%rbp), %rdi
callq 0x35c8
jmp 0xab86
movq %rax, %rbx
leaq -0x90(%rbp), %rdi
callq 0x35c8
jmp 0xabb8
jmp 0xab96
movq %rax, %rbx
jmp 0xabb8
movq %rax, %rbx
leaq -0x30(%rbp), %rdi
callq 0x35c8
jmp 0xabac
movq %rax, %rbx
leaq -0x298(%rbp), %rdi
callq 0x30d0
leaq -0x50(%rbp), %rdi
callq 0x35c8
movq %rbx, %rdi
callq 0x3500