/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined4 iptc_delete_entry(undefined4 param_1,void *param_2,int param_3,int param_4)

{
  byte bVar1;
  ushort uVar2;
  int iVar3;
  int iVar4;
  void *__ptr;
  int *piVar5;
  void *__dest;
  int iVar6;
  int iVar7;
  undefined4 *puVar8;
  uint uVar9;
  void *pvVar10;
  int iVar11;
  undefined4 *puVar12;
  ushort *puVar13;
  ushort *puVar14;
  uint uVar15;
  uint uVar16;
  
  iptc_fn = iptc_delete_entry;
  iVar4 = (*(code *)0x1f1c)(param_1,param_4);
  if (iVar4 != 0) {
    __ptr = (void *)(*(code *)0x1204)(iVar4,*(undefined2 *)((int)param_2 + 0x5a));
    if (__ptr == (void *)0x0) {
      piVar5 = __errno_location();
      iVar4 = 0xc;
      goto LAB_00013780;
    }
    __dest = (void *)((int)__ptr + 0x28);
    memcpy(__dest,param_2,(uint)*(ushort *)((int)param_2 + 0x5a))   //possible issue identified - semgrep
    *(undefined4 *)((int)__ptr + 0xc) = 0;
    iVar6 = (*(code *)0x30c4)(param_4,__ptr);
    if (iVar6 == 0) {
      free(__ptr);
      return 0;
    }
    if ((*(int *)((int)__ptr + 0x1c) == 3) && (iVar6 = *(int *)((int)__ptr + 0x20), iVar6 != 0)) {
      *(int *)(iVar6 + 0x2c) = *(int *)(iVar6 + 0x2c) + -1;
    }
    for (puVar12 = *(undefined4 **)(iVar4 + 0x54); puVar12 != (undefined4 *)(iVar4 + 0x54);
        puVar12 = (undefined4 *)*puVar12) {
      if ((((*(int *)((int)__ptr + 0x28) == puVar12[10]) &&
           (*(int *)((int)__ptr + 0x2c) == puVar12[0xb])) &&
          (*(int *)((int)__ptr + 0x30) == puVar12[0xc])) &&
         ((*(int *)((int)__ptr + 0x34) == puVar12[0xd] &&
          (*(int *)((int)__ptr + 0x78) == puVar12[0x1e])))) {
        iVar6 = 0;
        puVar8 = puVar12;
        pvVar10 = __ptr;
        do {
          bVar1 = *(byte *)(puVar8 + 0x16);
          if (((bVar1 != *(byte *)((int)pvVar10 + 0x58)) ||
              ((bVar1 & *(byte *)((int)pvVar10 + 0x38)) != (*(byte *)(puVar8 + 0xe) & bVar1))) ||
             ((bVar1 = *(byte *)(puVar8 + 0x1a), bVar1 != *(byte *)((int)pvVar10 + 0x68) ||
              (iVar6 = iVar6 + 1,
              (bVar1 & *(byte *)((int)pvVar10 + 0x48)) != (*(byte *)(puVar8 + 0x12) & bVar1)))))
          goto LAB_0001373c;
          pvVar10 = (void *)((int)pvVar10 + 1);
          puVar8 = (undefined4 *)((int)puVar8 + 1);
        } while (iVar6 != 0x10);
        if (*(int *)((int)__ptr + 0x80) == puVar12[0x20]) {
          uVar2 = *(ushort *)((int)__ptr + 0x80);
          iVar6 = param_3 + 0x70;
          for (uVar16 = 0x70; uVar16 < uVar2; uVar16 = uVar16 + uVar15) {
            puVar13 = (ushort *)((int)__dest + uVar16);
            uVar15 = (uint)*puVar13;
            puVar14 = (ushort *)((int)puVar12 + (int)puVar13 + (0x98 - ((int)__ptr + 0x98)));
            if (*puVar14 != uVar15) goto LAB_0001373c;
            iVar11 = strcmp((char *)(puVar13 + 1),(char *)(puVar14 + 1));
            if (iVar11 != 0) goto LAB_0001373c;
            uVar9 = 0;
            while (uVar9 < uVar15 - 0x20) {
              iVar3 = uVar9 + 0x20;
              iVar11 = uVar9 + 0x20;
              iVar7 = iVar6 + uVar9;
              uVar9 = uVar9 + 1;
              if (((*(byte *)((int)puVar14 + iVar11) ^ *(byte *)((int)puVar13 + iVar3)) &
                  *(byte *)(iVar7 + 0x20)) != 0) goto LAB_0001373c;
            }
            iVar6 = iVar6 + 0x20 + uVar9;
          }
          if ((iVar6 != -0x20) && (iVar11 = *(int *)((int)__ptr + 0x1c), iVar11 == puVar12[7])) {
            puVar14 = (ushort *)((int)puVar12 + *(ushort *)(puVar12 + 0x20) + 0x28);
            puVar13 = (ushort *)((int)__dest + (uint)uVar2);
            if (iVar11 == 1) {
              uVar2 = *puVar14;
              if ((uint)uVar2 == (uint)*puVar13) {
                iVar11 = strcmp((char *)(puVar13 + 1),(char *)(puVar14 + 1));
                if (iVar11 == 0) {
                  uVar16 = 0;
                  do {
                    if (uVar2 - 0x20 <= uVar16) goto LAB_000136d4;
                    iVar3 = uVar16 + 0x20;
                    iVar11 = uVar16 + 0x20;
                    iVar7 = iVar6 + uVar16;
                    uVar16 = uVar16 + 1;
                  } while (((*(byte *)((int)puVar14 + iVar11) ^ *(byte *)((int)puVar13 + iVar3)) &
                           *(byte *)(iVar7 + 0x20)) == 0);
                }
              }
            }
            else {
              if (iVar11 == 0) {
                uVar16 = *(uint *)(puVar13 + 0x10) ^ *(uint *)(puVar14 + 0x10);
              }
              else {
                if (iVar11 == 2) goto LAB_000136d4;
                if (iVar11 != 3) {
                  fprintf(_stderr,(char *)0x51c4)   //possible issue identified - semgrep
                    /* WARNING: Subroutine does not return */
                  abort();
                }
                uVar16 = *(uint *)((int)__ptr + 0x20) ^ puVar12[8];
              }
              if (uVar16 == 0) {
LAB_000136d4:
                if (puVar12 == *(undefined4 **)(param_4 + 0x14)) {
                  *(undefined4 *)(param_4 + 0x14) = puVar12[1];
                }
                *(int *)(iVar4 + 0x50) = *(int *)(iVar4 + 0x50) + -1;
                (*(code *)0x13d8)(puVar12);
                *(undefined4 *)(param_4 + 4) = 1;
                free(__ptr);
                return 1;
              }
            }
          }
        }
      }
LAB_0001373c:
    }
    free(__ptr);
  }
  piVar5 = __errno_location();
  iVar4 = 2;
LAB_00013780:
  *piVar5 = iVar4;
  return 0;
}