// File: /workspace/github_cpp_makefile_star2_O3/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 0x2a16d
leaq 0xbb5e(%rip), %rdx      # 0x35c91
leaq -0x58(%rbp), %r15
movq %r15, %rdi
movl $0x3, %esi
movl $0xf1a, %ecx            # imm = 0xF1A
callq 0xa450
leaq 0xbb50(%rip), %rsi      # 0x35ca0
movq %r15, %rdi
callq 0xa980
leaq -0x19(%rbp), %rdi
movq %rax, %rsi
callq 0xa600
leaq -0x58(%rbp), %rdi
callq 0xa730
movq 0x8(%r14), %rsi
testb $0x1, %sil
je 0x2a188
leaq 0x8(%rbx), %rdi
andq $-0x2, %rsi
addq $0x8, %rsi
callq 0x31dc8
leaq 0x18(%rbx), %rdi
leaq 0x18(%r14), %rsi
callq 0xa400
leaq 0x28(%rbx), %rdi
leaq 0x28(%r14), %rsi
callq 0x31fc6
movl 0x10(%r14), %eax
testb %al, %al
je 0x2a207
testb $0x1, %al
je 0x2a1b6
movq 0x40(%r14), %rcx
movq %rcx, 0x40(%rbx)
testb $0x2, %al
je 0x2a1c2
movq 0x48(%r14), %rcx
movq %rcx, 0x48(%rbx)
testb $0x4, %al
je 0x2a1cd
movl 0x50(%r14), %ecx
movl %ecx, 0x50(%rbx)
testb $0x8, %al
je 0x2a1d8
movl 0x54(%r14), %ecx
movl %ecx, 0x54(%rbx)
testb $0x10, %al
je 0x2a1e3
movl 0x58(%r14), %ecx
movl %ecx, 0x58(%rbx)
testb $0x20, %al
je 0x2a1ee
movl 0x5c(%r14), %ecx
movl %ecx, 0x5c(%rbx)
testb $0x40, %al
je 0x2a1f9
movl 0x60(%r14), %ecx
movl %ecx, 0x60(%rbx)
testb %al, %al
jns 0x2a204
movl 0x64(%r14), %ecx
movl %ecx, 0x64(%rbx)
orl %eax, 0x10(%rbx)
testl $0x700, %eax            # imm = 0x700
je 0x2a238
btl $0x8, %eax
jae 0x2a21b
movl 0x68(%r14), %ecx
movl %ecx, 0x68(%rbx)
btl $0x9, %eax
jae 0x2a228
movl 0x6c(%r14), %ecx
movl %ecx, 0x6c(%rbx)
btl $0xa, %eax
jae 0x2a235
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 0x2a245
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
callq 0xa730
movq %rbx, %rdi
callq 0xa4d0
nop