// File: /workspace/github_cpp_makefile_star2_O2/mindbeast[P]rnes/bin/save.pb.cc
// Function: Rnes::PpuState::MergeFrom(Rnes::PpuState const&)
void PpuState::MergeFrom(const PpuState& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:Rnes.PpuState)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  regs_.MergeFrom(from.regs_);
  spriteram_.MergeFrom(from.spriteram_);
  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    if (cached_has_bits & 0x00000001u) {
      cycle_ = from.cycle_;
    }
    if (cached_has_bits & 0x00000002u) {
      frame_ = from.frame_;
    }
    if (cached_has_bits & 0x00000004u) {
      vramtoggle_ = from.vramtoggle_;
    }
    if (cached_has_bits & 0x00000008u) {
      vramfinexscroll_ = from.vramfinexscroll_;
    }
    if (cached_has_bits & 0x00000010u) {
      vramcurrentaddr_ = from.vramcurrentaddr_;
    }
    if (cached_has_bits & 0x00000020u) {
      vramtempaddr_ = from.vramtempaddr_;
    }
    if (cached_has_bits & 0x00000040u) {
      vrammachineaddr_ = from.vrammachineaddr_;
    }
    if (cached_has_bits & 0x00000080u) {
      vramreadlatch_ = from.vramreadlatch_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  if (cached_has_bits & 0x00000700u) {
    if (cached_has_bits & 0x00000100u) {
      scrollingmachinestate_ = from.scrollingmachinestate_;
    }
    if (cached_has_bits & 0x00000200u) {
      xscrollorigin_ = from.xscrollorigin_;
    }
    if (cached_has_bits & 0x00000400u) {
      yscrollorigin_ = from.yscrollorigin_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x48, %rsp
movq %rsi, %r14
movq %rdi, %rbx
cmpq %rdi, %rsi
jne 0x219e3
leaq 0xb3d6(%rip), %rdx      # 0x2cd81
leaq -0x58(%rbp), %r15
pushq $0x3
popq %rsi
movq %r15, %rdi
movl $0xf1a, %ecx            # imm = 0xF1A
callq 0xb460
leaq 0xb3ca(%rip), %rsi      # 0x2cd90
movq %r15, %rdi
callq 0xb980
leaq -0x19(%rbp), %rdi
movq %rax, %rsi
callq 0xb5e0
leaq -0x58(%rbp), %rdi
callq 0xb730
movq 0x8(%r14), %rsi
testb $0x1, %sil
je 0x219fe
leaq 0x8(%rbx), %rdi
andq $-0x2, %rsi
addq $0x8, %rsi
callq 0x291a6
leaq 0x18(%rbx), %rdi
leaq 0x18(%r14), %rsi
callq 0xb420
leaq 0x28(%rbx), %rdi
leaq 0x28(%r14), %rsi
callq 0x2946a
movl 0x10(%r14), %eax
testb %al, %al
je 0x21a7d
testb $0x1, %al
je 0x21a2c
movq 0x40(%r14), %rcx
movq %rcx, 0x40(%rbx)
testb $0x2, %al
je 0x21a38
movq 0x48(%r14), %rcx
movq %rcx, 0x48(%rbx)
testb $0x4, %al
je 0x21a43
movl 0x50(%r14), %ecx
movl %ecx, 0x50(%rbx)
testb $0x8, %al
je 0x21a4e
movl 0x54(%r14), %ecx
movl %ecx, 0x54(%rbx)
testb $0x10, %al
je 0x21a59
movl 0x58(%r14), %ecx
movl %ecx, 0x58(%rbx)
testb $0x20, %al
je 0x21a64
movl 0x5c(%r14), %ecx
movl %ecx, 0x5c(%rbx)
testb $0x40, %al
je 0x21a6f
movl 0x60(%r14), %ecx
movl %ecx, 0x60(%rbx)
testb %al, %al
jns 0x21a7a
movl 0x64(%r14), %ecx
movl %ecx, 0x64(%rbx)
orl %eax, 0x10(%rbx)
testw $0x700, %ax             # imm = 0x700
je 0x21aad
btl $0x8, %eax
jae 0x21a90
movl 0x68(%r14), %ecx
movl %ecx, 0x68(%rbx)
btl $0x9, %eax
jae 0x21a9d
movl 0x6c(%r14), %ecx
movl %ecx, 0x6c(%rbx)
btl $0xa, %eax
jae 0x21aaa
movl 0x70(%r14), %ecx
movl %ecx, 0x70(%rbx)
orl %eax, 0x10(%rbx)
addq $0x48, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
jmp 0x21aba
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
callq 0xb730
movq %rbx, %rdi
callq 0xb4e0