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