undefined4 mrt_leave_group(in_addr param_1,undefined4 param_2,in_addr param_3,undefined4 param_4)

{
  char *pcVar1;
  uint uVar2;
  undefined4 uVar3;
  int *piVar4;
  int *piVar5;
  int **ppiVar6;
  int **ppiVar7;
  int **__ptr;
  uint uVar8;
  uint uVar9;
  char acStack_68 [32];
  char acStack_48 [36];
  
  pcVar1 = inet_ntoa(param_1);
  strcpy(acStack_48,pcVar1)   //possible issue identified - semgrep
  pcVar1 = inet_ntoa(param_3);
  strcpy(acStack_68,pcVar1)   //possible issue identified - semgrep
  uVar2 = vifs_find_by_ip(param_1.s_addr,1,1);
  uVar3 = 0xffffffff;
  if (-1 < (int)uVar2) {
    uVar9 = param_3.s_addr << 0x18 | param_3.s_addr >> 0x18 | (param_3.s_addr & 0xff0000) >> 8 |
            (param_3.s_addr & 0xff00) << 8;
    uVar8 = param_1.s_addr << 0x18 | param_1.s_addr >> 0x18 | (param_1.s_addr & 0xff0000) >> 8 |
            (param_1.s_addr & 0xff00) << 8;
    RT_remove_member(uVar9,uVar8);
    verbose("%s: %s --> %s\n","mrt_leave_group",acStack_48,acStack_68);
    ppiVar7 = (int **)0x0;
    do {
      __ptr = (int **)DAT_0041b9c0;
      if (ppiVar7 != (int **)0x0) {
        __ptr = (int **)*ppiVar7;
      }
      if ((__ptr == &DAT_0041b9c0) || (__ptr == (int **)0x0)) goto LAB_00405a94;
      ppiVar7 = __ptr;
    } while (__ptr[2] != (int *)param_3.s_addr);
    FUN_004056e8(__ptr,param_4);
    ppiVar7 = (int **)0x0;
    do {
      if (ppiVar7 == (int **)0x0) {
        ppiVar7 = (int **)__ptr[5];
      }
      else {
        ppiVar7 = (int **)*ppiVar7;
      }
      if ((ppiVar7 == __ptr + 5) || (ppiVar7 == (int **)0x0)) goto LAB_00405a34;
    } while ((uint)*(ushort *)(ppiVar7 + 5) != (uVar2 & 0xffff));
    ppiVar6 = (int **)0x0;
    do {
      if (ppiVar6 == (int **)0x0) {
        ppiVar6 = (int **)ppiVar7[2];
      }
      else {
        ppiVar6 = (int **)*ppiVar6;
      }
      if ((ppiVar6 == ppiVar7 + 2) || (ppiVar6 == (int **)0x0)) goto LAB_004059dc;
    } while ((int *)param_1.s_addr != ppiVar6[3]);
    piVar5 = ppiVar6[1];
    piVar4 = *ppiVar6;
    *piVar5 = (int)piVar4;
    piVar4[1] = (int)piVar5;
    *ppiVar6 = (int *)0x0;
    ppiVar6[1] = (int *)0x0;
    FUN_00404730(ppiVar6);
LAB_004059dc:
    if ((o_fastleave != 0) && ((int **)ppiVar7[2] == ppiVar7 + 2)) {
      piVar5 = ppiVar7[1];
      piVar4 = *ppiVar7;
      *piVar5 = (int)piVar4;
      piVar4[1] = (int)piVar5;
      *ppiVar7 = (int *)0x0;
      ppiVar7[1] = (int *)0x0;
      FUN_00404900(ppiVar7);
      FUN_004050a4(__ptr);
    }
LAB_00405a34:
    if ((o_fastleave != 0) && ((int **)__ptr[5] == __ptr + 5)) {
      FUN_00404a40(__ptr);
      piVar4 = __ptr[1];
      piVar5 = *__ptr;
      *piVar4 = (int)piVar5;
      piVar5[1] = (int)piVar4;
      *__ptr = (int *)0x0;
      __ptr[1] = (int *)0x0;
      free(__ptr);
    }
LAB_00405a94:
    RT_remove_member(uVar9,uVar8);
    uVar3 = 0;
  }
  return uVar3;
}