LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_cpp_makefile_star2_O2/mindbeast[P]rnes/bin/save.pb.cc
// Function: Rnes::PpuState_SpriteState::ByteSizeLong() const
size_t PpuState_SpriteState::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:Rnes.PpuState.SpriteState)
  size_t total_size = 0;

  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x0000000fu) {
    // optional uint32 yCoordMinus1 = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size(
          this->_internal_ycoordminus1());
    }

    // optional uint32 tileIndex = 2;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size(
          this->_internal_tileindex());
    }

    // optional uint32 attr = 3;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size(
          this->_internal_attr());
    }

    // optional uint32 xCoord = 4;
    if (cached_has_bits & 0x00000008u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size(
          this->_internal_xcoord());
    }

  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, %rdx
movl 0x10(%rdi), %ecx
testb $0xf, %cl
je 0x20cee
testb $0x1, %cl
jne 0x20cf2
xorl %eax, %eax
jmp 0x20d06
xorl %eax, %eax
jmp 0x20d5d
movl 0x18(%rdx), %eax
orl $0x1, %eax
bsrl %eax, %eax
leal (%rax,%rax,8), %eax
addl $0x49, %eax
shrl $0x6, %eax
incl %eax
testb $0x2, %cl
je 0x20d23
movl 0x1c(%rdx), %esi
orl $0x1, %esi
bsrl %esi, %esi
leal (%rsi,%rsi,8), %esi
addl $0x49, %esi
shrl $0x6, %esi
addq %rsi, %rax
incq %rax
testb $0x4, %cl
je 0x20d40
movl 0x20(%rdx), %esi
orl $0x1, %esi
bsrl %esi, %esi
leal (%rsi,%rsi,8), %esi
addl $0x49, %esi
shrl $0x6, %esi
addq %rsi, %rax
incq %rax
testb $0x8, %cl
je 0x20d5d
movl 0x24(%rdx), %ecx
orl $0x1, %ecx
bsrl %ecx, %ecx
leal (%rcx,%rcx,8), %ecx
addl $0x49, %ecx
shrl $0x6, %ecx
addq %rcx, %rax
incq %rax
testb $0x1, 0x8(%rdx)
jne 0x20d68
movl %eax, 0x14(%rdx)
popq %rbp
retq
leaq 0x8(%rdx), %rdi
addq $0x14, %rdx
movq %rax, %rsi
popq %rbp
jmp 0xb900
nop
// File: /workspace/github_cpp_makefile_star2_O2/mindbeast[P]rnes/bin/save.pb.cc
// Function: Rnes::PpuState_SpriteState::MergeFrom(google::protobuf::Message const&)
void PpuState_SpriteState::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:Rnes.PpuState.SpriteState)
  GOOGLE_DCHECK_NE(&from, this);
  const PpuState_SpriteState* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<PpuState_SpriteState>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:Rnes.PpuState.SpriteState)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:Rnes.PpuState.SpriteState)
    MergeFrom(*source);
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x48, %rsp
movq %rsi, %rbx
movq %rdi, %r14
cmpq %rdi, %rsi
jne 0x20dd1
leaq 0xbfe8(%rip), %rdx      # 0x2cd81
leaq -0x58(%rbp), %r15
pushq $0x3
popq %rsi
movq %r15, %rdi
movl $0xce6, %ecx            # imm = 0xCE6
callq 0xb460
leaq 0xbfdc(%rip), %rsi      # 0x2cd90
movq %r15, %rdi
callq 0xb980
leaq -0x19(%rbp), %rdi
movq %rax, %rsi
callq 0xb5e0
leaq -0x58(%rbp), %rdi
callq 0xb730
leaq 0x1f618(%rip), %rax     # 0x403f0
cmpq %rax, (%rbx)
je 0x20dea
movq %rbx, %rdi
movq %r14, %rsi
callq 0xb580
jmp 0x20df5
movq %r14, %rdi
movq %rbx, %rsi
callq 0x20e16
addq $0x48, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
jmp 0x20e02
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
callq 0xb730
movq %rbx, %rdi
callq 0xb4e0
// File: /workspace/github_cpp_makefile_star2_O2/mindbeast[P]rnes/bin/save.pb.cc
// Function: Rnes::PpuState_SpriteState::MergeFrom(Rnes::PpuState_SpriteState const&)
void PpuState_SpriteState::MergeFrom(const PpuState_SpriteState& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:Rnes.PpuState.SpriteState)
  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;

  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x0000000fu) {
    if (cached_has_bits & 0x00000001u) {
      ycoordminus1_ = from.ycoordminus1_;
    }
    if (cached_has_bits & 0x00000002u) {
      tileindex_ = from.tileindex_;
    }
    if (cached_has_bits & 0x00000004u) {
      attr_ = from.attr_;
    }
    if (cached_has_bits & 0x00000008u) {
      xcoord_ = from.xcoord_;
    }
    _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 0x20e6d
leaq 0xbf4c(%rip), %rdx      # 0x2cd81
leaq -0x58(%rbp), %r15
pushq $0x3
popq %rsi
movq %r15, %rdi
movl $0xcf5, %ecx            # imm = 0xCF5
callq 0xb460
leaq 0xbf40(%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 0x20e88
leaq 0x8(%rbx), %rdi
andq $-0x2, %rsi
addq $0x8, %rsi
callq 0x291a6
movl 0x10(%r14), %eax
testb $0xf, %al
je 0x20ebf
testb $0x1, %al
je 0x20e9b
movl 0x18(%r14), %ecx
movl %ecx, 0x18(%rbx)
testb $0x2, %al
je 0x20ea6
movl 0x1c(%r14), %ecx
movl %ecx, 0x1c(%rbx)
testb $0x4, %al
je 0x20eb1
movl 0x20(%r14), %ecx
movl %ecx, 0x20(%rbx)
testb $0x8, %al
je 0x20ebc
movl 0x24(%r14), %ecx
movl %ecx, 0x24(%rbx)
orl %eax, 0x10(%rbx)
addq $0x48, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
jmp 0x20ecc
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
callq 0xb730
movq %rbx, %rdi
callq 0xb4e0
// File: /workspace/github_cpp_makefile_star2_O2/mindbeast[P]rnes/bin/save.pb.cc
// Function: Rnes::PpuState_SpriteState::InternalSwap(Rnes::PpuState_SpriteState*)
void PpuState_SpriteState::InternalSwap(PpuState_SpriteState* other) {
  using std::swap;
  _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(PpuState_SpriteState, xcoord_)
      + sizeof(PpuState_SpriteState::xcoord_)
      - PROTOBUF_FIELD_OFFSET(PpuState_SpriteState, ycoordminus1_)>(
          reinterpret_cast<char*>(&ycoordminus1_),
          reinterpret_cast<char*>(&other->ycoordminus1_));
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rsi, %rbx
movq %rdi, %r14
movq 0x8(%rsi), %rsi
testb $0x1, 0x8(%rdi)
jne 0x20f57
testb $0x1, %sil
jne 0x20f5d
jmp 0x20f6e
testb $0x1, %sil
je 0x20f93
andq $-0x2, %rsi
addq $0x8, %rsi
leaq 0x8(%r14), %rdi
callq 0x2920c
movl 0x10(%r14), %eax
movl 0x10(%rbx), %ecx
movl %ecx, 0x10(%r14)
movl %eax, 0x10(%rbx)
movups 0x18(%r14), %xmm0
movups 0x18(%rbx), %xmm1
movups %xmm1, 0x18(%r14)
movups %xmm0, 0x18(%rbx)
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x8(%rbx), %rdi
callq 0x28ff8
movq %rax, %rsi
jmp 0x20f65
nop
// File: /workspace/github_cpp_makefile_star2_O2/mindbeast[P]rnes/bin/save.pb.cc
// Function: Rnes::PpuState::PpuState(Rnes::PpuState const&)
PpuState::PpuState(const PpuState& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _has_bits_(from._has_bits_),
      regs_(from.regs_),
      spriteram_(from.spriteram_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&cycle_, &from.cycle_,
    static_cast<size_t>(reinterpret_cast<char*>(&yscrollorigin_) -
    reinterpret_cast<char*>(&cycle_)) + sizeof(yscrollorigin_));
  // @@protoc_insertion_point(copy_constructor:Rnes.PpuState)
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rdi, %r14
andq $0x0, 0x8(%rdi)
movq %rsi, %r15
leaq 0x1f46f(%rip), %rax     # 0x404a0
movq %rax, (%rdi)
movl 0x10(%rsi), %eax
movl %eax, 0x10(%rdi)
andl $0x0, 0x14(%rdi)
leaq 0x18(%rdi), %rbx
addq $0x18, %rsi
movq %rbx, %rdi
callq 0xb390
leaq 0x28(%r14), %r12
leaq 0x28(%r15), %rsi
movq %r12, %rdi
callq 0x270b6
movq 0x8(%r15), %rsi
testb $0x1, %sil
je 0x21079
leaq 0x8(%r14), %rdi
andq $-0x2, %rsi
addq $0x8, %rsi
callq 0x291a6
movl 0x70(%r15), %eax
movl %eax, 0x70(%r14)
movups 0x40(%r15), %xmm0
movups 0x50(%r15), %xmm1
movups 0x60(%r15), %xmm2
movups %xmm2, 0x60(%r14)
movups %xmm1, 0x50(%r14)
movups %xmm0, 0x40(%r14)
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
movq %r12, %rdi
callq 0x27092
jmp 0x210b8
movq %rax, %r14
movq %rbx, %rdi
callq 0xb100
movq %r14, %rdi
callq 0xb4e0
// File: /workspace/github_cpp_makefile_star2_O2/mindbeast[P]rnes/bin/save.pb.cc
// Function: Rnes::PpuState::Clear()
void PpuState::Clear() {
// @@protoc_insertion_point(message_clear_start:Rnes.PpuState)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  regs_.Clear();
  spriteram_.Clear();
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    ::memset(&cycle_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&vramreadlatch_) -
        reinterpret_cast<char*>(&cycle_)) + sizeof(vramreadlatch_));
  }
  if (cached_has_bits & 0x00000700u) {
    ::memset(&scrollingmachinestate_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&yscrollorigin_) -
        reinterpret_cast<char*>(&scrollingmachinestate_)) + sizeof(yscrollorigin_));
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %rbx
pushq %rax
movq %rdi, %rbx
andl $0x0, 0x18(%rdi)
addq $0x28, %rdi
callq 0x29104
movl 0x10(%rbx), %eax
testb %al, %al
je 0x21179
xorps %xmm0, %xmm0
movups %xmm0, 0x50(%rbx)
movups %xmm0, 0x40(%rbx)
andq $0x0, 0x60(%rbx)
testw $0x700, %ax             # imm = 0x700
je 0x21188
andl $0x0, 0x70(%rbx)
andq $0x0, 0x68(%rbx)
andl $0x0, 0x10(%rbx)
testb $0x1, 0x8(%rbx)
jne 0x21199
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
addq $0x8, %rbx
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x291de
nop
// File: /workspace/github_cpp_makefile_star2_O2/mindbeast[P]rnes/bin/save.pb.cc
// Function: Rnes::PpuState::MergeFrom(google::protobuf::Message const&)
void PpuState::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:Rnes.PpuState)
  GOOGLE_DCHECK_NE(&from, this);
  const PpuState* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<PpuState>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:Rnes.PpuState)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:Rnes.PpuState)
    MergeFrom(*source);
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x48, %rsp
movq %rsi, %rbx
movq %rdi, %r14
cmpq %rdi, %rsi
jne 0x21947
leaq 0xb472(%rip), %rdx      # 0x2cd81
leaq -0x58(%rbp), %r15
pushq $0x3
popq %rsi
movq %r15, %rdi
movl $0xf0b, %ecx            # imm = 0xF0B
callq 0xb460
leaq 0xb466(%rip), %rsi      # 0x2cd90
movq %r15, %rdi
callq 0xb980
leaq -0x19(%rbp), %rdi
movq %rax, %rsi
callq 0xb5e0
leaq -0x58(%rbp), %rdi
callq 0xb730
leaq 0x1eb52(%rip), %rax     # 0x404a0
cmpq %rax, (%rbx)
je 0x21960
movq %rbx, %rdi
movq %r14, %rsi
callq 0xb580
jmp 0x2196b
movq %r14, %rdi
movq %rbx, %rsi
callq 0x2198c
addq $0x48, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
jmp 0x21978
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
callq 0xb730
movq %rbx, %rdi
callq 0xb4e0
// File: /workspace/github_cpp_makefile_star2_O2/mindbeast[P]rnes/bin/save.pb.cc
// Function: Rnes::PpuState::InternalSwap(Rnes::PpuState*)
void PpuState::InternalSwap(PpuState* other) {
  using std::swap;
  _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  regs_.InternalSwap(&other->regs_);
  spriteram_.InternalSwap(&other->spriteram_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(PpuState, yscrollorigin_)
      + sizeof(PpuState::yscrollorigin_)
      - PROTOBUF_FIELD_OFFSET(PpuState, cycle_)>(
          reinterpret_cast<char*>(&cycle_),
          reinterpret_cast<char*>(&other->cycle_));
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rsi, %rbx
movq %rdi, %r14
movq 0x8(%rsi), %rsi
testb $0x1, 0x8(%rdi)
jne 0x21b45
testb $0x1, %sil
jne 0x21b4b
jmp 0x21b5c
testb $0x1, %sil
je 0x21b9b
andq $-0x2, %rsi
addq $0x8, %rsi
leaq 0x8(%r14), %rdi
callq 0x2920c
movl 0x10(%r14), %eax
movl 0x10(%rbx), %ecx
movl %ecx, 0x10(%r14)
movl %eax, 0x10(%rbx)
leaq 0x18(%r14), %rdi
leaq 0x18(%rbx), %rsi
callq 0xb120
leaq 0x28(%r14), %rdi
leaq 0x28(%rbx), %rsi
callq 0x2961c
addq $0x40, %r14
addq $0x40, %rbx
movq %r14, %rdi
movq %rbx, %rsi
popq %rbx
popq %r14
popq %rbp
jmp 0x27201
leaq 0x8(%rbx), %rdi
callq 0x28ff8
movq %rax, %rsi
jmp 0x21b53
nop
// File: /workspace/github_cpp_makefile_star2_O2/mindbeast[P]rnes/bin/save.pb.cc
// Function: Rnes::MmcState_MmcNoneState::_InternalParse(char const*, google::protobuf::internal::ParseContext*)
const char* MmcState_MmcNoneState::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  ::PROTOBUF_NAMESPACE_ID::Arena* arena = GetArena(); (void)arena;
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag,
            _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
            ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
  }  // while
success:
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdx, %rbx
movq %rdi, %r14
leaq -0x30(%rbp), %r15
movq %rsi, (%r15)
addq $0x8, %r14
leaq -0x34(%rbp), %r12
movq %rbx, %rdi
movq %r15, %rsi
callq 0x26780
testb %al, %al
jne 0x21d2d
movq -0x30(%rbp), %rdi
movq %r12, %rsi
xorl %edx, %edx
callq 0x2678d
movq %rax, -0x30(%rbp)
testq %rax, %rax
je 0x21d49
movl -0x34(%rbp), %r13d
testq %r13, %r13
je 0x21d33
movl %r13d, %ecx
andl $0x7, %ecx
cmpl $0x4, %ecx
je 0x21d33
movq (%r14), %rsi
testb $0x1, %sil
je 0x21d1c
andq $-0x2, %rsi
addq $0x8, %rsi
movq %r13, %rdi
movq %rax, %rdx
movq %rbx, %rcx
callq 0xb300
movq %rax, -0x30(%rbp)
testq %rax, %rax
jne 0x21cb8
jmp 0x21d49
movq %r14, %rdi
callq 0x28ff8
movq %rax, %rsi
movq -0x30(%rbp), %rax
jmp 0x21d03
movq -0x30(%rbp), %rax
jmp 0x21d3a
decl %r13d
movl %r13d, 0x50(%rbx)
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %eax, %eax
jmp 0x21d3a
nop
// File: /workspace/github_cpp_makefile_star2_O2/mindbeast[P]rnes/bin/save.pb.cc
// Function: Rnes::MmcState_MmcNoneState::_InternalSerialize(unsigned char*, google::protobuf::io::EpsCopyOutputStream*) const
::PROTOBUF_NAMESPACE_ID::uint8* MmcState_MmcNoneState::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:Rnes.MmcState.MmcNoneState)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:Rnes.MmcState.MmcNoneState)
  return target;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq 0x8(%rdi), %rdi
