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