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

void smtpclient_main(int param_1,undefined4 *param_2)

{
  bool bVar1;
  int iVar2;
  hostent *phVar3;
  int iVar4;
  size_t sVar5;
  char *pcVar6;
  char *pcVar7;
  undefined4 uVar8;
  undefined4 *puVar9;
  sockaddr local_38;
  
  pcVar6 = (char *)0x0;
LAB_00406460:
  do {
    iVar2 = getopt_long(param_1,param_2,":H:s:f:r:S:P:Mvh",&PTR_s_subject_0041cba0,0)   //possible issue identified - semgrep
    if (iVar2 == -1) {
      if (param_1 == _optind) {
        fputs("SMTP: wrong number of arguments\n",_stderr);
        uVar8 = *param_2;
        pcVar6 = "Try `%s --help\' for more information.\n\n";
        goto LAB_00406438;
      }
      alarm(0x3c);
      if ((DAT_0041d9d4 == (char *)0x0) &&
         (DAT_0041d9d4 = getenv("SMTPSERVER"), DAT_0041d9d4 == (char *)0x0)) {   //possible issue identified - semgrep
        DAT_0041d9d4 = "localhost";
      }
      pcVar7 = pcVar6;
      if (pcVar6 == (char *)0x0) {
        iVar2 = gethostname(&DAT_0041d9e4,0xfff)   //possible issue identified - semgrep
        if (iVar2 < 0) goto LAB_00406450;
        phVar3 = gethostbyname(&DAT_0041d9e4);
        if (phVar3 != (hostent *)0x0) {
          pcVar7 = phVar3->h_name;
          goto LAB_00406594;
        }
        pcVar6 = "%s: unknown host\n";
        pcVar7 = &DAT_0041d9e4;
      }
      else {
LAB_00406594:
        strcpy(&DAT_0041d9e4,pcVar7)   //possible issue identified - semgrep
        phVar3 = gethostbyname(DAT_0041d9d4);
        if (phVar3 == (hostent *)0x0) {
          pcVar6 = "%s: unknown host\n";
          pcVar7 = DAT_0041d9d4;
        }
        else {
          pcVar7 = (char *)phVar3->h_addrtype;
          if (pcVar7 == (char *)0x2) {
            local_38.sa_family = 0;
            local_38.sa_data[0] = '\0';
            local_38.sa_data[1] = '\0';
            local_38.sa_data[2] = '\0';
            local_38.sa_data[3] = '\0';
            local_38.sa_data[4] = '\0';
            local_38.sa_data[5] = '\0';
            local_38.sa_data[6] = '\0';
            local_38.sa_data[7] = '\0';
            local_38.sa_data[8] = '\0';
            local_38.sa_data[9] = '\0';
            local_38.sa_data[10] = '\0';
            local_38.sa_data[0xb] = '\0';
            local_38.sa_data[0xc] = '\0';
            local_38.sa_data[0xd] = '\0';
            memcpy(local_38.sa_data + 2,*phVar3->h_addr_list,phVar3->h_length)   //possible issue identified - semgrep
            local_38.sa_data._0_2_ = (ushort)DAT_0041cb90 << 8 | (ushort)DAT_0041cb90 >> 8;
            local_38.sa_family = (sa_family_t)phVar3->h_addrtype;
            iVar2 = socket(2,2,0);
            if ((((-1 < iVar2) && (iVar4 = connect(iVar2,&local_38,0x10), -1 < iVar4)) &&
                (iVar4 = dup(iVar2), -1 < iVar4)) &&
               ((DAT_0041f9e4 = fdopen(iVar2,"w"), DAT_0041f9e4 != (FILE *)0x0 &&
                (DAT_0041f9e8 = fdopen(iVar4,"r"), DAT_0041f9e8 != (FILE *)0x0)))) {
              FUN_00405ecc();
              FUN_00406008("HELO %s\r\n",&DAT_0041d9e4);
              FUN_00406008("MAIL FROM: <%s>\r\n",PTR_s_someone_somewhere_com_0041cc20);
              puVar9 = param_2 + _optind;
              iVar2 = _optind;
              while (bVar1 = iVar2 < param_1, iVar2 = iVar2 + 1, bVar1) {
                uVar8 = *puVar9;
                puVar9 = puVar9 + 1;
                FUN_00406008("RCPT TO: <%s>\r\n",uVar8);
              }
              FUN_00406008("DATA\r\n");
              if (DAT_0041d9e0 != (char *)0x0) {
                fprintf(DAT_0041f9e4,"Reply-To: <%s>\r\n");
              }
              fprintf(DAT_0041f9e4,"From: \"%s\"<%s>\r\n",pcVar6,
                      PTR_s_someone_somewhere_com_0041cc20);
              fprintf(DAT_0041f9e4,"To: %s",param_2[_optind]);
              iVar2 = _optind + 1;
              param_2 = param_2 + iVar2;
              for (; iVar2 < param_1; iVar2 = iVar2 + 1) {
                fprintf(DAT_0041f9e4,",%s",*param_2);
                param_2 = param_2 + 1;
              }
              fputs("\r\n",DAT_0041f9e4);
              if (DAT_0041d9d0 != (char *)0x0) {
                fprintf(DAT_0041f9e4,"Subject: %s\r\n");
              }
              if (DAT_0041d9dc != 0) {
                fputs("MIME-Version: 1.0\r\n",DAT_0041f9e4);
                fputs("Content-Type: text/plain; charset=ISO-8859-1\r\n",DAT_0041f9e4);
                fputs("Content-Transfer-Encoding: quoted-printable\r\n",DAT_0041f9e4);
              }
              fputs("\r\n",DAT_0041f9e4);
              fflush(DAT_0041f9e4);
              if (DAT_0041d9dc == 0) {
                while (pcVar6 = fgets(&DAT_0041e9e4,0x1000,_stdin), pcVar6 != (char *)0x0) {   //possible issue identified - semgrep
                  sVar5 = strlen(&DAT_0041e9e4);
                  (&DAT_0041e9e3)[sVar5] = 0;
                  iVar2 = strcmp(&DAT_0041e9e4,".");
                  if (iVar2 == 0) {
                    fputs("..\r\n",DAT_0041f9e4);
                  }
                  else {
                    fprintf(DAT_0041f9e4,"%s\r\n",&DAT_0041e9e4);
                  }
                  fflush(DAT_0041f9e4);
                }
              }
              else {
                FUN_00405aac(_stdin,DAT_0041f9e4);
              }
              FUN_00406008(&DAT_0040bd68);
              FUN_00406008("QUIT\r\n");
LAB_00406a04:
              iVar2 = 0;
              goto LAB_00406458;
            }
            goto LAB_00406450;
          }
          pcVar6 = "unknown address family: %d";
        }
      }
      FUN_00405a30(pcVar6,pcVar7);
      goto LAB_00406450;
    }
    if (iVar2 == 0x66) {
      PTR_s_someone_somewhere_com_0041cc20 = _optarg;
      goto LAB_00406460;
    }
    if (iVar2 < 0x67) {
      if (iVar2 == 0x4d) {
        DAT_0041d9dc = 1;
      }
      else if (iVar2 < 0x4e) {
        pcVar6 = _optarg;
        if (iVar2 != 0x48) {
LAB_00406400:
          fprintf(_stderr,"SMTP: invalid option `%c\'\n",_optopt);
          uVar8 = *param_2;
          pcVar6 = "Try `%s --help\' for more information.\n";
LAB_00406438:
          fprintf(_stderr,pcVar6,uVar8);
          FUN_004060e0();
LAB_00406450:
          iVar2 = 1;
LAB_00406458:
                    /* WARNING: Subroutine does not return */
          exit(iVar2);
        }
      }
      else if (iVar2 == 0x50) {
        DAT_0041cb90 = atoi(_optarg);
      }
      else {
        if (iVar2 != 0x53) goto LAB_00406400;
        DAT_0041d9d4 = _optarg;
      }
    }
    else if (iVar2 == 0x72) {
      DAT_0041d9e0 = _optarg;
    }
    else {
      if (iVar2 < 0x73) {
        if (iVar2 == 0x68) {
          FUN_004060e0();
          goto LAB_00406a04;
        }
        goto LAB_00406400;
      }
      if (iVar2 == 0x73) {
        DAT_0041d9d0 = _optarg;
      }
      else {
        if (iVar2 != 0x76) goto LAB_00406400;
        DAT_0041d9d8 = 1;
      }
    }
  } while( true );
}