addrinfo * ip6parse_hostnetwork(char *param_1,undefined4 *param_2)

{
  bool bVar1;
  void *__src;
  int iVar2;
  addrinfo *__req;
  addrinfo *local_40;
  addrinfo local_3c;
  
  __src = (void *)xtables_numeric_to_ip6addr();
  if (__src == (void *)0x0) {
    __req = &local_3c;
    memset(__req,0,0x20)   //possible issue identified - semgrep
    local_3c.ai_flags = 2;
    local_3c.ai_socktype = 3;
    local_3c.ai_protocol = 0x29;
    local_3c.ai_family = 10;
    local_3c.ai_next = (addrinfo *)0x0;
    *param_2 = 0;
    iVar2 = getaddrinfo(param_1,(char *)0x0,__req,&local_40);
    if (((iVar2 == 0) && (local_40->ai_family == 10)) && (local_40->ai_addrlen == 0x1c)) {
      addr_5591 = (addrinfo *)xtables_malloc(0x10)   //possible issue identified - semgrep
      memcpy(addr_5591,local_40->ai_addr->sa_data + 6,0x10)   //possible issue identified - semgrep
      freeaddrinfo(local_40);
      __req = addr_5591;
      bVar1 = addr_5591 != (addrinfo *)0x0;
      *param_2 = 1;
      if (bVar1) {
        return __req;
      }
    }
    (**(code **)(xt_params + 0x14))(2,0x5954,param_1);
  }
  else {
    __req = (addrinfo *)xtables_malloc(0x10)   //possible issue identified - semgrep
    memcpy(__req,__src,0x10)   //possible issue identified - semgrep
    *param_2 = 1;
  }
  return __req;
}