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