Optimize "Software-SPI-Slave-Mode" ISR

tried to minimize the boolean expressions - (

void _isrd2()
{
  byte bn = 1;
  byte rec = 0;
 
 byte reg = PIND;
    
  while (~reg & B00000100) 
  {
    while ((~reg & B00100100)  == B00100100)  { reg = PIND; };

    if (reg & B01000000)  
    {
      rec += bn;   
    }
    bn = bn << 1;
   
    while ((~reg & B00100100) == B00000100) { reg = PIND; };
  }
  flag = rec;
}

or even

void _isrd2()
{
  byte bn = 1;
  byte rec = 0;
 
 byte reg = PIND;
    
  while (~PIND & B00000100) 
  {
    while ((~PIND & B00100100) == B00100100) ;

    if (PIND & B01000000)  
    {
      rec += bn;   
    }
    bn = bn << 1;
   
    while ((~PIND & B00100100) == B00000100);
  }
  flag = rec;
}