int FUN_004082bc(FILE *param_1,uint param_2,undefined4 param_3)
{
size_t sVar1;
int iVar2;
uint __n;
uint uVar3;
int iVar4;
undefined1 auStack_480 [88];
undefined1 auStack_428 [1028];
uVar3 = param_2;
if (param_2 == 0) {
uVar3 = 0x400;
}
MD5Init(auStack_480);
iVar4 = 0;
while( true ) {
iVar2 = feof(param_1);
if (iVar2 != 0) break;
iVar2 = ferror(param_1);
if ((iVar2 != 0) || (uVar3 == 0)) break;
__n = uVar3;
if (0x400 < uVar3) {
__n = 0x400;
}
sVar1 = fread(auStack_428,1,__n,param_1) //possible issue identified - semgrep
if (sVar1 != 0) {
iVar4 = iVar4 + sVar1 //possible issue identified - semgrep
MD5Update(auStack_480,auStack_428,sVar1);
}
if (param_2 != 0) {
uVar3 = uVar3 - sVar1;
}
}
MD5Final(param_3,auStack_480);
return iVar4;
}