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;
}