/* WARNING: Removing unreachable block (ram,0x004097b8) */
/* WARNING: Removing unreachable block (ram,0x00409814) */
int FUN_0040972c(undefined1 param_1,int *param_2,undefined1 *param_3,int param_4,int param_5,
undefined4 param_6,uint param_7)
{
ushort uVar1;
int iVar2;
int iVar3;
int iVar4;
int iVar5;
undefined1 local_20;
undefined1 uStack_1f;
if (param_5 == 1) {
*param_3 = param_1;
param_3[1] = 0;
}
else if (*param_2 == 0) {
warn("write-assns-list: No list was generated, empty list written\n");
param_3[1] = 0;
*param_3 = 0;
}
else {
param_7 = param_7 / 10;
iVar3 = param_2[1] - param_7;
if (param_7 < (uint)param_2[1]) {
if (param_4 - 2U < (uint)(iVar3 * 10)) {
iVar3 = (int)(param_4 - 2U) / 10;
iVar4 = (iVar3 * 5 + 1) * 2;
uVar1 = (ushort)iVar4 & 0x7ffe | 0x8000;
}
else {
param_2[1] = 0;
iVar4 = (iVar3 * 5 + 1) * 2;
uVar1 = (short)iVar4 - 2;
}
uStack_1f = (undefined1)uVar1;
local_20 = (undefined1)(uVar1 >> 8);
param_3[1] = uStack_1f;
iVar5 = param_7 * 10;
*param_3 = local_20;
param_3 = param_3 + 2;
for (; iVar3 != 0; iVar3 = iVar3 + -1) {
memcpy(param_3,(void *)(*param_2 + iVar5),6) //possible issue identified - semgrep
iVar2 = *param_2;
param_3[6] = *(undefined1 *)(iVar2 + iVar5 + 6);
param_3[7] = *(undefined1 *)(iVar2 + iVar5 + 7);
iVar2 = *param_2 + iVar5;
iVar5 = iVar5 + 10;
param_3[8] = *(undefined1 *)(iVar2 + 8);
param_3[9] = 0;
param_3 = param_3 + 10;
}
return iVar4;
}
warn("write-assns-list: Offset too big, empty list written\n");
param_3[1] = 0;
*param_3 = 0;
param_2[1] = 0;
}
return 2;
}