undefined4 RTMPCheckUcast(int param_1,char *param_2,int param_3)

{
  byte bVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  char *pcVar8;
  uint uVar9;
  short local_28 [6];
  
  if (param_3 == 0) {
    printk("<4>/home/eric/release/dir600b5/progs.priv/rt2860v2/build/rt2860v2_ap/../rt2860v2/ap/ap_wpa.c:%d assert pEntryfailed\n"
           ,0x90);
  }
  if (*(byte *)(param_3 + 0x31) < *(byte *)(param_1 + 0x51aa)) {
    bVar1 = *(byte *)(param_3 + 0x31);
  }
  else {
    printk("<4>/home/eric/release/dir600b5/progs.priv/rt2860v2/build/rt2860v2_ap/../rt2860v2/ap/ap_wpa.c:%d assert pEntry->apidx < pAd->ApCfg.BssidNumfailed\n"
           ,0x91);
    bVar1 = *(byte *)(param_3 + 0x31);
  }
  uVar9 = (uint)bVar1;
  *(undefined4 *)(param_3 + 0x1e8) = *(undefined4 *)(uVar9 * 0x1140 + param_1 + 0x51e0);
  if ((byte)param_2[1] < 0x10) {
    if (RTDebugLevel == 0) {
      return 0;
    }
    pcVar8 = "[ERROR]RTMPCheckUcast : the length is too short(%d) \n";
  }
  else {
    pcVar8 = param_2 + 8;
    if ((*param_2 == '0') || (pcVar8 = param_2 + 0xc, *param_2 == -0x23)) {
      memmove(local_28,pcVar8,2)   //possible issue identified - semgrep
      if ((byte)param_2[1] < 0x10) {
        return 0;
      }
      pcVar8 = pcVar8 + 2;
      if (*param_2 == -0x23) {
        iVar6 = param_1 + uVar9 * 0x1140;
        iVar5 = uVar9 * 0x1140 + 0x52e0;
        if (*(int *)(iVar6 + 0x51e0) != 8) {
          while( true ) {
            if (local_28[0] == 0) {
              return 0;
            }
            iVar6 = memcmp(pcVar8,(void *)(param_1 + iVar5 + 0x12),4);
            if (iVar6 == 0) break;
            local_28[0] = local_28[0] + -1;
            pcVar8 = pcVar8 + 4;
          }
          return 1;
        }
        param_1 = param_1 + iVar5;
        while( true ) {
          if (local_28[0] == 0) {
            return 0;
          }
          iVar5 = memcmp(pcVar8,(void *)(param_1 + 0x12),4);
          uVar2 = 6;
          if (iVar5 == 0) break;
          if ((*(uint *)(iVar6 + 0x51e8) & 8) != 0) {
            iVar5 = memcmp(pcVar8,(void *)(param_1 + 0x16),4);
            uVar2 = 4;
            if (iVar5 == 0) break;
          }
          pcVar8 = pcVar8 + 4;
          local_28[0] = local_28[0] + -1;
        }
      }
      else {
        if (*param_2 != '0') {
          return 0;
        }
        iVar6 = param_1 + uVar9 * 0x1140;
        uVar7 = (uint)(*(int *)(iVar6 + 0x51dc) - 8U < 2);
        iVar5 = uVar9 * 0x1140 + 0x52e0;
        if (*(int *)(iVar6 + 0x51e0) != 8) {
          while( true ) {
            if (local_28[0] == 0) {
              return 0;
            }
            iVar6 = memcmp(pcVar8,(void *)(uVar7 * 0xff + param_1 + iVar5 + 0xe),4);
            if (iVar6 == 0) break;
            local_28[0] = local_28[0] + -1;
            pcVar8 = pcVar8 + 4;
          }
          return 1;
        }
        iVar3 = uVar7 * 0xff;
        iVar5 = param_1 + iVar5 + 6;
        while( true ) {
          if (local_28[0] == 0) {
            return 0;
          }
          iVar4 = memcmp(pcVar8,(void *)(iVar5 + iVar3 + 8),4);
          if (iVar4 == 0) break;
          if (((*(uint *)(iVar6 + 0x51e8) & 2) != 0) &&
             (iVar4 = memcmp(pcVar8,(void *)(iVar5 + iVar3 + 0xc),4), iVar4 == 0)) {
            uVar2 = 4;
            goto LAB_00077738;
          }
          pcVar8 = pcVar8 + 4;
          local_28[0] = local_28[0] + -1;
        }
        uVar2 = 6;
      }
LAB_00077738:
      *(undefined4 *)(param_3 + 0x1e8) = uVar2;
      return 1;
    }
    if (RTDebugLevel == 0) {
      return 0;
    }
    pcVar8 = "[ERROR]RTMPCheckUcast : invalid IE=%d\n";
  }
  printk(pcVar8);
  return 0;
}