// File: mindbeast[P]rnes/bin/save.pb.cc
// Function: Rnes::ApuState::_InternalParse(char const*, google::protobuf::internal::ParseContext*)
const char* ApuState::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  ::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);
    switch (tag >> 3) {
      // repeated uint32 reg = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
          ptr -= 1;
          do {
            ptr += 1;
            _internal_add_reg(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr));
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<8>(ptr));
        } else if (static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedUInt32Parser(_internal_mutable_reg(), ptr, ctx);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional uint32 sampleRate = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) {
          _Internal::set_has_samplerate(&has_bits);
          samplerate_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional uint32 fourFrameCount = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) {
          _Internal::set_has_fourframecount(&has_bits);
          fourframecount_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional uint32 fiveFrameCount = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) {
          _Internal::set_has_fiveframecount(&has_bits);
          fiveframecount_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional uint32 frameDivider = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) {
          _Internal::set_has_framedivider(&has_bits);
          framedivider_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional uint32 step = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) {
          _Internal::set_has_step(&has_bits);
          step_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional uint32 halfTimerDivider = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) {
          _Internal::set_has_halftimerdivider(&has_bits);
          halftimerdivider_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional uint32 samplerDivider = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 64)) {
          _Internal::set_has_samplerdivider(&has_bits);
          samplerdivider_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional float clksPerSample = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 77)) {
          _Internal::set_has_clkspersample(&has_bits);
          clkspersample_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else goto handle_unusual;
        continue;
      // optional float currentSampleClk = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 85)) {
          _Internal::set_has_currentsampleclk(&has_bits);
          currentsampleclk_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else goto handle_unusual;
        continue;
      // optional uint32 nextSampleCountdown = 11;
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 88)) {
          _Internal::set_has_nextsamplecountdown(&has_bits);
          nextsamplecountdown_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .Rnes.PulseState pulseA = 20;
      case 20:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 162)) {
          ptr = ctx->ParseMessage(_internal_mutable_pulsea(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .Rnes.PulseState pulseB = 21;
      case 21:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 170)) {
          ptr = ctx->ParseMessage(_internal_mutable_pulseb(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .Rnes.TriangleState triangle = 22;
      case 22:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 178)) {
          ptr = ctx->ParseMessage(_internal_mutable_triangle(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .Rnes.NoiseState noise = 23;
      case 23:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 186)) {
          ptr = ctx->ParseMessage(_internal_mutable_noise(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        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;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movq %rdi, -0x38(%rbp)
movq %rsi, -0x40(%rbp)
movq %rdx, -0x48(%rbp)
movq -0x38(%rbp), %rax
movq %rax, -0x68(%rbp)
leaq -0x4c(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
xorl %esi, %esi
movl $0x4, %edx
callq 0xe420
movq -0x68(%rbp), %rdi
callq 0x284d0
movq %rax, -0x58(%rbp)
movq -0x48(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x5efa0
xorb $-0x1, %al
testb $0x1, %al
jne 0x4c9d4
jmp 0x4d04e
movq -0x40(%rbp), %rdi
leaq -0x5c(%rbp), %rsi
xorl %edx, %edx
callq 0x5efd0
movq %rax, -0x40(%rbp)
cmpq $0x0, -0x40(%rbp)
setne %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4c9f7
jmp 0x4c9fc
jmp 0x4d06e
movl -0x5c(%rbp), %eax
shrl $0x3, %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0x70(%rbp)
subl $0x16, %eax
ja 0x4cf8d
movq -0x70(%rbp), %rax
leaq 0x1d58a(%rip), %rcx     # 0x69fa8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl -0x5c(%rbp), %eax
movzbl %al, %eax
cmpl $0x8, %eax
sete %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4ca3d
jmp 0x4caa2
movq -0x40(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x5f0c0
movq -0x68(%rbp), %rdi
movl %eax, %esi
callq 0x28710
cmpq $0x0, -0x40(%rbp)
setne %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4ca79
jmp 0x4ca7e
jmp 0x4d06e
movq -0x48(%rbp), %rdi
movq -0x40(%rbp), %rsi
callq 0x60530
testb $0x1, %al
jne 0x4ca91
jmp 0x4caa0
jmp 0x4ca93
movq -0x40(%rbp), %rdi
callq 0x60550
testb $0x1, %al
jne 0x4ca49
jmp 0x4cae8
movl -0x5c(%rbp), %eax
movzbl %al, %eax
cmpl $0xa, %eax
jne 0x4cae1
movq -0x68(%rbp), %rdi
callq 0x60570
movq %rax, %rdi
movq -0x40(%rbp), %rsi
movq -0x48(%rbp), %rdx
callq 0xea90
movq %rax, -0x40(%rbp)
cmpq $0x0, -0x40(%rbp)
setne %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4cada
jmp 0x4cadf
jmp 0x4d06e
jmp 0x4cae6
jmp 0x4cf8f
jmp 0x4cae8
jmp 0x4c9bc
movl -0x5c(%rbp), %eax
movzbl %al, %eax
cmpl $0x10, %eax
sete %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4cb03
jmp 0x4cb35
leaq -0x4c(%rbp), %rdi
callq 0x60590
leaq -0x40(%rbp), %rdi
callq 0x5f0c0
movl %eax, %ecx
movq -0x68(%rbp), %rax
movl %ecx, 0x48(%rax)
cmpq $0x0, -0x40(%rbp)
setne %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4cb2e
jmp 0x4cb33
jmp 0x4d06e
jmp 0x4cb3a
jmp 0x4cf8f
jmp 0x4c9bc
movl -0x5c(%rbp), %eax
movzbl %al, %eax
cmpl $0x18, %eax
sete %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4cb55
jmp 0x4cb87
leaq -0x4c(%rbp), %rdi
callq 0x605c0
leaq -0x40(%rbp), %rdi
callq 0x5f0c0
movl %eax, %ecx
movq -0x68(%rbp), %rax
movl %ecx, 0x4c(%rax)
cmpq $0x0, -0x40(%rbp)
setne %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4cb80
jmp 0x4cb85
jmp 0x4d06e
jmp 0x4cb8c
jmp 0x4cf8f
jmp 0x4c9bc
movl -0x5c(%rbp), %eax
movzbl %al, %eax
cmpl $0x20, %eax
sete %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4cba7
jmp 0x4cbd9
leaq -0x4c(%rbp), %rdi
callq 0x605f0
leaq -0x40(%rbp), %rdi
callq 0x5f0c0
movl %eax, %ecx
movq -0x68(%rbp), %rax
movl %ecx, 0x50(%rax)
cmpq $0x0, -0x40(%rbp)
setne %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4cbd2
jmp 0x4cbd7
jmp 0x4d06e
jmp 0x4cbde
jmp 0x4cf8f
jmp 0x4c9bc
movl -0x5c(%rbp), %eax
movzbl %al, %eax
cmpl $0x28, %eax
sete %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4cbf9
jmp 0x4cc2b
leaq -0x4c(%rbp), %rdi
callq 0x60620
leaq -0x40(%rbp), %rdi
callq 0x5f0c0
movl %eax, %ecx
movq -0x68(%rbp), %rax
movl %ecx, 0x54(%rax)
cmpq $0x0, -0x40(%rbp)
setne %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4cc24
jmp 0x4cc29
jmp 0x4d06e
jmp 0x4cc30
jmp 0x4cf8f
jmp 0x4c9bc
movl -0x5c(%rbp), %eax
movzbl %al, %eax
cmpl $0x30, %eax
sete %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4cc4b
jmp 0x4cc7d
leaq -0x4c(%rbp), %rdi
callq 0x60650
leaq -0x40(%rbp), %rdi
callq 0x5f0c0
movl %eax, %ecx
movq -0x68(%rbp), %rax
movl %ecx, 0x58(%rax)
cmpq $0x0, -0x40(%rbp)
setne %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4cc76
jmp 0x4cc7b
jmp 0x4d06e
jmp 0x4cc82
jmp 0x4cf8f
jmp 0x4c9bc
movl -0x5c(%rbp), %eax
movzbl %al, %eax
cmpl $0x38, %eax
sete %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4cc9d
jmp 0x4cccf
leaq -0x4c(%rbp), %rdi
callq 0x60680
leaq -0x40(%rbp), %rdi
callq 0x5f0c0
movl %eax, %ecx
movq -0x68(%rbp), %rax
movl %ecx, 0x5c(%rax)
cmpq $0x0, -0x40(%rbp)
setne %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4ccc8
jmp 0x4cccd
jmp 0x4d06e
jmp 0x4ccd4
jmp 0x4cf8f
jmp 0x4c9bc
movl -0x5c(%rbp), %eax
movzbl %al, %eax
cmpl $0x40, %eax
sete %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4ccef
jmp 0x4cd21
leaq -0x4c(%rbp), %rdi
callq 0x606b0
leaq -0x40(%rbp), %rdi
callq 0x5f0c0
movl %eax, %ecx
movq -0x68(%rbp), %rax
movl %ecx, 0x60(%rax)
cmpq $0x0, -0x40(%rbp)
setne %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4cd1a
jmp 0x4cd1f
jmp 0x4d06e
jmp 0x4cd26
jmp 0x4cf8f
jmp 0x4c9bc
movl -0x5c(%rbp), %eax
movzbl %al, %eax
cmpl $0x4d, %eax
sete %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4cd41
jmp 0x4cd6a
leaq -0x4c(%rbp), %rdi
callq 0x606e0
movq -0x40(%rbp), %rdi
callq 0x60710
movq -0x68(%rbp), %rax
movss %xmm0, 0x64(%rax)
movq -0x40(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x40(%rbp)
jmp 0x4cd6f
jmp 0x4cf8f
jmp 0x4c9bc
movl -0x5c(%rbp), %eax
movzbl %al, %eax
cmpl $0x55, %eax
sete %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4cd8a
jmp 0x4cdb3
leaq -0x4c(%rbp), %rdi
callq 0x60740
movq -0x40(%rbp), %rdi
callq 0x60710
movq -0x68(%rbp), %rax
movss %xmm0, 0x68(%rax)
movq -0x40(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x40(%rbp)
jmp 0x4cdb8
jmp 0x4cf8f
jmp 0x4c9bc
movl -0x5c(%rbp), %eax
movzbl %al, %eax
cmpl $0x58, %eax
sete %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4cdd3
jmp 0x4ce05
leaq -0x4c(%rbp), %rdi
callq 0x60770
leaq -0x40(%rbp), %rdi
callq 0x5f0c0
movl %eax, %ecx
movq -0x68(%rbp), %rax
movl %ecx, 0x6c(%rax)
cmpq $0x0, -0x40(%rbp)
setne %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4cdfe
jmp 0x4ce03
jmp 0x4d06e
jmp 0x4ce0a
jmp 0x4cf8f
jmp 0x4c9bc
movl -0x5c(%rbp), %eax
movzbl %al, %eax
cmpl $0xa2, %eax
sete %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4ce27
jmp 0x4ce63
movq -0x68(%rbp), %rdi
movq -0x48(%rbp), %rax
movq %rax, -0x78(%rbp)
callq 0x28440
movq -0x78(%rbp), %rdi
movq %rax, %rsi
movq -0x40(%rbp), %rdx
callq 0x607a0
movq %rax, -0x40(%rbp)
cmpq $0x0, -0x40(%rbp)
setne %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4ce5c
jmp 0x4ce61
jmp 0x4d06e
jmp 0x4ce68
jmp 0x4cf8f
jmp 0x4c9bc
movl -0x5c(%rbp), %eax
movzbl %al, %eax
cmpl $0xaa, %eax
sete %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4ce85
jmp 0x4cec1
movq -0x68(%rbp), %rdi
movq -0x48(%rbp), %rax
movq %rax, -0x80(%rbp)
callq 0x28580
movq -0x80(%rbp), %rdi
movq %rax, %rsi
movq -0x40(%rbp), %rdx
callq 0x607a0
movq %rax, -0x40(%rbp)
cmpq $0x0, -0x40(%rbp)
setne %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4ceba
jmp 0x4cebf
jmp 0x4d06e
jmp 0x4cec6
jmp 0x4cf8f
jmp 0x4c9bc
movl -0x5c(%rbp), %eax
movzbl %al, %eax
cmpl $0xb2, %eax
sete %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4cee3
jmp 0x4cf25
movq -0x68(%rbp), %rdi
movq -0x48(%rbp), %rax
movq %rax, -0x88(%rbp)
callq 0x285f0
movq -0x88(%rbp), %rdi
movq %rax, %rsi
movq -0x40(%rbp), %rdx
callq 0x60870
movq %rax, -0x40(%rbp)
cmpq $0x0, -0x40(%rbp)
setne %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4cf1e
jmp 0x4cf23
jmp 0x4d06e
jmp 0x4cf27
jmp 0x4cf8f
jmp 0x4c9bc
movl -0x5c(%rbp), %eax
movzbl %al, %eax
cmpl $0xba, %eax
sete %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4cf44
jmp 0x4cf86
movq -0x68(%rbp), %rdi
movq -0x48(%rbp), %rax
movq %rax, -0x90(%rbp)
callq 0x28680
movq -0x90(%rbp), %rdi
movq %rax, %rsi
movq -0x40(%rbp), %rdx
callq 0x60940
movq %rax, -0x40(%rbp)
cmpq $0x0, -0x40(%rbp)
setne %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4cf7f
jmp 0x4cf84
jmp 0x4d06e
jmp 0x4cf88
jmp 0x4cf8f
jmp 0x4c9bc
jmp 0x4cf8f
movl -0x5c(%rbp), %eax
andl $0x7, %eax
cmpl $0x4, %eax
je 0x4cfa0
cmpl $0x0, -0x5c(%rbp)
jne 0x4cfb1
movq -0x48(%rbp), %rdi
movl -0x5c(%rbp), %esi
callq 0x5f240
jmp 0x4d050
movq -0x68(%rbp), %rax
movl -0x5c(%rbp), %ecx
movq %rcx, -0xa0(%rbp)
addq $0x8, %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x98(%rbp)
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
andq $0x1, %rax
cmpl $0x1, %eax
sete %al
testb $0x1, %al
jne 0x4cff5
jmp 0x4d00b
movq -0x98(%rbp), %rdi
callq 0x66310
addq $0x8, %rax
movq %rax, -0x18(%rbp)
jmp 0x4d01b
movq -0x98(%rbp), %rdi
callq 0x66330
movq %rax, -0x18(%rbp)
movq -0xa0(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq -0x48(%rbp), %rcx
callq 0xe480
movq %rax, -0x40(%rbp)
cmpq $0x0, -0x40(%rbp)
setne %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4d047
jmp 0x4d049
jmp 0x4d06e
jmp 0x4c9bc
jmp 0x4d050
movq -0x68(%rbp), %rdi
addq $0x10, %rdi
leaq -0x4c(%rbp), %rsi
callq 0x5f260
movq -0x40(%rbp), %rax
addq $0xa0, %rsp
popq %rbp
retq
movq $0x0, -0x40(%rbp)
jmp 0x4d050
nopl (%rax,%rax)