// File: /workspace/github_cpp_makefile_star2_O3/giovifazi[P]knossos-bloodbath/ClassPlayer.cpp
// Function: Player::diceRoll_nr()
int Player::diceRoll_nr() 
{
   srand(time(0));
   int roll = (rand()%20) +1;
   switch(roll)
   {
      case 1: case 2: case 3: case 4: case 5:
      // Non succede nulla
      return roll;

      // spada bronzo
      case 6: case 7: case 8: case 9:
         atk += 3;
      return roll;
     
      // spada argento
      case 10: case 11: case 12:
         atk += 4;
      return roll;

      // spada oro
      case 13: case 14: 
         atk += 6;
      return roll;

      // trappola, danno incodizionato dallo scudo
      case 15: case 16: case 17:
         hp -= 4;        
      return roll;

      // combattimento con un mostro danno condizionato da scudo
      case 18: case 19: case 20:
         // scudo oro non prende danno ma si rompe e si trova uno di bronzo
         if (shield == "gold")
         {
            shield = "bronze";
            return 181;
         }
         // scudo argento non si rompe ma si prende poco danno
         else
         if (shield == "silver")
         {
            hp -= 2;
            return 182;
         }
         // scudo bronzo si rompe e si prende danno discreto
         else
         if (shield == "bronze")
         {
            hp -= 4;
            shield = "";
            return 183;
         }
         // senza scudo si prende grosso danno
         else
         if (shield == "")
         {
            hp -= 7;
            return 184;
         }
      break;
      
      // Trovata pozione curativa per chi ha scudo oro/arg
      // Trovato scudo argento per gli altri
      case 21: case 22:
 
            hp += 4;
            return 211;
           
      // Trovata pozione velenosa per scudi oro/arg
      // Trovata super pozione curativa per gli altri
      case 23: case 24:

            hp -= 4;
            return 231;
   }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
xorl %edi, %edi
callq 0x20e0
movl %eax, %edi
callq 0x20f0
callq 0x2040
cltq
imulq $0x66666667, %rax, %rcx # imm = 0x66666667
movq %rcx, %rdx
shrq $0x3f, %rdx
sarq $0x23, %rcx
addl %edx, %ecx
shll $0x2, %ecx
leal (%rcx,%rcx,4), %ecx
movl %eax, %edx
subl %ecx, %edx
negl %ecx
addl %ecx, %eax
incl %eax
leaq 0x6f3a(%rip), %rcx      # 0xe858
movslq (%rcx,%rdx,4), %rdx
addq %rcx, %rdx
jmpq *%rdx
addl $0x3, 0x4(%rbx)
jmp 0x79dd
addl $0x4, 0x4(%rbx)
jmp 0x79dd
leaq 0x30(%rbx), %r14
leaq 0x6fda(%rip), %rsi      # 0xe91e
movq %r14, %rdi
callq 0x2050
testl %eax, %eax
je 0x799a
leaq 0x6fc0(%rip), %rsi      # 0xe917
movq %r14, %rdi
callq 0x2050
testl %eax, %eax
je 0x79bc
leaq 0x6fa6(%rip), %rsi      # 0xe910
movq %r14, %rdi
callq 0x2050
testl %eax, %eax
je 0x79c6
leaq 0x6ed9(%rip), %rsi      # 0xe856
movq %r14, %rdi
callq 0x2050
addl $-0x7, (%rbx)
movl $0xb8, %eax
jmp 0x79dd
addl $-0x4, (%rbx)
jmp 0x79dd
addl $0x6, 0x4(%rbx)
jmp 0x79dd
movq 0x38(%rbx), %rdx
leaq 0x6f6b(%rip), %rcx      # 0xe910
movl $0x6, %r8d
movq %r14, %rdi
xorl %esi, %esi
callq 0x21d0
movl $0xb5, %eax
jmp 0x79dd
addl $-0x2, (%rbx)
movl $0xb6, %eax
jmp 0x79dd
addl $-0x4, (%rbx)
leaq 0x6e86(%rip), %rsi      # 0xe856
movq %r14, %rdi
callq 0x21b0
movl $0xb7, %eax
popq %rbx
popq %r14
popq %rbp
retq