// File: /workspace/github_c_makefile_star2_O0/lmcilroy[P]lzm/lzmdecode.c
// Function: lzm_decode
unsigned int
lzm_decode(
    const struct lzm_state * const state,
    const unsigned char * const buffer_in,
    const unsigned int size_in,
    unsigned char * const buffer_out,
    unsigned int * const size_out)
{
	const unsigned char * const end = buffer_in + size_in;
	const unsigned char * const match_end = end - 5;
	const unsigned char *curr_in = (const unsigned char *) buffer_in;
	unsigned char *curr_out = (unsigned char *) buffer_out;
	const unsigned char * const out_limit = buffer_out + *size_out;
	const unsigned char *out_limit_fast_path;
	unsigned char *match;
	unsigned char *mend;
	unsigned long int c;
	unsigned int llen;
	unsigned int mlen;
	unsigned int off = 1;
	unsigned char op;

	(void)state;

	if (buffer_in == NULL || buffer_out == NULL)
		return EINVAL;

	out_limit_fast_path = (*size_out < (14 + 14 + MIN_MATCH)) ? NULL :
		out_limit - (14 + 14 + MIN_MATCH);

	while (likely(curr_in <= match_end)) {
		op = *curr_in++;
		llen = op >> 4;
		mlen = (op & 15) + MIN_MATCH;

		curr_in = decode_offset(curr_in, &off);

		if (likely(llen < 15 && (curr_in + 16) <= end &&
		    curr_out <= out_limit_fast_path)) {
			LOG("L %d\n", llen);
			memcpy(curr_out, curr_in, 16);
			curr_out += llen;
			curr_in += llen;
			if (unlikely(off > (curr_out - buffer_out)))
				return EIO;
			if (likely(mlen < (15 + MIN_MATCH) &&
			    likely(((off >= mlen) | (off >= 8))))) {
				LOG("M %d %d\n", mlen, off);
				match = curr_out - off;
				memcpy(curr_out, match, 8);
				memcpy(curr_out+8, match+8, 8);
				memcpy(curr_out+16, match+16, 2);
				curr_out += mlen;
				continue;
			}
			goto match;
		}

		if (likely(llen > 0)) {
			if (unlikely(llen == 15)) {
				if (unlikely(curr_in >= end - 15))
					return EIO;

				curr_in = decode_length(curr_in, &llen);
				llen += 15;
			}
			LOG("L %d\n", llen);
			if (unlikely((curr_in + llen) > end))
				return EIO;
			if (unlikely((curr_out + llen) > out_limit))
				return EOVERFLOW;
			memcpy(curr_out, curr_in, llen);
			curr_in += llen;
			curr_out += llen;
		}

		if (unlikely(off > (curr_out - buffer_out)))
			return EIO;

 match:
		if (unlikely(off == 0))
			break;

		if (likely(mlen < (15 + MIN_MATCH) && off >= mlen &&
		    (curr_out + (14 + MIN_MATCH)) <= out_limit)) {
			LOG("M %d %d\n", mlen, off);
			match = curr_out - off;
			memcpy(curr_out, match, 8);
			memcpy(curr_out+8, match+8, 8);
			memcpy(curr_out+16, match+16, 2);
			curr_out += mlen;
			continue;
		}

		if (likely(mlen == (15 + MIN_MATCH))) {
			if (unlikely(curr_in >= match_end))
				return EIO;

			curr_in = decode_length(curr_in, &mlen);
			mlen += 15 + MIN_MATCH;
		}

		LOG("M %d %d\n", mlen, off);
		if (unlikely((curr_out + mlen) > out_limit))
			return EOVERFLOW;

		match = curr_out - off;
		mend = curr_out + mlen;

		if (likely(mlen <= off)) {
			memcpy(curr_out, match, mlen);
			curr_out += mlen;
			continue;
		}

		if (off == 1) {
			c = *match;
			*curr_out++ = c;
			*curr_out++ = c;
			*curr_out++ = c;
			*curr_out++ = c;
			while (curr_out < mend)
				*curr_out++ = c;
			continue;
		}

		if (off == 2) {
			c = readmem16(match);
			writemem16(curr_out, c);
			curr_out += 2;
			writemem16(curr_out, c);
			curr_out += 2;
			while (curr_out < mend) {
				writemem16(curr_out, c);
				curr_out += 2;
				writemem16(curr_out, c);
				curr_out += 2;
			}
			curr_out = mend;
			continue;
		}

		if (off == 3) {
			unsigned char c1, c2, c3;
			c1 = *match;
			c2 = *(match+1);
			c3 = *(match+2);
			*curr_out++ = c1;
			*curr_out++ = c2;
			*curr_out++ = c3;
			*curr_out++ = c1;
			*curr_out++ = c2;
			*curr_out++ = c3;
			while (curr_out < mend) {
				*curr_out++ = c1;
				*curr_out++ = c2;
				*curr_out++ = c3;
			}
			curr_out = mend;
		}

		if (off == 4) {
			c = readmem32(match);
			writemem32(curr_out, c);
			curr_out += off;
			writemem32(curr_out, c);
			curr_out += off;
			while (curr_out < mend) {
				writemem32(curr_out, c);
				curr_out += off;
				writemem32(curr_out, c);
				curr_out += off;
			}
			curr_out = mend;
			continue;
		}

		if (off <= 8) {
			c = readmem64(match);
			writemem64(curr_out, c);
			curr_out += off;
			while (curr_out < mend) {
				writemem64(curr_out, c);
				curr_out += off;
			}
			curr_out = mend;
			continue;
		}

		memcpy(curr_out, match, 4);
		match += 4;
		curr_out += 4;
		while (curr_out < mend) {
			memcpy(curr_out, match, 8);
			match += 8;
			curr_out += 8;
		}
		curr_out = mend;
	}

	*size_out = curr_out - buffer_out;

	/* Finished without seeing end of stream? */
	if (off != 0)
		return EIO;

	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movl %edx, -0x1c(%rbp)
movq %rcx, -0x28(%rbp)
movq %r8, -0x30(%rbp)
movq -0x18(%rbp), %rax
movl -0x1c(%rbp), %ecx
addq %rcx, %rax
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rax
addq $-0x5, %rax
movq %rax, -0x40(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x28(%rbp), %rax
movq -0x30(%rbp), %rcx
movl (%rcx), %ecx
addq %rcx, %rax
movq %rax, -0x58(%rbp)
movl $0x1, -0x84(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x5e91
cmpq $0x0, -0x28(%rbp)
jne 0x5e9d
movl $0x16, -0x4(%rbp)
jmp 0x6772
movq -0x30(%rbp), %rax
cmpl $0x20, (%rax)
jae 0x5eb1
xorl %eax, %eax
movq %rax, -0x90(%rbp)
jmp 0x5ec0
movq -0x58(%rbp), %rax
addq $-0x20, %rax
movq %rax, -0x90(%rbp)
movq -0x90(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x48(%rbp), %rax
cmpq -0x40(%rbp), %rax
setbe %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x6746
movq -0x48(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x48(%rbp)
movb (%rax), %al
movb %al, -0x85(%rbp)
movzbl -0x85(%rbp), %eax
sarl $0x4, %eax
movl %eax, -0x7c(%rbp)
movzbl -0x85(%rbp), %eax
andl $0xf, %eax
addl $0x4, %eax
movl %eax, -0x80(%rbp)
movq -0x48(%rbp), %rdi
leaq -0x84(%rbp), %rsi
callq 0x6780
movq %rax, -0x48(%rbp)
xorl %eax, %eax
cmpl $0xf, -0x7c(%rbp)
movb %al, -0x91(%rbp)
jae 0x5f64
movq -0x48(%rbp), %rcx
addq $0x10, %rcx
xorl %eax, %eax
cmpq -0x38(%rbp), %rcx
movb %al, -0x91(%rbp)
ja 0x5f64
movq -0x50(%rbp), %rax
cmpq -0x60(%rbp), %rax
setbe %al
movb %al, -0x91(%rbp)
movb -0x91(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x6094
movq -0x50(%rbp), %rax
movq -0x48(%rbp), %rcx
movq (%rcx), %rdx
movq %rdx, (%rax)
movq 0x8(%rcx), %rcx
movq %rcx, 0x8(%rax)
movl -0x7c(%rbp), %ecx
movq -0x50(%rbp), %rax
movl %ecx, %ecx
addq %rcx, %rax
movq %rax, -0x50(%rbp)
movl -0x7c(%rbp), %ecx
movq -0x48(%rbp), %rax
movl %ecx, %ecx
addq %rcx, %rax
movq %rax, -0x48(%rbp)
movl -0x84(%rbp), %eax
movq -0x50(%rbp), %rcx
movq -0x28(%rbp), %rdx
subq %rdx, %rcx
cmpq %rcx, %rax
setg %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x5fe1
movl $0x5, -0x4(%rbp)
jmp 0x6772
xorl %eax, %eax
cmpl $0x13, -0x80(%rbp)
movb %al, -0x92(%rbp)
jae 0x6021
movl -0x84(%rbp), %eax
cmpl -0x80(%rbp), %eax
setae %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x8, -0x84(%rbp)
setae %cl
andb $0x1, %cl
movzbl %cl, %ecx
orl %ecx, %eax
cltq
cmpq $0x0, %rax
setne %al
movb %al, -0x92(%rbp)
movb -0x92(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x608f
movq -0x50(%rbp), %rax
movl -0x84(%rbp), %ecx
movl %ecx, %edx
xorl %ecx, %ecx
subq %rdx, %rcx
addq %rcx, %rax
movq %rax, -0x68(%rbp)
movq -0x50(%rbp), %rax
movq -0x68(%rbp), %rcx
movq (%rcx), %rcx
movq %rcx, (%rax)
movq -0x50(%rbp), %rax
movq -0x68(%rbp), %rcx
movq 0x8(%rcx), %rcx
movq %rcx, 0x8(%rax)
movq -0x50(%rbp), %rax
movq -0x68(%rbp), %rcx
movw 0x10(%rcx), %cx
movw %cx, 0x10(%rax)
movl -0x80(%rbp), %ecx
movq -0x50(%rbp), %rax
movl %ecx, %ecx
addq %rcx, %rax
movq %rax, -0x50(%rbp)
jmp 0x5ecb
jmp 0x61bd
cmpl $0x0, -0x7c(%rbp)
seta %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x618b
cmpl $0xf, -0x7c(%rbp)
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x6105
movq -0x48(%rbp), %rax
movq -0x38(%rbp), %rcx
addq $-0xf, %rcx
cmpq %rcx, %rax
setae %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x60eb
movl $0x5, -0x4(%rbp)
jmp 0x6772
movq -0x48(%rbp), %rdi
leaq -0x7c(%rbp), %rsi
callq 0x67e0
movq %rax, -0x48(%rbp)
movl -0x7c(%rbp), %eax
addl $0xf, %eax
movl %eax, -0x7c(%rbp)
movq -0x48(%rbp), %rax
movl -0x7c(%rbp), %ecx
addq %rcx, %rax
cmpq -0x38(%rbp), %rax
seta %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x612f
movl $0x5, -0x4(%rbp)
jmp 0x6772
movq -0x50(%rbp), %rax
movl -0x7c(%rbp), %ecx
addq %rcx, %rax
cmpq -0x58(%rbp), %rax
seta %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x6159
movl $0x4b, -0x4(%rbp)
jmp 0x6772
movq -0x50(%rbp), %rdi
movq -0x48(%rbp), %rsi
movl -0x7c(%rbp), %eax
movl %eax, %edx
callq 0x11b0
movl -0x7c(%rbp), %ecx
movq -0x48(%rbp), %rax
movl %ecx, %ecx
addq %rcx, %rax
movq %rax, -0x48(%rbp)
movl -0x7c(%rbp), %ecx
movq -0x50(%rbp), %rax
movl %ecx, %ecx
addq %rcx, %rax
movq %rax, -0x50(%rbp)
movl -0x84(%rbp), %eax
movq -0x50(%rbp), %rcx
movq -0x28(%rbp), %rdx
subq %rdx, %rcx
cmpq %rcx, %rax
setg %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x61bb
movl $0x5, -0x4(%rbp)
jmp 0x6772
jmp 0x61bd
cmpl $0x0, -0x84(%rbp)
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x61d9
jmp 0x6746
xorl %eax, %eax
cmpl $0x13, -0x80(%rbp)
movb %al, -0x93(%rbp)
jae 0x620f
movl -0x84(%rbp), %ecx
xorl %eax, %eax
cmpl -0x80(%rbp), %ecx
movb %al, -0x93(%rbp)
jb 0x620f
movq -0x50(%rbp), %rax
addq $0x12, %rax
cmpq -0x58(%rbp), %rax
setbe %al
movb %al, -0x93(%rbp)
movb -0x93(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x627d
movq -0x50(%rbp), %rax
movl -0x84(%rbp), %ecx
movl %ecx, %edx
xorl %ecx, %ecx
subq %rdx, %rcx
addq %rcx, %rax
movq %rax, -0x68(%rbp)
movq -0x50(%rbp), %rax
movq -0x68(%rbp), %rcx
movq (%rcx), %rcx
movq %rcx, (%rax)
movq -0x50(%rbp), %rax
movq -0x68(%rbp), %rcx
movq 0x8(%rcx), %rcx
movq %rcx, 0x8(%rax)
movq -0x50(%rbp), %rax
movq -0x68(%rbp), %rcx
movw 0x10(%rcx), %cx
movw %cx, 0x10(%rax)
movl -0x80(%rbp), %ecx
movq -0x50(%rbp), %rax
movl %ecx, %ecx
addq %rcx, %rax
movq %rax, -0x50(%rbp)
jmp 0x5ecb
cmpl $0x13, -0x80(%rbp)
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x62cf
movq -0x48(%rbp), %rax
cmpq -0x40(%rbp), %rax
setae %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x62b5
movl $0x5, -0x4(%rbp)
jmp 0x6772
movq -0x48(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x67e0
movq %rax, -0x48(%rbp)
movl -0x80(%rbp), %eax
addl $0x13, %eax
movl %eax, -0x80(%rbp)
movq -0x50(%rbp), %rax
movl -0x80(%rbp), %ecx
addq %rcx, %rax
cmpq -0x58(%rbp), %rax
seta %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x62f9
movl $0x4b, -0x4(%rbp)
jmp 0x6772
movq -0x50(%rbp), %rax
movl -0x84(%rbp), %ecx
movl %ecx, %edx
xorl %ecx, %ecx
subq %rdx, %rcx
addq %rcx, %rax
movq %rax, -0x68(%rbp)
movq -0x50(%rbp), %rax
movl -0x80(%rbp), %ecx
addq %rcx, %rax
movq %rax, -0x70(%rbp)
movl -0x80(%rbp), %eax
cmpl -0x84(%rbp), %eax
setbe %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x635f
movq -0x50(%rbp), %rdi
movq -0x68(%rbp), %rsi
movl -0x80(%rbp), %eax
movl %eax, %edx
callq 0x11b0
movl -0x80(%rbp), %ecx
movq -0x50(%rbp), %rax
movl %ecx, %ecx
addq %rcx, %rax
movq %rax, -0x50(%rbp)
jmp 0x5ecb
cmpl $0x1, -0x84(%rbp)
jne 0x63fb
movq -0x68(%rbp), %rax
movzbl (%rax), %eax
movq %rax, -0x78(%rbp)
movq -0x78(%rbp), %rax
movb %al, %cl
movq -0x50(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x50(%rbp)
movb %cl, (%rax)
movq -0x78(%rbp), %rax
movb %al, %cl
movq -0x50(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x50(%rbp)
movb %cl, (%rax)
movq -0x78(%rbp), %rax
movb %al, %cl
movq -0x50(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x50(%rbp)
movb %cl, (%rax)
movq -0x78(%rbp), %rax
movb %al, %cl
movq -0x50(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x50(%rbp)
movb %cl, (%rax)
movq -0x50(%rbp), %rax
cmpq -0x70(%rbp), %rax
jae 0x63f6
movq -0x78(%rbp), %rax
movb %al, %cl
movq -0x50(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x50(%rbp)
movb %cl, (%rax)
jmp 0x63d3
jmp 0x5ecb
cmpl $0x2, -0x84(%rbp)
jne 0x64a1
movq -0x68(%rbp), %rdi
callq 0x6900
movzwl %ax, %eax
movq %rax, -0x78(%rbp)
movq -0x50(%rbp), %rdi
movq -0x78(%rbp), %rax
movzwl %ax, %esi
callq 0x6920
movq -0x50(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rdi
movq -0x78(%rbp), %rax
movzwl %ax, %esi
callq 0x6920
movq -0x50(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
cmpq -0x70(%rbp), %rax
jae 0x6494
movq -0x50(%rbp), %rdi
movq -0x78(%rbp), %rax
movzwl %ax, %esi
callq 0x6920
movq -0x50(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rdi
movq -0x78(%rbp), %rax
movzwl %ax, %esi
callq 0x6920
movq -0x50(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x50(%rbp)
jmp 0x6450
movq -0x70(%rbp), %rax
movq %rax, -0x50(%rbp)
jmp 0x5ecb
cmpl $0x3, -0x84(%rbp)
jne 0x65b7
movq -0x68(%rbp), %rax
movb (%rax), %al
movb %al, -0x86(%rbp)
movq -0x68(%rbp), %rax
movb 0x1(%rax), %al
movb %al, -0x87(%rbp)
movq -0x68(%rbp), %rax
movb 0x2(%rax), %al
movb %al, -0x88(%rbp)
movb -0x86(%rbp), %cl
movq -0x50(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x50(%rbp)
movb %cl, (%rax)
movb -0x87(%rbp), %cl
movq -0x50(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x50(%rbp)
movb %cl, (%rax)
movb -0x88(%rbp), %cl
movq -0x50(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x50(%rbp)
movb %cl, (%rax)
movb -0x86(%rbp), %cl
movq -0x50(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x50(%rbp)
movb %cl, (%rax)
movb -0x87(%rbp), %cl
movq -0x50(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x50(%rbp)
movb %cl, (%rax)
movb -0x88(%rbp), %cl
movq -0x50(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x50(%rbp)
movb %cl, (%rax)
movq -0x50(%rbp), %rax
cmpq -0x70(%rbp), %rax
jae 0x65af
movb -0x86(%rbp), %cl
movq -0x50(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x50(%rbp)
movb %cl, (%rax)
movb -0x87(%rbp), %cl
movq -0x50(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x50(%rbp)
movb %cl, (%rax)
movb -0x88(%rbp), %cl
movq -0x50(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x50(%rbp)
movb %cl, (%rax)
jmp 0x655e
movq -0x70(%rbp), %rax
movq %rax, -0x50(%rbp)
cmpl $0x4, -0x84(%rbp)
jne 0x6674
movq -0x68(%rbp), %rdi
callq 0x6940
movl %eax, %eax
movq %rax, -0x78(%rbp)
movq -0x50(%rbp), %rdi
movq -0x78(%rbp), %rax
movl %eax, %esi
callq 0x6960
movl -0x84(%rbp), %ecx
movq -0x50(%rbp), %rax
movl %ecx, %ecx
addq %rcx, %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rdi
movq -0x78(%rbp), %rax
movl %eax, %esi
callq 0x6960
movl -0x84(%rbp), %ecx
movq -0x50(%rbp), %rax
movl %ecx, %ecx
addq %rcx, %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
cmpq -0x70(%rbp), %rax
jae 0x6667
movq -0x50(%rbp), %rdi
movq -0x78(%rbp), %rax
movl %eax, %esi
callq 0x6960
movl -0x84(%rbp), %ecx
movq -0x50(%rbp), %rax
movl %ecx, %ecx
addq %rcx, %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rdi
movq -0x78(%rbp), %rax
movl %eax, %esi
callq 0x6960
movl -0x84(%rbp), %ecx
movq -0x50(%rbp), %rax
movl %ecx, %ecx
addq %rcx, %rax
movq %rax, -0x50(%rbp)
jmp 0x6617
movq -0x70(%rbp), %rax
movq %rax, -0x50(%rbp)
jmp 0x5ecb
cmpl $0x8, -0x84(%rbp)
ja 0x66e3
movq -0x68(%rbp), %rdi
callq 0x6980
movq %rax, -0x78(%rbp)
movq -0x50(%rbp), %rdi
movq -0x78(%rbp), %rsi
callq 0x69a0
movl -0x84(%rbp), %ecx
movq -0x50(%rbp), %rax
movl %ecx, %ecx
addq %rcx, %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
cmpq -0x70(%rbp), %rax
jae 0x66d6
movq -0x50(%rbp), %rdi
movq -0x78(%rbp), %rsi
callq 0x69a0
movl -0x84(%rbp), %ecx
movq -0x50(%rbp), %rax
movl %ecx, %ecx
addq %rcx, %rax
movq %rax, -0x50(%rbp)
jmp 0x66aa
movq -0x70(%rbp), %rax
movq %rax, -0x50(%rbp)
jmp 0x5ecb
movq -0x50(%rbp), %rax
movq -0x68(%rbp), %rcx
movl (%rcx), %ecx
movl %ecx, (%rax)
movq -0x68(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x68(%rbp)
movq -0x50(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
cmpq -0x70(%rbp), %rax
jae 0x6739
movq -0x50(%rbp), %rax
movq -0x68(%rbp), %rcx
movq (%rcx), %rcx
movq %rcx, (%rax)
movq -0x68(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x68(%rbp)
movq -0x50(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x50(%rbp)
jmp 0x6707
movq -0x70(%rbp), %rax
movq %rax, -0x50(%rbp)
jmp 0x5ecb
movq -0x50(%rbp), %rax
movq -0x28(%rbp), %rcx
subq %rcx, %rax
movl %eax, %ecx
movq -0x30(%rbp), %rax
movl %ecx, (%rax)
cmpl $0x0, -0x84(%rbp)
je 0x676b
movl $0x5, -0x4(%rbp)
jmp 0x6772
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0xa0, %rsp
popq %rbp
retq
nop