// c1891c btl__timer_06_expire_st1f_b7_hp0 ok 77 ms, 54 lines, 2250 chars

/* WARNING: Removing unreachable block (bus,0xc18945) */
/* WARNING: Removing unreachable block (bus,0xc18953) */
/* WARNING: Unknown calling convention */
/* Battle timer channel 6 (table $C1B34B): per-unit countdown; bit $0040 of $B186 marks it pending.
    */

void btl__timer_06_expire_st1f_b7_hp0(void)

{
  ushort uVar1;
  char cVar2;
  undefined1 uVar3;
  undefined1 uVar6;
  ushort uVar5;
  undefined2 in_DP;
  byte in_DBR;
  ushort uVar4;
  
  uVar6 = (undefined1)((ushort)in_DP >> 8);
  cVar2 = (&UNK_00b19e)[(uint3)in_DBR * 0x10000];
  if (cVar2 == '\0') {
    cVar2 = (&UNK_00aee6)[(uint3)in_DBR * 0x10000];
  }
  uVar3 = (&UNK_00b182)[(uint3)in_DBR * 0x10000 + (uint3)CONCAT11(uVar6,cVar2 + -1)];
  uVar4 = CONCAT11(uVar6,uVar3);
  uVar1 = CONCAT11(uVar3,uVar3) >> 1;
  (&UNK_00b017)[(uint3)in_DBR * 0x10000 + (uint3)uVar4] = 1;
  (&UNK_00af88)[(uint3)in_DBR * 0x10000 + (uint3)uVar4] =
       (&UNK_00b135)[(uint3)in_DBR * 0x10000 + (uint3)uVar4];
  if ((*(byte *)((uint3)in_DBR * 0x10000 + (uint3)uVar1 + 0x5e4d) & 0x80) != 0) {
    (&UNK_00af88)[(uint3)in_DBR * 0x10000 + (uint3)uVar4] =
         (byte)(&UNK_00b135)[(uint3)in_DBR * 0x10000 + (uint3)uVar4] >> 1;
  }
  if ((*(byte *)((uint3)in_DBR * 0x10000 + (uint3)uVar1 + 0x5e4b) & 0x20) != 0) {
    (&UNK_00af88)[(uint3)in_DBR * 0x10000 + (uint3)uVar4] =
         (&UNK_00b135)[(uint3)in_DBR * 0x10000 + (uint3)uVar4] << 1;
  }
  uVar5 = CONCAT11((&UNK_00b1a6)[(uint3)in_DBR * 0x10000],(&UNK_00b1a5)[(uint3)in_DBR * 0x10000]) &
          0x1fbf;
  (&UNK_00b1a5)[(uint3)in_DBR * 0x10000] = (char)uVar5;
  (&UNK_00b1a6)[(uint3)in_DBR * 0x10000] = (char)(uVar5 >> 8);
  cVar2 = (&UNK_00b0a6)[(uint3)in_DBR * 0x10000 + (uint3)uVar4];
  (&UNK_00b0a6)[(uint3)in_DBR * 0x10000 + (uint3)uVar4] = cVar2 + -1;
  if ((char)(cVar2 + -1) == '\0') {
    (&UNK_00b0a6)[(uint3)in_DBR * 0x10000 + (uint3)uVar4] = 10;
    *(byte *)((uint3)in_DBR * 0x10000 + (uint3)uVar1 + 0x5e4c) =
         *(byte *)((uint3)in_DBR * 0x10000 + (uint3)uVar1 + 0x5e4c) & 0x7f;
    (&UNK_00b017)[(uint3)in_DBR * 0x10000 + (uint3)uVar4] = (char)in_DP;
    *(undefined1 *)((uint3)in_DBR * 0x10000 + (uint3)uVar1 + 0x5e30) = 0;
    *(undefined1 *)((uint3)in_DBR * 0x10000 + (uint3)uVar1 + 0x5e31) = 0;
  }
  return;
}
