# Batman - The Telltale Series 1.0.4
# BID: A3A998AF3252D110

DECLARATIONS:
  -
    type: code
    name: tripleBuffer
    instructions: [
      [stp, x29, x30, [sp, -16], "!"],
      [mov, x29, sp],
      [ldr, x0, [x26, 0x10]],
      [cbz, x0, :goto1],
      [adrp, x8, 0x1758000],
      [ldr, x8, [x8, 0x90]],
      [ldr, x8, [x8]],
      [blr, x8],
      [b, :goto2],
      :goto1, [mov, w0, 0xc0],
      [bl, 0x735480],
      [str, x0, [x26, 0x10]],
      :goto2, [ldr, x22, [x27]],
      [adrp, x27, 0x1757000],
      [ldr, x21, [x25]],
      [ldr, x27, [x27, 0xf38]],
      [adrp, x23, 0x1758000],
      [ldr, x8, [x27]],
      [ldr, x23, [x23, 0xa70]],
      [mov, x0, x23],
      [blr, x8],
      [mov, x2, x0],
      [mov, x0, x21],
      [mov, x1, x22],
      [bl, 0x1a90],
      [mov, x21, x0],
      [ldr, x0, [x25]],
      [bl, 0x1ad0],
      [ldr, x8, [x28]],
      [mov, x1, x0],
      [mov, x0, x23],
      [mov, x2, x21],
      [blr, x8],
      [ldr, x0, [x26, 0x10]],
      [ldr, x8, [x24]],
      [mov, x1, x23],
      [blr, x8],
      [adrp, x22, 0x1758000],
      [ldp, x29, x30, [sp], 16],
      [ret]
    ]    

MASTER_WRITE:
# Remove double buffer
  -
    type: asm_a64
    main_offset: 0x6440
    instructions: [
      [mov, w2, 3],
      [madd, x1, x8, x2, x9]
    ]
  -
    type: bytes
    main_offset: 0xC5A6D8
    value_type: uint32
    value: 0x188CC50
  -
    type: bytes
    main_offset: 0x1758A90
    value_type: uint32
    value: 0x188CC50
  -
    type: asm_a64
    main_offset: 0x5EE8
    instructions: [
      [bl, _tripleBuffer()]
    ]
  -
    type: asm_a64
    main_offset: 0x5FC0
    instructions: [
      [mov, w1, 3]
    ]
  -
    type: asm_a64
    main_offset: 0x5F8C
    instructions: [
      [mov, x2, 0x1950000]
    ]

