basically we have this function
function FlaggedMethods(
bytes memory data
) public returns (address) {
bytes4 funcSig;
assembly {
// Shift right by 224 bits to retain only the first 4 bytes
funcSig := mload(add(data, 0x20)) //this saves the first 4 bytes and emits them in events
let shiftedFuncSig := shr(224, funcSig) // Shift right by 4 bytes to get the function signature
//this is done so that the funcSig is checked against each switch cases
switch shiftedFuncSig
case 0x095ea7b3 {}
and even though the bytes4 funcSig gives us the correct result every time, even on event emission, it doesn't step into the switch cases at all, only after we shift it by 224 bytes that the switch cases start working, but this time emitting an event with shiftedFuncSig returns us a 0x000000000, so we reused the original bytes4 funcSig for event emission.
so I am just curious as to why the shiftedFuncSig works for switch cases, not event emissions, and vice versa for the funcSig which emits the correct funcSig but does not work when checking against each individual switch statement