testb $0x1, %dil
jne 0x21d61
movq %rsi, %rax
popq %rbp
retq
andq $-0x2, %rdi
addq $0x8, %rdi
popq %rbp
jmp 0xb260
nop
// File: /workspace/github_cpp_makefile_star2_O2/mindbeast[P]rnes/bin/save.pb.cc
// Function: Rnes::MmcState_MmcNoneState::MergeFrom(google::protobuf::Message const&)
void MmcState_MmcNoneState::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:Rnes.MmcState.MmcNoneState)
  GOOGLE_DCHECK_NE(&from, this);
  const MmcState_MmcNoneState* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<MmcState_MmcNoneState>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:Rnes.MmcState.MmcNoneState)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:Rnes.MmcState.MmcNoneState)
    MergeFrom(*source);
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x48, %rsp
movq %rsi, %rbx
movq %rdi, %r14
cmpq %rdi, %rsi
jne 0x21deb
leaq 0xafce(%rip), %rdx      # 0x2cd81
leaq -0x58(%rbp), %r15
pushq $0x3
popq %rsi
movq %r15, %rdi
movl $0xfe3, %ecx            # imm = 0xFE3
callq 0xb460
leaq 0xafc2(%rip), %rsi      # 0x2cd90
movq %r15, %rdi
callq 0xb980
leaq -0x19(%rbp), %rdi
movq %rax, %rsi
callq 0xb5e0
leaq -0x58(%rbp), %rdi
callq 0xb730
leaq 0x1e75e(%rip), %rax     # 0x40550
cmpq %rax, (%rbx)
je 0x21e04
movq %rbx, %rdi
movq %r14, %rsi
callq 0xb580
jmp 0x21e0f
movq %r14, %rdi
movq %rbx, %rsi
callq 0x21e30
addq $0x48, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
jmp 0x21e1c
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
callq 0xb730
movq %rbx, %rdi
callq 0xb4e0
// File: /workspace/github_cpp_makefile_star2_O2/mindbeast[P]rnes/bin/save.pb.cc
// Function: Rnes::MmcState_MmcNoneState::MergeFrom(Rnes::MmcState_MmcNoneState const&)
void MmcState_MmcNoneState::MergeFrom(const MmcState_MmcNoneState& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:Rnes.MmcState.MmcNoneState)
  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;

}

