undefined4
FUN_0040874c(uint param_1,uint param_2,void *param_3,int *param_4,int param_5,int *param_6)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  uint uVar4;
  undefined4 local_28;
  
  param_2 = param_2 & 0xffff;
  uVar4 = param_2 + 4;
  puVar3 = (undefined4 *)*param_4;
  param_1 = param_1 & 0xffff;
  if ((uint)(param_5 - (int)param_4) < uVar4) {
    uVar2 = dhcp6optstr(param_1);
    dprintf(6,"copy_option","option buffer short for %s",uVar2);
    uVar2 = 0xffffffff;
  }
  else {
    local_28 = CONCAT22((ushort)(param_2 << 8) | (ushort)(param_2 >> 8),
                        (ushort)(param_1 << 8) | (ushort)(param_1 >> 8));
    *puVar3 = local_28;
    if (param_2 != 0) {
      memcpy(puVar3 + 1,param_3,param_2)   //possible issue identified - semgrep
    }
    iVar1 = *param_6;
    *param_4 = (int)puVar3 + uVar4;
    *param_6 = iVar1 + uVar4;
    uVar2 = dhcp6optstr(param_1);
    dprintf(7,"copy_option","set %s (len %d)",uVar2,param_2);
    uVar2 = 0;
  }
  return uVar2;
}