undefined4 cgibin_verify_seamafile(FILE *param_1,char *param_2)
{
size_t sVar1;
size_t sVar2;
int iVar3;
undefined4 uVar4;
uint uVar5;
char *__s2;
uint uVar6;
int iVar7;
int iVar8;
int local_4c0;
ushort local_4ba;
uint local_4b8;
undefined1 auStack_4b4 [16];
undefined1 auStack_4a4 [16];
undefined1 auStack_494 [88];
char acStack_43c [1028];
int *local_38;
undefined1 *local_34;
undefined1 *local_30;
undefined1 *local_2c;
rewind(param_1);
local_38 = &local_4c0;
local_34 = auStack_4a4;
local_30 = auStack_494;
local_2c = auStack_4b4;
iVar8 = 0;
iVar7 = 0;
do {
do {
iVar3 = feof(param_1);
uVar4 = 0;
if (iVar3 != 0) goto LAB_00402ea0;
iVar3 = ferror(param_1);
if ((iVar3 != 0) || (sVar1 = fread(local_38,1,0xc,param_1), sVar1 == 0)) { //possible issue identified - semgrep
uVar4 = 0;
goto LAB_00402ea0;
}
if (sVar1 != 0xc) {
LAB_00402e9c:
uVar4 = 0xffffffff;
goto LAB_00402ea0;
}
uVar4 = 0xffffffff;
if (local_4c0 != 0x17a4a35e) goto LAB_00402ea0;
uVar5 = (local_4ba & 0xff) << 8 | (uint)(local_4ba >> 8);
if (0x400 < uVar5) goto LAB_00402e9c;
uVar6 = local_4b8 << 0x18 | local_4b8 >> 0x18 | (local_4b8 & 0xff0000) >> 8 |
(local_4b8 & 0xff00) << 8;
if (uVar6 != 0) {
sVar1 = fread(local_34,1,0x10,param_1) //possible issue identified - semgrep
uVar4 = 0xffffffff;
if (sVar1 != 0x10) goto LAB_00402ea0;
}
if (uVar5 != 0) {
sVar1 = fread(acStack_43c,1,uVar5,param_1) //possible issue identified - semgrep
if (sVar1 != uVar5) goto LAB_00402e9c;
if (param_2 != (char *)0x0) {
uVar5 = 0;
do {
__s2 = acStack_43c + uVar5;
iVar3 = strcasecmp(param_2,__s2);
if (iVar3 == 0) {
iVar8 = iVar8 + (uint)(uVar6 == 0);
iVar7 = iVar7 + 1;
}
sVar2 = strlen(__s2);
uVar5 = uVar5 + sVar2 + 1;
} while (uVar5 < sVar1);
}
}
} while (uVar6 == 0);
MD5Init(local_30);
do {
iVar3 = feof(param_1);
if (iVar3 != 0) break;
iVar3 = ferror(param_1);
if (iVar3 != 0) break;
uVar5 = uVar6;
if (0x400 < uVar6) {
uVar5 = 0x400;
}
sVar1 = fread(acStack_43c,1,uVar5,param_1) //possible issue identified - semgrep
uVar6 = uVar6 - sVar1;
MD5Update(local_30,acStack_43c,sVar1);
} while (uVar6 != 0);
MD5Final(local_2c,local_30);
iVar3 = memcmp(local_34,local_2c,0x10);
uVar4 = 0xffffffff;
} while (iVar3 == 0);
LAB_00402ea0:
if ((param_2 != (char *)0x0) && (iVar7 == 0 && iVar8 == 0)) {
uVar4 = 0xffffffff;
}
return uVar4;
}