// 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 0x21e87
leaq 0xaf32(%rip), %rdx      # 0x2cd81
leaq -0x58(%rbp), %r15
pushq $0x3
popq %rsi
movq %r15, %rdi
movl $0xff2, %ecx            # imm = 0xFF2
callq 0xb460
leaq 0xaf26(%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 0x21ea5
addq $0x8, %rbx
andq $-0x2, %rsi
addq $0x8, %rsi
movq %rbx, %rdi
callq 0x291a6
addq $0x48, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
jmp 0x21eb2
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
callq 0xb730
movq %rbx, %rdi
callq 0xb4e0
// File: /workspace/github_cpp_makefile_star2_O2/mindbeast[P]rnes/bin/save.pb.cc
// Function: Rnes::MmcState_Mmc1State::MmcState_Mmc1State(Rnes::MmcState_Mmc1State const&)
MmcState_Mmc1State::MmcState_Mmc1State(const MmcState_Mmc1State& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&controlreg_, &from.controlreg_,
    static_cast<size_t>(reinterpret_cast<char*>(&shiftregister_) -
    reinterpret_cast<char*>(&controlreg_)) + sizeof(shiftregister_));
  // @@protoc_insertion_point(copy_constructor:Rnes.MmcState.Mmc1State)
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
andq $0x0, 0x8(%rdi)
movq %rsi, %r14
leaq 0x1e645(%rip), %rax     # 0x40600
movq %rax, (%rdi)
movl 0x10(%rsi), %eax
movl %eax, 0x10(%rdi)
andl $0x0, 0x14(%rdi)
movq 0x8(%rsi), %rsi
testb $0x1, %sil
je 0x21fe3
leaq 0x8(%rbx), %rdi
andq $-0x2, %rsi
addq $0x8, %rsi
callq 0x291a6
movl 0x28(%r14), %eax
movl %eax, 0x28(%rbx)
movups 0x18(%r14), %xmm0
movups %xmm0, 0x18(%rbx)
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O2/mindbeast[P]rnes/bin/save.pb.cc
// Function: Rnes::MmcState_Mmc1State::Clear()
void MmcState_Mmc1State::Clear() {
// @@protoc_insertion_point(message_clear_start:Rnes.MmcState.Mmc1State)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x0000001fu) {
    ::memset(&controlreg_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&shiftregister_) -
        reinterpret_cast<char*>(&controlreg_)) + sizeof(shiftregister_));
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
testb $0x1f, 0x10(%rdi)
je 0x22081
xorps %xmm0, %xmm0
movups %xmm0, 0x18(%rdi)
andl $0x0, 0x28(%rdi)
andl $0x0, 0x10(%rdi)
testb $0x1, 0x8(%rdi)
jne 0x2208d
popq %rbp
retq
addq $0x8, %rdi
popq %rbp
jmp 0x291de
nop
// File: /workspace/github_cpp_makefile_star2_O2/mindbeast[P]rnes/bin/save.pb.cc
// Function: Rnes::MmcState_Mmc1State::ByteSizeLong() const
size_t MmcState_Mmc1State::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:Rnes.MmcState.Mmc1State)
  size_t total_size = 0;

  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x0000001fu) {
    // optional uint32 controlReg = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size(
          this->_internal_controlreg());
    }

    // optional uint32 chr0Bank = 2;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size(
          this->_internal_chr0bank());
    }

    // optional uint32 chr1Bank = 3;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size(
          this->_internal_chr1bank());
    }

    // optional uint32 prgBank = 4;
    if (cached_has_bits & 0x00000008u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size(
          this->_internal_prgbank());
    }

    // optional uint32 shiftRegister = 5;
    if (cached_has_bits & 0x00000010u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size(
          this->_internal_shiftregister());
    }

  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, %rdx
