// File: /workspace/github_cpp_makefile_star2_O3/mindbeast[P]rnes/bin/save.pb.cc
// Function: Rnes::ApuState::MergeFrom(Rnes::ApuState const&)
void ApuState::MergeFrom(const ApuState& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:Rnes.ApuState)
  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;

  reg_.MergeFrom(from.reg_);
  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    if (cached_has_bits & 0x00000001u) {
      _internal_mutable_pulsea()->::Rnes::PulseState::MergeFrom(from._internal_pulsea());
    }
    if (cached_has_bits & 0x00000002u) {
      _internal_mutable_pulseb()->::Rnes::PulseState::MergeFrom(from._internal_pulseb());
    }
    if (cached_has_bits & 0x00000004u) {
      _internal_mutable_triangle()->::Rnes::TriangleState::MergeFrom(from._internal_triangle());
    }
    if (cached_has_bits & 0x00000008u) {
      _internal_mutable_noise()->::Rnes::NoiseState::MergeFrom(from._internal_noise());
    }
    if (cached_has_bits & 0x00000010u) {
      samplerate_ = from.samplerate_;
    }
    if (cached_has_bits & 0x00000020u) {
      fourframecount_ = from.fourframecount_;
    }
    if (cached_has_bits & 0x00000040u) {
      fiveframecount_ = from.fiveframecount_;
    }
    if (cached_has_bits & 0x00000080u) {
      framedivider_ = from.framedivider_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  if (cached_has_bits & 0x00003f00u) {
    if (cached_has_bits & 0x00000100u) {
      step_ = from.step_;
    }
    if (cached_has_bits & 0x00000200u) {
      halftimerdivider_ = from.halftimerdivider_;
    }
    if (cached_has_bits & 0x00000400u) {
      samplerdivider_ = from.samplerdivider_;
    }
    if (cached_has_bits & 0x00000800u) {
      clkspersample_ = from.clkspersample_;
    }
    if (cached_has_bits & 0x00001000u) {
      currentsampleclk_ = from.currentsampleclk_;
    }
    if (cached_has_bits & 0x00002000u) {
      nextsamplecountdown_ = from.nextsamplecountdown_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x40, %rsp
movq %rsi, %r14
movq %rdi, %rbx
cmpq %rdi, %rsi
jne 0x28179
leaq 0xdb52(%rip), %rdx      # 0x35c91
leaq -0x60(%rbp), %r15
movq %r15, %rdi
movl $0x3, %esi
movl $0xb9c, %ecx            # imm = 0xB9C
callq 0xa450
leaq 0xdb44(%rip), %rsi      # 0x35ca0
movq %r15, %rdi
callq 0xa980
leaq -0x21(%rbp), %rdi
movq %rax, %rsi
callq 0xa600
leaq -0x60(%rbp), %rdi
callq 0xa730
leaq 0x8(%rbx), %r15
movq 0x8(%r14), %rsi
testb $0x1, %sil
je 0x28197
andq $-0x2, %rsi
addq $0x8, %rsi
movq %r15, %rdi
callq 0x31dc8
leaq 0x18(%rbx), %rdi
leaq 0x18(%r14), %rsi
callq 0xa400
movl 0x10(%r14), %r12d
testb %r12b, %r12b
je 0x282f4
testb $0x1, %r12b
je 0x281f4
orb $0x1, 0x10(%rbx)
movq 0x28(%rbx), %rdi
testq %rdi, %rdi
jne 0x281dd
movq (%r15), %rdi
testb $0x1, %dil
jne 0x2836a
callq 0x308c6
movq %rax, %rdi
movq %rax, 0x28(%rbx)
movq 0x28(%r14), %rax
testq %rax, %rax
leaq 0x1f655(%rip), %rsi     # 0x47840
cmovneq %rax, %rsi
callq 0x25194
testb $0x2, %r12b
je 0x28237
orb $0x2, 0x10(%rbx)
movq 0x30(%rbx), %rdi
testq %rdi, %rdi
jne 0x28220
movq (%r15), %rdi
testb $0x1, %dil
jne 0x28376
callq 0x308c6
movq %rax, %rdi
movq %rax, 0x30(%rbx)
movq 0x30(%r14), %rax
testq %rax, %rax
leaq 0x1f612(%rip), %rsi     # 0x47840
cmovneq %rax, %rsi
callq 0x25194
testb $0x4, %r12b
je 0x2827a
orb $0x4, 0x10(%rbx)
movq 0x38(%rbx), %rdi
testq %rdi, %rdi
jne 0x28263
movq (%r15), %rdi
testb $0x1, %dil
jne 0x28382
callq 0x30934
movq %rax, %rdi
movq %rax, 0x38(%rbx)
movq 0x38(%r14), %rax
testq %rax, %rax
leaq 0x1f607(%rip), %rsi     # 0x47878
cmovneq %rax, %rsi
callq 0x25cb0
testb $0x8, %r12b
je 0x282bd
orb $0x8, 0x10(%rbx)
movq 0x40(%rbx), %rdi
testq %rdi, %rdi
jne 0x282a6
movq (%r15), %rdi
testb $0x1, %dil
jne 0x2838e
callq 0x3099a
movq %rax, %rdi
movq %rax, 0x40(%rbx)
movq 0x40(%r14), %rax
testq %rax, %rax
leaq 0x1f5f4(%rip), %rsi     # 0x478a8
cmovneq %rax, %rsi
callq 0x2686a
testb $0x10, %r12b
je 0x282ca
movl 0x48(%r14), %eax
movl %eax, 0x48(%rbx)
testb $0x20, %r12b
je 0x282d7
movl 0x4c(%r14), %eax
movl %eax, 0x4c(%rbx)
testb $0x40, %r12b
je 0x282e4
movl 0x50(%r14), %eax
movl %eax, 0x50(%rbx)
testb %r12b, %r12b
jns 0x282f0
movl 0x54(%r14), %eax
movl %eax, 0x54(%rbx)
orl %r12d, 0x10(%rbx)
testl $0x3f00, %r12d          # imm = 0x3F00
je 0x2835d
btl $0x8, %r12d
jae 0x2830b
movl 0x58(%r14), %eax
movl %eax, 0x58(%rbx)
btl $0x9, %r12d
jae 0x28319
movl 0x5c(%r14), %eax
movl %eax, 0x5c(%rbx)
btl $0xa, %r12d
jae 0x28327
movl 0x60(%r14), %eax
movl %eax, 0x60(%rbx)
btl $0xb, %r12d
jae 0x28339
movss 0x64(%r14), %xmm0
movss %xmm0, 0x64(%rbx)
btl $0xc, %r12d
jae 0x2834b
movss 0x68(%r14), %xmm0
movss %xmm0, 0x68(%rbx)
btl $0xd, %r12d
jae 0x28359
movl 0x6c(%r14), %eax
movl %eax, 0x6c(%rbx)
orl %r12d, 0x10(%rbx)
addq $0x40, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
andq $-0x2, %rdi
movq (%rdi), %rdi
jmp 0x281d1
andq $-0x2, %rdi
movq (%rdi), %rdi
jmp 0x28214
andq $-0x2, %rdi
movq (%rdi), %rdi
jmp 0x28257
andq $-0x2, %rdi
movq (%rdi), %rdi
jmp 0x2829a
jmp 0x2839c
movq %rax, %rbx
leaq -0x60(%rbp), %rdi
callq 0xa730
movq %rbx, %rdi
callq 0xa4d0