void * MacTableInsertEntry(int param_1,byte *param_2,byte param_3,uint param_4,byte param_5)

{
  byte bVar1;
  char cVar2;
  int iVar3;
  int *piVar4;
  uint uVar5;
  void *__src;
  int iVar6;
  uint uVar7;
  void *__dest;
  uint uVar8;
  void *__s;
  int iVar9;
  undefined1 auStack_40 [8];
  int local_38;
  uint local_34;
  uint local_30;
  
  local_30 = (uint)param_5;
  local_34 = param_4 & 0xff;
  uVar7 = (uint)param_3;
  if (0x1f < *(ushort *)(param_1 + 0x71338)) {
    return (void *)0x0;
  }
  uVar8 = 1;
  local_bh_disable();
  piVar4 = (int *)(param_1 + 0x5d958);
  iVar3 = *piVar4;
  while (piVar4 = piVar4 + 0x288, iVar3 != 0) {
    uVar8 = uVar8 + 1;
    if (uVar8 == 0x20) {
      __s = (void *)0x0;
      goto LAB_00024bd0;
    }
    iVar3 = *piVar4;
  }
  iVar3 = uVar8 * 0xa20;
  local_38 = param_1 + iVar3 + 0x5d0f4;
  iVar9 = param_1 + iVar3 + 0x5cf40;
  __s = (void *)(param_1 + iVar3 + 0x5cf38);
  RTMPCancelTimer(local_38,auStack_40);
  RTMPCancelTimer(iVar9,auStack_40);
  memset(__s,0,0xa20)   //possible issue identified - semgrep
  if (local_30 == 1) {
    iVar3 = param_1 + iVar3;
    *(undefined1 *)(iVar3 + 0x5d285) = 3;
    *(undefined1 *)(iVar3 + 0x5d284) = 3;
    memset(__s,0,0xa20)   //possible issue identified - semgrep
    *(undefined1 *)(iVar3 + 0x5d170) = 0;
    *(undefined1 *)(iVar3 + 0x5d171) = 0;
    bVar1 = *(byte *)(param_1 + 0x51aa);
  }
  else {
    bVar1 = *(byte *)(param_1 + 0x51aa);
  }
  if ((((uVar7 < bVar1) && (uVar7 == 0)) && (*(byte *)(param_1 + 0x51d6) != 0)) &&
     (*(byte *)(param_1 + 0x51d6) <= *(byte *)(param_1 + 0x51d7))) {
    if (1 < RTDebugLevel) {
      printk("%s: The connection table is full in ra%d.\n","MacTableInsertEntry",0);
    }
    local_bh_enable();
    return (void *)0x0;
  }
  iVar3 = uVar8 * 0xa20 + param_1;
  *(undefined4 *)(iVar3 + 0x5cf38) = 1;
  *(undefined1 *)(iVar3 + 0x5cf3d) = 0;
  RTMPInitTimer(param_1,iVar9,rtmp_timer_EnqueueStartForPSKExec,__s,0);
  if (*(int *)(iVar3 + 0x5cf38) == 1) {
    RTMPInitTimer(param_1,local_38,rtmp_timer_WPARetryExec,__s,0);
  }
  iVar3 = param_1 + uVar8 * 0xa20;
  *(int *)(iVar3 + 0x5d174) = param_1;
  *(undefined1 *)(iVar3 + 0x5cf68) = 0;
  *(undefined1 *)(iVar3 + 0x5cf3e) = 0;
  *(undefined1 *)(iVar3 + 0x5cf6a) = 0;
  memset((void *)(param_1 + uVar8 * 0xa20 + 0x5d0aa),0,8)   //possible issue identified - semgrep
  iVar9 = *(int *)(iVar3 + 0x5cf38);
  *(undefined1 *)(iVar3 + 0x5d0f2) = 0;
  if (iVar9 == 4) {
    cVar2 = param_3 - 0x30   //possible issue identified - semgrep
  }
  else if (iVar9 == 3) {
    cVar2 = param_3 - 0x20   //possible issue identified - semgrep
  }
  else {
    if (iVar9 != 2) {
      *(byte *)(iVar3 + 0x5cf69) = param_3;
      goto LAB_00024828;
    }
    cVar2 = param_3 - 0x10   //possible issue identified - semgrep
  }
  *(char *)(iVar3 + 0x5cf69) = cVar2;
LAB_00024828:
  if ((uVar7 < *(byte *)(param_1 + 0x51aa)) && (uVar7 == 0)) {
    iVar3 = uVar8 * 0xa20 + param_1;
    *(uint *)(iVar3 + 0x5d8b4) = (uint)*(byte *)(iVar3 + 0x5cf69) * 0x1140 + param_1 + 0x51ac;
  }
  else {
    *(undefined4 *)(uVar8 * 0xa20 + param_1 + 0x5d8b4) = 0;
    if (uVar7 != 0) {
      if (RTDebugLevel == 0) {
        uVar7 = 0;
      }
      else {
        printk("%s> Error! apidx = %d > MAX_MBSSID_NUM!\n","MacTableInsertEntry",uVar7);
        uVar7 = 0;
      }
    }
  }
  iVar9 = uVar7 * 0x1140 + param_1;
  uVar5 = *(uint *)(iVar9 + 0x51dc);
  iVar3 = uVar8 * 0xa20 + param_1;
  *(uint *)(iVar3 + 0x5d11c) = uVar5;
  *(undefined4 *)(iVar3 + 0x5d120) = *(undefined4 *)(iVar9 + 0x51e0);
  *(undefined4 *)(iVar3 + 0x5d124) = *(undefined4 *)(iVar9 + 0x51e4);
  if (uVar5 < 3) {
    *(undefined1 *)(iVar3 + 0x5d128) = 0;
  }
  else {
    *(undefined1 *)(iVar3 + 0x5d128) = 3;
  }
  iVar6 = uVar8 * 0xa20;
  iVar3 = param_1 + iVar6;
  *(undefined4 *)(iVar3 + 0x5d12c) = 0;
  iVar9 = param_1 + uVar7 * 0x1140;
  *(undefined4 *)(iVar3 + 0x5d1d8) = *(undefined4 *)(param_1 + 0x168c0);
  *(char *)(iVar9 + 0x51d7) = *(char *)(iVar9 + 0x51d7) + '\x01';
  __dest = (void *)(param_1 + iVar6 + 0x5d190);
  *(char *)(param_1 + 0x168c8) = *(char *)(param_1 + 0x168c8) + '\x01';
  *(undefined4 *)(iVar3 + 0x5d178) = 0xff;
  *(undefined2 *)(iVar3 + 0x5d12a) = 2;
  *(undefined1 *)(iVar3 + 0x5d129) = 0;
  *(undefined1 *)(iVar3 + 0x5d171) = 0;
  *(undefined1 *)(iVar3 + 0x5d170) = 0;
  memcpy(__dest,param_2,6)   //possible issue identified - semgrep
  memcpy((void *)((int)__dest + 6),param_2,6)   //possible issue identified - semgrep
  if (local_34 == 1) {
    __src = (void *)(param_1 + uVar7 * 0x1140 + 0x51ac);
    memcpy((void *)(param_1 + iVar6 + 0x5d19c),__src,6)   //possible issue identified - semgrep
    memcpy((void *)(param_1 + iVar6 + 0x5d1a2),__src,6)   //possible issue identified - semgrep
  }
  iVar3 = uVar8 * 0xa20 + param_1;
  *(undefined4 *)(iVar3 + 0x5d8ac) = 5;
  *(undefined4 *)(iVar3 + 0x5d1ac) = 0;
  *(undefined4 *)(iVar3 + 0x5d1b0) = 0;
  *(short *)(iVar3 + 0x5d1b6) = (short)uVar8;
  *(undefined2 *)(iVar3 + 0x5d1b8) = 0;
  *(undefined1 *)(iVar3 + 0x5d1a8) = 0;
  *(undefined4 *)(iVar3 + 0x5d1c4) = 0;
  *(undefined4 *)(iVar3 + 0x5d1bc) = 0;
  *(undefined4 *)(iVar3 + 0x5d314) = 0;
  *(undefined4 *)(iVar3 + 0x5d320) = 0;
  *(undefined4 *)(iVar3 + 0x5d1cc) = 0;
  *(undefined4 *)(iVar3 + 0x5d1c8) = 0;
  *(undefined4 *)(iVar3 + 0x5d1d0) = 0;
  if (*(int *)(iVar3 + 0x5cf38) == 1) {
    *(undefined1 *)(iVar3 + 0x5d1e4) = 0;
    *(undefined4 *)(iVar3 + 0x5d1ec) = 0;
    *(undefined4 *)(iVar3 + 0x5d1e8) = 0;
    *(undefined4 *)(iVar3 + 0x5d1f0) = 0;
    *(undefined4 *)(iVar3 + 0x5d1f8) = 0;
    *(undefined4 *)(iVar3 + 0x5d1f4) = 0;
    *(undefined4 *)(iVar3 + 0x5d1fc) = 0;
    *(undefined4 *)(iVar3 + 0x5d204) = 0;
    *(undefined4 *)(iVar3 + 0x5d200) = 0;
    *(undefined4 *)(iVar3 + 0x5d208) = 0;
    *(undefined4 *)(iVar3 + 0x5d210) = 0;
    *(undefined4 *)(iVar3 + 0x5d20c) = 0;
    *(undefined4 *)(iVar3 + 0x5d214) = 0;
    *(undefined2 *)(iVar3 + 0x5d220) = 0;
    *(undefined4 *)(iVar3 + 0x5d21c) = 0;
    *(undefined1 *)(iVar3 + 0x5d223) = 0;
    *(undefined1 *)(iVar3 + 0x5d222) = 0;
    if (2 < RTDebugLevel) {
      printk("uapsd> MaxSPLength = 0!\n");
    }
  }
  *(short *)(param_1 + 0x71338) = *(short *)(param_1 + 0x71338) + 1;
  AsicRemovePairwiseKeyEntry(param_1,uVar8 & 0xff);
  AsicUpdateRxWCIDTable(param_1,*(undefined2 *)(uVar8 * 0xa20 + param_1 + 0x5d1b6),__dest);
  if (2 < RTDebugLevel) {
    printk("MacTableInsertEntry - allocate entry #%d, Total= %d\n",uVar8,
           *(undefined2 *)(param_1 + 0x71338));
  }
  if (__s != (void *)0x0) {
    piVar4 = (int *)(param_1 +
                    ((byte)(param_2[1] ^ param_2[2] ^ *param_2 ^ param_2[3] ^ param_2[4] ^
                           param_2[5]) + 0x172ce) * 4);
    iVar3 = *piVar4;
    if (iVar3 == 0) {
      *piVar4 = (int)__s;
    }
    else {
      do {
        iVar9 = iVar3;
        iVar3 = *(int *)(iVar9 + 0x478);
      } while (iVar3 != 0);
      *(void **)(iVar9 + 0x478) = __s;
    }
  }
LAB_00024bd0:
  local_bh_enable();
  return __s;
}