// File: 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:
subq $0xf8, %rsp
movq %rdi, 0xe8(%rsp)
movq %rsi, 0xe0(%rsp)
movq %rdx, 0xd8(%rsp)
movq 0xe8(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0xd8(%rsp), %rdi
movq 0xe0(%rsp), %rax
movq 0x10(%rax), %rsi
movq 0xe0(%rsp), %rax
movq 0x8(%rax), %rax
subq %rax, %rsi
subq $0x2, %rsi
callq 0x86b80
movq 0xe0(%rsp), %rax
movq 0x8(%rax), %rax
addq $0x1, %rax
movq %rax, 0xd0(%rsp)
movq 0xe0(%rsp), %rax
movq 0x10(%rax), %rax
addq $-0x1, %rax
movq %rax, 0xc8(%rsp)
movq 0xd0(%rsp), %rax
cmpq 0xc8(%rsp), %rax
je 0x118e6c
movq 0xd0(%rsp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, 0xd0(%rsp)
movb (%rax), %al
movb %al, 0xc7(%rsp)
movsbl 0xc7(%rsp), %eax
cmpl $0x22, %eax
jne 0x118b00
jmp 0x118e6c
movsbl 0xc7(%rsp), %eax
cmpl $0x5c, %eax
jne 0x118e4e
movq 0xd0(%rsp), %rax
cmpq 0xc8(%rsp), %rax
jne 0x118bf7
leaq 0x9f(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0x86da0
movq 0x28(%rsp), %rdx
leaq 0x1bc53(%rip), %rsi     # 0x134798
leaq 0xa0(%rsp), %rdi
callq 0x86a00
jmp 0x118b54
movq 0x30(%rsp), %rdi
movq 0xe0(%rsp), %rdx
movq 0xd0(%rsp), %rcx
leaq 0xa0(%rsp), %rsi
callq 0x116e50
movb %al, 0x27(%rsp)
jmp 0x118b7c
movb 0x27(%rsp), %al
andb $0x1, %al
movb %al, 0xf7(%rsp)
leaq 0xa0(%rsp), %rdi
callq 0x86f68
jmp 0x118b98
leaq 0x9f(%rsp), %rdi
callq 0x867b0
jmp 0x118e74
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x90(%rsp)
movl %eax, 0x8c(%rsp)
jmp 0x118be5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x90(%rsp)
movl %eax, 0x8c(%rsp)
leaq 0xa0(%rsp), %rdi
callq 0x86f68
jmp 0x118be3
jmp 0x118be5
leaq 0x9f(%rsp), %rdi
callq 0x867b0
jmp 0x118e85
movq 0xd0(%rsp), %rax
movq %rax, %rcx
incq %rcx
movq %rcx, 0xd0(%rsp)
movb (%rax), %al
movb %al, 0x8b(%rsp)
movsbl 0x8b(%rsp), %eax
addl $-0x22, %eax
movl %eax, %ecx
movq %rcx, 0x18(%rsp)
subl $0x53, %eax
ja 0x118d97
movq 0x18(%rsp), %rax
leaq 0x1b8eb(%rip), %rcx     # 0x134528
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0xd8(%rsp), %rdi
movl $0x22, %esi
callq 0x86480
jmp 0x118e4c
movq 0xd8(%rsp), %rdi
movl $0x2f, %esi
callq 0x86480
jmp 0x118e4c
movq 0xd8(%rsp), %rdi
movl $0x5c, %esi
callq 0x86480
jmp 0x118e4c
movq 0xd8(%rsp), %rdi
movl $0x8, %esi
callq 0x86480
jmp 0x118e4c
movq 0xd8(%rsp), %rdi
movl $0xc, %esi
callq 0x86480
jmp 0x118e4c
movq 0xd8(%rsp), %rdi
movl $0xa, %esi
callq 0x86480
jmp 0x118e4c
movq 0xd8(%rsp), %rdi
movl $0xd, %esi
callq 0x86480
jmp 0x118e4c
movq 0xd8(%rsp), %rdi
movl $0x9, %esi
callq 0x86480
jmp 0x118e4c
movq 0x30(%rsp), %rdi
movq 0xe0(%rsp), %rsi
movq 0xc8(%rsp), %rcx
leaq 0xd0(%rsp), %rdx
leaq 0x84(%rsp), %r8
callq 0x1194e0
testb $0x1, %al
jne 0x118d39
movb $0x0, 0xf7(%rsp)
jmp 0x118e74
movl 0x84(%rsp), %esi
leaq 0x60(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0x1197e0
movq 0x10(%rsp), %rsi
movq 0xd8(%rsp), %rdi
callq 0x86910
jmp 0x118d63
leaq 0x60(%rsp), %rdi
callq 0x86f68
jmp 0x118e4c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x90(%rsp)
movl %eax, 0x8c(%rsp)
leaq 0x60(%rsp), %rdi
callq 0x86f68
jmp 0x118d92
jmp 0x118e85
leaq 0x3f(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0x86da0
movq 0x8(%rsp), %rdx
leaq 0x1ba06(%rip), %rsi     # 0x1347b8
leaq 0x40(%rsp), %rdi
callq 0x86a00
jmp 0x118dbe
movq 0x30(%rsp), %rdi
movq 0xe0(%rsp), %rdx
movq 0xd0(%rsp), %rcx
leaq 0x40(%rsp), %rsi
callq 0x116e50
movb %al, 0x7(%rsp)
jmp 0x118de3
movb 0x7(%rsp), %al
andb $0x1, %al
movb %al, 0xf7(%rsp)
leaq 0x40(%rsp), %rdi
callq 0x86f68
jmp 0x118dfc
leaq 0x3f(%rsp), %rdi
callq 0x867b0
jmp 0x118e74
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x90(%rsp)
movl %eax, 0x8c(%rsp)
jmp 0x118e40
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x90(%rsp)
movl %eax, 0x8c(%rsp)
leaq 0x40(%rsp), %rdi
callq 0x86f68
jmp 0x118e3e
jmp 0x118e40
leaq 0x3f(%rsp), %rdi
callq 0x867b0
jmp 0x118e85
jmp 0x118e65
movb 0xc7(%rsp), %al
movq 0xd8(%rsp), %rdi
movsbl %al, %esi
callq 0x86480
jmp 0x118e67
jmp 0x118ab8
movb $0x1, 0xf7(%rsp)
movb 0xf7(%rsp), %al
andb $0x1, %al
addq $0xf8, %rsp
retq
movq 0x90(%rsp), %rdi
callq 0x86d80
movq %rax, %rdi
callq 0x91290
nopw (%rax,%rax)