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