// File: /workspace/github_c_makefile_star2_O0/aerospike[P]aerospike-common/src/main/aerospike/as_msgpack.c
// Function: unpack_size_non_recursive
static int64_t
unpack_size_non_recursive(as_unpacker *pk, msgpack_parse_memblock *block,
		msgpack_parse_state *state)
{
	int start = pk->offset;

	while (state) {
		while (state->index >= state->len) {
			if (! msgpack_parse_memblock_has_prev(block)) {
				return (int64_t)(pk->offset - start);
			}

			state = msgpack_parse_memblock_prev(&block);
		}

		if (state->type == AS_LIST) {
			state->index++;
		}
		else if (state->type == AS_MAP) {
			if (state->map_pair == 0) {
				state->map_pair++;
			}
			else {
				state->map_pair = 0;
				state->index++;
			}
		}
		else {
			return -1;
		}

		as_val_t type = as_unpack_peek_type(pk);

		if (type == AS_UNDEF) {
			return -2;
		}

		if (type == AS_LIST ) {
			state = msgpack_parse_memblock_next(&block);

			if (! msgpack_parse_state_list_size_init(state, pk)) {
				return -3;
			}

			continue;
		}

		if (type == AS_MAP) {
			state = msgpack_parse_memblock_next(&block);

			if (! msgpack_parse_state_map_size_init(state, pk)) {
				return -4;
			}

			continue;
		}

		if (unpack_size_internal(pk, 0) < 0) {
			return -5;
		}
	}

	return -6;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x10(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x24(%rbp)
cmpq $0x0, -0x20(%rbp)
je 0x11ed5
jmp 0x11d7b
movq -0x20(%rbp), %rax
movl 0xc(%rax), %eax
movq -0x20(%rbp), %rcx
cmpl 0x8(%rcx), %eax
jb 0x11dbc
movq -0x18(%rbp), %rdi
callq 0x11f30
testb $0x1, %al
jne 0x11dad
movq -0x10(%rbp), %rax
movl 0x8(%rax), %eax
subl -0x24(%rbp), %eax
movl %eax, %eax
movq %rax, -0x8(%rbp)
jmp 0x11edd
leaq -0x18(%rbp), %rdi
callq 0x11f70
movq %rax, -0x20(%rbp)
jmp 0x11d7b
movq -0x20(%rbp), %rax
movzbl 0x11(%rax), %eax
cmpl $0x5, %eax
jne 0x11dd8
movq -0x20(%rbp), %rax
movl 0xc(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0xc(%rax)
jmp 0x11e27
movq -0x20(%rbp), %rax
movzbl 0x11(%rax), %eax
cmpl $0x6, %eax
jne 0x11e18
movq -0x20(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x0, %eax
jne 0x11e01
movq -0x20(%rbp), %rax
movb 0x10(%rax), %cl
addb $0x1, %cl
movb %cl, 0x10(%rax)
jmp 0x11e16
movq -0x20(%rbp), %rax
movb $0x0, 0x10(%rax)
movq -0x20(%rbp), %rax
movl 0xc(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0xc(%rax)
jmp 0x11e25
movq $-0x1, -0x8(%rbp)
jmp 0x11edd
jmp 0x11e27
movq -0x10(%rbp), %rdi
callq 0x8490
movb %al, -0x25(%rbp)
movzbl -0x25(%rbp), %eax
cmpl $0x0, %eax
jne 0x11e49
movq $-0x2, -0x8(%rbp)
jmp 0x11edd
movzbl -0x25(%rbp), %eax
cmpl $0x5, %eax
jne 0x11e7f
leaq -0x18(%rbp), %rdi
callq 0x11ce0
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x12000
testb $0x1, %al
jne 0x11e7a
movq $-0x3, -0x8(%rbp)
jmp 0x11edd
jmp 0x11d6e
movzbl -0x25(%rbp), %eax
cmpl $0x6, %eax
jne 0x11eb5
leaq -0x18(%rbp), %rdi
callq 0x11ce0
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x12070
testb $0x1, %al
jne 0x11eb0
movq $-0x4, -0x8(%rbp)
jmp 0x11edd
jmp 0x11d6e
movq -0x10(%rbp), %rdi
xorl %esi, %esi
callq 0xfe70
cmpq $0x0, %rax
jge 0x11ed0
movq $-0x5, -0x8(%rbp)
jmp 0x11edd
jmp 0x11d6e
movq $-0x6, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopw (%rax,%rax)