int FUN_00408f6c(undefined1 param_1,undefined1 *param_2,undefined1 *param_3,undefined4 param_4,
int param_5)
{
undefined1 *puVar1;
undefined1 uVar2;
bool bVar3;
ushort uVar4;
uint uVar5;
int iVar6;
undefined1 *__src;
undefined1 *puVar7;
undefined1 *puVar8;
if (param_5 == 1) {
*param_3 = param_1;
param_3[1] = 0;
iVar6 = 2;
}
else {
uVar2 = *param_2;
param_3[5] = 1;
param_3[2] = uVar2;
param_3[3] = 0;
param_3[4] = 0;
puVar7 = param_3 + 7;
param_3[6] = param_2[1];
puVar8 = *(undefined1 **)(param_2 + 0xc);
iVar6 = 0;
while( true ) {
bVar3 = *(int *)(param_2 + 8) <= iVar6;
__src = puVar8 + 4;
iVar6 = iVar6 + 1;
if (bVar3) break;
*puVar7 = 1;
puVar7[1] = 10;
puVar7[2] = *puVar8;
puVar7[3] = puVar8[1];
puVar7[4] = puVar8[2];
puVar1 = puVar8 + 3;
puVar8 = puVar8 + 10;
puVar7[5] = *puVar1;
memcpy(puVar7 + 6,__src,6) //possible issue identified - semgrep
puVar7 = puVar7 + 0xc;
}
puVar7[1] = 4;
*puVar7 = 2;
memcpy(puVar7 + 2,param_2 + 4,4) //possible issue identified - semgrep
iVar6 = (int)(puVar7 + 6) - (int)param_3;
uVar5 = iVar6 - 2U & 0xffff;
g_short_reorder_buffer._0_1_ = (undefined1)(uVar5 >> 8);
uVar4 = (ushort)(uVar5 << 8) | (ushort)(uVar5 >> 8);
*param_3 = (undefined1)g_short_reorder_buffer;
g_short_reorder_buffer = uVar4;
param_3[1] = g_short_reorder_buffer._1_1_;
}
return iVar6;
}