int FUN_00411e7c(size_t *param_1)
{
bool bVar1;
int *piVar2;
int iVar3;
int *piVar4;
int iVar5;
size_t __n;
if (DAT_0043cd8c != (int *)0x0) {
__n = *param_1;
piVar4 = DAT_0043cd8c;
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_0043cd90 = (int *)piVar4[1];
}
else {
*(int *)(iVar3 + 4) = piVar4[1];
}
*(int *)piVar4[1] = iVar3;
bVar1 = DAT_0043cd8c != (int *)0x0;
*piVar4 = (int)DAT_0043cd8c;
piVar2 = piVar4;
if (bVar1) {
*(int **)((int)DAT_0043cd8c + 4) = piVar4;
piVar2 = DAT_0043cd90;
}
DAT_0043cd90 = piVar2;
DAT_0043cd8c = piVar4;
piVar4[1] = (int)&DAT_0043cd8c;
return iVar5;
}
piVar4 = (int *)*piVar4;
} while (piVar4 != (int *)0x0);
}
return 0;
}