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