// File: /workspace/github_c_makefile_star2_O0/inolen[P]gdb_server/sh4_server.c
// Function: server_read_reg
static void server_read_reg(void *data, int n, intmax_t *value, int *size) {
  sh4_context_t *ctx = (sh4_context_t *)data;

  if (n < 16) {
    *value = ctx->r[n];
  } else if (n == 16) {
    *value = ctx->pc;
  } else if (n == 17) {
    *value = ctx->pr;
  } else if (n == 18) {
    *value = ctx->gbr;
  } else if (n == 19) {
    *value = ctx->vbr;
  } else if (n == 20) {
    *value = ctx->mach;
  } else if (n == 21) {
    *value = ctx->macl;
  } else if (n == 22) {
    *value = ctx->sr;
  } else if (n == 23) {
    *value = ctx->fpul;
  } else if (n == 24) {
    *value = ctx->fpscr;
  } else if (n < 41) {
    *value = ctx->fr[n - 25];
  } else if (n == 41) {
    *value = ctx->ssr;
  } else if (n == 42) {
    *value = ctx->spc;
  } else if (n < 51) {
    uint32_t *b0 = (ctx->sr & RB) ? ctx->ralt : ctx->r;
    *value = b0[n - 43];
  } else if (n < 59) {
    uint32_t *b1 = (ctx->sr & RB) ? ctx->r : ctx->ralt;
    *value = b1[n - 51];
  }

  *size = 4;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x28(%rbp)
cmpl $0x10, -0xc(%rbp)
jge 0x89fb
movq -0x28(%rbp), %rax
movslq -0xc(%rbp), %rcx
movl 0x20(%rax,%rcx,4), %eax
movl %eax, %ecx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
jmp 0x8c20
cmpl $0x10, -0xc(%rbp)
jne 0x8a16
movq -0x28(%rbp), %rax
movl 0x4(%rax), %eax
movl %eax, %ecx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
jmp 0x8c1e
cmpl $0x11, -0xc(%rbp)
jne 0x8a31
movq -0x28(%rbp), %rax
movl 0xc(%rax), %eax
movl %eax, %ecx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
jmp 0x8c1c
cmpl $0x12, -0xc(%rbp)
jne 0x8a4c
movq -0x28(%rbp), %rax
movl 0x10(%rax), %eax
movl %eax, %ecx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
jmp 0x8c1a
cmpl $0x13, -0xc(%rbp)
jne 0x8a67
movq -0x28(%rbp), %rax
movl 0x14(%rax), %eax
movl %eax, %ecx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
jmp 0x8c18
cmpl $0x14, -0xc(%rbp)
jne 0x8a82
movq -0x28(%rbp), %rax
movl 0x18(%rax), %eax
movl %eax, %ecx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
jmp 0x8c16
cmpl $0x15, -0xc(%rbp)
jne 0x8a9d
movq -0x28(%rbp), %rax
movl 0x1c(%rax), %eax
movl %eax, %ecx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
jmp 0x8c14
cmpl $0x16, -0xc(%rbp)
jne 0x8abb
movq -0x28(%rbp), %rax
movl 0x14c(%rax), %eax
movl %eax, %ecx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
jmp 0x8c12
cmpl $0x17, -0xc(%rbp)
jne 0x8ad9
movq -0x28(%rbp), %rax
movl 0x104(%rax), %eax
movl %eax, %ecx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
jmp 0x8c10
cmpl $0x18, -0xc(%rbp)
jne 0x8af7
movq -0x28(%rbp), %rax
movl 0x158(%rax), %eax
movl %eax, %ecx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
jmp 0x8c0e
cmpl $0x29, -0xc(%rbp)
jge 0x8b1f
movq -0x28(%rbp), %rax
movl -0xc(%rbp), %ecx
subl $0x19, %ecx
movslq %ecx, %rcx
movl 0x84(%rax,%rcx,4), %eax
movl %eax, %ecx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
jmp 0x8c0c
cmpl $0x29, -0xc(%rbp)
jne 0x8b3d
movq -0x28(%rbp), %rax
movl 0x150(%rax), %eax
movl %eax, %ecx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
jmp 0x8c0a
cmpl $0x2a, -0xc(%rbp)
jne 0x8b58
movq -0x28(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, %ecx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
jmp 0x8c08
cmpl $0x33, -0xc(%rbp)
jge 0x8baf
movq -0x28(%rbp), %rax
movl 0x14c(%rax), %eax
andl $0x20000000, %eax       # imm = 0x20000000
cmpl $0x0, %eax
je 0x8b80
movq -0x28(%rbp), %rax
addq $0x60, %rax
movq %rax, -0x40(%rbp)
jmp 0x8b8c
movq -0x28(%rbp), %rax
addq $0x20, %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movl -0xc(%rbp), %ecx
subl $0x2b, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %eax
movl %eax, %ecx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
jmp 0x8c06
cmpl $0x3b, -0xc(%rbp)
jge 0x8c04
movq -0x28(%rbp), %rax
movl 0x14c(%rax), %eax
andl $0x20000000, %eax       # imm = 0x20000000
cmpl $0x0, %eax
je 0x8bd7
movq -0x28(%rbp), %rax
addq $0x20, %rax
movq %rax, -0x48(%rbp)
jmp 0x8be3
movq -0x28(%rbp), %rax
addq $0x60, %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rax
movl -0xc(%rbp), %ecx
subl $0x33, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %eax
movl %eax, %ecx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
jmp 0x8c06
jmp 0x8c08
jmp 0x8c0a
jmp 0x8c0c
jmp 0x8c0e
jmp 0x8c10
jmp 0x8c12
jmp 0x8c14
jmp 0x8c16
jmp 0x8c18
jmp 0x8c1a
jmp 0x8c1c
jmp 0x8c1e
jmp 0x8c20
movq -0x20(%rbp), %rax
movl $0x4, (%rax)
popq %rbp
retq
nopl (%rax)