int FUN_00409188(undefined1 param_1,void *param_2,undefined1 *param_3,int param_4,int param_5,
int param_6)
{
ushort uVar1;
uint uVar2;
int iVar3;
uint __n;
uVar2 = 0;
do {
__n = uVar2;
uVar2 = __n + 2;
} while (*(short *)((int)param_2 + __n) != 0);
iVar3 = 0;
if ((int)(__n + 1) < param_4) {
uVar2 = __n & 0xffff;
if (param_5 == 0) {
g_short_reorder_buffer._0_1_ = (undefined1)(uVar2 >> 8);
uVar1 = (ushort)(uVar2 << 8) | (ushort)(uVar2 >> 8);
*param_3 = (undefined1)g_short_reorder_buffer;
g_short_reorder_buffer = uVar1;
param_3[1] = g_short_reorder_buffer._1_1_;
}
else {
*param_3 = param_1;
if (param_6 != 0) {
param_3[1] = 0;
return 2;
}
param_3[1] = (char)__n;
}
memcpy(param_3 + 2,param_2,__n) //possible issue identified - semgrep
iVar3 = __n + 2;
}
return iVar3;
}