/* WARNING: Removing unreachable block (ram,0x004016e8) */
/* WARNING: Removing unreachable block (ram,0x00401724) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined4 main(int param_1,char **param_2)

{
  undefined *puVar1;
  char *pcVar2;
  DIR *__dirp;
  dirent *pdVar3;
  long lVar4;
  long lVar5;
  long lVar6;
  long lVar7;
  undefined4 *puVar8;
  uint uVar9;
  int iVar10;
  int iVar11;
  uint uVar12;
  int iVar13;
  uint uVar14;
  int iVar15;
  uint uVar16;
  uint uVar17;
  uint local_f8;
  undefined2 local_f4;
  undefined1 local_f2;
  uint local_f0;
  undefined4 local_ec;
  void *local_e8;
  timeval local_e4;
  undefined4 local_dc;
  undefined4 local_d8;
  char acStack_d4 [132];
  int local_50;
  undefined4 *local_4c;
  uint local_48;
  size_t local_44;
  uint local_40;
  uint *local_3c;
  char *local_38;
  undefined4 *local_34;
  uint *local_30;
  
  pcVar2 = strrchr(*param_2,0x2f);
  if (pcVar2 == (char *)0x0) {
    DAT_00415430 = *param_2;
  }
  else {
    DAT_00415430 = pcVar2 + 1;
  }
  if (param_1 < 2) {
    printf("RNDIMGAE v0.0.1\nUsage: %s [OPTION] message\n    -h\tshow this help message.\n    -f\tset ouput file name (default is \"/var/rndimg.jpeg\").\n    -p\tset ouput file name (default is \"fonts\").\n    -c\tset ouput file comment (default is \"Alphanetworks\").\n    -w\tset ouput file width (default is %d).\n    -t\tset ouput file height (default is %d).\n    -D\tUse default message and save file.\n"
           ,DAT_00415430,500,200);
    iVar10 = -1;
LAB_0040141c:
                    /* WARNING: Subroutine does not return */
    exit(iVar10);
  }
  g_default_auth = 0;
