undefined4
FUN_0040b9dc(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;
}