/* WARNING: Heritage AFTER dead removal. Example location: r0x0041f0b8 : 0x00407860 */
/* WARNING: Restarted to delay deadcode elimination for space: ram */

undefined4 smS_process_event(uint *param_1)

{
  bool bVar1;
  char cVar2;
  short sVar3;
  int iVar4;
  undefined4 uVar5;
  int *piVar6;
  uint uVar7;
  
  piVar6 = (int *)param_1[1];
  if (piVar6 == (int *)0x0) {
    return 0;
  }
  iVar4 = piVar6[1];
  if (iVar4 == 1) {
    uVar7 = *param_1;
    if (uVar7 != 3) {
      if (uVar7 < 4) {
        if (uVar7 != 1) {
          return 0;
        }
        iVar4 = FUN_00407540();
        uVar5 = DAT_0042af5c;
        sVar3 = g_sequencenum;
        if (iVar4 != 0) {
          bVar1 = g_sequencenum != 0;
          param_1[3] = 1;
          uVar5 = DAT_0042af5c;
          if (((bVar1) && ((short)((int *)param_1[1])[3] != sVar3)) &&
             (g_topo_session == (int *)param_1[1])) {
            g_this_event = 3;
            DAT_0042af5c = 1;
            smT_process_event(&g_this_event);
            g_topo_session = (int *)param_1[1];
            DAT_0042af5c = uVar5;
            *(short *)(g_topo_session + 3) = g_sequencenum;
            g_this_event = 1;
          }
          cVar2 = *(char *)(param_1[1] + 0x20)   //possible issue identified - semgrep
          *(undefined4 *)(param_1[1] + 4) = 3;
          goto LAB_004078b8;
        }
        if (((g_sequencenum != 0) && ((short)((int *)param_1[1])[3] != g_sequencenum)) &&
           (g_topo_session == (int *)param_1[1])) {
          g_this_event = 3;
          DAT_0042af5c = 1;
          smT_process_event(&g_this_event);
          g_topo_session = (int *)param_1[1];
          DAT_0042af5c = uVar5;
          *(short *)(g_topo_session + 3) = g_sequencenum;
          g_this_event = 1;
        }
        uVar5 = 15000;
        goto LAB_00407cd8;
      }
      if (uVar7 == 7) {
        iVar4 = piVar6[2];
        piVar6[2] = iVar4 + -1;
        if (iVar4 + -1 != 0) {
          return 0;
        }
        piVar6[1] = 3;
        return 0;
      }
      if (uVar7 != 8) {
        return 0;
      }
    }
    if ((piVar6 == g_topo_session) && (*piVar6 == 1)) {
      piVar6 = &g_sessions;
      do {
        if ((*piVar6 != 0) && (piVar6[1] == 2)) {
          piVar6[1] = 0;
          if (piVar6[9] != 0) {
            event_cancel();
            piVar6[9] = 0;
          }
          *piVar6 = 0;
        }
        bVar1 = piVar6 != (int *)&DAT_0042ce30;
        piVar6 = piVar6 + 10;
      } while (bVar1);
    }
LAB_00407b30:
    uVar7 = param_1[1];
    *(undefined4 *)(uVar7 + 4) = 0;
    if (*(int *)(uVar7 + 0x24) != 0) {
      event_cancel();
      *(undefined4 *)(param_1[1] + 0x24) = 0;
    }
    *(undefined4 *)param_1[1] = 0;
    packetio_invalidate_retxbuf();
  }
  else {
    if (iVar4 == 0) {
      if (*param_1 != 1) {
        return 0;
      }
      if (((char)piVar6[8] == '\0') && ((g_topo_session == (int *)0x0 || (*g_topo_session == 0)))) {
        g_topo_session = piVar6;
      }
      if (((((g_topo_session != (int *)0x0) && (*g_topo_session == 1)) && (piVar6 != g_topo_session)
           ) && ((char)piVar6[8] == '\0')) &&
         (((piVar6[3] & 0xffff0000U) != (g_topo_session[3] & 0xffff0000U) ||
          (piVar6[4] != g_topo_session[4])))) {
        piVar6[1] = 2;
        return 0;
      }
      iVar4 = FUN_00407540();
      if (iVar4 == 0) {
        *(undefined4 *)(param_1[1] + 4) = 1;
        param_1[3] = 0;
LAB_00407ca0:
        uVar5 = 15000;
      }
      else {
        param_1[3] = 1;
        cVar2 = *(char *)(param_1[1] + 0x20)   //possible issue identified - semgrep
        *(undefined4 *)(param_1[1] + 4) = 3;
LAB_004078b8:
        uVar5 = 60000;
        if (cVar2 != '\0') {
          uVar5 = 30000;
        }
      }
    }
    else {
      if (iVar4 == 2) {
        if (8 < *param_1) {
          return 0;
        }
        if ((1 << (*param_1 & 0x1f) & 0x188U) != 0) {
          piVar6[1] = 0;
          if (piVar6[9] != 0) {
            event_cancel();
            *(undefined4 *)(param_1[1] + 0x24) = 0;
          }
          *(undefined4 *)param_1[1] = 0;
          return 0;
        }
        return 0;
      }
      if (iVar4 != 3) {
        return 2;
      }
      switch(*param_1) {
      case 0:
      case 2:
        cVar2 = (char)piVar6[8]   //possible issue identified - semgrep
        break;
      case 1:
        iVar4 = FUN_00407540();
        uVar5 = DAT_0042af5c;
        sVar3 = g_sequencenum;
        if (iVar4 == 0) {
          if (((g_sequencenum != 0) && ((short)((int *)param_1[1])[3] != g_sequencenum)) &&
             (g_topo_session == (int *)param_1[1])) {
            g_this_event = 3;
            DAT_0042af5c = 1;
            smT_process_event(&g_this_event);
            sVar3 = g_sequencenum;
            g_topo_session = (int *)param_1[1];
            DAT_0042af5c = uVar5;
            g_topo_session[1] = 1;
            *(short *)(g_topo_session + 3) = sVar3;
            g_this_event = 1;
            goto LAB_00407ca0;
          }
        }
        else {
          bVar1 = g_sequencenum != 0;
          param_1[3] = 1;
          uVar5 = DAT_0042af5c;
          if (((bVar1) && ((short)((int *)param_1[1])[3] != sVar3)) &&
             (g_topo_session == (int *)param_1[1])) {
            g_this_event = 3;
            DAT_0042af5c = 1;
            smT_process_event(&g_this_event);
            g_topo_session = (int *)param_1[1];
            DAT_0042af5c = uVar5;
            *(short *)(g_topo_session + 3) = g_sequencenum;
            g_this_event = 1;
          }
        }
        cVar2 = *(char *)(param_1[1] + 0x20)   //possible issue identified - semgrep
        break;
      case 3:
      case 8:
        if ((piVar6 == g_topo_session) && (*piVar6 == 1)) {
          piVar6 = &g_sessions;
          do {
            if ((*piVar6 != 0) && (piVar6[1] == 2)) {
              piVar6[1] = 0;
              if (piVar6[9] != 0) {
                event_cancel();
                piVar6[9] = 0;
              }
              *piVar6 = 0;
            }
            bVar1 = piVar6 != (int *)&DAT_0042ce30;
            piVar6 = piVar6 + 10;
          } while (bVar1);
          osl_set_promisc(g_osl,0);
        }
        goto LAB_00407b30;
      default:
        goto switchD_00407a88_caseD_4;
      }
      uVar5 = 60000;
      if (cVar2 != '\0') {
        uVar5 = 30000;
      }
    }
LAB_00407cd8:
    restart_inactivity_timer(uVar5);
  }
switchD_00407a88_caseD_4:
  return 0;
}