// File: donfreiday[P]gb/main.cpp
// Function: imguiLcdStatus()
void imguiLcdStatus() {
  // Position to the right of disassembly window, below register window
  ImGui::SetNextWindowPos(ImVec2(DISASM_WINDOW_WIDTH, REG_WINDOW_HEIGHT));
  ImGui::SetNextWindowSize(ImVec2(REG_WINDOW_WIDTH, LCD_STATUS_WINDOW_HEIGHT));
  ImGui::Begin("lcd stat", nullptr,
               ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize);
  ImGui::Text(
      "%02X FF40 LCDC\n"
      "%02X FF41 STAT\n"
      "%02X FF42 SCY\n"
      "%02X FF43 SCX\n"
      "%02X FF44 LY\n"
      "%02X FF45 LYC\n"
      "%02X FF46 DMA\n"
      "%02X FF47 BGP\n"
      "%02X FF48 OBP0\n"
      "%02X FF49 OBP1\n"
      "%02X FF4A WY\n"
      "%02X FF4B WX\n",
      g_cpu.mmu.memory[0xFF40], g_cpu.mmu.memory[0xFF41],
      g_cpu.mmu.memory[0xFF42], g_cpu.mmu.memory[0xFF43],
      g_cpu.mmu.memory[0xFF44], g_cpu.mmu.memory[0xFF45],
      g_cpu.mmu.memory[0xFF46], g_cpu.mmu.memory[0xFF47],
      g_cpu.mmu.memory[0xFF48], g_cpu.mmu.memory[0xFF49],
      g_cpu.mmu.memory[0xFF4A], g_cpu.mmu.memory[0xFF4B]);
  ImGui::End();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x70, %rsp
leaq -0x28(%rbp), %rdi
movss 0x5979(%rip), %xmm0     # 0x5d5a4
movss 0x3479(%rip), %xmm1     # 0x5b0ac
callq 0x2d280
leaq -0x28(%rbp), %rdi
xorl %esi, %esi
callq 0x19450
leaq -0x30(%rbp), %rdi
movss 0x34d9(%rip), %xmm0     # 0x5b128
movss 0x598d(%rip), %xmm1     # 0x5d5e4
callq 0x2d280
leaq -0x30(%rbp), %rdi
xorl %esi, %esi
callq 0xe790
leaq 0xfeba(%rip), %rdi      # 0x67b28
xorl %eax, %eax
movl %eax, %esi
movl $0x6, %edx
callq 0xe7e0
leaq 0x2c1b5(%rip), %rdi     # 0x83e38
addq $0x18, %rdi
addq $0x8, %rdi
movl $0xff40, %esi           # imm = 0xFF40
callq 0x4f3d0
movzbl (%rax), %eax
movl %eax, -0x4c(%rbp)
leaq 0x2c196(%rip), %rdi     # 0x83e38
addq $0x18, %rdi
addq $0x8, %rdi
movl $0xff41, %esi           # imm = 0xFF41
callq 0x4f3d0
movzbl (%rax), %eax
movl %eax, -0x48(%rbp)
leaq 0x2c177(%rip), %rdi     # 0x83e38
addq $0x18, %rdi
addq $0x8, %rdi
movl $0xff42, %esi           # imm = 0xFF42
callq 0x4f3d0
movzbl (%rax), %eax
movl %eax, -0x44(%rbp)
leaq 0x2c158(%rip), %rdi     # 0x83e38
addq $0x18, %rdi
addq $0x8, %rdi
movl $0xff43, %esi           # imm = 0xFF43
callq 0x4f3d0
movzbl (%rax), %eax
movl %eax, -0x40(%rbp)
leaq 0x2c139(%rip), %rdi     # 0x83e38
addq $0x18, %rdi
addq $0x8, %rdi
movl $0xff44, %esi           # imm = 0xFF44
callq 0x4f3d0
movzbl (%rax), %eax
movl %eax, -0x3c(%rbp)
leaq 0x2c11a(%rip), %rdi     # 0x83e38
addq $0x18, %rdi
addq $0x8, %rdi
movl $0xff45, %esi           # imm = 0xFF45
callq 0x4f3d0
movzbl (%rax), %r12d
leaq 0x2c0fd(%rip), %rdi     # 0x83e38
addq $0x18, %rdi
addq $0x8, %rdi
movl $0xff46, %esi           # imm = 0xFF46
callq 0x4f3d0
movzbl (%rax), %r15d
leaq 0x2c0e0(%rip), %rdi     # 0x83e38
addq $0x18, %rdi
addq $0x8, %rdi
movl $0xff47, %esi           # imm = 0xFF47
callq 0x4f3d0
movzbl (%rax), %r14d
leaq 0x2c0c3(%rip), %rdi     # 0x83e38
addq $0x18, %rdi
addq $0x8, %rdi
movl $0xff48, %esi           # imm = 0xFF48
callq 0x4f3d0
movzbl (%rax), %ebx
leaq 0x2c0a7(%rip), %rdi     # 0x83e38
addq $0x18, %rdi
addq $0x8, %rdi
movl $0xff49, %esi           # imm = 0xFF49
callq 0x4f3d0
movzbl (%rax), %eax
movl %eax, -0x38(%rbp)
leaq 0x2c088(%rip), %rdi     # 0x83e38
addq $0x18, %rdi
addq $0x8, %rdi
movl $0xff4a, %esi           # imm = 0xFF4A
callq 0x4f3d0
movzbl (%rax), %eax
movl %eax, -0x34(%rbp)
leaq 0x2c069(%rip), %rdi     # 0x83e38
addq $0x18, %rdi
addq $0x8, %rdi
movl $0xff4b, %esi           # imm = 0xFF4B
callq 0x4f3d0
movl -0x4c(%rbp), %esi
movl -0x48(%rbp), %edx
movl -0x44(%rbp), %ecx
movl -0x40(%rbp), %r8d
movl -0x3c(%rbp), %r9d
movl -0x38(%rbp), %r11d
movl -0x34(%rbp), %r10d
movzbl (%rax), %eax
leaq 0xfd2d(%rip), %rdi      # 0x67b31
movl %r12d, (%rsp)
movl %r15d, 0x8(%rsp)
movl %r14d, 0x10(%rsp)
movl %ebx, 0x18(%rsp)
movl %r11d, 0x20(%rsp)
movl %r10d, 0x28(%rsp)
movl %eax, 0x30(%rsp)
movb $0x0, %al
callq 0x1a220
callq 0xee30
addq $0x70, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
nopl (%rax)