if you are to pack the light differently, the light colors are 32bits so storing 2 uint4 is enough and unpacking in the shader. cosatt, distatt pos and dir are all float3 so it is possible to store one of them in unused Ws.

that goes from 8 * 5 * float4 =  640B to 2 * uint4 + 8 * 3 * float 4 = 416B