// File: /workspace/github_cpp_makefile_star2_O1/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 0x2925d
leaq 0xda6e(%rip), %rdx      # 0x36c91
leaq -0x60(%rbp), %r15
movq %r15, %rdi
movl $0x3, %esi
movl $0xb9c, %ecx            # imm = 0xB9C
callq 0xb450
leaq 0xda60(%rip), %rsi      # 0x36ca0
movq %r15, %rdi
callq 0xb980
leaq -0x21(%rbp), %rdi
movq %rax, %rsi
callq 0xb600
leaq -0x60(%rbp), %rdi
callq 0xb730
cmpq %rbx, %r14
leaq 0x8(%rbx), %r15
movq 0x8(%r14), %rsi
testb $0x1, %sil
je 0x2927e
andq $-0x2, %rsi
addq $0x8, %rsi
movq %r15, %rdi
callq 0x331ee
leaq 0x18(%rbx), %rdi
leaq 0x18(%r14), %rsi
callq 0xb400
movl 0x10(%r14), %r12d
testb %r12b, %r12b
je 0x293d7
testb $0x1, %r12b
je 0x292da
orb $0x1, 0x10(%rbx)
cmpq $0x0, 0x28(%rbx)
jne 0x292bf
movq (%r15), %rdi
testb $0x1, %dil
jne 0x2944d
callq 0x31caa
movq %rax, 0x28(%rbx)
movq 0x28(%rbx), %rdi
movq 0x28(%r14), %rax
testq %rax, %rax
leaq 0x1f56f(%rip), %rsi     # 0x48840
cmovneq %rax, %rsi
callq 0x261de
testb $0x2, %r12b
je 0x2931c
orb $0x2, 0x10(%rbx)
cmpq $0x0, 0x30(%rbx)
jne 0x29301
movq (%r15), %rdi
testb $0x1, %dil
jne 0x29459
callq 0x31caa
movq %rax, 0x30(%rbx)
movq 0x30(%rbx), %rdi
movq 0x30(%r14), %rax
testq %rax, %rax
leaq 0x1f52d(%rip), %rsi     # 0x48840
cmovneq %rax, %rsi
callq 0x261de
testb $0x4, %r12b
je 0x2935e
orb $0x4, 0x10(%rbx)
cmpq $0x0, 0x38(%rbx)
jne 0x29343
movq (%r15), %rdi
testb $0x1, %dil
jne 0x29465
callq 0x31d18
movq %rax, 0x38(%rbx)
movq 0x38(%rbx), %rdi
movq 0x38(%r14), %rax
testq %rax, %rax
leaq 0x1f523(%rip), %rsi     # 0x48878
cmovneq %rax, %rsi
callq 0x26d12
testb $0x8, %r12b
je 0x293a0
orb $0x8, 0x10(%rbx)
cmpq $0x0, 0x40(%rbx)
jne 0x29385
movq (%r15), %rdi
testb $0x1, %dil
jne 0x29471
callq 0x31d7e
movq %rax, 0x40(%rbx)
movq 0x40(%rbx), %rdi
movq 0x40(%r14), %rax
testq %rax, %rax
leaq 0x1f511(%rip), %rsi     # 0x488a8
cmovneq %rax, %rsi
callq 0x278f2
testb $0x10, %r12b
je 0x293ad
movl 0x48(%r14), %eax
movl %eax, 0x48(%rbx)
testb $0x20, %r12b
je 0x293ba
movl 0x4c(%r14), %eax
movl %eax, 0x4c(%rbx)
testb $0x40, %r12b
je 0x293c7
movl 0x50(%r14), %eax
movl %eax, 0x50(%rbx)
testb %r12b, %r12b
jns 0x293d3
movl 0x54(%r14), %eax
movl %eax, 0x54(%rbx)
orl %r12d, 0x10(%rbx)
testl $0x3f00, %r12d          # imm = 0x3F00
je 0x29440
btl $0x8, %r12d
jae 0x293ee
movl 0x58(%r14), %eax
movl %eax, 0x58(%rbx)
btl $0x9, %r12d
jae 0x293fc
movl 0x5c(%r14), %eax
movl %eax, 0x5c(%rbx)
btl $0xa, %r12d
jae 0x2940a
movl 0x60(%r14), %eax
movl %eax, 0x60(%rbx)
btl $0xb, %r12d
jae 0x2941c
movss 0x64(%r14), %xmm0
movss %xmm0, 0x64(%rbx)
btl $0xc, %r12d
jae 0x2942e
movss 0x68(%r14), %xmm0
movss %xmm0, 0x68(%rbx)
btl $0xd, %r12d
jae 0x2943c
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 0x292b6
andq $-0x2, %rdi
movq (%rdi), %rdi
jmp 0x292f8
andq $-0x2, %rdi
movq (%rdi), %rdi
jmp 0x2933a
andq $-0x2, %rdi
movq (%rdi), %rdi
jmp 0x2937c
jmp 0x2947f
movq %rax, %rbx
leaq -0x60(%rbp), %rdi
callq 0xb730
movq %rbx, %rdi
callq 0xb4d0
nop