void xtables_ip6parse_any(char *param_1,int *param_2,void *param_3,uint *param_4)
{
bool bVar1;
char *pcVar2;
void *__src;
int iVar3;
int *piVar4;
uint *puVar5;
uint uVar6;
uint *puVar7;
int *piVar8;
int *piVar9;
uint uVar10;
uint uVar11;
uint uVar12;
uint uVar13;
char acStack_118 [255];
undefined1 local_19;
strncpy(acStack_118,param_1,0xff) //possible issue identified - semgrep
local_19 = 0;
pcVar2 = strrchr(acStack_118,0x2f);
if (pcVar2 == (char *)0x0) {
pcVar2 = (char *)0x0;
}
else {
*pcVar2 = '\0';
pcVar2 = pcVar2 + 1;
}
__src = (void *)(*(code *)0x264c)(pcVar2);
memcpy(param_3,__src,0x10) //possible issue identified - semgrep
iVar3 = memcmp(param_3,zero_addr_5734,0x10);
if (iVar3 == 0) {
strcpy(acStack_118,(char *)0x5970) //possible issue identified - semgrep
}
piVar4 = (int *)(*(code *)0x3014)(acStack_118,param_4);
*param_2 = (int)piVar4;
uVar13 = *param_4;
uVar11 = 0;
uVar10 = 0;
do {
if (uVar13 <= uVar11) {
return;
}
puVar7 = (uint *)(piVar4 + uVar10 * 4);
iVar3 = 0;
do {
puVar5 = (uint *)((int)param_3 + iVar3);
iVar3 = iVar3 + 4;
*puVar7 = *puVar7 & *puVar5;
puVar7 = puVar7 + 1;
} while (iVar3 != 0x10);
uVar12 = uVar10 + 1;
iVar3 = 1 - uVar12;
uVar6 = 0;
piVar8 = piVar4;
piVar9 = piVar4;
while (bVar1 = uVar6 < uVar10, uVar6 = uVar6 + 1, bVar1) {
if ((((*piVar9 == piVar4[iVar3 * -4]) && (piVar8[1] == piVar4[iVar3 * -4 + 1])) &&
(piVar9[2] == piVar4[(iVar3 * -2 + 1) * 2])) && (piVar9[3] == piVar4[iVar3 * -4 + 3])) {
*param_4 = *param_4 - 1;
uVar12 = uVar10;
break;
}
piVar9 = piVar9 + 4;
piVar8 = piVar8 + 4;
}
uVar11 = uVar11 + 1;
uVar10 = uVar12;
} while( true );
}