// File: /workspace/github_cpp_makefile_star2_O2/luooofan[P]hblzbd_compiler/src/arm.cpp
// Function: arm::LdrStr::EmitCode(std::ostream&)
void LdrStr::EmitCode(std::ostream& outfile) {
  std::string prefix = this->opkind_ == OpKind::LDR ? "ldr" : "str";
  prefix += CondToString(this->cond_) + " " + std::string(*(this->rd_)) + ", ";
  std::string offset = this->is_offset_imm_ ? "#" + std::to_string(offset_imm_) : std::string(*(this->offset_));
  switch (this->type_) {
    case Type::Norm: {
      prefix += "[" + std::string(*(this->rn_)) + ", " + offset + "]";
      break;
    }
    case Type::Pre: {
      prefix += "[" + std::string(*(this->rn_)) + ", " + offset + "]!";
      break;
    }
    case Type::Post: {
      prefix += "[" + std::string(*(this->rn_)) + "], " + offset;
      break;
    }
    default: {
      MyAssert(0);
      break;
    }
  }
  outfile << "\t" << prefix << std::endl;
}

// Assembly:
pushq %r14
pushq %rbx
subq $0xe8, %rsp
movq %rsi, %rbx
movq %rdi, %r14
cmpl $0x0, 0x14(%rdi)
leaq 0x4c790(%rip), %rax     # 0x56151
leaq 0x4c78d(%rip), %rsi     # 0x56155
cmoveq %rax, %rsi
leaq 0xc8(%rsp), %rdi
leaq 0x88(%rsp), %rdx
callq 0xa292
movl 0x10(%r14), %esi
leaq 0x48(%rsp), %rdi
callq 0x8fbd
leaq 0x4c93c(%rip), %rdx     # 0x56332
leaq 0x68(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0xa440
movq 0x20(%r14), %rsi
leaq 0x28(%rsp), %rdi
callq 0xa3c6
leaq 0x8(%rsp), %rdi
leaq 0x68(%rsp), %rsi
leaq 0x28(%rsp), %rdx
callq 0xa2cd
leaq 0x4c731(%rip), %rdx     # 0x5615f
leaq 0x88(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xa440
leaq 0xc8(%rsp), %rdi
leaq 0x88(%rsp), %rsi
callq 0x8550
leaq 0x88(%rsp), %rdi
callq 0x8578
leaq 0x8(%rsp), %rdi
callq 0x8578
leaq 0x28(%rsp), %rdi
callq 0x8578
leaq 0x68(%rsp), %rdi
callq 0x8578
leaq 0x48(%rsp), %rdi
callq 0x8578
cmpb $0x1, 0x30(%r14)
jne 0x9ac4
movl 0x34(%r14), %esi
leaq 0x8(%rsp), %rdi
callq 0xa36c
leaq 0x4c6cc(%rip), %rsi     # 0x56172
leaq 0x88(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0xa41c
leaq 0x8(%rsp), %rdi
callq 0x8578
jmp 0x9ad5
movq 0x38(%r14), %rsi
leaq 0x88(%rsp), %rdi
callq 0x924e
movl 0x18(%r14), %eax
testl %eax, %eax
je 0x9bff
cmpl $0x1, %eax
je 0x9b7e
cmpl $0x2, %eax
jne 0x9cff
movq 0x28(%r14), %rsi
leaq 0x28(%rsp), %rdi
callq 0xa3c6
leaq 0x4c651(%rip), %rsi     # 0x56159
leaq 0x48(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0xa41c
leaq 0x4c640(%rip), %rdx     # 0x5615e
leaq 0x68(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0xa440
leaq 0x8(%rsp), %rdi
leaq 0x68(%rsp), %rsi
leaq 0x88(%rsp), %rdx
callq 0xa476
leaq 0xc8(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x8550
leaq 0x8(%rsp), %rdi
callq 0x8578
leaq 0x68(%rsp), %rdi
callq 0x8578
leaq 0x48(%rsp), %rdi
callq 0x8578
leaq 0x28(%rsp), %rdi
jmp 0x9cae
movq 0x28(%r14), %rsi
leaq 0xa8(%rsp), %rdi
callq 0xa3c6
leaq 0x4c5c3(%rip), %rsi     # 0x56159
leaq 0x28(%rsp), %rdi
leaq 0xa8(%rsp), %rdx
callq 0xa41c
leaq 0x4c5b0(%rip), %rdx     # 0x5615f
leaq 0x48(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0xa440
leaq 0x68(%rsp), %rdi
leaq 0x48(%rsp), %rsi
leaq 0x88(%rsp), %rdx
callq 0xa476
leaq 0x4d64c(%rip), %rdx     # 0x57228
leaq 0x8(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0xa440
leaq 0xc8(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x8550
jmp 0x9c7e
movq 0x28(%r14), %rsi
leaq 0xa8(%rsp), %rdi
callq 0xa3c6
leaq 0x4c542(%rip), %rsi     # 0x56159
leaq 0x28(%rsp), %rdi
leaq 0xa8(%rsp), %rdx
callq 0xa41c
leaq 0x4c52f(%rip), %rdx     # 0x5615f
leaq 0x48(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0xa440
leaq 0x68(%rsp), %rdi
leaq 0x48(%rsp), %rsi
leaq 0x88(%rsp), %rdx
callq 0xa476
leaq 0x4c4fe(%rip), %rdx     # 0x5615b
leaq 0x8(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0xa440
leaq 0xc8(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x8550
leaq 0x8(%rsp), %rdi
callq 0x8578
leaq 0x68(%rsp), %rdi
callq 0x8578
leaq 0x48(%rsp), %rdi
callq 0x8578
leaq 0x28(%rsp), %rdi
callq 0x8578
leaq 0xa8(%rsp), %rdi
callq 0x8578
leaq 0x4c48e(%rip), %rsi     # 0x56148
movq %rbx, %rdi
callq 0x8240
leaq 0xc8(%rsp), %rsi
movq %rax, %rdi
callq 0x8230
movq %rax, %rdi
callq 0x8170
leaq 0x88(%rsp), %rdi
callq 0x8578
leaq 0xc8(%rsp), %rdi
callq 0x8578
addq $0xe8, %rsp
popq %rbx
popq %r14
retq
movq 0x772e2(%rip), %rdi     # 0x80fe8
leaq 0x4c3db(%rip), %rsi     # 0x560e8
callq 0x8240
leaq 0x4c3d8(%rip), %rsi     # 0x560f1
movq %rax, %rdi
callq 0x8240
leaq 0x4d5f8(%rip), %rsi     # 0x57320
movq %rax, %rdi
callq 0x8240
movq %rax, %rdi
movl $0xdd, %esi
callq 0x84b0
movq %rax, %rdi
callq 0x8170
movl $0xff, %edi
callq 0x8300
jmp 0x9d51
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x8578
jmp 0x9d74
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x8578
jmp 0x9d83
jmp 0x9d71
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x8578
jmp 0x9d94
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x8578
jmp 0x9da3
jmp 0x9d91
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x8578
jmp 0x9db4
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x8578
jmp 0x9dc3
jmp 0x9db1
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x8578
jmp 0x9dcf
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
jmp 0x9dd7
jmp 0x9dcc
movq %rax, %rbx
leaq 0xa8(%rsp), %rdi
callq 0x8578
jmp 0x9e43
jmp 0x9e40
jmp 0x9e40
jmp 0x9e40
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
jmp 0x9e4b
jmp 0x9e3b
jmp 0x9e3b
movq %rax, %rbx
leaq 0x88(%rsp), %rdi
callq 0x8578
jmp 0x9e07
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x8578
jmp 0x9e16
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x8578
jmp 0x9e25
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x8578
jmp 0x9e34
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
jmp 0x9e4b
movq %rax, %rbx
jmp 0x9e50
movq %rax, %rbx
leaq 0x88(%rsp), %rdi
callq 0x8578
leaq 0xc8(%rsp), %rdi
callq 0x8578
movq %rbx, %rdi
callq 0x84d0
nop