void send_igmp(in_addr param_1,in_addr param_2,undefined4 param_3,undefined4 param_4,in_addr param_5
              )

{
  bool bVar1;
  ushort uVar2;
  char *pcVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  ssize_t sVar6;
  int *piVar7;
  ushort *puVar8;
  int iVar9;
  uint uVar10;
  size_t __n;
  char *__dest;
  char *__dest_00;
  undefined4 *local_2a8;
  undefined4 local_2a4;
  sockaddr local_2a0;
  char acStack_290 [32];
  char acStack_270 [32];
  char acStack_250 [32];
  byte local_230;
  undefined1 uStack_22f;
  ushort uStack_22e;
  undefined1 local_228;
  undefined1 local_227;
  in_addr_t local_224;
  in_addr_t local_220;
  undefined2 uStack_21c;
  ushort uStack_21a;
  in_addr_t local_218;
  ushort local_214 [248];
  
  pcVar3 = inet_ntoa(param_1);
  strcpy(acStack_290,pcVar3)   //possible issue identified - semgrep
  __dest = acStack_270;
  pcVar3 = inet_ntoa(param_2);
  strcpy(__dest,pcVar3)   //possible issue identified - semgrep
  __dest_00 = acStack_250;
  pcVar3 = inet_ntoa(param_5);
  strcpy(__dest_00,pcVar3)   //possible issue identified - semgrep
  uVar4 = igmp_type(param_3);
  uVar5 = param_4;
  verbose("%s: SEND %s from %s to %s for %s. code=0x%02x\n","send_igmp",uVar4,acStack_290,__dest,
          __dest_00,param_4);
  memset(&local_230,0,0x204)   //possible issue identified - semgrep
  if (param_5.s_addr == 0) {
    local_2a4 = 0x494;
    local_2a8 = &local_2a4;
    __n = 4   //possible issue identified - semgrep
  }
  else {
    uVar10 = find_ip_opt(param_5.s_addr,&local_2a8);
    __n = uVar10 & 0xffff   //possible issue identified - semgrep
  }
  verbose("%s ip_opt_len:%d  for group:%X\n","build_igmp",__n,param_5.s_addr,__dest,__dest_00,uVar5)
  ;
  local_227 = 2;
  uStack_22e = (short)__n + 0x1c;
  _local_230 = CONCAT11(0xc0,(byte)(__n + 0x14 >> 2) & 0xf | 0x40);
  local_228 = 1;
  local_224 = param_1.s_addr;
  local_220 = param_2.s_addr;
  memcpy(&uStack_21c,local_2a8,__n)   //possible issue identified - semgrep
  puVar8 = (ushort *)((int)&uStack_21c + __n);
  *(in_addr_t *)((int)local_214 + (__n - 4)) = param_5.s_addr;
  *(char *)puVar8 = (char)param_3;
  *(char *)((int)&uStack_21c + __n + 1) = (char)param_4;
  *(undefined2 *)((int)&uStack_21a + __n) = 0;
  uVar10 = 0;
  do {
    uVar2 = *puVar8;
    puVar8 = puVar8 + 1;
    uVar10 = uVar10 + uVar2;
  } while (puVar8 != (ushort *)((int)local_214 + __n));
  iVar9 = (uVar10 & 0xffff) + ((int)uVar10 >> 0x10);
  *(short *)((int)&uStack_21a + __n) = ~((short)((uint)iVar9 >> 0x10) + (short)iVar9);
  uVar10 = (uint)uStack_22e;
  bVar1 = (param_2.s_addr & 0xf0) == 0xe0;
  if (bVar1) {
    uVar5 = mrtapi_sock();
    sopt_set_multicast_if(uVar5,param_1.s_addr);
  }
  local_2a0.sa_family = 2;
  local_2a0.sa_data[0] = '\0';
  local_2a0.sa_data[1] = '\0';
  local_2a0.sa_data[6] = '\0';
  local_2a0.sa_data[7] = '\0';
  local_2a0.sa_data[8] = '\0';
  local_2a0.sa_data[9] = '\0';
  local_2a0.sa_data[10] = '\0';
  local_2a0.sa_data[0xb] = '\0';
  local_2a0.sa_data[0xc] = '\0';
  local_2a0.sa_data[0xd] = '\0';
  local_2a0.sa_data._2_4_ = param_2.s_addr;
  iVar9 = mrtapi_sock();
  sVar6 = sendto(iVar9,&local_230,uVar10,0,&local_2a0,0x10);
  if (sVar6 < 0) {
    piVar7 = __errno_location();
    pcVar3 = strerror(*piVar7);
    verbose("%s: sendto error: %s !\n","send_igmp",pcVar3);
  }
  if (bVar1) {
    uVar5 = mrtapi_sock();
    sopt_set_multicast_if(uVar5,0);
  }
  return;
}