/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined4 main(int param_1,char **param_2)

{
  char cVar1;
  byte bVar2;
  int iVar3;
  FILE *__stream;
  byte *pbVar4;
  int iVar5;
  char *pcVar6;
  size_t sVar7;
  byte bVar8;
  undefined4 uVar9;
  char *__s;
  uint uVar10;
  char *__s_00;
  char acStack_148 [16];
  undefined2 local_138;
  undefined2 local_136;
  undefined4 local_134;
  char local_128 [256];
  
  while (iVar3 = getopt(param_1,param_2,"hvi:c:"), 0 < iVar3) {   //possible issue identified - semgrep
    if (iVar3 == 0x68) {
      uVar9 = 0;
LAB_00401544:
      FUN_004013a8(uVar9);
    }
    else if (iVar3 < 0x69) {
      uVar9 = 0xffffffff;
      if (iVar3 != 99) goto LAB_00401544;
      DAT_00416af4 = _optarg;
    }
    else if (iVar3 == 0x69) {
      DAT_00416af8 = _optarg;
    }
    else {
      uVar9 = 0xffffffff;
      if (iVar3 != 0x76) goto LAB_00401544;
      DAT_00416afc = DAT_00416afc + 1;
    }
  }
  if (DAT_00416af8 == (char *)0x0) {
    fputs("No interface specify!!\n",_stderr);
    FUN_0040135c(1);
  }
  if (DAT_00416af4 == (char *)0x0) {
    fputs("No config file !!\n",_stderr);
    FUN_0040135c(2);
  }
  FUN_00401300("interface: %s\n",DAT_00416af8);
  FUN_00401300("config   : %s\n",DAT_00416af4);
  pcVar6 = DAT_00416af4;
  __stream = fopen(DAT_00416af4,"r")   //possible issue identified - semgrep
  if (__stream == (FILE *)0x0) {
    FUN_00401300("Can\'t open config file [%s] to read!\n",pcVar6);
  }
  else {
LAB_00401aac:
    pcVar6 = fgets(local_128,0x100,__stream)   //possible issue identified - semgrep
    if (pcVar6 != (char *)0x0) {
      sVar7 = strlen(local_128);
      pcVar6 = local_128 + sVar7;
      while( true ) {
        sVar7 = sVar7 - 1   //possible issue identified - semgrep
        __s_00 = local_128;
        if (((int)sVar7 < 0) ||   //possible issue identified - semgrep
           ((((cVar1 = pcVar6[-1], cVar1 != ' ' && (cVar1 != '\t')) && (cVar1 != '\n')) &&   //possible issue identified - semgrep
            (cVar1 != '\r')))) break;
        pcVar6[-1] = '\0';
        pcVar6 = pcVar6 + -1;
      }
      for (; cVar1 = *__s_00, cVar1 != '\0'; __s_00 = __s_00 + 1) {
        if (((cVar1 != ' ') && (cVar1 != '\t')) && ((cVar1 != '\n' && (cVar1 != '\r')))) {
          if (cVar1 != '#') {
            pcVar6 = strchr(__s_00,0x3d);
            __s = pcVar6 + 1;
            if (pcVar6 != (char *)0x0) {
              *pcVar6 = '\0';
              FUN_00401300("get %s = %s\n",__s_00,__s);
              iVar3 = strcmp(__s_00,"ipaddr");
              if (iVar3 == 0) {
                _g_ip = inet_addr(__s);
                if (DAT_00416afc != 0) {
                  uVar10 = 0;
                  while( true ) {
                    pbVar4 = &g_ip + uVar10;
                    uVar10 = uVar10 + 1;
                    printf("%02x ",(uint)*pbVar4);
                    if (uVar10 == 4) break;
                    if ((uVar10 & 0xf) == 0) {
                      putchar(10);
                    }
                  }
                  putchar(10);
                }
              }
              else {
                iVar3 = strcmp(__s_00,"netmask");
                if (iVar3 == 0) {
                  g_mask.s_addr = inet_addr(__s);
                }
                else {
                  iVar3 = strcmp(__s_00,"macaddr");
                  pbVar4 = &g_mac;
                  if (iVar3 == 0) goto LAB_00401944;
                  iVar3 = strcmp(__s_00,"vendor");
                  if (iVar3 == 0) {
                    g_vendor = strdup(__s)   //possible issue identified - semgrep
                  }
                  else {
                    iVar3 = strcmp(__s_00,"model");
                    if (iVar3 == 0) {
                      g_model = strdup(__s)   //possible issue identified - semgrep
                    }
                    else {
                      iVar3 = strcmp(__s_00,"description");
                      if (iVar3 == 0) {
                        g_description = strdup(__s)   //possible issue identified - semgrep
                      }
                      else {
                        iVar3 = strcmp(__s_00,"version");
                        if (iVar3 == 0) {
                          g_version = strdup(__s)   //possible issue identified - semgrep
                        }
                        else {
                          iVar3 = strcmp(__s_00,"secret");
                          if (iVar3 == 0) {
                            DAT_00416af0 = strdup(__s)   //possible issue identified - semgrep
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
          break;
        }
      }
      goto LAB_00401aac;
    }
    fclose(__stream);
  }
  pcVar6 = DAT_00416af8;
  memset(acStack_148,0,0x20)   //possible issue identified - semgrep
  iVar3 = socket(2,3,0xff);
  if (iVar3 < 0) {
LAB_00401c08:
    FUN_00401300(&DAT_00406638,pcVar6);
    pcVar6 = inet_ntoa(_g_ip);
    FUN_00401300("ip:%s, ",pcVar6);
    pcVar6 = inet_ntoa(g_mask);
    FUN_00401300("mask:%s, ",pcVar6);
    FUN_00401300("mac %02x:%02x:%02x:%02x:%02x:%02x\n",g_mac,DAT_00416ad9,DAT_00416ada,DAT_00416adb,
                 DAT_00416adc,DAT_00416add);
  }
  else {
    local_138 = 2;
    strcpy(acStack_148,pcVar6)   //possible issue identified - semgrep
    iVar5 = ioctl(iVar3,0x8915,acStack_148);
    if (iVar5 == 0) {
      _g_ip = local_134;
      iVar5 = ioctl(iVar3,0x891b,acStack_148);
      if (iVar5 == 0) {
        g_mask.s_addr = local_134;
        iVar5 = ioctl(iVar3,0x8927,acStack_148);
        if (iVar5 == 0) {
          _g_mac = local_136;
          _DAT_00416adc = local_134._2_2_;
          _DAT_00416ada = (undefined2)local_134;
          close(iVar3);
          goto LAB_00401c08;
        }
      }
    }
    close(iVar3);
  }
  NEAP_Initialize();
  iVar3 = NEAP_OpenNEAPService();
  pcVar6 = DAT_00416af0;
  if (DAT_00416af0 != (char *)0x0) {
    sVar7 = strlen(DAT_00416af0);
    NEAP_SetSecurity(iVar3,1,pcVar6,sVar7);
  }
  if (iVar3 != 0) {
    NEAP_BindAdapter(iVar3,DAT_00416af8);
    NEAP_ListenAdapter(iVar3,0,FUN_00401e58,0);
    NEAP_CloseNEAPService(iVar3);
  }
  NEAP_Deinitialize();
  if (g_vendor != (char *)0x0) {
    free(g_vendor);
  }
  if (g_description != (char *)0x0) {
    free(g_description);
  }
  if (g_model != (char *)0x0) {
    free(g_model);
  }
  if (g_version != (char *)0x0) {
    free(g_version);
  }
  FUN_0040135c(0);
  return 0;
  while( true ) {
    if ((cVar1 == ':') || (pcVar6 = __s, cVar1 == '.')) {
      pcVar6 = __s + 1;
    }
    cVar1 = *pcVar6;
    bVar2 = cVar1 - 0x30;
    __s = pcVar6 + 1;
    if (((9 < bVar2) && (bVar2 = cVar1 + 0xa9, 5 < (byte)(cVar1 + 0x9fU))) &&
       (bVar2 = 0, (byte)(cVar1 + 0xbfU) < 6)) {
      bVar2 = cVar1 - 0x37;
    }
    *pbVar4 = bVar2;
    if (*__s != '\0') {
      *pbVar4 = bVar2 * '\x10';
      cVar1 = *__s;
      bVar8 = cVar1 - 0x30;
      if (((9 < bVar8) && (bVar8 = cVar1 + 0xa9, 5 < (byte)(cVar1 + 0x9fU))) &&
         (bVar8 = 0, (byte)(cVar1 + 0xbfU) < 6)) {
        bVar8 = cVar1 - 0x37;
      }
      *pbVar4 = bVar8 + bVar2 * '\x10';
      __s = pcVar6 + 2;
    }
    pbVar4 = pbVar4 + 1;
    if (pbVar4 == (byte *)0x416ade) break;
LAB_00401944:
    cVar1 = *__s;
    if (cVar1 == '\0') break;
  }
  goto LAB_00401aac;
}