int FUN_0040e75c(size_t *param_1)

{
  bool bVar1;
  int *piVar2;
  int iVar3;
  int *piVar4;
  int iVar5;
  size_t __n;
  
  if (DAT_004410bc != (int *)0x0) {
    __n = *param_1;
    piVar4 = DAT_004410bc;
    do {
      iVar5 = piVar4[2];
      if ((*(size_t *)(iVar5 + 8) == __n) &&
         (iVar3 = memcmp(*(void **)(iVar5 + 0xc),(void *)param_1[1],__n), iVar3 == 0)) {   //possible issue identified - semgrep
        iVar3 = *piVar4;
        if (iVar3 == 0) {
          DAT_004410c0 = (int *)piVar4[1];
        }
        else {
          *(int *)(iVar3 + 4) = piVar4[1];
        }
        *(int *)piVar4[1] = iVar3;
        bVar1 = DAT_004410bc != (int *)0x0;
        *piVar4 = (int)DAT_004410bc;
        piVar2 = piVar4;
        if (bVar1) {
          *(int **)((int)DAT_004410bc + 4) = piVar4;
          piVar2 = DAT_004410c0;
        }
        DAT_004410c0 = piVar2;
        DAT_004410bc = piVar4;
        piVar4[1] = (int)&DAT_004410bc;
        return iVar5;
      }
      piVar4 = (int *)*piVar4;
    } while (piVar4 != (int *)0x0);
  }
  return 0;
}