undefined4 ip6tc_insert_entry(undefined4 param_1,void *param_2,uint param_3,int param_4)

{
  int iVar1;
  int *piVar2;
  undefined4 *__ptr;
  int iVar3;
  undefined4 *puVar4;
  uint uVar5;
  undefined4 *puVar6;
  
  iptc_fn = ip6tc_insert_entry;
  iVar1 = (*(code *)0x2144)(param_1,param_4);
  if (iVar1 == 0) {
    piVar2 = __errno_location();
    iVar1 = 2;
  }
  else {
    uVar5 = *(uint *)(iVar1 + 0x50);
    if (uVar5 < param_3) {
      piVar2 = __errno_location();
      iVar1 = 7;
    }
    else {
      puVar6 = (undefined4 *)(iVar1 + 0x54);
      if (param_3 != uVar5) {
        if (uVar5 >> 1 < param_3 + 1) {
          iVar3 = 0;
          for (puVar6 = *(undefined4 **)(iVar1 + 0x58); iVar3 = iVar3 + 1,
              puVar6 != (undefined4 *)(iVar1 + 0x54); puVar6 = (undefined4 *)puVar6[1]) {
            if (iVar3 == uVar5 - param_3) goto LAB_00013960;
          }
          puVar6 = (undefined4 *)0x0;
        }
        else {
          uVar5 = 0;
          for (puVar6 = *(undefined4 **)(iVar1 + 0x54); uVar5 = uVar5 + 1,
              puVar6 != (undefined4 *)(iVar1 + 0x54); puVar6 = (undefined4 *)*puVar6) {
            if (uVar5 == param_3 + 1) goto LAB_00013960;
          }
          puVar6 = (undefined4 *)0x0;
        }
      }
LAB_00013960:
      __ptr = (undefined4 *)(*(code *)0x142c)(iVar1,*(undefined2 *)((int)param_2 + 0x8e));
      if (__ptr != (undefined4 *)0x0) {
        memcpy(__ptr + 10,param_2,(size_t)*(undefined2 *)((int)param_2 + 0x8e))   //possible issue identified - semgrep
        __ptr[3] = 3;
        iVar3 = (*(code *)0x32ec)(param_4,__ptr);
        if (iVar3 == 0) {
          free(__ptr);
          return 0;
        }
        puVar4 = (undefined4 *)puVar6[1];
        *(int *)(iVar1 + 0x50) = *(int *)(iVar1 + 0x50) + 1;
        *__ptr = puVar6;
        puVar6[1] = __ptr;
        *(undefined4 *)(param_4 + 4) = 1;
        *puVar4 = __ptr;
        __ptr[1] = puVar4;
        return 1;
      }
      piVar2 = __errno_location();
      iVar1 = 0xc;
    }
  }
  *piVar2 = iVar1;
  return 0;
}