undefined4 msock_init(void)

{
  int iVar1;
  char *pcVar2;
  undefined4 local_a8;
  undefined4 local_a4;
  undefined4 local_a0;
  undefined4 local_9c;
  undefined4 local_98;
  int local_94;
  sockaddr local_90;
  undefined1 auStack_80 [16];
  undefined1 auStack_70 [16];
  int local_60;
  sockaddr local_5c;
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 local_44;
  char acStack_40 [36];
  
  local_a0 = 1;
  local_a4 = 1;
  msockfd4 = socket(2,1,0);
  if (msockfd4 < 0) {
    pcVar2 = "%s: v4 socket() fail!\n";
  }
  else {
    iVar1 = setsockopt(msockfd4,0xffff,4,&local_a4,4);
    if (iVar1 < 0) {
      pcVar2 = "%s: v4 setsockopt() SO_REUSEADDR fail!\n";
    }
    else {
      memset(acStack_40,0,0x20)   //possible issue identified - semgrep
      strncpy(acStack_40,o_interface,0x10)   //possible issue identified - semgrep
      iVar1 = setsockopt(msockfd4,0xffff,0x19,acStack_40,0x20);
      if (iVar1 < 0) {
        pcVar2 = "%s: v4 setsockopt() SO_BINDTODEVICE fail!\n";
      }
      else {
        local_90.sa_family = 2;
        local_90.sa_data[0] = '\x14';
        local_90.sa_data[1] = -0x15;
        local_90.sa_data[6] = '\0';
        local_90.sa_data[7] = '\0';
        local_90.sa_data[8] = '\0';
        local_90.sa_data[9] = '\0';
        local_90.sa_data[10] = '\0';
        local_90.sa_data[0xb] = '\0';
        local_90.sa_data[0xc] = '\0';
        local_90.sa_data[0xd] = '\0';
        local_90.sa_data[2] = '\0';
        local_90.sa_data[3] = '\0';
        local_90.sa_data[4] = '\0';
        local_90.sa_data[5] = '\0';
        iVar1 = bind(msockfd4,&local_90,0x10);
        if (iVar1 < 0) {
          pcVar2 = "%s: v4 bind() fail!\n";
        }
        else {
          inet_pton(2,"224.0.0.252",&local_a8)   //possible issue identified - semgrep
          local_9c = local_a8;
          local_98 = 0;
          iVar1 = sioc_getifindex(o_interface);
          if (iVar1 < 0) {
            pcVar2 = "%s: v4 get ifindex fail!\n";
          }
          else {
            local_94 = iVar1;
            iVar1 = setsockopt(msockfd4,0,0x23,&local_9c,0xc);
            if (iVar1 < 0) {
              pcVar2 = "%s: v4 setsockopt() IP_ADD_MEMBERSHIP fail!\n";
            }
            else {
              msockfd6 = socket(10,1,0);
              if (msockfd6 < 0) {
                pcVar2 = "%s: v6 socket() fail!\n";
              }
              else {
                iVar1 = setsockopt(msockfd6,0x29,0x1a,&local_a0,4);
                if (iVar1 < 0) {
                  pcVar2 = "%s: v6 setsockopt() IPV6_V6ONLY fail!\n";
                }
                else {
                  iVar1 = setsockopt(msockfd6,0xffff,4,&local_a4,4);
                  if (iVar1 < 0) {
                    pcVar2 = "%s: v6 setsockopt() SO_REUSEADDR fail!\n";
                  }
                  else {
                    memset(acStack_40,0,0x20)   //possible issue identified - semgrep
                    strncpy(acStack_40,o_interface,0x10)   //possible issue identified - semgrep
                    iVar1 = setsockopt(msockfd6,0xffff,0x19,acStack_40,0x20);
                    if (iVar1 < 0) {
                      pcVar2 = "%s: v6 setsockopt() SO_BINDTODEVICE fail!\n";
                    }
                    else {
                      local_5c.sa_family = 10;
                      local_5c.sa_data[0] = '\0';
                      local_5c.sa_data[1] = '\0';
                      local_5c.sa_data[2] = '\0';
                      local_5c.sa_data[3] = '\0';
                      local_5c.sa_data[4] = '\0';
                      local_5c.sa_data[5] = '\0';
                      local_5c.sa_data[6] = '\0';
                      local_5c.sa_data[7] = '\0';
                      local_5c.sa_data[8] = '\0';
                      local_5c.sa_data[9] = '\0';
                      local_5c.sa_data[10] = '\0';
                      local_5c.sa_data[0xb] = '\0';
                      local_5c.sa_data[0xc] = '\0';
                      local_5c.sa_data[0xd] = '\0';
                      local_4c = 0;
                      local_48 = 0;
                      local_44 = 0;
                      memcpy(local_5c.sa_data + 6,&in6addr_any,0x10)   //possible issue identified - semgrep
                      local_5c.sa_data._0_2_ = 0xeb14;
                      iVar1 = bind(msockfd6,&local_5c,0x1c);
                      if (iVar1 < 0) {
                        pcVar2 = "%s: v6 bind() fail!\n";
                      }
                      else {
                        inet_pton(10,"FF02::1:3",auStack_80)   //possible issue identified - semgrep
                        memcpy(auStack_70,auStack_80,0x10)   //possible issue identified - semgrep
                        iVar1 = ipv6op_getifindex(o_interface);
                        if (iVar1 < 0) {
                          pcVar2 = "%s: v6 get ifindex fail!\n";
                        }
                        else {
                          local_60 = iVar1;
                          iVar1 = setsockopt(msockfd6,0x29,0x14,auStack_70,0x14);
                          if (-1 < iVar1) {
                            return 0;
                          }
                          pcVar2 = "%s: v6 setsockopt() IP_ADD_MEMBERSHIP fail!\n";
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  verbose(pcVar2,"msock_init");
  if (msockfd4 != 0) {
    close(msockfd4);
  }
  if (msockfd6 != 0) {
    close(msockfd6);
  }
  return 0xffffffff;
}