How do I use variables in functions/procedures

I think your code needs an array that represents the mapping between led numbers and shift register pin numbers.

There are 40 LEDs and 5 registers with 8 pins each.

Remember that in C, and almost all other programming languages, when you assign numbers to things like shift registers, pins or leds, you start numbering at zero not at 1.

Let's number the shift register pins like this:

  • Shift register 0 has pin numbers 0 to 7
  • Shift register 1 has pin numbers 8 to 15
  • Shift register 2 has pin numbers 16 to 23
  • Shift register 3 has pin numbers 24 to 31
  • Shift register 4 has pin numbers 32 to 39

So now make an array that represents that mapping.

Let's imagine led 0 is connected to shift register pin 18 and led 1 is connected to shift register pin 19.

const byte ledPin[40] = {18, 19, ...};

You just need to add the other 38 numbers into that array.