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

undefined4 FUN_00403270(void *param_1,void *param_2,int param_3)

{
  int iVar1;
  int *piVar2;
  int *piVar3;
  uint uVar4;
  undefined4 uVar5;
  uint uVar6;
  byte *pbVar7;
  
  uVar5 = 0xffffffff;
  if (*(char *)((int)param_2 + 0x22) == '\x02') {
    memcpy(param_1,param_2,0x24)   //possible issue identified - semgrep
    pbVar7 = (byte *)((int)param_2 + 0x24);
    for (param_3 = param_3 + -0x24; uVar5 = 0, 0 < param_3; param_3 = param_3 - uVar6) {
      uVar4 = (uint)*pbVar7;
      uVar6 = (*(ushort *)(pbVar7 + uVar4 + 1) & 0xff) << 8 |
              (uint)(*(ushort *)(pbVar7 + uVar4 + 1) >> 8);
      if ((param_3 < (int)uVar6) || (uVar6 <= uVar4 + 2)) {
        fputs("Length error while parsing neap packet!\n",_stderr);
        return 0xffffffff;
      }
      iVar1 = FUN_00402d4c(uVar4,pbVar7 + 1,uVar6 + (-3 - uVar4) & 0xffff,pbVar7 + uVar4 + 3);
      if ((param_1 != (void *)0x0) && (iVar1 != 0)) {
        piVar3 = *(int **)((int)param_1 + 0x24);
        if (*(int **)((int)param_1 + 0x24) == (int *)0x0) {
          *(int *)((int)param_1 + 0x24) = iVar1;
        }
        else {
          do {
            piVar2 = piVar3;
            piVar3 = (int *)*piVar2;
          } while (piVar3 != (int *)0x0);
          *piVar2 = iVar1;
        }
      }
      pbVar7 = pbVar7 + uVar6;
    }
  }
  return uVar5;
}