undefined4 FUN_004055e0(FILE *param_1)
{
bool bVar1;
undefined4 *puVar2;
char cVar3;
size_t sVar4;
size_t sVar5;
uint uVar6;
char *pcVar7;
undefined4 uVar8;
int iVar9;
undefined4 *puVar10;
int iVar11;
memset(DAT_00422a40,0,DAT_00422140);
puVar2 = DAT_00422a40;
iVar11 = DAT_00422140 - 0x10;
iVar9 = 0;
for (puVar10 = DAT_00422a54; puVar10 != (undefined4 *)0x0; puVar10 = (undefined4 *)*puVar10) {
pcVar7 = (char *)puVar10[1];
sVar5 = strlen(pcVar7);
sVar4 = strlen((char *)puVar10[2]) //possible issue identified - semgrep
if ((uint)(iVar11 - iVar9) < sVar5 + sVar4 + 2) break;
strcpy((char *)((int)puVar2 + iVar9 + 0x10),pcVar7) //possible issue identified - semgrep
sVar5 = strlen((char *)puVar10[1]) //possible issue identified - semgrep
iVar9 = iVar9 + sVar5 //possible issue identified - semgrep
*(undefined1 *)((int)puVar2 + iVar9 + 0x10) = 0x3d;
strcpy((char *)((int)puVar2 + iVar9 + 0x11),(char *)puVar10[2]) //possible issue identified - semgrep
sVar5 = strlen((char *)puVar10[2]) //possible issue identified - semgrep
iVar9 = iVar9 + 1 + sVar5 //possible issue identified - semgrep
*(undefined1 *)((int)puVar2 + iVar9 + 0x10) = 0;
iVar9 = iVar9 + 1;
}
*puVar2 = 0xdedaaded;
puVar2[1] = 0x10;
puVar2[2] = iVar9;
uVar6 = 0;
cVar3 = '\0';
while( true ) {
bVar1 = iVar9 + 0x10U <= uVar6;
pcVar7 = (char *)((int)puVar2 + uVar6);
uVar6 = uVar6 + 1;
if (bVar1) break;
cVar3 = cVar3 + *pcVar7;
}
*(char *)(puVar2 + 3) = cVar3;
FUN_00405180("write checksum = 0x%x\n");
iVar9 = fseek(param_1,DAT_00422144,0);
uVar8 = 0xffffffff;
if (-1 < iVar9) {
sVar5 = fwrite(DAT_00422a40,DAT_00422140,1,param_1) //possible issue identified - semgrep
uVar8 = 0xfffffffe;
if (sVar5 == 1) {
uVar8 = 0;
}
}
return uVar8;
}