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