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

undefined4 ip6tc_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;
  int iVar6;
  int iVar7;
  undefined4 *puVar8;
  uint uVar9;
  void *pvVar10;
  int iVar11;
  undefined4 *puVar12;
  ushort *puVar13;
  ushort *puVar14;
  uint uVar15;
  uint uVar16;
  void *__dest;
  undefined4 *__s2;
  
  iptc_fn = ip6tc_delete_entry;
  iVar4 = (*(code *)0x2144)(param_1,param_4);
  if (iVar4 != 0) {
    __ptr = (void *)(*(code *)0x142c)(iVar4,*(undefined2 *)((int)param_2 + 0x8e));
    if (__ptr == (void *)0x0) {
      piVar5 = __errno_location();
      iVar4 = 0xc;
      goto LAB_000143f8;
    }
    __dest = (void *)((int)__ptr + 0x28);
    memcpy(__dest,param_2,(uint)*(ushort *)((int)param_2 + 0x8e))   //possible issue identified - semgrep
    *(undefined4 *)((int)__ptr + 0xc) = 0;
    iVar6 = (*(code *)0x32ec)(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); __s2 = puVar12 + 10,
        puVar12 != (undefined4 *)(iVar4 + 0x54); puVar12 = (undefined4 *)*puVar12) {
      iVar6 = memcmp((void *)((int)__ptr + 0x28),__s2,0x10);
      if (iVar6 == 0) {
        iVar6 = memcmp((void *)((int)__ptr + 0x38),puVar12 + 0xe,0x10);
        if (iVar6 == 0) {
          iVar6 = memcmp((void *)((int)__ptr + 0x48),puVar12 + 0x12,0x10);
          if ((((iVar6 == 0) &&
               (iVar6 = memcmp((void *)((int)__ptr + 0x58),puVar12 + 0x16,0x10), iVar6 == 0)) &&
              (*(int *)((int)__ptr + 0xa8) == puVar12[0x2a])) &&
             (*(char *)((int)__ptr + 0xac) == *(char *)(puVar12 + 0x2b))) {
            iVar6 = 0;
            puVar8 = __s2;
            pvVar10 = __dest;
            do {
              bVar1 = *(byte *)(puVar8 + 0x18);
              if (((bVar1 != *(byte *)((int)pvVar10 + 0x60)) ||
                  ((bVar1 & *(byte *)((int)pvVar10 + 0x40)) != (*(byte *)(puVar8 + 0x10) & bVar1)))
                 || ((bVar1 = *(byte *)(puVar8 + 0x1c), bVar1 != *(byte *)((int)pvVar10 + 0x70) ||
                     (iVar6 = iVar6 + 1,
                     (bVar1 & *(byte *)((int)pvVar10 + 0x50)) != (*(byte *)(puVar8 + 0x14) & bVar1))
                     ))) goto LAB_000143b4;
              pvVar10 = (void *)((int)pvVar10 + 1);
              puVar8 = (undefined4 *)((int)puVar8 + 1);
            } while (iVar6 != 0x10);
            if (*(int *)((int)__ptr + 0xb4) == puVar12[0x2d]) {
              uVar2 = *(ushort *)((int)__ptr + 0xb4);
              iVar6 = param_3 + 0xa8;
              for (uVar16 = 0xa8; uVar16 < uVar2; uVar16 = uVar16 + uVar15) {
                puVar13 = (ushort *)((int)__dest + uVar16);
                uVar15 = (uint)*puVar13;
                puVar14 = (ushort *)((int)puVar12 + (int)puVar13 + (0xd0 - ((int)__ptr + 0xd0)));
                if (*puVar14 != uVar15) goto LAB_000143b4;
                iVar11 = strcmp((char *)(puVar13 + 1),(char *)(puVar14 + 1));
                if (iVar11 != 0) goto LAB_000143b4;
                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_000143b4;
                }
                iVar6 = iVar6 + 0x20 + uVar9;
              }
              if ((iVar6 != -0x20) && (iVar11 = *(int *)((int)__ptr + 0x1c), iVar11 == puVar12[7]))
              {
                puVar13 = (ushort *)((int)__dest + (uint)*(ushort *)((int)__ptr + 0xb4));
                puVar14 = (ushort *)((int)__s2 + (uint)*(ushort *)(puVar12 + 0x2d));
                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_00014348;
                        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_00014348;
                    if (iVar11 != 3) {
                      fprintf(_stderr,(char *)0x5534)   //possible issue identified - semgrep
                    /* WARNING: Subroutine does not return */
                      abort();
                    }
                    uVar16 = *(uint *)((int)__ptr + 0x20) ^ puVar12[8];
                  }
                  if (uVar16 == 0) {
LAB_00014348:
                    if (puVar12 == *(undefined4 **)(param_4 + 0x14)) {
                      *(undefined4 *)(param_4 + 0x14) = puVar12[1];
                    }
                    *(int *)(iVar4 + 0x50) = *(int *)(iVar4 + 0x50) + -1;
                    (*(code *)0x1600)(puVar12);
                    *(undefined4 *)(param_4 + 4) = 1;
                    free(__ptr);
                    return 1;
                  }
                }
              }
            }
          }
        }
      }
LAB_000143b4:
    }
    free(__ptr);
  }
  piVar5 = __errno_location();
  iVar4 = 2;
LAB_000143f8:
  *piVar5 = iVar4;
  return 0;
}