void FUN_0040207c(uint param_1)
{
byte bVar1;
int iVar2;
int iVar3;
ushort *puVar4;
iVar3 = (int)((param_1 - 1) * 0x1000000) >> 0x18;
puVar4 = (ushort *)(&DAT_00404f20 + iVar3 * 2);
for (; -1 < iVar3; iVar3 = (iVar3 + -1) * 0x1000000 >> 0x18) {
iVar2 = (DAT_004152f6 - 1) * 0x1000000;
if ((param_1 >> 0x10 & (uint)*puVar4) != 0) {
DAT_00415540 = (&DAT_00404f20)[(char)DAT_004152f6 * 2] | DAT_00415540;
}
DAT_004152f6 = (byte)((uint)iVar2 >> 0x18);
if (iVar2 >> 0x18 < 0) {
bVar1 = DAT_00415540;
if (DAT_00415540 == 0xff) {
fputc(0xff,DAT_0041857c);
bVar1 = 0;
}
fputc((int)bVar1,DAT_0041857c);
DAT_004152f6 = 7;
DAT_00415540 = 0;
}
puVar4 = puVar4 + -1;
}
return;
}