// File: /workspace/github_cpp_makefile_star2_O2/zeeev[P]DASVC/bamtools/src/third_party/jsoncpp/json_reader.cpp
// Function: Json::Reader::decodeString(Json::Reader::Token&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&)
bool 
Reader::decodeString( Token &token, std::string &decoded )
{
   decoded.reserve( token.end_ - token.start_ - 2 );
   Location current = token.start_ + 1; // skip '"'
   Location end = token.end_ - 1;      // do not include '"'
   while ( current != end )
   {
      Char c = *current++;
      if ( c == '"' )
         break;
      else if ( c == '\\' )
      {
         if ( current == end )
            return addError( "Empty escape sequence in string", token, current );
         Char escape = *current++;
         switch ( escape )
         {
         case '"': decoded += '"'; break;
         case '/': decoded += '/'; break;
         case '\\': decoded += '\\'; break;
         case 'b': decoded += '\b'; break;
         case 'f': decoded += '\f'; break;
         case 'n': decoded += '\n'; break;
         case 'r': decoded += '\r'; break;
         case 't': decoded += '\t'; break;
         case 'u':
            {
               unsigned int unicode;
               if ( !decodeUnicodeCodePoint( token, current, end, unicode ) )
                  return false;
               decoded += codePointToUTF8(unicode);
            }
            break;
         default:
            return addError( "Bad escape sequence in string", token, current );
         }
      }
      else
      {
         decoded += c;
      }
   }
   return true;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movq %rdx, %r15
movq %rsi, %rbx
movq %rdi, %r14
movq 0x10(%rsi), %rsi
subq 0x8(%rbx), %rsi
addq $-0x2, %rsi
movq %rdx, %rdi
callq 0x35980
movq 0x8(%rbx), %rcx
movq 0x10(%rbx), %r12
incq %rcx
decq %r12
leaq 0xcf76(%rip), %rbp      # 0x761c4
movb $0x1, %al
cmpq %r12, %rcx
je 0x694a9
leaq 0x1(%rcx), %r13
movq %r13, 0x30(%rsp)
movzbl (%rcx), %edx
cmpl $0x5c, %edx
je 0x6927e
cmpl $0x22, %edx
je 0x694a9
movsbl %dl, %esi
movq %r15, %rdi
jmp 0x69364
cmpq %r12, %r13
je 0x69474
leaq 0x2(%rcx), %r13
movq %r13, 0x30(%rsp)
movzbl 0x1(%rcx), %eax
leal -0x6e(%rax), %ecx
cmpl $0x7, %ecx
jbe 0x692d3
cmpl $0x66, %eax
je 0x69349
cmpl $0x2f, %eax
je 0x69357
cmpl $0x5c, %eax
je 0x69350
cmpl $0x62, %eax
je 0x6935e
cmpl $0x22, %eax
jne 0x694b8
movq %r15, %rdi
pushq $0x22
jmp 0x69363
movslq (%rbp,%rcx,4), %rax
addq %rbp, %rax
jmpq *%rax
movq %r15, %rdi
pushq $0xa
jmp 0x69363
movq %r15, %rdi
pushq $0xd
jmp 0x69363
movq %r14, %rdi
movq %rbx, %rsi
leaq 0x30(%rsp), %rdx
movq %r12, %rcx
leaq 0xc(%rsp), %r8
callq 0x697bc
testb %al, %al
je 0x694a7
leaq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
andq $0x0, 0x18(%rsp)
movl 0xc(%rsp), %r13d
movb $0x0, 0x20(%rsp)
cmpl $0x7f, %r13d
ja 0x69371
leaq 0x10(%rsp), %rdi
pushq $0x1
popq %rsi
callq 0x35820
movq 0x10(%rsp), %rax
jmp 0x6944f
movq %r15, %rdi
pushq $0x9
jmp 0x69363
movq %r15, %rdi
pushq $0xc
jmp 0x69363
movq %r15, %rdi
pushq $0x5c
jmp 0x69363
movq %r15, %rdi
pushq $0x2f
jmp 0x69363
movq %r15, %rdi
pushq $0x8
popq %rsi
callq 0x354e0
movq %r13, %rcx
jmp 0x6924e
cmpl $0x7ff, %r13d           # imm = 0x7FF
leaq 0x10(%rsp), %rsi
ja 0x693ad
movq %rsi, %rdi
pushq $0x2
popq %rsi
callq 0x35820
movq 0x10(%rsp), %rax
movl %r13d, %ecx
andb $0x3f, %cl
orb $-0x80, %cl
movb %cl, 0x1(%rax)
movq 0x10(%rsp), %rax
shrl $0x6, %r13d
orb $-0x40, %r13b
jmp 0x6944f
cmpl $0xffff, %r13d          # imm = 0xFFFF
ja 0x693f5
movq %rsi, %rdi
pushq $0x3
popq %rsi
callq 0x35820
movq 0x10(%rsp), %rax
movl %r13d, %ecx
andb $0x3f, %cl
orb $-0x80, %cl
movb %cl, 0x2(%rax)
movq 0x10(%rsp), %rax
movl %r13d, %ecx
shrl $0x6, %ecx
andb $0x3f, %cl
orb $-0x80, %cl
movb %cl, 0x1(%rax)
movq 0x10(%rsp), %rax
shrl $0xc, %r13d
orb $-0x20, %r13b
jmp 0x6944f
cmpl $0x10ffff, %r13d        # imm = 0x10FFFF
ja 0x69457
movq %rsi, %rdi
pushq $0x4
popq %rsi
callq 0x35820
movq 0x10(%rsp), %rax
movl %r13d, %ecx
andb $0x3f, %cl
orb $-0x80, %cl
movb %cl, 0x3(%rax)
movq 0x10(%rsp), %rax
movl %r13d, %ecx
shrl $0x6, %ecx
andb $0x3f, %cl
orb $-0x80, %cl
movb %cl, 0x2(%rax)
movq 0x10(%rsp), %rax
movl %r13d, %ecx
shrl $0xc, %ecx
andb $0x3f, %cl
orb $-0x80, %cl
movb %cl, 0x1(%rax)
movq 0x10(%rsp), %rax
shrl $0x12, %r13d
orb $-0x10, %r13b
movb %r13b, (%rax)
leaq 0x10(%rsp), %rsi
movq %r15, %rdi
movq %rsi, %r13
callq 0x35c60
movq %r13, %rdi
callq 0x35730
movq 0x30(%rsp), %rcx
jmp 0x6924e
leaq 0xce61(%rip), %rsi      # 0x762dc
leaq 0x10(%rsp), %rdi
leaq 0xc(%rsp), %rdx
callq 0x35280
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
movq %rbx, %rdx
movq %r13, %rcx
callq 0x6851c
leaq 0x10(%rsp), %rdi
callq 0x35730
xorl %eax, %eax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0xce3d(%rip), %rsi      # 0x762fc
leaq 0x10(%rsp), %rdi
leaq 0xc(%rsp), %rdx
callq 0x35280
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
movq %rbx, %rdx
movq %r13, %rcx
callq 0x6851c
leaq 0x10(%rsp), %rdi
callq 0x35730
jmp 0x694a7
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x35730
jmp 0x69530
jmp 0x6950d
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x35730
jmp 0x69530
movq %rax, %rbx
jmp 0x69530
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x35730
jmp 0x69530
jmp 0x69538
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x35730
movq %rbx, %rdi
callq 0x35b50
movq %rax, %rdi
callq 0x3a198