// File: /workspace/github_c_makefile_star2_O3/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 0xb31e
movabsq $0x100002600, %rcx      # imm = 0x100002600
movzbl (%rax), %edx
cmpq $0x20, %rdx
ja 0xb31e
btq %rdx, %rcx
jae 0xb31e
incq %rax
cmpq %rbx, %rax
jne 0xb304
movq %rbx, %rax
cmpq %rbx, %rax
je 0xb4e0
cmpb $0x7b, (%rax)
jne 0xb4e0
movabsq $0x100002600, %r15      # imm = 0x100002600
leaq 0x72af(%rip), %r12      # 0x125f0
xorl %ebp, %ebp
incq %rax
cmpq %rbx, %rax
jae 0xb365
movzbl (%rax), %ecx
cmpq $0x20, %rcx
ja 0xb365
btq %rcx, %r15
jae 0xb365
incq %rax
cmpq %rbx, %rax
jne 0xb34b
movq %rbx, %rax
cmpq %rbx, %rax
je 0xb4e0
cmpb $0x22, (%rax)
jne 0xb4e0
incq %rax
cmpq %rbx, %rax
je 0xb4e0
movl $0x1, %edx
movq %r14, %rcx
leaq 0x1(%rax), %rdi
movzbl (%rax), %esi
cmpl $0x5c, %esi
je 0xb3bb
cmpl $0x22, %esi
je 0xb452
movb (%rcx), %al
cmpb %al, %sil
cmovnel %ebp, %edx
cmpb $0x1, %al
sbbq $-0x1, %rcx
movq %rdi, %rax
cmpq %rbx, %rdi
jne 0xb38b
jmp 0xb4e0
cmpq %rbx, %rdi
je 0xb4e0
leaq 0x2(%rax), %rdi
movb 0x1(%rax), %sil
movzbl %sil, %r8d
cmpl $0x61, %r8d
jg 0xb3ed
cmpl $0x22, %r8d
je 0xb3a0
cmpl $0x2f, %r8d
je 0xb3a0
cmpl $0x5c, %r8d
je 0xb3a0
jmp 0xb4e0
leal -0x6e(%r8), %esi
cmpl $0x7, %esi
ja 0xb404
movslq (%r12,%rsi,4), %rsi
addq %r12, %rsi
jmpq *%rsi
movb $0xa, %sil
jmp 0xb3a0
cmpl $0x66, %r8d
je 0xb44a
cmpl $0x62, %r8d
jne 0xb4e0
movb $0x8, %sil
jmp 0xb3a0
movq %rbx, %rdx
subq %rdi, %rdx
cmpq $0x4, %rdx
jl 0xb4e0
addq $0x6, %rax
movb $0x5c, %sil
xorl %edx, %edx
movq %rax, %rdi
jmp 0xb3a0
movb $0x9, %sil
jmp 0xb3a0
movb $0xd, %sil
jmp 0xb3a0
movb $0xc, %sil
jmp 0xb3a0
cmpq %rbx, %rdi
jae 0xb471
movzbl (%rdi), %eax
cmpq $0x20, %rax
ja 0xb471
btq %rax, %r15
jae 0xb471
incq %rdi
cmpq %rbx, %rdi
jne 0xb457
movq %rbx, %rdi
cmpq %rbx, %rdi
je 0xb4e0
cmpb $0x3a, (%rdi)
jne 0xb4e0
incq %rdi
cmpq %rbx, %rdi
jae 0xb49d
movzbl (%rdi), %eax
cmpq $0x20, %rax
ja 0xb49d
btq %rax, %r15
jae 0xb49d
incq %rdi
cmpq %rbx, %rdi
jne 0xb483
movq %rbx, %rdi
cmpb $0x0, (%rcx)
jne 0xb4a6
testl %edx, %edx
jne 0xb4dd
movq %rbx, %rsi
callq 0xb4ec
cmpq %rbx, %rax
jae 0xb4cd
movzbl (%rax), %ecx
cmpq $0x20, %rcx
ja 0xb4cd
btq %rcx, %r15
jae 0xb4cd
incq %rax
cmpq %rbx, %rax
jne 0xb4b3
movq %rbx, %rax
cmpq %rbx, %rax
je 0xb4e0
cmpb $0x2c, (%rax)
je 0xb343
jmp 0xb4e0
movq %rdi, %rbx
movq %rbx, %rax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq