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;
}