movl 0x10(%rdi), %ecx
testb $0x1f, %cl
je 0x2232c
testb $0x1, %cl
jne 0x22333
xorl %eax, %eax
jmp 0x22347
xorl %eax, %eax
jmp 0x223bb
movl 0x18(%rdx), %eax
orl $0x1, %eax
bsrl %eax, %eax
leal (%rax,%rax,8), %eax
addl $0x49, %eax
shrl $0x6, %eax
incl %eax
testb $0x2, %cl
je 0x22364
movl 0x1c(%rdx), %esi
orl $0x1, %esi
bsrl %esi, %esi
leal (%rsi,%rsi,8), %esi
addl $0x49, %esi
shrl $0x6, %esi
addq %rsi, %rax
incq %rax
testb $0x4, %cl
je 0x22381
movl 0x20(%rdx), %esi
orl $0x1, %esi
bsrl %esi, %esi
leal (%rsi,%rsi,8), %esi
addl $0x49, %esi
shrl $0x6, %esi
addq %rsi, %rax
incq %rax
testb $0x8, %cl
je 0x2239e
movl 0x24(%rdx), %esi
orl $0x1, %esi
bsrl %esi, %esi
leal (%rsi,%rsi,8), %esi
addl $0x49, %esi
shrl $0x6, %esi
addq %rsi, %rax
incq %rax
testb $0x10, %cl
je 0x223bb
movl 0x28(%rdx), %ecx
orl $0x1, %ecx
bsrl %ecx, %ecx
leal (%rcx,%rcx,8), %ecx
addl $0x49, %ecx
shrl $0x6, %ecx
addq %rcx, %rax
incq %rax
testb $0x1, 0x8(%rdx)
jne 0x223c6
movl %eax, 0x14(%rdx)
popq %rbp
retq
leaq 0x8(%rdx), %rdi
addq $0x14, %rdx
movq %rax, %rsi
popq %rbp
jmp 0xb900
nop
// File: /workspace/github_cpp_makefile_star2_O2/mindbeast[P]rnes/bin/save.pb.cc
// Function: Rnes::MmcState_Mmc1State::MergeFrom(google::protobuf::Message const&)
void MmcState_Mmc1State::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:Rnes.MmcState.Mmc1State)
  GOOGLE_DCHECK_NE(&from, this);
  const MmcState_Mmc1State* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<MmcState_Mmc1State>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:Rnes.MmcState.Mmc1State)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:Rnes.MmcState.Mmc1State)
    MergeFrom(*source);
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x48, %rsp
movq %rsi, %rbx
movq %rdi, %r14
cmpq %rdi, %rsi
jne 0x2242f
leaq 0xa98a(%rip), %rdx      # 0x2cd81
leaq -0x58(%rbp), %r15
pushq $0x3
popq %rsi
movq %r15, %rdi
movl $0x111a, %ecx           # imm = 0x111A
callq 0xb460
leaq 0xa97e(%rip), %rsi      # 0x2cd90
movq %r15, %rdi
callq 0xb980
leaq -0x19(%rbp), %rdi
movq %rax, %rsi
callq 0xb5e0
leaq -0x58(%rbp), %rdi
callq 0xb730
leaq 0x1e1ca(%rip), %rax     # 0x40600
cmpq %rax, (%rbx)
je 0x22448
movq %rbx, %rdi
movq %r14, %rsi
callq 0xb580
jmp 0x22453
movq %r14, %rdi
movq %rbx, %rsi
callq 0x22474
addq $0x48, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
jmp 0x22460
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
callq 0xb730
movq %rbx, %rdi
callq 0xb4e0
// File: /workspace/github_cpp_makefile_star2_O2/mindbeast[P]rnes/bin/save.pb.cc
// Function: Rnes::MmcState_Mmc1State::MergeFrom(Rnes::MmcState_Mmc1State const&)
void MmcState_Mmc1State::MergeFrom(const MmcState_Mmc1State& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:Rnes.MmcState.Mmc1State)
  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;

  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x0000001fu) {
    if (cached_has_bits & 0x00000001u) {
      controlreg_ = from.controlreg_;
    }
    if (cached_has_bits & 0x00000002u) {
      chr0bank_ = from.chr0bank_;
    }
    if (cached_has_bits & 0x00000004u) {
      chr1bank_ = from.chr1bank_;
    }
    if (cached_has_bits & 0x00000008u) {
      prgbank_ = from.prgbank_;
    }
    if (cached_has_bits & 0x00000010u) {
      shiftregister_ = from.shiftregister_;
    }
    _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 0x224cb
leaq 0xa8ee(%rip), %rdx      # 0x2cd81
leaq -0x58(%rbp), %r15
pushq $0x3
popq %rsi
movq %r15, %rdi
movl $0x1129, %ecx           # imm = 0x1129
callq 0xb460
leaq 0xa8e2(%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 0x224e6
leaq 0x8(%rbx), %rdi
andq $-0x2, %rsi
addq $0x8, %rsi
callq 0x291a6
movl 0x10(%r14), %eax
testb $0x1f, %al
je 0x22528
testb $0x1, %al
je 0x224f9
movl 0x18(%r14), %ecx
movl %ecx, 0x18(%rbx)
testb $0x2, %al
je 0x22504
movl 0x1c(%r14), %ecx
movl %ecx, 0x1c(%rbx)
testb $0x4, %al
je 0x2250f
movl 0x20(%r14), %ecx
movl %ecx, 0x20(%rbx)
testb $0x8, %al
je 0x2251a
movl 0x24(%r14), %ecx
movl %ecx, 0x24(%rbx)
testb $0x10, %al
je 0x22525
movl 0x28(%r14), %ecx
movl %ecx, 0x28(%rbx)
orl %eax, 0x10(%rbx)
addq $0x48, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
jmp 0x22535
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
callq 0xb730
movq %rbx, %rdi
callq 0xb4e0
nop
// File: /workspace/github_cpp_makefile_star2_O2/mindbeast[P]rnes/bin/save.pb.cc
// Function: Rnes::MmcState_Mmc1State::InternalSwap(Rnes::MmcState_Mmc1State*)
void MmcState_Mmc1State::InternalSwap(MmcState_Mmc1State* other) {
  using std::swap;
  _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(MmcState_Mmc1State, shiftregister_)
      + sizeof(MmcState_Mmc1State::shiftregister_)
      - PROTOBUF_FIELD_OFFSET(MmcState_Mmc1State, controlreg_)>(
          reinterpret_cast<char*>(&controlreg_),
          reinterpret_cast<char*>(&other->controlreg_));
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rsi, %rbx
movq %rdi, %r14
movq 0x8(%rsi), %rsi
testb $0x1, 0x8(%rdi)
jne 0x225c1
testb $0x1, %sil
jne 0x225c7
jmp 0x225d8
testb $0x1, %sil
je 0x2260b
andq $-0x2, %rsi
addq $0x8, %rsi
leaq 0x8(%r14), %rdi
callq 0x2920c
movl 0x10(%r14), %eax
movl 0x10(%rbx), %ecx
movl %ecx, 0x10(%r14)
movl %eax, 0x10(%rbx)
movups 0x18(%r14), %xmm0
movups 0x18(%rbx), %xmm1
movups %xmm1, 0x18(%r14)
movups %xmm0, 0x18(%rbx)
movl 0x28(%r14), %eax
movl 0x28(%rbx), %ecx
movl %ecx, 0x28(%r14)
movl %eax, 0x28(%rbx)
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x8(%rbx), %rdi
callq 0x28ff8
movq %rax, %rsi
jmp 0x225cf
nop
// File: /workspace/github_cpp_makefile_star2_O2/mindbeast[P]rnes/bin/save.pb.cc
// Function: Rnes::MmcState_Mmc3State::MmcState_Mmc3State(Rnes::MmcState_Mmc3State const&)
MmcState_Mmc3State::MmcState_Mmc3State(const MmcState_Mmc3State& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  bankregister_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_bankregister()) {
    bankregister_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from._internal_bankregister(),
      GetArena());
  }
  ::memcpy(&bankselectreg_, &from.bankselectreg_,
    static_cast<size_t>(reinterpret_cast<char*>(&irqpending_) -
    reinterpret_cast<char*>(&bankselectreg_)) + sizeof(irqpending_));
  // @@protoc_insertion_point(copy_constructor:Rnes.MmcState.Mmc3State)
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
andq $0x0, 0x8(%rdi)
movq %rsi, %r14
leaq 0x1e04c(%rip), %rax     # 0x406b0
movq %rax, (%rdi)
movl 0x10(%rsi), %eax
movl %eax, 0x10(%rdi)
andl $0x0, 0x14(%rdi)
leaq 0x8(%rdi), %r15
movq 0x8(%rsi), %rsi
testb $0x1, %sil
je 0x2268f
andq $-0x2, %rsi
addq $0x8, %rsi
movq %r15, %rdi
callq 0x291a6
movq 0x1e93a(%rip), %rax     # 0x40fd0
movq %rax, 0x18(%rbx)
testb $0x1, 0x10(%r14)
je 0x226bd
leaq 0x18(%rbx), %rdi
movq 0x18(%r14), %rdx
movq (%r15), %rcx
testb $0x1, %cl
jne 0x226d9
movq 0x1e918(%rip), %rsi     # 0x40fd0
callq 0x1d09c
movq 0x2e(%r14), %rax
movq %rax, 0x2e(%rbx)
movups 0x20(%r14), %xmm0
movups %xmm0, 0x20(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
andq $-0x2, %rcx
movq (%rcx), %rcx
jmp 0x226b1
// File: /workspace/github_cpp_makefile_star2_O2/mindbeast[P]rnes/bin/save.pb.cc
// Function: Rnes::MmcState_Mmc3State::Clear()
void MmcState_Mmc3State::Clear() {
// @@protoc_insertion_point(message_clear_start:Rnes.MmcState.Mmc3State)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    bankregister_.ClearNonDefaultToEmpty();
  }
  if (cached_has_bits & 0x000000feu) {
    ::memset(&bankselectreg_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&irqpending_) -
        reinterpret_cast<char*>(&bankselectreg_)) + sizeof(irqpending_));
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movl 0x10(%rdi), %eax
testb $0x1, %al
je 0x22770
movq 0x18(%rdi), %rcx
andq $0x0, 0x8(%rcx)
movq (%rcx), %rcx
movb $0x0, (%rcx)
testb $-0x2, %al
je 0x22780
xorps %xmm0, %xmm0
movups %xmm0, 0x20(%rdi)
andq $0x0, 0x2e(%rdi)
andl $0x0, 0x10(%rdi)
testb $0x1, 0x8(%rdi)
jne 0x2278c
popq %rbp
retq
addq $0x8, %rdi
popq %rbp
jmp 0x291de
// File: /workspace/github_cpp_makefile_star2_O2/mindbeast[P]rnes/bin/save.pb.cc
// Function: Rnes::MmcState_Mmc3State::MergeFrom(google::protobuf::Message const&)
void MmcState_Mmc3State::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:Rnes.MmcState.Mmc3State)
  GOOGLE_DCHECK_NE(&from, this);
  const MmcState_Mmc3State* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<MmcState_Mmc3State>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:Rnes.MmcState.Mmc3State)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:Rnes.MmcState.Mmc3State)
    MergeFrom(*source);
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x48, %rsp
movq %rsi, %rbx
movq %rdi, %r14
cmpq %rdi, %rsi
jne 0x22c27
leaq 0xa192(%rip), %rdx      # 0x2cd81
leaq -0x58(%rbp), %r15
pushq $0x3
popq %rsi
movq %r15, %rdi
movl $0x12ba, %ecx           # imm = 0x12BA
callq 0xb460
leaq 0xa186(%rip), %rsi      # 0x2cd90
movq %r15, %rdi
callq 0xb980
leaq -0x19(%rbp), %rdi
movq %rax, %rsi
callq 0xb5e0
leaq -0x58(%rbp), %rdi
callq 0xb730
leaq 0x1da82(%rip), %rax     # 0x406b0
cmpq %rax, (%rbx)
je 0x22c40
movq %rbx, %rdi
movq %r14, %rsi
callq 0xb580
jmp 0x22c4b
movq %r14, %rdi
movq %rbx, %rsi
callq 0x22c6c
addq $0x48, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
jmp 0x22c58
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
callq 0xb730
movq %rbx, %rdi
callq 0xb4e0
// File: /workspace/github_cpp_makefile_star2_O2/mindbeast[P]rnes/bin/save.pb.cc
// Function: Rnes::MmcState_Mmc3State::MergeFrom(Rnes::MmcState_Mmc3State const&)
void MmcState_Mmc3State::MergeFrom(const MmcState_Mmc3State& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:Rnes.MmcState.Mmc3State)
  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;

  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    if (cached_has_bits & 0x00000001u) {
      _internal_set_bankregister(from._internal_bankregister());
    }
    if (cached_has_bits & 0x00000002u) {
      bankselectreg_ = from.bankselectreg_;
    }
    if (cached_has_bits & 0x00000004u) {
      mirrorreg_ = from.mirrorreg_;
    }
    if (cached_has_bits & 0x00000008u) {
      prgramreg_ = from.prgramreg_;
    }
    if (cached_has_bits & 0x00000010u) {
      irqreloadreg_ = from.irqreloadreg_;
    }
    if (cached_has_bits & 0x00000020u) {
      irqcounterreg_ = from.irqcounterreg_;
    }
    if (cached_has_bits & 0x00000040u) {
      irqenabled_ = from.irqenabled_;
    }
    if (cached_has_bits & 0x00000080u) {
      irqpending_ = from.irqpending_;
    }
    _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 0x22cc3
