undefined4 FUN_00406ee0(char *param_1)

{
  char cVar1;
  byte bVar2;
  byte bVar3;
  int iVar4;
  size_t __n;
  long lVar5;
  uint uVar6;
  char *pcVar7;
  char *pcVar8;
  int *piVar9;
  undefined4 uVar10;
  sockaddr local_60;
  char local_50 [40];
  char acStack_28 [24];
  
  iVar4 = FUN_00406d78(param_1,local_50 + 0x20);
  if (iVar4 == -1) {
    local_60.sa_family = 2;
    local_60.sa_data[0] = '\0';
    local_60.sa_data[1] = '5';
    local_60.sa_data[2] = '\0';
    local_60.sa_data[3] = '\0';
    local_60.sa_data[4] = '\0';
    local_60.sa_data[5] = '\0';
    local_60.sa_data[6] = '\0';
    local_60.sa_data[7] = '\0';
    local_60.sa_data[8] = '\0';
    local_60.sa_data[9] = '\0';
    local_60.sa_data[10] = '\0';
    local_60.sa_data[0xb] = '\0';
    local_60.sa_data[0xc] = '\0';
    local_60.sa_data[0xd] = '\0';
    local_60.sa_data._2_4_ = inet_addr(param_1);
    iVar4 = socket(2,1,0);
    if (iVar4 != -1) {
      strcpy(local_50,"arp please")   //possible issue identified - semgrep
      __n = strlen(local_50);
      sendto(iVar4,local_50,__n,0,&local_60,0x10);
      close(iVar4);
    }
    usleep(20000);
    iVar4 = FUN_00406d78(param_1,local_50 + 0x20);
    if (iVar4 == -1) {
      return 0xffffffff;
    }
  }
  pcVar7 = local_50 + 0x21;
  pcVar8 = local_50 + 0x20;
  while( true ) {
    cVar1 = pcVar7[-1]   //possible issue identified - semgrep
    pcVar7 = pcVar7 + 1;
    if (cVar1 == '\0') break;
    if (cVar1 != ':') {
      *pcVar8 = cVar1;
      pcVar8 = pcVar8 + 1;
    }
  }
  *pcVar8 = '\0';
  local_50[4] = '\0';
  local_50[5] = '\0';
  local_50[6] = '\0';
  local_50[7] = '\0';
  local_50[8] = '\0';
  local_50[9] = '\0';
  local_50[10] = '\0';
  local_50[0xb] = '\0';
  local_50[0xc] = '\0';
  local_50[0xd] = '\0';
  local_50[0xe] = '\0';
  local_50[0xf] = '\0';
  local_50[0] = '\0';
  local_50[1] = '\0';
  local_50[2] = '\0';
  local_50[3] = '\0';
  local_50[0x10] = '\0';
  local_50[0x11] = '\0';
  local_50[0x12] = '\0';
  local_50[0x13] = '\0';
  local_50[0x14] = '\0';
  local_50[0x15] = '\0';
  local_50[0x16] = '\0';
  local_50[0x17] = '\0';
  local_50[0x18] = '\0';
  local_50[0x19] = '\0';
  local_50[0x1a] = '\0';
  local_50[0x1b] = '\0';
  local_50[0x1c] = '\0';
  local_50[0x1d] = '\0';
  local_50[0x1e] = '\0';
  local_50[0x1f] = '\0';
  strncpy(local_50,local_50 + 0x20,8)   //possible issue identified - semgrep
  strncpy(local_50 + 0x10,acStack_28,4)   //possible issue identified - semgrep
  lVar5 = strtol(local_50,(char **)0x0,0x10);
  uVar6 = strtol(local_50 + 0x10,(char **)0x0,0x10);
  piVar9 = &DAT_0041b9dc;
  iVar4 = DAT_0041b9dc;
  do {
    if (iVar4 == -1) {
      return 0xffffffff;
    }
    if ((*piVar9 == lVar5) && (*(ushort *)(piVar9 + 1) == uVar6)) {
      bVar2 = *(byte *)((int)piVar9 + 6);
      if (bVar2 == 4) {
        return 2;
      }
      if (bVar2 < 5) {
        if (bVar2 == 1) {
          return 0;
        }
        uVar10 = 1;
        bVar3 = 2;
LAB_00407164:
        if (bVar2 != bVar3) {
          verbose("*** igmp: No/Multi ports found\n");
          return 0xffffffff;
        }
        return uVar10;
      }
      if (bVar2 == 0x10) {
        return 4;
      }
      bVar3 = 8;
      if (bVar2 != 0x40) {
        uVar10 = 3;
        goto LAB_00407164;
      }
    }
    iVar4 = piVar9[2];
    piVar9 = piVar9 + 2;
    if (piVar9 == (int *)0x41d9cc) {
      return 0xffffffff;
    }
  } while( true );
}