// File: /workspace/github_c_makefile_star2_O0/qq-smart[P]qq_sh_server/core/qq_json.c
// Function: print_string_ptr
static char *print_string_ptr(const char *str,printbuffer *p)
{
	const char *ptr;char *ptr2,*out;int len=0,flag=0;unsigned char token;
	
	for (ptr=str;*ptr;ptr++) flag|=((*ptr>0 && *ptr<32)||(*ptr=='\"')||(*ptr=='\\'))?1:0;
	if (!flag)
	{
		len=ptr-str;
		if (p) out=ensure(p,len+3);
		else		out=(char*)cJSON_malloc(len+3);
		if (!out) return 0;
		ptr2=out;*ptr2++='\"';
		strcpy(ptr2,str);
		ptr2[len]='\"';
		ptr2[len+1]=0;
		return out;
	}
	
	if (!str)
	{
		if (p)	out=ensure(p,3);
		else	out=(char*)cJSON_malloc(3);
		if (!out) return 0;
		strcpy(out,"\"\"");
		return out;
	}
	ptr=str;while ((token=*ptr) && ++len) {if (strchr("\"\\\b\f\n\r\t",token)) len++; else if (token<32) len+=5;ptr++;}
	
	if (p)	out=ensure(p,len+3);
	else	out=(char*)cJSON_malloc(len+3);
	if (!out) return 0;

	ptr2=out;ptr=str;
	*ptr2++='\"';
	while (*ptr)
	{
		if ((unsigned char)*ptr>31 && *ptr!='\"' && *ptr!='\\') *ptr2++=*ptr++;
		else
		{
			*ptr2++='\\';
			switch (token=*ptr++)
			{
				case '\\':	*ptr2++='\\';	break;
				case '\"':	*ptr2++='\"';	break;
				case '\b':	*ptr2++='b';	break;
				case '\f':	*ptr2++='f';	break;
				case '\n':	*ptr2++='n';	break;
				case '\r':	*ptr2++='r';	break;
				case '\t':	*ptr2++='t';	break;
				default: sprintf(ptr2,"u%04x",token);ptr2+=5;	break;	/* escape and print */
			}
		}
	}
	*ptr2++='\"';*ptr2++=0;
	return out;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movl $0x0, -0x34(%rbp)
movl $0x0, -0x38(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
cmpb $0x0, (%rax)
je 0x8cc1
movq -0x20(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
jle 0x8c7c
movq -0x20(%rbp), %rax
movsbl (%rax), %ecx
movb $0x1, %al
cmpl $0x20, %ecx
movb %al, -0x3a(%rbp)
jl 0x8c9d
movq -0x20(%rbp), %rax
movsbl (%rax), %ecx
movb $0x1, %al
cmpl $0x22, %ecx
movb %al, -0x3a(%rbp)
je 0x8c9d
movq -0x20(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x5c, %eax
sete %al
movb %al, -0x3a(%rbp)
movb -0x3a(%rbp), %dl
xorl %eax, %eax
movl $0x1, %ecx
testb $0x1, %dl
cmovnel %ecx, %eax
orl -0x38(%rbp), %eax
movl %eax, -0x38(%rbp)
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0x8c56
cmpl $0x0, -0x38(%rbp)
jne 0x8d70
movq -0x20(%rbp), %rax
movq -0x10(%rbp), %rcx
subq %rcx, %rax
movl %eax, -0x34(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x8cf5
movq -0x18(%rbp), %rdi
movl -0x34(%rbp), %esi
addl $0x3, %esi
callq 0x7a20
movq %rax, -0x30(%rbp)
jmp 0x8d0b
movq 0xb4cc(%rip), %rax      # 0x141c8
movl -0x34(%rbp), %ecx
addl $0x3, %ecx
movslq %ecx, %rdi
callq *%rax
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x30(%rbp)
jne 0x8d1f
movq $0x0, -0x8(%rbp)
jmp 0x9072
movq -0x30(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x28(%rbp)
movb $0x22, (%rax)
movq -0x28(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x2200
movq -0x28(%rbp), %rax
movslq -0x34(%rbp), %rcx
movb $0x22, (%rax,%rcx)
movq -0x28(%rbp), %rax
movl -0x34(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movb $0x0, (%rax,%rcx)
movq -0x30(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x9072
cmpq $0x0, -0x10(%rbp)
jne 0x8dd2
cmpq $0x0, -0x18(%rbp)
je 0x8d92
movq -0x18(%rbp), %rdi
movl $0x3, %esi
callq 0x7a20
movq %rax, -0x30(%rbp)
jmp 0x8da1
movl $0x3, %edi
callq *0xb42b(%rip)           # 0x141c8
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x30(%rbp)
jne 0x8db5
movq $0x0, -0x8(%rbp)
jmp 0x9072
movq -0x30(%rbp), %rdi
leaq 0x6bc7(%rip), %rsi      # 0xf987
callq 0x2200
movq -0x30(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x9072
movq -0x10(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movb (%rax), %al
movb %al, -0x39(%rbp)
movzbl %al, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x3b(%rbp)
je 0x8e02
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
cmpl $0x0, %eax
setne %al
movb %al, -0x3b(%rbp)
movb -0x3b(%rbp), %al
testb $0x1, %al
jne 0x8e0b
jmp 0x8e4e
movzbl -0x39(%rbp), %esi
leaq 0x6b74(%rip), %rdi      # 0xf98a
callq 0x20d0
cmpq $0x0, %rax
je 0x8e2c
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x8e40
movzbl -0x39(%rbp), %eax
cmpl $0x20, %eax
jge 0x8e3e
movl -0x34(%rbp), %eax
addl $0x5, %eax
movl %eax, -0x34(%rbp)
jmp 0x8e40
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0x8dda
cmpq $0x0, -0x18(%rbp)
je 0x8e6a
movq -0x18(%rbp), %rdi
movl -0x34(%rbp), %esi
addl $0x3, %esi
callq 0x7a20
movq %rax, -0x30(%rbp)
jmp 0x8e80
movq 0xb357(%rip), %rax      # 0x141c8
movl -0x34(%rbp), %ecx
addl $0x3, %ecx
movslq %ecx, %rdi
callq *%rax
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x30(%rbp)
jne 0x8e94
movq $0x0, -0x8(%rbp)
jmp 0x9072
movq -0x30(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x28(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x28(%rbp)
movb $0x22, (%rax)
movq -0x20(%rbp), %rax
cmpb $0x0, (%rax)
je 0x9046
movq -0x20(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x1f, %eax
jle 0x8f0e
movq -0x20(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x22, %eax
je 0x8f0e
movq -0x20(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x5c, %eax
je 0x8f0e
movq -0x20(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x20(%rbp)
movb (%rax), %cl
movq -0x28(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x28(%rbp)
movb %cl, (%rax)
jmp 0x9041
movq -0x28(%rbp), %rax
movq %rax, %rcx
incq %rcx
movq %rcx, -0x28(%rbp)
movb $0x5c, (%rax)
movq -0x20(%rbp), %rax
movq %rax, %rcx
incq %rcx
movq %rcx, -0x20(%rbp)
movzbl (%rax), %ecx
movl %ecx, -0x40(%rbp)
movb %cl, %al
subl $0x8, %ecx
movb %al, -0x39(%rbp)
je 0x8fb9
jmp 0x8f3f
movl -0x40(%rbp), %eax
subl $0x9, %eax
je 0x9009
jmp 0x8f4d
movl -0x40(%rbp), %eax
subl $0xa, %eax
je 0x8fe1
jmp 0x8f5b
movl -0x40(%rbp), %eax
subl $0xc, %eax
je 0x8fcd
jmp 0x8f65
movl -0x40(%rbp), %eax
subl $0xd, %eax
je 0x8ff5
jmp 0x8f73
movl -0x40(%rbp), %eax
subl $0x22, %eax
je 0x8fa2
jmp 0x8f7d
movl -0x40(%rbp), %eax
subl $0x5c, %eax
jne 0x901d
jmp 0x8f8b
movq -0x28(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x28(%rbp)
movb $0x5c, (%rax)
jmp 0x903f
movq -0x28(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x28(%rbp)
movb $0x22, (%rax)
jmp 0x903f
movq -0x28(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x28(%rbp)
movb $0x62, (%rax)
jmp 0x903f
movq -0x28(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x28(%rbp)
movb $0x66, (%rax)
jmp 0x903f
movq -0x28(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x28(%rbp)
movb $0x6e, (%rax)
jmp 0x903f
movq -0x28(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x28(%rbp)
movb $0x72, (%rax)
jmp 0x903f
movq -0x28(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x28(%rbp)
movb $0x74, (%rax)
jmp 0x903f
movq -0x28(%rbp), %rdi
movzbl -0x39(%rbp), %edx
leaq 0x6966(%rip), %rsi      # 0xf992
movb $0x0, %al
callq 0x2070
movq -0x28(%rbp), %rax
addq $0x5, %rax
movq %rax, -0x28(%rbp)
jmp 0x9041
jmp 0x8eb6
movq -0x28(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x28(%rbp)
movb $0x22, (%rax)
movq -0x28(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x28(%rbp)
movb $0x0, (%rax)
movq -0x30(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax)