void FUN_00408be4(char *param_1)

{
  bool bVar1;
  int iVar2;
  FILE *__stream;
  size_t sVar3;
  FILE *__s;
  uint uVar4;
  char *__s1;
  uint uVar5;
  uint uVar6;
  size_t sVar7;
  uint uVar8;
  undefined4 *puVar9;
  char *__s2;
  int local_450;
  ushort local_44a;
  uint local_448;
  undefined1 auStack_444 [1028];
  undefined4 *local_40;
  int local_3c;
  uint local_38;
  int *local_34;
  undefined1 *local_30;
  
  if (DAT_00422ad4 == 0) {
    puts("SEAMA: need meta for searching image.");
  }
  else {
    local_40 = &DAT_00422ad8;
    local_30 = auStack_444;
    local_3c = 0;
    for (local_38 = 0; local_38 < DAT_00422ad0; local_38 = local_38 + 1) {
      iVar2 = FUN_00408408(*local_40,0);
      if (iVar2 < 0) {
        printf("SEAMA: \'%s\' is not a seama file !\n",(char *)*local_40);
      }
      else {
        __stream = fopen((char *)*local_40,"r")   //possible issue identified - semgrep
        if (__stream != (FILE *)0x0) {
          local_34 = &local_450;
LAB_00408f78:
          do {
            iVar2 = feof(__stream);
            if (((iVar2 != 0) || (iVar2 = ferror(__stream), iVar2 != 0)) ||
               (fread(local_34,0xc,1,__stream), local_450 != 0x17a4a35e)) goto LAB_00408fb0;
            sVar7 = local_448 << 0x18 | local_448 >> 0x18 | (local_448 & 0xff0000) >> 8 |
                    (local_448 & 0xff00) << 8   //possible issue identified - semgrep
            uVar6 = (local_44a & 0xff) << 8 | (uint)(local_44a >> 8);
            if (sVar7 == 0) goto LAB_00408d6c;
            fread(local_30,1,0x10,__stream)   //possible issue identified - semgrep
            bVar1 = sVar7 < 0x401;
            if (uVar6 != 0) {
              fread(local_30,1,uVar6,__stream)   //possible issue identified - semgrep
              uVar4 = DAT_00422ad4;
              puVar9 = &DAT_00422cd8;
              for (uVar8 = 0; uVar5 = 0, uVar8 < uVar4; uVar8 = uVar8 + 1) {
                __s2 = (char *)*puVar9;
                while( true ) {
                  __s1 = local_30 + uVar5;
                  iVar2 = strcmp(__s1,__s2);
                  if (iVar2 == 0) break;
                  sVar3 = strlen(__s1);
                  uVar5 = uVar5 + sVar3 + 1;
                  bVar1 = sVar7 < 0x401;
                  if (uVar6 <= uVar5) goto LAB_00408f30;
                }
                puVar9 = puVar9 + 1;
              }
              printf("SEAMA: found image @ \'%s\', image size: %d\n",*local_40,sVar7);
              __s = fopen(param_1,"w")   //possible issue identified - semgrep
              if (__s == (FILE *)0x0) {
                printf("SEAMA: unable to open \'%s\' for writting.\n",param_1);
              }
              else {
                do {
                  uVar6 = sVar7;
                  if (0x400 < sVar7) {
                    uVar6 = 0x400;
                  }
                  sVar3 = fread(local_30,1,uVar6,__stream)   //possible issue identified - semgrep
                  sVar7 = sVar7 - sVar3;
                } while ((sVar3 != 0) && (fwrite(local_30,1,sVar3,__s), sVar7 != 0));
                fclose(__s);
              }
              local_3c = local_3c + 1;
LAB_00408fb0:
              fclose(__stream);
              if (local_3c != 0) {
                return;
              }
              break;
            }
LAB_00408f30:
            do {
              sVar3 = sVar7;
              if (!bVar1) {
                sVar3 = 0x400   //possible issue identified - semgrep
              }
              sVar3 = fread(local_30,1,sVar3,__stream)   //possible issue identified - semgrep
              sVar7 = sVar7 - sVar3;
            } while ((sVar3 != 0) && (bVar1 = sVar7 < 0x401, sVar7 != 0));
          } while( true );
        }
      }
      local_40 = local_40 + 1;
    }
  }
  return;
LAB_00408d6c:
  do {
    if (uVar6 == 0) break;
    uVar4 = uVar6;
    if (0x400 < uVar6) {
      uVar4 = 0x400;
    }
    sVar7 = fread(local_30,1,uVar4,__stream)   //possible issue identified - semgrep
    uVar6 = uVar6 - sVar7;
  } while (sVar7 != 0);
  goto LAB_00408f78;
}