int listen_socket(undefined4 param_1,uint param_2,char *param_3)

{
  int __fd;
  int iVar1;
  undefined4 local_58;
  sockaddr local_54;
  char acStack_44 [40];
  
  local_58 = 1;
  __fd = socket(2,1,0x11);
  if (-1 < __fd) {
    local_54.sa_data._0_2_ = (ushort)((param_2 & 0xffff) << 8) | (ushort)((param_2 & 0xffff) >> 8);
    local_54.sa_data[6] = '\0';
    local_54.sa_data[7] = '\0';
    local_54.sa_data[8] = '\0';
    local_54.sa_data[9] = '\0';
    local_54.sa_data[10] = '\0';
    local_54.sa_data[0xb] = '\0';
    local_54.sa_data[0xc] = '\0';
    local_54.sa_data[0xd] = '\0';
    local_54.sa_family = 2;
    local_54.sa_data._2_4_ = param_1;
    iVar1 = setsockopt(__fd,0xffff,4,&local_58,4);
    if (iVar1 != -1) {
      iVar1 = setsockopt(__fd,0xffff,0x20,&local_58,4);
      if (iVar1 != -1) {
        strncpy(acStack_44,param_3,0x10)   //possible issue identified - semgrep
        iVar1 = setsockopt(__fd,0xffff,0x19,acStack_44,0x20);
        if (-1 < iVar1) {
          iVar1 = bind(__fd,&local_54,0x10);
          if (iVar1 != -1) {
            return __fd;
          }
          close(__fd);
          return -1;
        }
      }
      close(__fd);
      return -1;
    }
    close(__fd);
  }
  return -1;
}