void GREKEYPeriodicExec(undefined4 param_1,int param_2,undefined4 param_3,int param_4)

{
  char cVar1;
  uint uVar2;
  undefined1 uVar3;
  int iVar4;
  char *pcVar5;
  int iVar6;
  uint uVar7;
  
  for (uVar7 = 0;
      (uVar7 < *(byte *)(param_2 + 0x51aa) && (param_4 != uVar7 * 0x1140 + param_2 + 0x54f0));
      uVar7 = uVar7 + 1) {
  }
  if ((uVar7 != *(byte *)(param_2 + 0x51aa)) &&
     (iVar4 = uVar7 * 0x1140 + param_2, *(int *)(iVar4 + 0x51dc) - 3U < 7)) {
    if ((*(int *)(iVar4 + 0x54e4) == 0) &&
       (uVar2 = *(int *)(iVar4 + 0x54ec) + 1, *(int *)(iVar4 + 0x54ec) != -1)) {
      *(uint *)(iVar4 + 0x54ec) = uVar2;
    }
    else {
      if (*(int *)(iVar4 + 0x54e4) != 1) {
        return;
      }
      uVar2 = *(uint *)(uVar7 * 0x1140 + param_2 + 0x54ec) / 1000;
    }
    iVar4 = uVar7 * 0x1140 + param_2;
    if (*(uint *)(iVar4 + 0x54e8) < uVar2) {
      *(undefined1 *)(iVar4 + 0x5519) = 3;
      *(undefined4 *)(iVar4 + 0x54ec) = 0;
      if (2 < RTDebugLevel) {
        printk("Rekey Interval Excess, GKeyDoneStations=%d\n",*(undefined1 *)(iVar4 + 0x51d7));
      }
      iVar4 = param_2 + uVar7 * 0x1140;
      if (*(char *)(iVar4 + 0x51d7) != '\0') {
        uVar3 = 1;
        if (*(char *)(iVar4 + 0x5240) == '\x01') {
          uVar3 = 2;
        }
        *(undefined1 *)(iVar4 + 0x5240) = uVar3;
        GenRandom(param_2,iVar4 + 0x51ac,iVar4 + 0x52b7);
        WpaDeriveGTK(iVar4 + 0x5255,iVar4 + 0x52b7,iVar4 + 0x51ac,iVar4 + 0x5295,0x20);
        pcVar5 = (char *)(param_2 + 0x5d128);
        iVar6 = 0;
        do {
          if (((*(int *)(pcVar5 + -0x1f0) == 1) && (*pcVar5 == '\n')) &&
             ((byte)pcVar5[-0x1bf] == uVar7)) {
            pcVar5[1] = '\0';
            WPAStart2WayGroupHS(param_2,param_2 + iVar6 * 0xa20 + 0x5cf38);
            if (2 < RTDebugLevel) {
              printk("Rekey interval excess, Update Group Key for  %x %x %x  %x %x %x , DefaultKeyId= %x \n"
                     ,pcVar5[0x68],pcVar5[0x69],pcVar5[0x6a],pcVar5[0x6b],pcVar5[0x6c],pcVar5[0x6d],
                     *(undefined1 *)(iVar4 + 0x5240));
            }
          }
          iVar6 = iVar6 + 1;
          pcVar5 = pcVar5 + 0xa20;
        } while (iVar6 != 0x20);
      }
    }
    iVar4 = param_2 + uVar7 * 0x1140;
    cVar1 = *(char *)(iVar4 + 0x5519)   //possible issue identified - semgrep
    if ((cVar1 != '\0') && (*(char *)(iVar4 + 0x5519) = cVar1 + -1, cVar1 == '\x01')) {
      WPAInstallSharedKey(param_2,*(undefined1 *)(iVar4 + 0x51e4),uVar7 & 0xff,
                          *(undefined1 *)(iVar4 + 0x5240),
                          (*(byte *)(param_2 + 0xb0) - 3) + uVar7 & 0xff,1,iVar4 + 0x5295,0x20);
    }
  }
  return;
}