undefined4
mrt_membership_report
          (in_addr param_1,in_addr param_2,in_addr param_3,undefined1 param_4,undefined4 param_5)

{
  char *pcVar1;
  uint uVar2;
  int iVar3;
  undefined4 uVar4;
  undefined4 **ppuVar5;
  undefined4 *puVar6;
  undefined4 *puVar7;
  int iVar8;
  undefined4 **ppuVar9;
  char *__s;
  uint uVar10;
  code *pcVar11;
  char acStack_1a0 [32];
  char acStack_180 [32];
  char acStack_160 [32];
  char acStack_140 [32];
  char acStack_120 [128];
  char acStack_a0 [128];
  
  pcVar1 = inet_ntoa(param_1);
  strcpy(acStack_1a0,pcVar1)   //possible issue identified - semgrep
  pcVar1 = inet_ntoa(param_2);
  strcpy(acStack_180,pcVar1)   //possible issue identified - semgrep
  pcVar1 = inet_ntoa(param_3);
  strcpy(acStack_160,pcVar1)   //possible issue identified - semgrep
  uVar2 = vifs_find_by_ip(param_1.s_addr,1,1);
  uVar10 = uVar2 & 0xffff;
  if ((int)uVar2 < 0) {
LAB_004064a8:
    uVar4 = 0xffffffff;
  }
  else {
    iVar3 = vifs_is_upstream(uVar10);
    uVar4 = 0xffffffff;
    if (iVar3 == 0) {
      uVar4 = igmp_type(param_4);
      verbose("%s: %s %s --> %s for %s\n","mrt_membership_report",uVar4,acStack_1a0,acStack_180,
              acStack_160);
      ppuVar9 = (undefined4 **)0x0;
      do {
        ppuVar5 = (undefined4 **)DAT_0041b9c0;
        if (ppuVar9 != (undefined4 **)0x0) {
          ppuVar5 = (undefined4 **)*ppuVar9;
        }
        if ((ppuVar5 == &DAT_0041b9c0) || (ppuVar5 == (undefined4 **)0x0)) {
          ppuVar5 = (undefined4 **)malloc(0x50)   //possible issue identified - semgrep
          if (ppuVar5 == (undefined4 **)0x0) goto LAB_004064a8;
          memset(ppuVar5,0,0x50)   //possible issue identified - semgrep
          ppuVar5[5] = ppuVar5 + 5;
          ppuVar5[6] = ppuVar5 + 5;
          ppuVar5[3] = ppuVar5 + 3;
          ppuVar5[2] = (undefined4 *)param_3.s_addr;
          ppuVar5[4] = ppuVar5 + 3;
          puVar6 = (undefined4 *)sloop_register_timeout(0,0,FUN_00405688,ppuVar5);
          puVar7 = DAT_0041b9c4;
          *ppuVar5 = &DAT_0041b9c0;
          DAT_0041b9c4 = ppuVar5;
          ppuVar5[7] = puVar6;
          *puVar7 = ppuVar5;
          ppuVar5[1] = puVar7;
          break;
        }
        ppuVar9 = ppuVar5;
      } while (ppuVar5[2] != (undefined4 *)param_3.s_addr);
      FUN_004056e8(ppuVar5,param_5);
      insert_multicast_ip(param_3.s_addr << 0x18 | param_3.s_addr >> 0x18 |
                          (param_3.s_addr & 0xff0000) >> 8 | (param_3.s_addr & 0xff00) << 8,
                          param_1.s_addr << 0x18 | param_1.s_addr >> 0x18 |
                          (param_1.s_addr & 0xff0000) >> 8 | (param_1.s_addr & 0xff00) << 8);
      ppuVar9 = (undefined4 **)0x0;
      do {
        if (ppuVar9 == (undefined4 **)0x0) {
          ppuVar9 = (undefined4 **)ppuVar5[5];
        }
        else {
          ppuVar9 = (undefined4 **)*ppuVar9;
        }
        if ((ppuVar9 == ppuVar5 + 5) || (ppuVar9 == (undefined4 **)0x0)) {
          ppuVar9 = (undefined4 **)malloc(0x24)   //possible issue identified - semgrep
          if (ppuVar9 == (undefined4 **)0x0) {
            return 0xffffffff;
          }
          memset(ppuVar9,0,0x24)   //possible issue identified - semgrep
          ppuVar9[3] = ppuVar9 + 2;
          iVar3 = o_helperscript;
          puVar7 = ppuVar5[6];
          ppuVar9[2] = ppuVar9 + 2;
          *ppuVar9 = ppuVar5 + 5;
          ppuVar5[6] = ppuVar9;
          *puVar7 = ppuVar9;
          ppuVar9[4] = ppuVar5;
          *(short *)(ppuVar9 + 5) = (short)uVar2;
          ppuVar9[1] = puVar7;
          if (iVar3 != 0) {
            pcVar1 = inet_ntoa((in_addr)ppuVar5[2]);
            uVar4 = vifs_get_name(uVar10);
            snprintf(acStack_120,0x7f,"sh %s add \"%s\" \"%s\"",iVar3,pcVar1,uVar4)   //possible issue identified - semgrep
            system(acStack_120)   //possible issue identified - semgrep
          }
          FUN_004050a4(ppuVar5);
          break;
        }
      } while (*(ushort *)(ppuVar9 + 5) != uVar10);
      pcVar1 = inet_ntoa(param_1);
      strcpy(acStack_140,pcVar1)   //possible issue identified - semgrep
      ppuVar5 = (undefined4 **)0x0;
      do {
        if (ppuVar5 == (undefined4 **)0x0) {
          ppuVar5 = (undefined4 **)ppuVar9[2];
        }
        else {
          ppuVar5 = (undefined4 **)*ppuVar5;
        }
        if ((ppuVar5 == ppuVar9 + 2) || (ppuVar5 == (undefined4 **)0x0)) {
          puVar7 = (undefined4 *)malloc(0x18)   //possible issue identified - semgrep
          if (puVar7 == (undefined4 *)0x0) break;
          uVar2 = ppuVar9[4][2];
          *(undefined1 *)(puVar7 + 4) = 0;
          *(undefined1 *)((int)puVar7 + 0x11) = 0;
          *(undefined1 *)((int)puVar7 + 0x12) = 0;
          *(undefined1 *)((int)puVar7 + 0x13) = 0;
          *(undefined1 *)(puVar7 + 5) = 0;
          *(undefined1 *)((int)puVar7 + 0x15) = 0;
          iVar8 = FUN_00405dcc(acStack_140,puVar7 + 4);
          iVar3 = o_helperscript;
          if (iVar8 == -1) {
            pcVar11 = puts;
            __s = "can\'t find mac in arp table, igmp return";
          }
          else {
            puVar6 = ppuVar9[3];
            *puVar7 = ppuVar9 + 2;
            ppuVar9[3] = puVar7;
            puVar7[3] = param_1.s_addr;
            *puVar6 = puVar7;
            puVar7[2] = ppuVar9;
            puVar7[1] = puVar6;
            if (iVar3 == 0) break;
            pcVar1 = inet_ntoa((in_addr)ppuVar9[4][2]);
            uVar4 = vifs_get_name(*(undefined2 *)(ppuVar9 + 5));
            __s = acStack_a0;
            snprintf(__s,0x7f,
                     "sh %s add_member \"%s\" \"%s\" \"%s\" \"%02x:%02x:%02x:%02x:%02x:%02x\" \"%02x:%02x:%02x:%02x:%02x:%02x\""
                     ,iVar3,pcVar1,uVar4,acStack_140,1,0,0x5e,((uVar2 & 0x7f00) << 8) >> 0x10,
                     (uVar2 >> 8 & 0xff00) >> 8,uVar2 >> 0x18,(uint)*(byte *)(puVar7 + 4),
                     (uint)*(byte *)((int)puVar7 + 0x11),(uint)*(byte *)((int)puVar7 + 0x12),
                     (uint)*(byte *)((int)puVar7 + 0x13),(uint)*(byte *)(puVar7 + 5),
                     (uint)*(byte *)((int)puVar7 + 0x15))   //possible issue identified - semgrep
            pcVar11 = system;
          }
          (*pcVar11)(__s);
          break;
        }
      } while ((undefined4 *)param_1.s_addr != ppuVar5[3]);
      if (ppuVar9[7] != (undefined4 *)0x0) {
        sloop_cancel_timeout();
      }
      puVar7 = (undefined4 *)sloop_register_timeout(0x7d,0,FUN_004054bc,ppuVar9);
      ppuVar9[7] = puVar7;
      ppuVar9[6] = (undefined4 *)0x0;
      uVar4 = 0;
    }
  }
  return uVar4;
}