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