LAB_00401430:
  while( true ) {
    iVar10 = getopt(param_1,param_2,"hc:f:p:w:t:D")   //possible issue identified - semgrep
    if (iVar10 == -1) {
      DAT_00415434 = param_2[param_1 + -1];
      gettimeofday(&local_e4,(__timezone_ptr_t)0x0);
      srandom(local_e4.tv_usec + local_e4.tv_sec);
      if (g_default_auth != 0) {
        FUN_00400e78();
      }
      local_ec = 0;
      local_e8 = (void *)0x0;
      iVar10 = alloc_image(&local_ec,DAT_00415030 & 0xffff,DAT_00415034 & 0xffff);
      if (iVar10 != 0) {
        error_exit("failed to alloc background image");
      }
      local_44 = strlen(DAT_00415434);
      local_f4 = 0;
      local_f2 = 0;
      random();
      __dirp = opendir(PTR_s_fonts_00415044);
      if (__dirp == (DIR *)0x0) {
        error_exit("could not open font files at %s.\n",PTR_s_fonts_00415044);
      }
      puVar8 = &g_font_file;
      iVar10 = 0;
      local_4c = puVar8;
      while ((pdVar3 = readdir(__dirp), pdVar3 != (dirent *)0x0 && (iVar10 < DAT_00415038))) {
        pcVar2 = strrchr(pdVar3->d_name,0x2e);
        if ((pcVar2 != (char *)0x0) && (iVar13 = strcmp(pcVar2,".dat"), iVar13 == 0)) {
          pcVar2 = strdup(pdVar3->d_name)   //possible issue identified - semgrep
          *puVar8 = pcVar2;
          iVar10 = iVar10 + 1;
          puVar8 = puVar8 + 1;
        }
      }
      local_30 = &local_f0;
      local_f0 = CONCAT13(local_f0._3_1_,0xf0a000);
      local_f0 = CONCAT31(local_f0._1_3_,0xf0);
      local_dc = 0;
      local_d8 = 0;
      iVar13 = 0;
      memset(local_e8,0xff,(local_ec >> 0x10) * (local_ec & 0xffff) * 3);
      do {
        FUN_00400d30(local_30,0x70,0xff);
        lVar4 = random();
        uVar14 = local_ec & 0xffff;
        lVar5 = random();
        uVar9 = local_ec >> 0x10;
        lVar6 = random();
        uVar16 = (local_ec & 0xffff) / 5;
        uVar17 = lVar6 % (int)uVar16;
        if (uVar16 == 0) {
          trap(0x1c00);
        }
        lVar6 = random();
        uVar16 = lVar6 % (int)(local_ec / 0x50000);
        if (local_ec / 0x50000 == 0) {
          trap(0x1c00);
        }
        uVar12 = uVar16;
        if ((int)uVar17 < (int)uVar16) {
          uVar12 = uVar17;
          uVar17 = uVar16;
        }
        if (uVar14 == 0) {
          trap(0x1c00);
        }
        iVar13 = iVar13 + 1;
        if (uVar9 == 0) {
          trap(0x1c00);
        }
        box(&local_ec,lVar4 % (int)uVar14 & 0xffff,lVar5 % (int)uVar9 & 0xffff,uVar17 & 0xffff,
            uVar12 & 0xffff,local_f0 & 0xffffff);
        iVar15 = 0;
      } while (iVar13 != 10);
      do {
        FUN_00400d30(&local_f0,0x70,0xff);
        iVar15 = iVar15 + 1;
        lVar4 = random();
        uVar9 = local_ec & 0xffff;
        if (uVar9 == 0) {
          trap(0x1c00);
        }
        lVar5 = random();
        uVar17 = local_ec & 0xffff;
        if (uVar17 == 0) {
          trap(0x1c00);
        }
        lVar6 = random();
        uVar14 = local_ec >> 0x10;
        if (uVar14 == 0) {
          trap(0x1c00);
        }
        lVar7 = random();
        if (local_ec >> 0x10 == 0) {
          trap(0x1c00);
        }
        line(&local_ec,lVar4 % (int)uVar9 & 0xffff,lVar6 % (int)uVar14 & 0xffff,
             lVar5 % (int)uVar17 & 0xffff,lVar7 % (int)(local_ec >> 0x10) & 0xffff,
             local_f0 & 0xffffff);
      } while (iVar15 != 5);
      iVar13 = 0;
      do {
        FUN_00400d30(&local_f0,0,0xff);
        iVar13 = iVar13 + 1;
        lVar4 = random();
        uVar9 = local_ec & 0xffff;
        if (uVar9 == 0) {
          trap(0x1c00);
        }
        lVar5 = random();
        if (local_ec >> 0x10 == 0) {
          trap(0x1c00);
        }
        dot(&local_ec,lVar4 % (int)uVar9 & 0xffff,lVar5 % (int)(local_ec >> 0x10) & 0xffff,
            local_f0 & 0xffffff);
      } while (iVar13 != 0x32);
      local_40 = (int)DAT_00415030 / (int)local_44;
      if (local_44 == 0) {
        trap(0x1c00);
      }
      local_f8 = CONCAT13(local_f8._3_1_,0xf0a000);
      local_f8 = CONCAT31(local_f8._1_3_,0xf0);
      local_3c = &local_f8;
      local_38 = acStack_d4;
      iVar13 = 0;
      iVar15 = 0;
      local_48 = local_40 >> 1;
      local_34 = &local_ec;
      while (iVar13 < (int)local_44) {
        FUN_00400d30(local_3c,0,0x80);
        local_50 = iVar13 + 1;
        uVar9 = random();
        if (local_48 == 0) {
          trap(0x1c00);
        }
        uVar14 = uVar9 % local_48 + iVar15;
        iVar15 = iVar15 + local_40;
        uVar9 = random();
        uVar17 = iVar15 - uVar14;
        uVar9 = uVar9 % uVar17;
        if (uVar17 == 0) {
          trap(0x1c00);
        }
        if (uVar9 < 0x1e) {
          uVar9 = uVar9 + 0x14;
        }
        lVar4 = random();
        uVar17 = lVar4 % ((int)DAT_00415034 / 2);
        if ((int)DAT_00415034 / 2 == 0) {
          trap(0x1c00);
        }
        iVar11 = DAT_00415034 - 1;
        uVar16 = random();
        puVar1 = PTR_s_fonts_00415044;
        uVar12 = iVar11 - uVar17;
        uVar16 = uVar16 % uVar12;
        if (uVar12 == 0) {
          trap(0x1c00);
        }
        if (uVar16 < 0x32) {
          uVar16 = uVar16 + 0x1e;
        }
        lVar4 = random();
        if (iVar10 == 0) {
          trap(0x1c00);
        }
        sprintf(local_38,"%s/%s",puVar1,(&g_font_file)[lVar4 % iVar10])   //possible issue identified - semgrep
        iVar11 = get_chr_from_file(local_38,(int)DAT_00415434[iVar13],&local_dc,local_f8 & 0xffffff)
        ;
        if (iVar11 != 0) {
          if (iVar10 == 0) {
            trap(0x1c00);
          }
          error_exit("failed to get word image: %d(%s)\n",iVar13 % iVar10,local_38);
        }
        bitblt(local_34,&local_dc,uVar14 & 0xffff,uVar17 & 0xffff,uVar9 & 0xffff,uVar16 & 0xffff,
               local_f4);
        iVar13 = local_50;
        free_image(&local_dc);
      }
      iVar10 = 0;
      do {
        FUN_00400d30(&local_f8,0,0xff);
        iVar10 = iVar10 + 1;
        lVar4 = random();
        uVar9 = local_ec & 0xffff;
        if (uVar9 == 0) {
          trap(0x1c00);
        }
        lVar5 = random();
        if (local_ec >> 0x10 == 0) {
          trap(0x1c00);
        }
        dot(&local_ec,lVar4 % (int)uVar9 & 0xffff,lVar5 % (int)(local_ec >> 0x10) & 0xffff,
            local_f8 & 0xffffff);
      } while (iVar10 != 0x32);
      iVar10 = 0;
      for (; (iVar10 < DAT_00415038 && ((void *)*local_4c != (void *)0x0)); local_4c = local_4c + 1)
      {
        iVar10 = iVar10 + 1;
        free((void *)*local_4c);
        *local_4c = 0;
      }
      iVar10 = write_jpeg(PTR_s__var_rndimg_jpeg_00415040,local_e8,local_ec & 0xffff,local_ec._2_2_,
                          PTR_s_Alphanetworks_00415048);
      if (iVar10 != 0) {
        error_exit("failed to encode image");
      }
      fprintf(_stderr,"output %s(%dX%d)\n",PTR_s__var_rndimg_jpeg_00415040,local_ec & 0xffff,
              local_ec >> 0x10);
      free_image(&local_ec);
      return 0;
    }
    if (iVar10 == 0x68) break;
    if (iVar10 < 0x69) {
      if (iVar10 == 99) {
        PTR_s_Alphanetworks_00415048 = _optarg;
      }
      else if (iVar10 == 0x66) {
        PTR_s__var_rndimg_jpeg_00415040 = _optarg;
      }
      else {
        if (iVar10 != 0x44) {
LAB_004013e8:
          iVar10 = -1;
          goto LAB_004013ec;
        }
        g_default_auth = 1;
      }
    }
    else {
      if (iVar10 == 0x74) goto LAB_004013ac;
      if (iVar10 == 0x77) {
        DAT_00415030 = atoi(_optarg);
        if (DAT_00415030 == 0) {
          pcVar2 = "invalid picture width.\n";
          goto LAB_004013d4;
        }
      }
      else {
        if (iVar10 != 0x70) goto LAB_004013e8;
        PTR_s_fonts_00415044 = _optarg;
      }
    }
  }
  iVar10 = 0;
LAB_004013ec:
  printf("RNDIMGAE v0.0.1\nUsage: %s [OPTION] message\n    -h\tshow this help message.\n    -f\tset ouput file name (default is \"/var/rndimg.jpeg\").\n    -p\tset ouput file name (default is \"fonts\").\n    -c\tset ouput file comment (default is \"Alphanetworks\").\n    -w\tset ouput file width (default is %d).\n    -t\tset ouput file height (default is %d).\n    -D\tUse default message and save file.\n"
         ,DAT_00415430,500,200);
  goto LAB_0040141c;
LAB_004013ac:
  DAT_00415034 = atoi(_optarg);
  if (DAT_00415034 == 0) {
    pcVar2 = "invalid picture height.\n";
LAB_004013d4:
    error_exit(pcVar2);
  }
  goto LAB_00401430;
}