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