// c25f13 FUN_c25f13 ok 29 ms, 55 lines, 1914 chars

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_c25f13(void)

{
  ushort uVar1;
  ushort uVar2;
  bool bVar3;
  
  uVar1 = _DAT_7e026e;
  if ((DAT_7e0262 & 1) == 0) {
    uVar2 = CONCAT11(*(undefined1 *)(_DAT_7e0276 + (uint3)_DAT_7e0260),
                     *(undefined1 *)(_DAT_7e0279 + (uint3)_DAT_7e0260)) & 0xfff0;
  }
  else {
    uVar2 = CONCAT11(*(undefined1 *)(_DAT_7e0276 + (uint3)_DAT_7e0260),
                     *(char *)(_DAT_7e0279 + (uint3)_DAT_7e0260) << 4);
  }
  _DAT_7e0263 = 0;
                    /* WARNING: Switch is manually overridden */
  switch(_DAT_7e026a & 0xff) {
  case 0:
    *(char *)(_DAT_7e0273 + (uint3)*(ushort *)(&DAT_c26021 + _DAT_7e026e)) = (char)uVar2;
    *(char *)(_DAT_7e0273 + (uint3)*(ushort *)(&DAT_c2601f + uVar1)) = (char)(uVar2 >> 8);
    return;
  case 4:
    uVar2 = uVar2 >> 1;
  case 3:
    uVar2 = uVar2 >> 1;
  case 2:
    uVar2 = uVar2 >> 1;
  case 1:
    *(char *)(_DAT_7e0273 + (uint3)*(ushort *)(&DAT_c26021 + _DAT_7e026e)) = (char)(uVar2 >> 1);
    *(byte *)(_DAT_7e0273 + (uint3)*(ushort *)(&DAT_c2601f + uVar1)) =
         (byte)(uVar2 >> 9) | *(byte *)(_DAT_7e0273 + (uint3)*(ushort *)(&DAT_c2601f + uVar1));
    return;
  case 5:
    bVar3 = (short)uVar2 < 0;
    uVar2 = uVar2 << 1;
    _DAT_7e0263 = (ushort)bVar3;
  case 6:
    bVar3 = (short)uVar2 < 0;
    uVar2 = uVar2 << 1;
    _DAT_7e0263 = _DAT_7e0263 << 1 | (ushort)bVar3;
  case 7:
    _DAT_7e0263 = _DAT_7e0263 << 1 | (ushort)((short)uVar2 < 0);
    *(char *)(_DAT_7e0273 + (uint3)*(ushort *)(&DAT_c26023 + _DAT_7e026e)) = (char)(uVar2 << 1);
    *(char *)(_DAT_7e0273 + (uint3)*(ushort *)(&DAT_c26021 + uVar1)) =
         (char)((ushort)(uVar2 << 1) >> 8);
    *(byte *)(_DAT_7e0273 + (uint3)*(ushort *)(&DAT_c2601f + uVar1)) =
         DAT_7e0263 | *(byte *)(_DAT_7e0273 + (uint3)*(ushort *)(&DAT_c2601f + uVar1));
    return;
  }
}
