LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_cpp_makefile_star2_O3/mindbeast[P]rnes/bin/save.pb.cc
// Function: Rnes::NoiseState::MergeFrom(Rnes::NoiseState const&)
void NoiseState::MergeFrom(const NoiseState& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:Rnes.NoiseState)
  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 & 0x0000007fu) {
    if (cached_has_bits & 0x00000001u) {
      lengthcounter_ = from.lengthcounter_;
    }
    if (cached_has_bits & 0x00000002u) {
      shiftregister_ = from.shiftregister_;
    }
    if (cached_has_bits & 0x00000004u) {
      envelope_ = from.envelope_;
    }
    if (cached_has_bits & 0x00000008u) {
      envelopedivider_ = from.envelopedivider_;
    }
    if (cached_has_bits & 0x00000010u) {
      resetenvelopeanddivider_ = from.resetenvelopeanddivider_;
    }
    if (cached_has_bits & 0x00000020u) {
      currentsample_ = from.currentsample_;
    }
    if (cached_has_bits & 0x00000040u) {
      timerdivider_ = from.timerdivider_;
    }
    _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 0x268c3
leaq 0xf408(%rip), %rdx      # 0x35c91
leaq -0x58(%rbp), %r15
movq %r15, %rdi
movl $0x3, %esi
movl $0x8fe, %ecx            # imm = 0x8FE
callq 0xa450
leaq 0xf3fa(%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 0x268de
leaq 0x8(%rbx), %rdi
andq $-0x2, %rsi
addq $0x8, %rsi
callq 0x31dc8
movl 0x10(%r14), %eax
testb $0x7f, %al
je 0x26936
testb $0x1, %al
je 0x268f1
movl 0x18(%r14), %ecx
movl %ecx, 0x18(%rbx)
testb $0x2, %al
je 0x268fc
movl 0x1c(%r14), %ecx
movl %ecx, 0x1c(%rbx)
testb $0x4, %al
je 0x26907
movl 0x20(%r14), %ecx
movl %ecx, 0x20(%rbx)
testb $0x8, %al
je 0x26912
movl 0x24(%r14), %ecx
movl %ecx, 0x24(%rbx)
testb $0x10, %al
je 0x2691d
movb 0x28(%r14), %cl
movb %cl, 0x28(%rbx)
testb $0x20, %al
je 0x26928
movl 0x2c(%r14), %ecx
movl %ecx, 0x2c(%rbx)
testb $0x40, %al
je 0x26933
movl 0x30(%r14), %ecx
movl %ecx, 0x30(%rbx)
orl %eax, 0x10(%rbx)
addq $0x48, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
jmp 0x26943
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
callq 0xa730
movq %rbx, %rdi
callq 0xa4d0
nop
// File: /workspace/github_cpp_makefile_star2_O3/mindbeast[P]rnes/bin/save.pb.cc
// Function: Rnes::NoiseState::InternalSwap(Rnes::NoiseState*)
void NoiseState::InternalSwap(NoiseState* 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(NoiseState, timerdivider_)
      + sizeof(NoiseState::timerdivider_)
      - PROTOBUF_FIELD_OFFSET(NoiseState, lengthcounter_)>(
          reinterpret_cast<char*>(&lengthcounter_),
          reinterpret_cast<char*>(&other->lengthcounter_));
}

// 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 0x269cf
testb $0x1, %sil
jne 0x269d5
jmp 0x269e6
testb $0x1, %sil
je 0x26a29
andq $-0x2, %rsi
addq $0x8, %rsi
leaq 0x8(%r14), %rdi
callq 0x31e36
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)
movq 0x28(%r14), %rax
movq 0x28(%rbx), %rcx
movq %rcx, 0x28(%r14)
movq %rax, 0x28(%rbx)
movl 0x30(%r14), %eax
movl 0x30(%rbx), %ecx
movl %ecx, 0x30(%r14)
movl %eax, 0x30(%rbx)
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x8(%rbx), %rdi
callq 0x31c54
movq %rax, %rsi
jmp 0x269dd
nop
// File: /workspace/github_cpp_makefile_star2_O3/mindbeast[P]rnes/bin/save.pb.cc
// Function: Rnes::ApuState::InitAsDefaultInstance()
void ApuState::InitAsDefaultInstance() {
  ::Rnes::_ApuState_default_instance_._instance.get_mutable()->pulsea_ = const_cast< ::Rnes::PulseState*>(
      ::Rnes::PulseState::internal_default_instance());
  ::Rnes::_ApuState_default_instance_._instance.get_mutable()->pulseb_ = const_cast< ::Rnes::PulseState*>(
      ::Rnes::PulseState::internal_default_instance());
  ::Rnes::_ApuState_default_instance_._instance.get_mutable()->triangle_ = const_cast< ::Rnes::TriangleState*>(
      ::Rnes::TriangleState::internal_default_instance());
  ::Rnes::_ApuState_default_instance_._instance.get_mutable()->noise_ = const_cast< ::Rnes::NoiseState*>(
      ::Rnes::NoiseState::internal_default_instance());
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
leaq 0x20dd9(%rip), %rax     # 0x47840
movq %rax, 0x20e9a(%rip)     # 0x47908
movq %rax, 0x20e9b(%rip)     # 0x47910
leaq 0x20dfc(%rip), %rax     # 0x47878
movq %rax, 0x20e95(%rip)     # 0x47918
leaq 0x20e1e(%rip), %rax     # 0x478a8
movq %rax, 0x20e8f(%rip)     # 0x47920
popq %rbp
retq
nop
// File: /workspace/github_cpp_makefile_star2_O3/mindbeast[P]rnes/bin/save.pb.cc
// Function: Rnes::ApuState::MergeFrom(google::protobuf::Message const&)
void ApuState::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:Rnes.ApuState)
  GOOGLE_DCHECK_NE(&from, this);
  const ApuState* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<ApuState>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:Rnes.ApuState)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:Rnes.ApuState)
    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 0x280d9