leaq 0xa0f6(%rip), %rdx      # 0x2cd81
leaq -0x58(%rbp), %r15
pushq $0x3
popq %rsi
movq %r15, %rdi
movl $0x12c9, %ecx           # imm = 0x12C9
callq 0xb460
leaq 0xa0ea(%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 0x22cde
leaq 0x8(%rbx), %rdi
andq $-0x2, %rsi
addq $0x8, %rsi
callq 0x291a6
movl 0x10(%r14), %r15d
testb %r15b, %r15b
je 0x22d57
testb $0x1, %r15b
je 0x22cf9
movq 0x18(%r14), %rsi
movq %rbx, %rdi
callq 0x2749e
testb $0x2, %r15b
je 0x22d06
movl 0x20(%r14), %eax
movl %eax, 0x20(%rbx)
testb $0x4, %r15b
je 0x22d13
movl 0x24(%r14), %eax
movl %eax, 0x24(%rbx)
testb $0x8, %r15b
je 0x22d20
movl 0x28(%r14), %eax
movl %eax, 0x28(%rbx)
testb $0x10, %r15b
je 0x22d2d
movl 0x2c(%r14), %eax
movl %eax, 0x2c(%rbx)
testb $0x20, %r15b
je 0x22d3a
movl 0x30(%r14), %eax
movl %eax, 0x30(%rbx)
testb $0x40, %r15b
je 0x22d47
movb 0x34(%r14), %al
movb %al, 0x34(%rbx)
testb %r15b, %r15b
jns 0x22d53
movb 0x35(%r14), %al
movb %al, 0x35(%rbx)
orl %r15d, 0x10(%rbx)
addq $0x48, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
jmp 0x22d64
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
callq 0xb730
movq %rbx, %rdi
callq 0xb4e0
// File: /workspace/github_cpp_makefile_star2_O2/mindbeast[P]rnes/bin/save.pb.cc
// Function: Rnes::MmcState_Mmc3State::InternalSwap(Rnes::MmcState_Mmc3State*)
void MmcState_Mmc3State::InternalSwap(MmcState_Mmc3State* other) {
  using std::swap;
  _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  bankregister_.Swap(&other->bankregister_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(MmcState_Mmc3State, irqpending_)
      + sizeof(MmcState_Mmc3State::irqpending_)
      - PROTOBUF_FIELD_OFFSET(MmcState_Mmc3State, bankselectreg_)>(
          reinterpret_cast<char*>(&bankselectreg_),
          reinterpret_cast<char*>(&other->bankselectreg_));
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r14
movq 0x8(%rdi), %r15
movq 0x8(%rsi), %rsi
testb $0x1, %r15b
jne 0x22dfc
testb $0x1, %sil
jne 0x22e06
movb $0x1, %al
jmp 0x22e24
testb $0x1, %sil
je 0x22eb0
andq $-0x2, %rsi
addq $0x8, %rsi
leaq 0x8(%r14), %r15
movq %r15, %rdi
callq 0x2920c
movq (%r15), %r15
testb $0x1, %r15b
sete %al
movl 0x10(%r14), %ecx
movl 0x10(%rbx), %edx
movl %edx, 0x10(%r14)
movl %ecx, 0x10(%rbx)
leaq 0x18(%r14), %rdi
testb %al, %al
je 0x22ea7
leaq 0x18(%rbx), %r12
movq (%rdi), %rax
cmpq 0x1e188(%rip), %rax     # 0x40fd0
jne 0x22e57
movq (%r12), %rax
cmpq 0x1e17b(%rip), %rax     # 0x40fd0
je 0x22e86
movq 0x1e172(%rip), %rsi     # 0x40fd0
movq %r15, %rdx
callq 0x28f3c
movq %rax, %r13
movq %r12, %rdi
movq 0x1e15d(%rip), %rsi     # 0x40fd0
movq %r15, %rdx
callq 0x28f3c
movq %r13, %rdi
movq %rax, %rsi
callq 0xb930
addq $0x20, %r14
addq $0x20, %rbx
movq %r14, %rdi
movq %rbx, %rsi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x274cc
andq $-0x2, %r15
movq (%r15), %r15
jmp 0x22e3a
leaq 0x8(%rbx), %rdi
callq 0x28ff8
movq %rax, %rsi
jmp 0x22e0e
nop
// File: /workspace/github_cpp_makefile_star2_O2/mindbeast[P]rnes/bin/save.pb.cc
// Function: Rnes::MmcState::InitAsDefaultInstance()
void MmcState::InitAsDefaultInstance() {
  ::Rnes::_MmcState_default_instance_._instance.get_mutable()->mmcnone_ = const_cast< ::Rnes::MmcState_MmcNoneState*>(
      ::Rnes::MmcState_MmcNoneState::internal_default_instance());
  ::Rnes::_MmcState_default_instance_._instance.get_mutable()->mmc1_ = const_cast< ::Rnes::MmcState_Mmc1State*>(
      ::Rnes::MmcState_Mmc1State::internal_default_instance());
  ::Rnes::_MmcState_default_instance_._instance.get_mutable()->mmc3_ = const_cast< ::Rnes::MmcState_Mmc3State*>(
      ::Rnes::MmcState_Mmc3State::internal_default_instance());
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
leaq 0x1eb19(%rip), %rax     # 0x419f0
movq %rax, 0x1ebaa(%rip)     # 0x41a88
leaq 0x1eb23(%rip), %rax     # 0x41a08
movq %rax, 0x1eba4(%rip)     # 0x41a90
leaq 0x1eb45(%rip), %rax     # 0x41a38
movq %rax, 0x1eb9e(%rip)     # 0x41a98
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O2/mindbeast[P]rnes/bin/save.pb.cc
// Function: Rnes::MmcState::MmcState(Rnes::MmcState const&)
MmcState::MmcState(const MmcState& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_mmcnone()) {
    mmcnone_ = new ::Rnes::MmcState_MmcNoneState(*from.mmcnone_);
  } else {
    mmcnone_ = nullptr;
  }
  if (from._internal_has_mmc1()) {
    mmc1_ = new ::Rnes::MmcState_Mmc1State(*from.mmc1_);
  } else {
    mmc1_ = nullptr;
  }
  if (from._internal_has_mmc3()) {
    mmc3_ = new ::Rnes::MmcState_Mmc3State(*from.mmc3_);
  } else {
    mmc3_ = nullptr;
  }
  // @@protoc_insertion_point(copy_constructor:Rnes.MmcState)
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
andq $0x0, 0x8(%rdi)
movq %rsi, %r14
leaq 0x1d80c(%rip), %rax     # 0x40760
movq %rax, (%rdi)
movl 0x10(%rsi), %eax
movl %eax, 0x10(%rdi)
andl $0x0, 0x14(%rdi)
movq 0x8(%rsi), %rsi
testb $0x1, %sil
je 0x22f7c
leaq 0x8(%rbx), %rdi
andq $-0x2, %rsi
addq $0x8, %rsi
callq 0x291a6
movq %r14, %rdi
callq 0x2754c
testb %al, %al
je 0x22fa1
pushq $0x18
popq %rdi
callq 0xb140
movq %rax, %r15
movq 0x18(%r14), %rsi
movq %rax, %rdi
callq 0x21bd2
jmp 0x22fa4
xorl %r15d, %r15d
movq %r15, 0x18(%rbx)
movq %r14, %rdi
callq 0x275ca
testb %al, %al
je 0x22fcd
pushq $0x30
popq %rdi
callq 0xb140
movq %rax, %r15
movq 0x20(%r14), %rsi
movq %rax, %rdi
callq 0x21fa2
jmp 0x22fd0
xorl %r15d, %r15d
movq %r15, 0x20(%rbx)
movq %r14, %rdi
callq 0x2764a
testb %al, %al
je 0x22ff9
pushq $0x38
popq %rdi
callq 0xb140
movq %rax, %r15
movq 0x28(%r14), %rsi
movq %rax, %rdi
callq 0x22648
jmp 0x22ffc
xorl %r15d, %r15d
movq %r15, 0x28(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
pushq $0x38
jmp 0x2301e
movq %rax, %rbx
pushq $0x30
jmp 0x2301e
movq %rax, %rbx
pushq $0x18
popq %rsi
movq %r15, %rdi
callq 0xb0f0
movq %rbx, %rdi
callq 0xb4e0
nop
// File: /workspace/github_cpp_makefile_star2_O2/mindbeast[P]rnes/bin/save.pb.cc
// Function: Rnes::MmcState::Clear()
void MmcState::Clear() {
// @@protoc_insertion_point(message_clear_start:Rnes.MmcState)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000007u) {
    if (cached_has_bits & 0x00000001u) {
      GOOGLE_DCHECK(mmcnone_ != nullptr);
      mmcnone_->Clear();
    }
    if (cached_has_bits & 0x00000002u) {
      GOOGLE_DCHECK(mmc1_ != nullptr);
      mmc1_->Clear();
    }
    if (cached_has_bits & 0x00000004u) {
      GOOGLE_DCHECK(mmc3_ != nullptr);
      mmc3_->Clear();
    }
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x48, %rsp
movq %rdi, %rbx
movl 0x10(%rdi), %r15d
testb $0x7, %r15b
je 0x231c7
testb $0x1, %r15b
je 0x23119
movq 0x18(%rbx), %rdi
testq %rdi, %rdi
jne 0x23114
leaq 0x9ca9(%rip), %rdx      # 0x2cd81
leaq -0x58(%rbp), %r14
pushq $0x3
popq %rsi
movq %r14, %rdi
movl $0x137f, %ecx           # imm = 0x137F
callq 0xb460
leaq 0x9d4c(%rip), %rsi      # 0x2ce3f
movq %r14, %rdi
callq 0xb980
leaq -0x19(%rbp), %rdi
movq %rax, %rsi
callq 0xb5e0
leaq -0x58(%rbp), %rdi
callq 0xb730
movq 0x18(%rbx), %rdi
callq 0x21c7c
testb $0x2, %r15b
je 0x23170
movq 0x20(%rbx), %rdi
testq %rdi, %rdi
jne 0x2316b
leaq 0x9c52(%rip), %rdx      # 0x2cd81
leaq -0x58(%rbp), %r14
pushq $0x3
popq %rsi
movq %r14, %rdi
movl $0x1383, %ecx           # imm = 0x1383
callq 0xb460
leaq 0x9d19(%rip), %rsi      # 0x2ce63
movq %r14, %rdi
callq 0xb980
leaq -0x19(%rbp), %rdi
movq %rax, %rsi
callq 0xb5e0
leaq -0x58(%rbp), %rdi
callq 0xb730
movq 0x20(%rbx), %rdi
callq 0x2206c
testb $0x4, %r15b
je 0x231c7
movq 0x28(%rbx), %rdi
testq %rdi, %rdi
jne 0x231c2
leaq 0x9bfb(%rip), %rdx      # 0x2cd81
leaq -0x58(%rbp), %r14
pushq $0x3
popq %rsi
movq %r14, %rdi
movl $0x1387, %ecx           # imm = 0x1387
callq 0xb460
leaq 0x9ce3(%rip), %rsi      # 0x2ce84
movq %r14, %rdi
callq 0xb980
leaq -0x19(%rbp), %rdi
movq %rax, %rsi
callq 0xb5e0
leaq -0x58(%rbp), %rdi
callq 0xb730
movq 0x28(%rbx), %rdi
callq 0x22756
andl $0x0, 0x10(%rbx)
testb $0x1, 0x8(%rbx)
je 0x231dd
addq $0x8, %rbx
movq %rbx, %rdi
callq 0x291de
addq $0x48, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
jmp 0x231f2
jmp 0x231f2
jmp 0x231f2
jmp 0x231f2
jmp 0x231f2
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
callq 0xb730
movq %rbx, %rdi
callq 0xb4e0
// File: /workspace/github_cpp_makefile_star2_O2/mindbeast[P]rnes/bin/save.pb.cc
// Function: Rnes::MmcState::_InternalSerialize(unsigned char*, google::protobuf::io::EpsCopyOutputStream*) const
::PROTOBUF_NAMESPACE_ID::uint8* MmcState::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:Rnes.MmcState)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional .Rnes.MmcState.MmcNoneState mmcNone = 1;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        1, _Internal::mmcnone(this), target, stream);
  }

  // optional .Rnes.MmcState.Mmc1State mmc1 = 2;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        2, _Internal::mmc1(this), target, stream);
  }

  // optional .Rnes.MmcState.Mmc3State mmc3 = 3;
  if (cached_has_bits & 0x00000004u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        3, _Internal::mmc3(this), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:Rnes.MmcState)
  return target;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rdx, %rbx
movq %rdi, %r14
movl 0x10(%rdi), %r12d
testb $0x1, %r12b
je 0x23390
movq %rbx, %rdi
callq 0x2682a
movq 0x18(%r14), %r15
movb $0xa, (%rax)
leaq 0x1(%rax), %rsi
movl 0x10(%r15), %edi
callq 0x28e5c
movq %r15, %rdi
movq %rax, %rsi
movq %rbx, %rdx
callq 0x21d4e
movq %rax, %rsi
testb $0x2, %r12b
je 0x233c3
movq %rbx, %rdi
callq 0x2682a
movq 0x20(%r14), %r15
movb $0x12, (%rax)
leaq 0x1(%rax), %rsi
movl 0x14(%r15), %edi
callq 0x28e5c
movq %r15, %rdi
movq %rax, %rsi
movq %rbx, %rdx
callq 0x22228
movq %rax, %rsi
testb $0x4, %r12b
je 0x233f6
movq %rbx, %rdi
callq 0x2682a
movq 0x28(%r14), %r15
movb $0x1a, (%rax)
leaq 0x1(%rax), %rsi
movl 0x14(%r15), %edi
callq 0x28e5c
movq %r15, %rdi
movq %rax, %rsi
movq %rbx, %rdx
callq 0x2297e
movq %rax, %rsi
movq 0x8(%r14), %rdi
testb $0x1, %dil
jne 0x2340c
movq %rsi, %rax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
andq $-0x2, %rdi
addq $0x8, %rdi
movq %rbx, %rdx
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0xb260