// File: /workspace/github_c_makefile_star2_O1/Tarsnap[P]kivaloo/liball/../libcperciva/util/json.c
// Function: json_find
const uint8_t *
json_find(const uint8_t * buf, const uint8_t * end, const char * s)
{
	int foundit;

	/* After optional whitespace there should be a '{'. */
	SCAN(buf, end, '{');

	/* Scan the object looking for the child we want. */
	do {
		/*
		 * After optional whitespace we should have a '"' (unless
		 * the object is empty, in which case the key we're looking
		 * for is not present).
		 */
		SCAN(buf, end, '"');

		/* Is this the string we want? */
		buf = match_str(buf, end, s, &foundit);

		/* After optional whitespace we should have a ':'. */
		SCAN(buf, end, ':');

		/* Skip whitespace looking for the associated value. */
		buf = skip_ws(buf, end);

		/* Return the value if this is the one we wanted. */
		if (foundit)
			return (buf);

		/* Skip this JSON object. */
		buf = skip_value(buf, end);

		/*
		 * After optional whitespace we should have a ','.  (Or we
		 * could hit the closing '}' of the object, but that would
		 * mean that we don't have the key we're looking for anyway.)
		 */
		SCAN(buf, end, ',');
	} while (1);

	/* NOTREACHED */
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rdx, %r14
movq %rsi, %rbx
movq %rdi, %rax
cmpq %rsi, %rdi
jae 0xb472
movabsq $0x100002600, %rcx      # imm = 0x100002600
movzbl (%rax), %edx
cmpq $0x20, %rdx
ja 0xb472
btq %rdx, %rcx
jae 0xb472
incq %rax
cmpq %rbx, %rax
jne 0xb458
movq %rbx, %rax
cmpq %rbx, %rax
je 0xb634
cmpb $0x7b, (%rax)
jne 0xb634
movabsq $0x100002600, %r15      # imm = 0x100002600
leaq 0x72e3(%rip), %r12      # 0x12778
xorl %ebp, %ebp
incq %rax
cmpq %rbx, %rax
jae 0xb4b9
movzbl (%rax), %ecx
cmpq $0x20, %rcx
ja 0xb4b9
btq %rcx, %r15
jae 0xb4b9
incq %rax
cmpq %rbx, %rax
jne 0xb49f
movq %rbx, %rax
cmpq %rbx, %rax
je 0xb634
cmpb $0x22, (%rax)
jne 0xb634
incq %rax
movl $0x1, %ecx
cmpq %rbx, %rax
je 0xb5a8
movq %r14, %rdx
leaq 0x1(%rax), %rdi
movzbl (%rax), %r8d
cmpl $0x5c, %r8d
je 0xb515
cmpl $0x22, %r8d
je 0xb59e
movl %r8d, %esi
movb (%rdx), %al
cmpb %al, %sil
cmovnel %ebp, %ecx
cmpb $0x1, %al
sbbq $-0x1, %rdx
movq %rdi, %rax
cmpq %rbx, %rdi
jne 0xb4df
jmp 0xb5a8
cmpq %rbx, %rdi
je 0xb5a8
leaq 0x2(%rax), %rdi
movb 0x1(%rax), %sil
movzbl %sil, %r9d
cmpl $0x61, %r9d
jg 0xb544
cmpl $0x22, %r9d
je 0xb4fa
cmpl $0x2f, %r9d
je 0xb4fa
cmpl $0x5c, %r9d
je 0xb4fa
jmp 0xb5a6
leal -0x6e(%r9), %esi
cmpl $0x7, %esi
ja 0xb55b
movslq (%r12,%rsi,4), %rsi
addq %r12, %rsi
jmpq *%rsi
movb $0xa, %sil
jmp 0xb4fa
cmpl $0x66, %r9d
je 0xb596
cmpl $0x62, %r9d
jne 0xb5a6
movb $0x8, %sil
jmp 0xb4fa
movq %rbx, %rsi
subq %rdi, %rsi
cmpq $0x4, %rsi
jl 0xb5a8
addq $0x6, %rax
xorl %ecx, %ecx
movq %rax, %rdi
jmp 0xb4f7
movb $0x9, %sil
jmp 0xb4fa
movb $0xd, %sil
jmp 0xb4fa
movb $0xc, %sil
jmp 0xb4fa
cmpb $0x0, (%rdx)
cmovnel %ebp, %ecx
jmp 0xb5ab
xorl %ecx, %ecx
movq %rbx, %rdi
cmpq %rbx, %rdi
jae 0xb5ca
movzbl (%rdi), %eax
cmpq $0x20, %rax
ja 0xb5ca
btq %rax, %r15
jae 0xb5ca
incq %rdi
cmpq %rbx, %rdi
jne 0xb5b0
movq %rbx, %rdi
cmpq %rbx, %rdi
je 0xb634
cmpb $0x3a, (%rdi)
jne 0xb634
incq %rdi
cmpq %rbx, %rdi
jae 0xb5f6
movzbl (%rdi), %eax
cmpq $0x20, %rax
ja 0xb5f6
btq %rax, %r15
jae 0xb5f6
incq %rdi
cmpq %rbx, %rdi
jne 0xb5dc
movq %rbx, %rdi
testl %ecx, %ecx
jne 0xb631
movq %rbx, %rsi
callq 0xb640
cmpq %rbx, %rax
jae 0xb621
movzbl (%rax), %ecx
cmpq $0x20, %rcx
ja 0xb621
btq %rcx, %r15
jae 0xb621
incq %rax
cmpq %rbx, %rax
jne 0xb607
movq %rbx, %rax
cmpq %rbx, %rax
je 0xb634
cmpb $0x2c, (%rax)
je 0xb497
jmp 0xb634
movq %rdi, %rbx
movq %rbx, %rax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq