undefined4 iptc_replace_entry(undefined4 param_1,void *param_2,uint param_3,int param_4)
{
int iVar1;
int *piVar2;
int *__ptr;
int iVar3;
uint uVar4;
iptc_fn = iptc_replace_entry;
iVar1 = (*(code *)0x1f1c)(param_1,param_4);
if (iVar1 == 0) {
piVar2 = __errno_location();
iVar1 = 2;
}
else {
uVar4 = *(uint *)(iVar1 + 0x50);
if (param_3 < uVar4) {
if (uVar4 >> 1 < param_3 + 1) {
iVar3 = 0;
for (piVar2 = *(int **)(iVar1 + 0x58); iVar3 = iVar3 + 1, piVar2 != (int *)(iVar1 + 0x54);
piVar2 = (int *)piVar2[1]) {
if (iVar3 == uVar4 - param_3) goto LAB_00013a28;
}
piVar2 = (int *)0x0;
}
else {
uVar4 = 0;
for (piVar2 = *(int **)(iVar1 + 0x54); uVar4 = uVar4 + 1, piVar2 != (int *)(iVar1 + 0x54);
piVar2 = (int *)*piVar2) {
if (uVar4 == param_3 + 1) goto LAB_00013a28;
}
piVar2 = (int *)0x0;
}
LAB_00013a28:
__ptr = (int *)(*(code *)0x1204)(iVar1,*(undefined2 *)((int)param_2 + 0x5a));
if (__ptr != (int *)0x0) {
memcpy(__ptr + 10,param_2,(size_t)*(undefined2 *)((int)param_2 + 0x5a)) //possible issue identified - semgrep
__ptr[3] = 3;
iVar1 = (*(code *)0x30c4)(param_4,__ptr);
if (iVar1 == 0) {
free(__ptr);
return 0;
}
iVar1 = *piVar2;
*__ptr = iVar1;
*(int **)(iVar1 + 4) = __ptr;
*piVar2 = (int)__ptr;
__ptr[1] = (int)piVar2;
(*(code *)0x13d8)(piVar2);
*(undefined4 *)(param_4 + 4) = 1;
return 1;
}
piVar2 = __errno_location();
iVar1 = 0xc;
}
else {
piVar2 = __errno_location();
iVar1 = 7;
}
}
*piVar2 = iVar1;
return 0;
}