void WPARetryExec(undefined4 param_1,int *param_2)
{
byte bVar1;
char cVar2;
uint uVar3;
undefined4 uVar4;
int iVar5;
if ((param_2 != (int *)0x0) && (*param_2 == 1)) {
iVar5 = param_2[0x8f];
cVar2 = *(char *)((int)param_2 + 0x1ba) + '\x01' //possible issue identified - semgrep
*(char *)((int)param_2 + 0x1ba) = cVar2;
if (RTDebugLevel < 3) {
uVar3 = param_2[0x79];
}
else {
printk("WPARetryExec---> ReTryCounter=%d, WpaState=%d \n",cVar2,(char)param_2[0x7c]);
uVar3 = param_2[0x79];
}
if ((uVar3 < 8) && ((1 << (uVar3 & 0x1f) & 0xd8U) != 0)) {
bVar1 = *(byte *)((int)param_2 + 0x1ba);
if (bVar1 < 0x16) {
if (bVar1 == 0x15) {
if (RTDebugLevel < 3) {
cVar2 = *(char *)((int)param_2 + 0x1f1) //possible issue identified - semgrep
}
else {
printk("WPARetryExec::ReTry 2-way group-key Handshake \n");
cVar2 = *(char *)((int)param_2 + 0x1f1) //possible issue identified - semgrep
}
if (cVar2 != '\0') {
return;
}
WPAStart2WayGroupHS(iVar5,param_2);
RTMPSetTimer(param_2 + 0x6f,3000);
return;
}
if (bVar1 < 4) {
if (bVar1 == 3) {
if (2 < RTDebugLevel) {
printk("WPARetryExec::Retry MSG1, the last try\n");
}
uVar4 = 3000;
}
else {
if (2 < (byte)((char)param_2[0x7c] - 6U)) {
return;
}
if (2 < RTDebugLevel) {
printk("WPARetryExec::ReTry MSG1 of 4-way Handshake\n");
}
uVar4 = 1000;
}
WPAStart4WayHS(iVar5,param_2,uVar4);
return;
}
RtmpOsSendWirelessEvent
(iVar5,0x20b,param_2 + 0x96,*(undefined1 *)((int)param_2 + 0x31),0,
RtmpDrvSendWirelessEvent);
if (2 < RTDebugLevel) {
printk("WPARetryExec::MSG1 timeout, pEntry->ReTryCounter = %d\n",
*(undefined1 *)((int)param_2 + 0x1ba));
}
uVar4 = 0xf;
}
else {
RtmpOsSendWirelessEvent
(iVar5,0x20a,param_2 + 0x96,*(undefined1 *)((int)param_2 + 0x31),0,
RtmpDrvSendWirelessEvent);
if (2 < RTDebugLevel) {
printk("WPARetryExec::Group Key HS exceed retry count, Disassociate client, pEntry->ReTryCounter %d\n"
,*(undefined1 *)((int)param_2 + 0x1ba));
}
uVar4 = 0x10;
}
MlmeDeAuthAction(iVar5,param_2,uVar4,0);
return;
}
}
return;
}