undefined4 APMsgTypeSubst(undefined4 param_1,byte *param_2,undefined4 *param_3,uint *param_4)
{
byte bVar1;
undefined4 uVar2;
uint uVar3;
short local_18 [4];
bVar1 = *param_2;
if ((bVar1 & 0xc) == 8) {
*param_3 = 0x17;
uVar2 = WpaMsgTypeSubst(param_2[0x21],param_4);
return uVar2;
}
if ((bVar1 & 0xc) != 0) {
switchD_0007240c_default:
return 0;
}
uVar2 = 0;
switch(bVar1 >> 4) {
case 0:
uVar2 = 0xb;
break;
case 1:
case 3:
case 6:
case 7:
case 9:
goto switchD_0007240c_default;
case 2:
*param_3 = 0xb;
uVar3 = 3;
goto LAB_00072428;
case 4:
*param_3 = 0xe;
*param_4 = 0;
goto LAB_0007242c;
case 5:
uVar2 = 0xe;
break;
case 8:
uVar2 = 0xe;
goto LAB_00072460;
case 10:
uVar2 = 0xb;
LAB_00072460:
*param_3 = uVar2;
*param_4 = 1;
return 1;
case 0xb:
memmove(local_18,param_2 + 0x1a,2) //possible issue identified - semgrep
*param_3 = 0xc;
uVar3 = 3;
if (local_18[0] != 1) {
if (local_18[0] != 3) {
if (RTDebugLevel < 3) {
return 0;
}
printk("wrong AUTH seq=%d Octet=%02x %02x %02x %02x %02x %02x %02x %02x\n",local_18[0],
param_2[0x18],param_2[0x19],param_2[0x1a],param_2[0x1b],param_2[0x1c],param_2[0x1d],
param_2[0x1e],param_2[0x1f]);
return 0;
}
uVar3 = 4;
}
goto LAB_00072428;
case 0xc:
uVar2 = 0xc;
break;
case 0xd:
case 0xe:
*param_3 = 9;
if (0x11 < (param_2[0x18] & 0x7f)) {
uVar3 = 0x17;
goto LAB_00072428;
}
*param_4 = param_2[0x18] & 0x7f;
goto LAB_0007242c;
default:
goto switchD_0007240c_default;
}
*param_3 = uVar2;
uVar3 = 2;
LAB_00072428:
*param_4 = uVar3;
LAB_0007242c:
uVar2 = 1;
switchD_0007240c_default:
return uVar2;
}