trying to control 37leds with 5x 74HC595

like this you mean ?

if(whichPin <16)
  {

    bitWrite(word1, whichPin, whichState);

    registerOne = highByte(word1);
    registerTwo = lowByte(word1);

  shiftOut(dataPin, clockPin, MSBFIRST, registerSix);
  shiftOut(dataPin, clockPin, MSBFIRST, registerFive);
  shiftOut(dataPin, clockPin, MSBFIRST, registerFour);
  shiftOut(dataPin, clockPin, MSBFIRST, registerTree);
  shiftOut(dataPin, clockPin, MSBFIRST, registerTwo);
  shiftOut(dataPin, clockPin, MSBFIRST, registerOne);
  }

  if(whichPin >=16 && whichPin <=31)
  {

    bitWrite(word2, whichPin, whichState);

    registerTree = highByte(word2);
    registerFour = lowByte(word2);


  shiftOut(dataPin, clockPin, MSBFIRST, registerSix);
  shiftOut(dataPin, clockPin, MSBFIRST, registerFive);
  shiftOut(dataPin, clockPin, MSBFIRST, registerFour);
  shiftOut(dataPin, clockPin, MSBFIRST, registerTree);
  shiftOut(dataPin, clockPin, MSBFIRST, registerTwo);
  shiftOut(dataPin, clockPin, MSBFIRST, registerOne);
  }

  if(whichPin >=32 && whichPin <=36)
  {

    bitWrite(word3, whichPin, whichState);

    registerFive = lowByte(word3);
    registerSix = highByte(word3);
 
 
  shiftOut(dataPin, clockPin, MSBFIRST, registerSix);
  shiftOut(dataPin, clockPin, MSBFIRST, registerFive);
  shiftOut(dataPin, clockPin, MSBFIRST, registerFour);
  shiftOut(dataPin, clockPin, MSBFIRST, registerTree);
  shiftOut(dataPin, clockPin, MSBFIRST, registerTwo);
  shiftOut(dataPin, clockPin, MSBFIRST, registerOne);
}