// File: /workspace/github_cpp_makefile_star2_O3/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 0x27960
movq 0x8(%rbx), %rax
movq 0x10(%rbx), %r12
incq %rax
decq %r12
movb $0x1, %bpl
cmpq %r12, %rax
je 0x68465
movq %r14, 0x20(%rsp)
leaq 0xe03d(%rip), %r14      # 0x76214
leaq 0x1(%rax), %r13
movq %r13, 0x28(%rsp)
movzbl (%rax), %ecx
cmpl $0x5c, %ecx
je 0x68209
cmpl $0x22, %ecx
je 0x68465
movsbl %cl, %esi
movq %r15, %rdi
callq 0x274e0
movq %r13, %rax
cmpq %r12, %r13
jne 0x681d7
jmp 0x68465
cmpq %r12, %r13
je 0x6841f
leaq 0x2(%rax), %r13
movq %r13, 0x28(%rsp)
movzbl 0x1(%rax), %eax
cmpl $0x61, %eax
jg 0x68241
cmpl $0x22, %eax
je 0x68266
cmpl $0x2f, %eax
je 0x6825c
cmpl $0x5c, %eax
jne 0x68476
movq %r15, %rdi
movl $0x5c, %esi
jmp 0x681f7
leal -0x6e(%rax), %ecx
cmpl $0x7, %ecx
ja 0x68270
movslq (%r14,%rcx,4), %rax
addq %r14, %rax
jmpq *%rax
movq %r15, %rdi
movl $0xa, %esi
jmp 0x681f7
movq %r15, %rdi
movl $0x2f, %esi
jmp 0x681f7
movq %r15, %rdi
movl $0x22, %esi
jmp 0x681f7
cmpl $0x62, %eax
je 0x68305
cmpl $0x66, %eax
jne 0x68476
movq %r15, %rdi
movl $0xc, %esi
jmp 0x681f7
movq 0x20(%rsp), %rdi
movq %rbx, %rsi
leaq 0x28(%rsp), %rdx
movq %r12, %rcx
leaq 0x34(%rsp), %r8
callq 0x687e2
testb %al, %al
je 0x68463
movl 0x34(%rsp), %r13d
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq $0x0, 0x8(%rsp)
movb $0x0, 0x10(%rsp)
cmpl $0x7f, %r13d
ja 0x68312
movl $0x1, %esi
movq %rsp, %rdi
xorl %edx, %edx
callq 0x271f0
movq (%rsp), %rax
jmp 0x683ee
movq %r15, %rdi
movl $0x9, %esi
jmp 0x681f7
movq %r15, %rdi
movl $0xd, %esi
jmp 0x681f7
movq %r15, %rdi
movl $0x8, %esi
jmp 0x681f7
cmpl $0x7ff, %r13d           # imm = 0x7FF
ja 0x6834b
movl $0x2, %esi
movq %rsp, %rdi
xorl %edx, %edx
callq 0x271f0
movq (%rsp), %rax
movl %r13d, %ecx
andb $0x3f, %cl
orb $-0x80, %cl
movb %cl, 0x1(%rax)
movq (%rsp), %rax
shrl $0x6, %r13d
orb $-0x40, %r13b
jmp 0x683ee
cmpl $0xffff, %r13d          # imm = 0xFFFF
ja 0x68394
movl $0x3, %esi
movq %rsp, %rdi
xorl %edx, %edx
callq 0x271f0
movq (%rsp), %rax
movl %r13d, %ecx
andb $0x3f, %cl
orb $-0x80, %cl
movb %cl, 0x2(%rax)
movq (%rsp), %rax
movl %r13d, %ecx
shrl $0x6, %ecx
andb $0x3f, %cl
orb $-0x80, %cl
movb %cl, 0x1(%rax)
movq (%rsp), %rax
shrl $0xc, %r13d
orb $-0x20, %r13b
jmp 0x683ee
cmpl $0x10ffff, %r13d        # imm = 0x10FFFF
ja 0x683f1
movl $0x4, %esi
movq %rsp, %rdi
xorl %edx, %edx
callq 0x271f0
movq (%rsp), %rax
movl %r13d, %ecx
andb $0x3f, %cl
orb $-0x80, %cl
movb %cl, 0x3(%rax)
movq (%rsp), %rax
movl %r13d, %ecx
shrl $0x6, %ecx
andb $0x3f, %cl
orb $-0x80, %cl
movb %cl, 0x2(%rax)
movq (%rsp), %rax
movl %r13d, %ecx
shrl $0xc, %ecx
andb $0x3f, %cl
orb $-0x80, %cl
movb %cl, 0x1(%rax)
movq (%rsp), %rax
shrl $0x12, %r13d
orb $-0x10, %r13b
movb %r13b, (%rax)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %r15, %rdi
callq 0x27210
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x68415
callq 0x27560
movq 0x28(%rsp), %r13
jmp 0x681fc
movq %rsp, %rdi
leaq 0x10(%rsp), %rax
movq %rax, (%rdi)
leaq 0xdefb(%rip), %rsi      # 0x7632c
leaq 0xdf13(%rip), %rdx      # 0x7634b
callq 0x2f1a0
movq %rsp, %rsi
movq 0x20(%rsp), %rdi
movq %rbx, %rdx
movq %r13, %rcx
callq 0x671fe
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x68463
callq 0x27560
xorl %ebp, %ebp
movl %ebp, %eax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rsp, %rdi
leaq 0x10(%rsp), %rax
movq %rax, (%rdi)
leaq 0xdec4(%rip), %rsi      # 0x7634c
leaq 0xdeda(%rip), %rdx      # 0x76369
callq 0x2f1a0
movq %rsp, %rsi
movq 0x20(%rsp), %rdi
movq %rbx, %rdx
movq %r13, %rcx
callq 0x671fe
jmp 0x68450
jmp 0x684b6
jmp 0x684af
jmp 0x684b6
movq %rax, %rbx
jmp 0x684cc
jmp 0x684b6
movq %rax, %rbx
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x684cc
callq 0x27560
movq %rbx, %rdi
callq 0x27b10