leaq 0xdbf2(%rip), %rdx      # 0x35c91
leaq -0x58(%rbp), %r15
movq %r15, %rdi
movl $0x3, %esi
movl $0xb8d, %ecx            # imm = 0xB8D
callq 0xa450
leaq 0xdbe4(%rip), %rsi      # 0x35ca0
movq %r15, %rdi
callq 0xa980
leaq -0x19(%rbp), %rdi
movq %rax, %rsi
callq 0xa600
leaq -0x58(%rbp), %rdi
callq 0xa730
leaq 0x1e250(%rip), %rax     # 0x46330
cmpq %rax, (%rbx)
je 0x280f2
movq %rbx, %rdi
movq %r14, %rsi
callq 0xa580
jmp 0x280fd
movq %r14, %rdi
movq %rbx, %rsi
callq 0x2811e
addq $0x48, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
jmp 0x2810a
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
callq 0xa730
movq %rbx, %rdi
callq 0xa4d0
// File: /workspace/github_cpp_makefile_star2_O3/mindbeast[P]rnes/bin/save.pb.cc
// Function: Rnes::ApuState::InternalSwap(Rnes::ApuState*)
void ApuState::InternalSwap(ApuState* other) {
  using std::swap;
  _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  reg_.InternalSwap(&other->reg_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(ApuState, nextsamplecountdown_)
      + sizeof(ApuState::nextsamplecountdown_)
      - PROTOBUF_FIELD_OFFSET(ApuState, pulsea_)>(
          reinterpret_cast<char*>(&pulsea_),
          reinterpret_cast<char*>(&other->pulsea_));
}

// 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 0x28427
testb $0x1, %sil
jne 0x28431
jmp 0x28442
testb $0x1, %sil
je 0x284ba
andq $-0x2, %rsi
addq $0x8, %rsi
leaq 0x8(%r14), %rdi
callq 0x31e36
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 0xa110
movups 0x28(%r14), %xmm0
movups 0x28(%rbx), %xmm1
movups %xmm1, 0x28(%r14)
movups %xmm0, 0x28(%rbx)
movups 0x38(%r14), %xmm0
movups 0x38(%rbx), %xmm1
movups %xmm1, 0x38(%r14)
movups %xmm0, 0x38(%rbx)
movups 0x48(%r14), %xmm0
movups 0x48(%rbx), %xmm1
movups %xmm1, 0x48(%r14)
movups %xmm0, 0x48(%rbx)
movups 0x58(%r14), %xmm0
movups 0x58(%rbx), %xmm1
movups %xmm1, 0x58(%r14)
movups %xmm0, 0x58(%rbx)
movq 0x68(%r14), %rax
movq 0x68(%rbx), %rcx
movq %rcx, 0x68(%r14)
movq %rax, 0x68(%rbx)
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x8(%rbx), %rdi
callq 0x31c54
movq %rax, %rsi
jmp 0x28439
nop
// File: /workspace/github_cpp_makefile_star2_O3/mindbeast[P]rnes/bin/save.pb.cc
// Function: Rnes::PpuState_SpriteState::PpuState_SpriteState(Rnes::PpuState_SpriteState const&)
PpuState_SpriteState::PpuState_SpriteState(const PpuState_SpriteState& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&ycoordminus1_, &from.ycoordminus1_,
    static_cast<size_t>(reinterpret_cast<char*>(&xcoord_) -
    reinterpret_cast<char*>(&ycoordminus1_)) + sizeof(xcoord_));
  // @@protoc_insertion_point(copy_constructor:Rnes.PpuState.SpriteState)
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rsi, %r14
movq %rdi, %rbx
movq $0x0, 0x8(%rdi)
leaq 0x1deaa(%rip), %rax     # 0x463e0
movq %rax, (%rdi)
movl 0x10(%rsi), %eax
movl %eax, 0x10(%rdi)
movl $0x0, 0x14(%rdi)
movq 0x8(%rsi), %rsi
testb $0x1, %sil
je 0x28561
leaq 0x8(%rbx), %rdi
andq $-0x2, %rsi
addq $0x8, %rsi
callq 0x31dc8
movups 0x18(%r14), %xmm0
movups %xmm0, 0x18(%rbx)
popq %rbx
popq %r14
popq %rbp
retq
nop
// File: /workspace/github_cpp_makefile_star2_O3/mindbeast[P]rnes/bin/save.pb.cc
// Function: Rnes::PpuState_SpriteState::Clear()
void PpuState_SpriteState::Clear() {
// @@protoc_insertion_point(message_clear_start:Rnes.PpuState.SpriteState)
  ::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) {
    ::memset(&ycoordminus1_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&xcoord_) -
        reinterpret_cast<char*>(&ycoordminus1_)) + sizeof(xcoord_));
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
testb $0xf, 0x10(%rdi)
je 0x28669
xorps %xmm0, %xmm0
movups %xmm0, 0x18(%rdi)
movl $0x0, 0x10(%rdi)
testb $0x1, 0x8(%rdi)
jne 0x28678
popq %rbp
retq
addq $0x8, %rdi
popq %rbp
jmp 0x31e00
// File: /workspace/github_cpp_makefile_star2_O3/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 0x28b3e
testb $0x1, %cl
jne 0x28b42
xorl %eax, %eax
jmp 0x28b56
xorl %eax, %eax
jmp 0x28bad
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 0x28b73
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 0x28b90
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 0x28bad
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 0x28bb8
movl %eax, 0x14(%rdx)
popq %rbp
retq
leaq 0x8(%rdx), %rdi
addq $0x14, %rdx
movq %rax, %rsi
popq %rbp
jmp 0xa920
nop
// File: /workspace/github_cpp_makefile_star2_O3/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 0x28c23
leaq 0xd0a8(%rip), %rdx      # 0x35c91
leaq -0x58(%rbp), %r15
movq %r15, %rdi
movl $0x3, %esi
movl $0xce6, %ecx            # imm = 0xCE6
callq 0xa450
leaq 0xd09a(%rip), %rsi      # 0x35ca0
movq %r15, %rdi
callq 0xa980
leaq -0x19(%rbp), %rdi
movq %rax, %rsi
callq 0xa600
leaq -0x58(%rbp), %rdi
callq 0xa730
leaq 0x1d7b6(%rip), %rax     # 0x463e0
cmpq %rax, (%rbx)
je 0x28c3c
movq %rbx, %rdi
movq %r14, %rsi
callq 0xa580
jmp 0x28c47
movq %r14, %rdi
movq %rbx, %rsi
callq 0x28c68
addq $0x48, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
jmp 0x28c54
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
callq 0xa730
movq %rbx, %rdi
callq 0xa4d0
// File: /workspace/github_cpp_makefile_star2_O3/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 0x28cc1
leaq 0xd00a(%rip), %rdx      # 0x35c91
leaq -0x58(%rbp), %r15
movq %r15, %rdi
movl $0x3, %esi
movl $0xcf5, %ecx            # imm = 0xCF5
callq 0xa450
leaq 0xcffc(%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 0x28cdc
leaq 0x8(%rbx), %rdi
andq $-0x2, %rsi
addq $0x8, %rsi
callq 0x31dc8
movl 0x10(%r14), %eax
testb $0xf, %al
je 0x28d13
testb $0x1, %al
je 0x28cef
movl 0x18(%r14), %ecx
movl %ecx, 0x18(%rbx)
testb $0x2, %al
je 0x28cfa
movl 0x1c(%r14), %ecx
movl %ecx, 0x1c(%rbx)
testb $0x4, %al
je 0x28d05
movl 0x20(%r14), %ecx
movl %ecx, 0x20(%rbx)
testb $0x8, %al
je 0x28d10
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 0x28d20
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
callq 0xa730
movq %rbx, %rdi
callq 0xa4d0
// File: /workspace/github_cpp_makefile_star2_O3/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 0x28dab
testb $0x1, %sil
jne 0x28db1
jmp 0x28dc2
testb $0x1, %sil
je 0x28de7
andq $-0x2, %rsi
addq $0x8, %rsi
leaq 0x8(%r14), %rdi
callq 0x31e36
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 0x31c54
movq %rax, %rsi
jmp 0x28db9
nop
// File: /workspace/github_cpp_makefile_star2_O3/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 %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %r15
movq %rdi, %r14
xorl %r13d, %r13d
movq %r13, 0x8(%rdi)
leaq 0x1d5c4(%rip), %rax     # 0x46490
movq %rax, (%rdi)
movl 0x10(%rsi), %eax
movl %eax, 0x10(%rdi)
movl $0x0, 0x14(%rdi)
leaq 0x18(%rdi), %rbx
addq $0x18, %rsi
movq %rbx, %rdi
callq 0xa360
leaq 0x28(%r14), %r12
leaq 0x28(%r15), %rsi
movq %r13, 0x38(%r14)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%r14)
movq %r12, %rdi
callq 0x31fc6
movq 0x8(%r15), %rsi
testb $0x1, %sil
je 0x28f23
leaq 0x8(%r14), %rdi
andq $-0x2, %rsi
addq $0x8, %rsi
callq 0x31dc8
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)
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
movq %r12, %rdi
callq 0x312c2
jmp 0x28f70
movq %rax, %r14
movq %r12, %rdi
callq 0x31faa
movq %rbx, %rdi
callq 0xa0f0
movq %r14, %rdi
callq 0xa4d0
// File: /workspace/github_cpp_makefile_star2_O3/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
movl $0x0, 0x18(%rdi)
addq $0x28, %rdi
callq 0x31d22
movl 0x10(%rbx), %eax
testb %al, %al
je 0x290ad
xorps %xmm0, %xmm0
movups %xmm0, 0x50(%rbx)
movups %xmm0, 0x40(%rbx)
movq $0x0, 0x60(%rbx)
testl $0x700, %eax            # imm = 0x700
je 0x290c3
movl $0x0, 0x70(%rbx)
movq $0x0, 0x68(%rbx)
movl $0x0, 0x10(%rbx)
testb $0x1, 0x8(%rbx)
jne 0x290d7
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
addq $0x8, %rbx
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x31e00
nop
// File: /workspace/github_cpp_makefile_star2_O3/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 0x2a0cf
leaq 0xbbfc(%rip), %rdx      # 0x35c91
leaq -0x58(%rbp), %r15
movq %r15, %rdi
movl $0x3, %esi
movl $0xf0b, %ecx            # imm = 0xF0B
callq 0xa450
leaq 0xbbee(%rip), %rsi      # 0x35ca0
movq %r15, %rdi
callq 0xa980
leaq -0x19(%rbp), %rdi
movq %rax, %rsi
callq 0xa600
leaq -0x58(%rbp), %rdi
callq 0xa730
leaq 0x1c3ba(%rip), %rax     # 0x46490
cmpq %rax, (%rbx)
je 0x2a0e8
movq %rbx, %rdi
movq %r14, %rsi
callq 0xa580
jmp 0x2a0f3
movq %r14, %rdi
movq %rbx, %rsi
callq 0x2a114
addq $0x48, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
jmp 0x2a100
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
callq 0xa730
movq %rbx, %rdi
callq 0xa4d0
// File: /workspace/github_cpp_makefile_star2_O3/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 0x2a2d1
testb $0x1, %sil
jne 0x2a2db
jmp 0x2a2ec
testb $0x1, %sil
je 0x2a35d
andq $-0x2, %rsi
addq $0x8, %rsi
leaq 0x8(%r14), %rdi
callq 0x31e36
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 0xa110
leaq 0x28(%r14), %rdi
leaq 0x28(%rbx), %rsi
callq 0x32150
movups 0x40(%r14), %xmm0
movups 0x40(%rbx), %xmm1
movups %xmm1, 0x40(%r14)
movups %xmm0, 0x40(%rbx)
movups 0x50(%r14), %xmm0
movups 0x50(%rbx), %xmm1
movups %xmm1, 0x50(%r14)
movups %xmm0, 0x50(%rbx)
movups 0x60(%r14), %xmm0
movups 0x60(%rbx), %xmm1
movups %xmm1, 0x60(%r14)
movups %xmm0, 0x60(%rbx)
movl 0x70(%r14), %eax
movl 0x70(%rbx), %ecx
movl %ecx, 0x70(%r14)
movl %eax, 0x70(%rbx)
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x8(%rbx), %rdi
callq 0x31c54
movq %rax, %rsi
jmp 0x2a2e3
// File: /workspace/github_cpp_makefile_star2_O3/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 0x2a501
movq %rsi, %rax
popq %rbp
retq
andq $-0x2, %rdi
addq $0x8, %rdi
popq %rbp
jmp 0xa230
nop
// File: /workspace/github_cpp_makefile_star2_O3/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 0x2a58d
leaq 0xb73e(%rip), %rdx      # 0x35c91
leaq -0x58(%rbp), %r15
movq %r15, %rdi
movl $0x3, %esi
movl $0xfe3, %ecx            # imm = 0xFE3
callq 0xa450
leaq 0xb730(%rip), %rsi      # 0x35ca0
movq %r15, %rdi
callq 0xa980
leaq -0x19(%rbp), %rdi
movq %rax, %rsi
callq 0xa600
leaq -0x58(%rbp), %rdi
callq 0xa730
leaq 0x1bfac(%rip), %rax     # 0x46540
cmpq %rax, (%rbx)
je 0x2a5a6
movq %rbx, %rdi
movq %r14, %rsi
callq 0xa580
jmp 0x2a5b1
movq %r14, %rdi
movq %rbx, %rsi
callq 0x2a5d2
addq $0x48, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
jmp 0x2a5be
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
callq 0xa730
movq %rbx, %rdi
callq 0xa4d0
// File: /workspace/github_cpp_makefile_star2_O3/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 0x2a62b
leaq 0xb6a0(%rip), %rdx      # 0x35c91
leaq -0x58(%rbp), %r15
movq %r15, %rdi
movl $0x3, %esi
movl $0xff2, %ecx            # imm = 0xFF2
callq 0xa450
leaq 0xb692(%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 0x2a649
addq $0x8, %rbx
andq $-0x2, %rsi
addq $0x8, %rsi
movq %rbx, %rdi
callq 0x31dc8
addq $0x48, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
jmp 0x2a656
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
callq 0xa730
movq %rbx, %rdi
callq 0xa4d0
// File: /workspace/github_cpp_makefile_star2_O3/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 %rsi, %r14
movq %rdi, %rbx
movq $0x0, 0x8(%rdi)
leaq 0x1be60(%rip), %rax     # 0x465f0
movq %rax, (%rdi)
movl 0x10(%rsi), %eax
movl %eax, 0x10(%rdi)
movl $0x0, 0x14(%rdi)
movq 0x8(%rsi), %rsi
testb $0x1, %sil
je 0x2a7bb
leaq 0x8(%rbx), %rdi
andq $-0x2, %rsi
addq $0x8, %rsi
callq 0x31dc8
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_O3/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 0x2a8d0
xorps %xmm0, %xmm0
movups %xmm0, 0x18(%rdi)
movl $0x0, 0x28(%rdi)
movl $0x0, 0x10(%rdi)
testb $0x1, 0x8(%rdi)
jne 0x2a8df
popq %rbp
retq
addq $0x8, %rdi
popq %rbp
jmp 0x31e00
nop
// File: /workspace/github_cpp_makefile_star2_O3/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 0x2ae70
testb $0x1, %cl
jne 0x2ae77
xorl %eax, %eax
jmp 0x2ae8b
xorl %eax, %eax
jmp 0x2aeff
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 0x2aea8
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 0x2aec5
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 0x2aee2
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 0x2aeff
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 0x2af0a
movl %eax, 0x14(%rdx)
popq %rbp
retq
leaq 0x8(%rdx), %rdi
addq $0x14, %rdx
movq %rax, %rsi
popq %rbp
jmp 0xa920
nop
// File: /workspace/github_cpp_makefile_star2_O3/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 0x2af75
leaq 0xad56(%rip), %rdx      # 0x35c91
leaq -0x58(%rbp), %r15
movq %r15, %rdi
movl $0x3, %esi
movl $0x111a, %ecx           # imm = 0x111A
callq 0xa450
leaq 0xad48(%rip), %rsi      # 0x35ca0
movq %r15, %rdi
callq 0xa980
leaq -0x19(%rbp), %rdi
movq %rax, %rsi
callq 0xa600
leaq -0x58(%rbp), %rdi
callq 0xa730
leaq 0x1b674(%rip), %rax     # 0x465f0
cmpq %rax, (%rbx)
je 0x2af8e
movq %rbx, %rdi
movq %r14, %rsi
callq 0xa580
jmp 0x2af99
movq %r14, %rdi
movq %rbx, %rsi
callq 0x2afba
addq $0x48, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
jmp 0x2afa6
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
callq 0xa730
movq %rbx, %rdi
callq 0xa4d0
// File: /workspace/github_cpp_makefile_star2_O3/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 0x2b013
leaq 0xacb8(%rip), %rdx      # 0x35c91
leaq -0x58(%rbp), %r15
movq %r15, %rdi
movl $0x3, %esi
movl $0x1129, %ecx           # imm = 0x1129
callq 0xa450
leaq 0xacaa(%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 0x2b02e
leaq 0x8(%rbx), %rdi
andq $-0x2, %rsi
addq $0x8, %rsi
callq 0x31dc8
movl 0x10(%r14), %eax
testb $0x1f, %al
je 0x2b070
testb $0x1, %al
je 0x2b041
movl 0x18(%r14), %ecx
movl %ecx, 0x18(%rbx)
testb $0x2, %al
je 0x2b04c
movl 0x1c(%r14), %ecx
movl %ecx, 0x1c(%rbx)
testb $0x4, %al
je 0x2b057
movl 0x20(%r14), %ecx
movl %ecx, 0x20(%rbx)
testb $0x8, %al
je 0x2b062
movl 0x24(%r14), %ecx
movl %ecx, 0x24(%rbx)
testb $0x10, %al
je 0x2b06d
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 0x2b07d
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
callq 0xa730
movq %rbx, %rdi
callq 0xa4d0
nop
// File: /workspace/github_cpp_makefile_star2_O3/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 0x2b109
testb $0x1, %sil
jne 0x2b10f
jmp 0x2b120
testb $0x1, %sil
je 0x2b153
andq $-0x2, %rsi
addq $0x8, %rsi
leaq 0x8(%r14), %rdi
callq 0x31e36
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 0x31c54
movq %rax, %rsi
jmp 0x2b117
nop
// File: /workspace/github_cpp_makefile_star2_O3/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 %rsi, %r14
movq %rdi, %rbx
leaq 0x8(%rdi), %r15
movq $0x0, 0x8(%rdi)
leaq 0x1b493(%rip), %rax     # 0x466a0
movq %rax, (%rdi)
movl 0x10(%rsi), %eax
movl %eax, 0x10(%rdi)
movl $0x0, 0x14(%rdi)
movq 0x8(%rsi), %rsi
testb $0x1, %sil
je 0x2b237
andq $-0x2, %rsi
addq $0x8, %rsi
movq %r15, %rdi
callq 0x31dc8
movq 0x1bd82(%rip), %rax     # 0x46fc0
movq %rax, 0x18(%rbx)
testb $0x1, 0x10(%r14)
je 0x2b25f
leaq 0x18(%rbx), %rdi
movq 0x18(%r14), %rdx
movq (%r15), %rsi
testb $0x1, %sil
jne 0x2b27b
callq 0x22bf0
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, %rsi
movq (%rsi), %rsi
jmp 0x2b25a
// File: /workspace/github_cpp_makefile_star2_O3/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 0x2b323
movq 0x18(%rdi), %rcx
movq $0x0, 0x8(%rcx)
movq (%rcx), %rcx
movb $0x0, (%rcx)
testb $-0x2, %al
je 0x2b336
xorps %xmm0, %xmm0
movups %xmm0, 0x20(%rdi)
movq $0x0, 0x2e(%rdi)
movl $0x0, 0x10(%rdi)
testb $0x1, 0x8(%rdi)
jne 0x2b345
popq %rbp
retq
addq $0x8, %rdi
popq %rbp
jmp 0x31e00
nop
// File: /workspace/github_cpp_makefile_star2_O3/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 0x2bbbd
leaq 0xa10e(%rip), %rdx      # 0x35c91
leaq -0x58(%rbp), %r15
movq %r15, %rdi
movl $0x3, %esi
movl $0x12ba, %ecx           # imm = 0x12BA
callq 0xa450
leaq 0xa100(%rip), %rsi      # 0x35ca0
movq %r15, %rdi
callq 0xa980
leaq -0x19(%rbp), %rdi
movq %rax, %rsi
callq 0xa600
leaq -0x58(%rbp), %rdi
callq 0xa730
leaq 0x1aadc(%rip), %rax     # 0x466a0
cmpq %rax, (%rbx)
je 0x2bbd6
movq %rbx, %rdi
movq %r14, %rsi
callq 0xa580
jmp 0x2bbe1
movq %r14, %rdi
movq %rbx, %rsi
callq 0x2bc02
addq $0x48, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
jmp 0x2bbee
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
callq 0xa730
movq %rbx, %rdi
callq 0xa4d0
// File: /workspace/github_cpp_makefile_star2_O3/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 0x2bc5b
leaq 0xa070(%rip), %rdx      # 0x35c91
leaq -0x58(%rbp), %r15
movq %r15, %rdi
movl $0x3, %esi
movl $0x12c9, %ecx           # imm = 0x12C9
callq 0xa450
leaq 0xa062(%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 0x2bc76
leaq 0x8(%rbx), %rdi
andq $-0x2, %rsi
addq $0x8, %rsi
callq 0x31dc8
movl 0x10(%r14), %r15d
testb %r15b, %r15b
je 0x2bd1f
testb $0x1, %r15b
je 0x2bcc1
movq 0x18(%r14), %rdx
orl $0x1, 0x10(%rbx)
leaq 0x18(%rbx), %rdi
movq 0x8(%rbx), %rsi
testb $0x1, %sil
jne 0x2bd2a
movq (%rdi), %rax
cmpq 0x1b313(%rip), %rax     # 0x46fc0
je 0x2bcbc
movq %rax, %rdi
movq %rdx, %rsi
callq 0xa900
jmp 0x2bcc1
callq 0x22bf0
testb $0x2, %r15b
je 0x2bcce
movl 0x20(%r14), %eax
movl %eax, 0x20(%rbx)
testb $0x4, %r15b
je 0x2bcdb
movl 0x24(%r14), %eax
movl %eax, 0x24(%rbx)
testb $0x8, %r15b
je 0x2bce8
movl 0x28(%r14), %eax
movl %eax, 0x28(%rbx)
testb $0x10, %r15b
je 0x2bcf5
movl 0x2c(%r14), %eax
movl %eax, 0x2c(%rbx)
testb $0x20, %r15b
je 0x2bd02
movl 0x30(%r14), %eax
movl %eax, 0x30(%rbx)
testb $0x40, %r15b
je 0x2bd0f
movb 0x34(%r14), %al
movb %al, 0x34(%rbx)
testb %r15b, %r15b
jns 0x2bd1b
movb 0x35(%r14), %al
movb %al, 0x35(%rbx)
orl %r15d, 0x10(%rbx)
addq $0x48, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
andq $-0x2, %rsi
movq (%rsi), %rsi
jmp 0x2bca3
jmp 0x2bd38
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
callq 0xa730
movq %rbx, %rdi
callq 0xa4d0