// File: /workspace/github_c_makefile_star2_O0/cyb70289[P]tt/src/apn/decimal/basic.c
// Function: tt_dec_div
int tt_dec_div(struct tt_dec *dst, const struct tt_dec *src1,
		const struct tt_dec *src2)
{
	int ret = 0, sign = src1->_sign ^ src2->_sign;

	dst->_sign = sign;

	/* Check NaN, Inf */
	if (src1->_inf_nan == TT_DEC_NAN || src2->_inf_nan == TT_DEC_NAN) {
		dst->_inf_nan = TT_DEC_NAN;
		return TT_APN_EINVAL;
	}
	if (src1->_inf_nan == TT_DEC_INF) {
		if (src2->_inf_nan == TT_DEC_INF) {
			dst->_inf_nan = TT_DEC_NAN;
			return TT_APN_EINVAL;
		} else {
			dst->_inf_nan = TT_DEC_INF;
			return TT_APN_EOVERFLOW;
		}
	}
	if (src2->_inf_nan == TT_DEC_INF) {
		_tt_dec_zero(dst);
		return 0;
	}

	/* Check zero */
	if (_tt_dec_is_zero(src2)) {
		if (_tt_dec_is_zero(src1)) {
			dst->_inf_nan = TT_DEC_NAN;
			return TT_APN_EDIV_UNDEF;
		} else {
			dst->_inf_nan = TT_DEC_INF;
			return TT_APN_EDIV_0;
		}
	}
	if (_tt_dec_is_zero(src1)) {
		if (src1->_exp == 0) {
			dst->_exp = 0;	/* True zero */
		} else {
			dst->_exp = (src1->_exp + src1->_msb) -
				(src2->_exp + src2->_msb);
			if (dst->_exp > 0)
				dst->_exp = 0;
		}
		dst->_inf_nan = 0;
		dst->_msb = 1;
		memset(dst->_dig32, 0, dst->_digsz);
		return 0;
	}

	/* Allocate a new DEC if dst overlaps src */
	struct tt_dec *quotient = dst;
	if (quotient == src1 || quotient == src2) {
		quotient = tt_dec_alloc(quotient->_prec);
		if (!quotient)
			return TT_ENOMEM;
	} else {
		_tt_dec_zero(quotient);
	}

	quotient->_sign = sign;
	quotient->_exp = src1->_exp - src2->_exp;

	/* Allocate dividend, divisor buffer */
	const int uints = (_tt_max(src1->_msb, src2->_msb) + 1 + 8) / 9;
	uint *dividend = calloc(uints, 4);
	uint *divisor = calloc(uints, 4);
	if (!dividend || !divisor) {
		ret = TT_ENOMEM;
		goto out;
	}
	memcpy(dividend, src1->_dig32, _tt_min(src1->_digsz, uints*4));
	memcpy(divisor, src2->_dig32, _tt_min(src2->_digsz, uints*4));

	int msb_dividend = src1->_msb;
	int msb_divisor = src2->_msb;

	/* Get highest digit */
	int top_dividend = _tt_dec_get_dig(dividend, msb_dividend-1);
	int top_divisor = _tt_dec_get_dig(divisor, msb_divisor-1);
	tt_assert_fa(top_divisor && top_dividend);

	/* Make dividend/divisor within [1, 10) */
	int adj = msb_dividend - msb_divisor;
	quotient->_exp += adj;
	if (adj < 0)
		msb_dividend = shift_digs(dividend, 0,
				dividend, msb_dividend, -adj);
	else if (adj > 0)
		msb_divisor = shift_digs(divisor, 0, divisor, msb_divisor, adj);
	if (cmp_digs(dividend, msb_dividend, divisor, msb_divisor) < 0) {
		quotient->_exp--;
		msb_dividend = shift_digs(dividend, 0, dividend, msb_dividend, 1);
		tt_assert_fa(msb_dividend == msb_divisor + 1);
	} else {
		tt_assert_fa(msb_dividend == msb_divisor);
	}

	/* Remove common trailing zeros */
	while (1) {
		if (msb_dividend <= 9 || msb_divisor <= 9)
			break;
		if (dividend[0] || divisor[0])
			break;
		const int sz_dividend = (msb_dividend + 8) / 9 * 4;
		const int sz_divisor = (msb_divisor + 8) / 9 * 4;
		msb_dividend = shift_digs(dividend, sz_dividend,
				dividend, msb_dividend, -9);
		msb_divisor = shift_digs(divisor, sz_divisor,
				divisor, msb_divisor, -9);
	}

	int msb_result = 1;
	uint *result = quotient->_dig32;
	while (1) {
		tt_assert_fa(msb_result <= (quotient->_prec + 1));

		/* Repeat sub divisor from dividend till remainder < divisor */
		int r;
		for (r = 1; r < 10; r++) {
			msb_dividend = sub_digs(dividend, dividend, msb_dividend,
					divisor, msb_divisor);
			if ((msb_dividend < msb_divisor) ||
					(msb_dividend == msb_divisor &&
					 cmp_digs(dividend, msb_dividend,
						 divisor, msb_divisor) < 0))
				break;
		}
		tt_assert_fa(r < 10 && cmp_digs(dividend, msb_dividend,
					divisor, msb_divisor) < 0);

		/* Store quotient */
		tt_assert_fa(result[0] % 10 == 0);
		result[0] += r;

		/* Precision+rounding reached or residue is zero */
		if ((msb_result > quotient->_prec) ||
				(msb_dividend == 1 && dividend[0] == 0))
			break;

		/* Get highest digit */
		top_dividend = _tt_dec_get_dig(dividend, msb_dividend-1);
		top_divisor = _tt_dec_get_dig(divisor, msb_divisor-1);
		tt_assert_fa(top_divisor && top_dividend);

		/* Make dividend/divisor within [1, 10)
		 * - dividend is less than divisor now
		 */
		adj = msb_dividend - msb_divisor;
		if (adj < 0)
			msb_dividend = shift_digs(dividend, 0,
					dividend, msb_dividend, -adj);
		if (cmp_digs(dividend, msb_dividend, divisor, msb_divisor) < 0) {
			adj--;
			msb_dividend = shift_digs(dividend, 0,
					dividend, msb_dividend, 1);
			tt_assert_fa(msb_dividend == msb_divisor + 1);
		} else {
			tt_assert_fa(msb_dividend == msb_divisor);
		}
		tt_assert_fa(adj < 0);
		adj = -adj;

		/* Append zero to quotient */
		int prec_left = quotient->_prec - msb_result;
		if (adj > (prec_left+1)) {
			/* Precision+rounding reached */
			msb_result = shift_digs(result, 0,
					result, msb_result, prec_left);
			quotient->_exp -= prec_left;
			ret = TT_APN_EROUNDED;
			break;
		}
		msb_result = shift_digs(result, 0, result, msb_result, adj);
		quotient->_exp -= adj;
	}

	/* Check rounding */
	if (msb_result > quotient->_prec) {
		if (_tt_round(_tt_dec_get_dig(result, 1) & 1,
				_tt_dec_get_dig(result, 0), 0)) {
			const uint ten = 10;
			msb_result = add_digs(result, msb_result, &ten, 2);
		}
		adj = msb_result - quotient->_prec;
		msb_result = shift_digs(result, quotient->_digsz,
				result, msb_result, -adj);
		quotient->_exp += adj;
		ret = TT_APN_EROUNDED;
	}

	quotient->_msb = msb_result;

	/* Switch buffer if dst overlaps src */
	if (quotient != dst) {
		free(dst->_dig32);
		memcpy(dst, quotient, sizeof(struct tt_dec));
		free(quotient);
		quotient = NULL;
	}

out:
	if (dividend)
		free(dividend);
	if (divisor)
		free(divisor);
	if (quotient && quotient != dst)
		tt_dec_free(quotient);

	return ret;
}

// Assembly:
subq $0xd8, %rsp
movq %rdi, 0xc8(%rsp)
movq %rsi, 0xc0(%rsp)
movq %rdx, 0xb8(%rsp)
movl $0x0, 0xb4(%rsp)
movq 0xc0(%rsp), %rax
movswl (%rax), %eax
movq 0xb8(%rsp), %rcx
movswl (%rcx), %ecx
xorl %ecx, %eax
movl %eax, 0xb0(%rsp)
movl 0xb0(%rsp), %eax
movw %ax, %cx
movq 0xc8(%rsp), %rax
movw %cx, (%rax)
movq 0xc0(%rsp), %rax
movswl 0x2(%rax), %eax
cmpl $0x2, %eax
je 0x5290
movq 0xb8(%rsp), %rax
movswl 0x2(%rax), %eax
cmpl $0x2, %eax
jne 0x52ae
movq 0xc8(%rsp), %rax
movw $0x2, 0x2(%rax)
movl $0xffffff32, 0xd4(%rsp) # imm = 0xFFFFFF32
jmp 0x5ff7
movq 0xc0(%rsp), %rax
movswl 0x2(%rax), %eax
cmpl $0x1, %eax
jne 0x530c
movq 0xb8(%rsp), %rax
movswl 0x2(%rax), %eax
cmpl $0x1, %eax
jne 0x52ee
movq 0xc8(%rsp), %rax
movw $0x2, 0x2(%rax)
movl $0xffffff32, 0xd4(%rsp) # imm = 0xFFFFFF32
jmp 0x5ff7
movq 0xc8(%rsp), %rax
movw $0x1, 0x2(%rax)
movl $0xffffff36, 0xd4(%rsp) # imm = 0xFFFFFF36
jmp 0x5ff7
movq 0xb8(%rsp), %rax
movswl 0x2(%rax), %eax
cmpl $0x1, %eax
jne 0x533a
movq 0xc8(%rsp), %rdi
callq 0x20a0
movl $0x0, 0xd4(%rsp)
jmp 0x5ff7
movq 0xb8(%rsp), %rdi
callq 0x48a0
testb $0x1, %al
jne 0x534d
jmp 0x539c
movq 0xc0(%rsp), %rdi
callq 0x48a0
testb $0x1, %al
jne 0x5360
jmp 0x537e
movq 0xc8(%rsp), %rax
movw $0x2, 0x2(%rax)
movl $0xffffff33, 0xd4(%rsp) # imm = 0xFFFFFF33
jmp 0x5ff7
movq 0xc8(%rsp), %rax
movw $0x1, 0x2(%rax)
movl $0xffffff34, 0xd4(%rsp) # imm = 0xFFFFFF34
jmp 0x5ff7
movq 0xc0(%rsp), %rdi
callq 0x48a0
testb $0x1, %al
jne 0x53b2
jmp 0x5476
movq 0xc0(%rsp), %rax
cmpl $0x0, 0x4(%rax)
jne 0x53d1
movq 0xc8(%rsp), %rax
movl $0x0, 0x4(%rax)
jmp 0x5429
movq 0xc0(%rsp), %rax
movl 0x4(%rax), %ecx
movq 0xc0(%rsp), %rax
addl 0x14(%rax), %ecx
movq 0xb8(%rsp), %rax
movl 0x4(%rax), %eax
movq 0xb8(%rsp), %rdx
addl 0x14(%rdx), %eax
subl %eax, %ecx
movq 0xc8(%rsp), %rax
movl %ecx, 0x4(%rax)
movq 0xc8(%rsp), %rax
cmpl $0x0, 0x4(%rax)
jle 0x5427
movq 0xc8(%rsp), %rax
movl $0x0, 0x4(%rax)
jmp 0x5429
movq 0xc8(%rsp), %rax
movw $0x0, 0x2(%rax)
movq 0xc8(%rsp), %rax
movl $0x1, 0x14(%rax)
movq 0xc8(%rsp), %rax
movq 0x18(%rax), %rdi
movq 0xc8(%rsp), %rax
movl 0x10(%rax), %eax
movl %eax, %edx
xorl %esi, %esi
callq 0x10e0
movl $0x0, 0xd4(%rsp)
jmp 0x5ff7
movq 0xc8(%rsp), %rax
movq %rax, 0xa8(%rsp)
movq 0xa8(%rsp), %rax
cmpq 0xc0(%rsp), %rax
je 0x54aa
movq 0xa8(%rsp), %rax
cmpq 0xb8(%rsp), %rax
jne 0x54df
movq 0xa8(%rsp), %rax
movl 0x8(%rax), %edi
callq 0x1f00
movq %rax, 0xa8(%rsp)
cmpq $0x0, 0xa8(%rsp)
jne 0x54dd
movl $0xffffffff, 0xd4(%rsp) # imm = 0xFFFFFFFF
jmp 0x5ff7
jmp 0x54ec
movq 0xa8(%rsp), %rdi
callq 0x20a0
movl 0xb0(%rsp), %eax
movw %ax, %cx
movq 0xa8(%rsp), %rax
movw %cx, (%rax)
movq 0xc0(%rsp), %rax
movl 0x4(%rax), %ecx
movq 0xb8(%rsp), %rax
subl 0x4(%rax), %ecx
movq 0xa8(%rsp), %rax
movl %ecx, 0x4(%rax)
movq 0xc0(%rsp), %rax
movl 0x14(%rax), %eax
movl %eax, 0xa0(%rsp)
movq 0xb8(%rsp), %rax
movl 0x14(%rax), %eax
movl %eax, 0x9c(%rsp)
movl 0xa0(%rsp), %eax
cmpl 0x9c(%rsp), %eax
jle 0x5563
movl 0xa0(%rsp), %eax
movl %eax, 0x38(%rsp)
jmp 0x556e
movl 0x9c(%rsp), %eax
movl %eax, 0x38(%rsp)
movl 0x38(%rsp), %eax
movl %eax, 0x98(%rsp)
movl 0x98(%rsp), %eax
addl $0x1, %eax
addl $0x8, %eax
movl $0x9, %ecx
cltd
idivl %ecx
movl %eax, 0xa4(%rsp)
movslq 0xa4(%rsp), %rdi
movl $0x4, %esi
callq 0x1110
movq %rax, 0x90(%rsp)
movslq 0xa4(%rsp), %rdi
movl $0x4, %esi
callq 0x1110
movq %rax, 0x88(%rsp)
cmpq $0x0, 0x90(%rsp)
je 0x55df
cmpq $0x0, 0x88(%rsp)
jne 0x55ef
movl $0xffffffff, 0xb4(%rsp) # imm = 0xFFFFFFFF
jmp 0x5f8f
movq 0x90(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0xc0(%rsp), %rax
movq 0x18(%rax), %rax
movq %rax, 0x30(%rsp)
movq 0xc0(%rsp), %rax
movl 0x10(%rax), %eax
movl %eax, 0x84(%rsp)
movl 0xa4(%rsp), %eax
shll $0x2, %eax
movl %eax, 0x80(%rsp)
movl 0x84(%rsp), %eax
cmpl 0x80(%rsp), %eax
jae 0x564d
movl 0x84(%rsp), %eax
movl %eax, 0x24(%rsp)
jmp 0x5658
movl 0x80(%rsp), %eax
movl %eax, 0x24(%rsp)
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdi
movl 0x24(%rsp), %eax
movl %eax, 0x7c(%rsp)
movl 0x7c(%rsp), %eax
movl %eax, %edx
callq 0x1140
movq 0x88(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0xb8(%rsp), %rax
movq 0x18(%rax), %rax
movq %rax, 0x18(%rsp)
movq 0xb8(%rsp), %rax
movl 0x10(%rax), %eax
movl %eax, 0x78(%rsp)
movl 0xa4(%rsp), %eax
shll $0x2, %eax
movl %eax, 0x74(%rsp)
movl 0x78(%rsp), %eax
cmpl 0x74(%rsp), %eax
jae 0x56c4
movl 0x78(%rsp), %eax
movl %eax, 0xc(%rsp)
jmp 0x56cc
movl 0x74(%rsp), %eax
movl %eax, 0xc(%rsp)
movq 0x18(%rsp), %rsi
movq 0x10(%rsp), %rdi
movl 0xc(%rsp), %eax
movl %eax, 0x70(%rsp)
movl 0x70(%rsp), %eax
movl %eax, %edx
callq 0x1140
movq 0xc0(%rsp), %rax
movl 0x14(%rax), %eax
movl %eax, 0x6c(%rsp)
movq 0xb8(%rsp), %rax
movl 0x14(%rax), %eax
movl %eax, 0x68(%rsp)
movq 0x90(%rsp), %rdi
movl 0x6c(%rsp), %esi
subl $0x1, %esi
callq 0x2350
movl %eax, 0x64(%rsp)
movq 0x88(%rsp), %rdi
movl 0x68(%rsp), %esi
subl $0x1, %esi
callq 0x2350
movl %eax, 0x60(%rsp)
xorl %eax, %eax
cmpl $0x0, 0x60(%rsp)
movb %al, 0xb(%rsp)
je 0x5750
cmpl $0x0, 0x64(%rsp)
setne %al
movb %al, 0xb(%rsp)
movb 0xb(%rsp), %al
xorb $-0x1, %al
xorb $-0x1, %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x5790
xorl %edi, %edi
leaq 0x19024(%rip), %rsi     # 0x1e794
leaq 0xc967(%rip), %rdx      # 0x120de
leaq 0x18ffe(%rip), %rcx     # 0x1e77c
movl $0x2f0, %r8d            # imm = 0x2F0
movb $0x0, %al
callq 0xe010
callq 0x1060
jmp 0x5792
movl 0x6c(%rsp), %eax
subl 0x68(%rsp), %eax
movl %eax, 0x5c(%rsp)
movl 0x5c(%rsp), %ecx
movq 0xa8(%rsp), %rax
addl 0x4(%rax), %ecx
movl %ecx, 0x4(%rax)
cmpl $0x0, 0x5c(%rsp)
jge 0x57e0
movq 0x90(%rsp), %rdi
movq 0x90(%rsp), %rdx
movl 0x6c(%rsp), %ecx
xorl %r8d, %r8d
subl 0x5c(%rsp), %r8d
xorl %esi, %esi
callq 0x4af0
movl %eax, 0x6c(%rsp)
jmp 0x580d
cmpl $0x0, 0x5c(%rsp)
jle 0x580b
movq 0x88(%rsp), %rdi
movq 0x88(%rsp), %rdx
movl 0x68(%rsp), %ecx
movl 0x5c(%rsp), %r8d
xorl %esi, %esi
callq 0x4af0
movl %eax, 0x68(%rsp)
jmp 0x580d
movq 0x90(%rsp), %rdi
movl 0x6c(%rsp), %esi
movq 0x88(%rsp), %rdx
movl 0x68(%rsp), %ecx
callq 0x6010
cmpl $0x0, %eax
jge 0x58b9
movq 0xa8(%rsp), %rax
movl 0x4(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x4(%rax)
movq 0x90(%rsp), %rdi
movq 0x90(%rsp), %rdx
movl 0x6c(%rsp), %ecx
xorl %esi, %esi
movl $0x1, %r8d
callq 0x4af0
movl %eax, 0x6c(%rsp)
movl 0x6c(%rsp), %eax
movl 0x68(%rsp), %ecx
addl $0x1, %ecx
cmpl %ecx, %eax
sete %al
xorb $-0x1, %al
xorb $-0x1, %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x58b5
xorl %edi, %edi
leaq 0x18eff(%rip), %rsi     # 0x1e794
leaq 0xc842(%rip), %rdx      # 0x120de
leaq 0x18ed9(%rip), %rcx     # 0x1e77c
movl $0x2fd, %r8d            # imm = 0x2FD
movb $0x0, %al
callq 0xe010
callq 0x1060
jmp 0x58b7
jmp 0x5906
jmp 0x58bb
movl 0x6c(%rsp), %eax
cmpl 0x68(%rsp), %eax
sete %al
xorb $-0x1, %al
xorb $-0x1, %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x5902
xorl %edi, %edi
leaq 0x18eb2(%rip), %rsi     # 0x1e794
leaq 0xc7f5(%rip), %rdx      # 0x120de
leaq 0x18e8c(%rip), %rcx     # 0x1e77c
movl $0x2ff, %r8d            # imm = 0x2FF
movb $0x0, %al
callq 0xe010
callq 0x1060
jmp 0x5904
jmp 0x5906
jmp 0x5908
cmpl $0x9, 0x6c(%rsp)
jle 0x5916
cmpl $0x9, 0x68(%rsp)
jg 0x591b
jmp 0x59b6
movq 0x90(%rsp), %rax
cmpl $0x0, (%rax)
jne 0x5935
movq 0x88(%rsp), %rax
cmpl $0x0, (%rax)
je 0x5937
jmp 0x59b6
movl 0x6c(%rsp), %eax
addl $0x8, %eax
movl $0x9, %ecx
cltd
idivl %ecx
shll $0x2, %eax
movl %eax, 0x58(%rsp)
movl 0x68(%rsp), %eax
addl $0x8, %eax
movl $0x9, %ecx
cltd
idivl %ecx
shll $0x2, %eax
movl %eax, 0x54(%rsp)
movq 0x90(%rsp), %rdi
movl 0x58(%rsp), %esi
movq 0x90(%rsp), %rdx
movl 0x6c(%rsp), %ecx
movl $0xfffffff7, %r8d       # imm = 0xFFFFFFF7
callq 0x4af0
movl %eax, 0x6c(%rsp)
movq 0x88(%rsp), %rdi
movl 0x54(%rsp), %esi
movq 0x88(%rsp), %rdx
movl 0x68(%rsp), %ecx
movl $0xfffffff7, %r8d       # imm = 0xFFFFFFF7
callq 0x4af0
movl %eax, 0x68(%rsp)
jmp 0x5908
movl $0x1, 0x50(%rsp)
movq 0xa8(%rsp), %rax
movq 0x18(%rax), %rax
movq %rax, 0x48(%rsp)
jmp 0x59d1
movl 0x50(%rsp), %eax
movq 0xa8(%rsp), %rcx
movl 0x8(%rcx), %ecx
addl $0x1, %ecx
cmpl %ecx, %eax
setle %al
xorb $-0x1, %al
xorb $-0x1, %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x5a24
xorl %edi, %edi
leaq 0x18d90(%rip), %rsi     # 0x1e794
leaq 0xc6d3(%rip), %rdx      # 0x120de
leaq 0x18d6a(%rip), %rcx     # 0x1e77c
movl $0x313, %r8d            # imm = 0x313
movb $0x0, %al
callq 0xe010
callq 0x1060
jmp 0x5a26
movl $0x1, 0x44(%rsp)
cmpl $0xa, 0x44(%rsp)
jge 0x5aa6
movq 0x90(%rsp), %rdi
movq 0x90(%rsp), %rsi
movl 0x6c(%rsp), %edx
movq 0x88(%rsp), %rcx
movl 0x68(%rsp), %r8d
callq 0x6100
movl %eax, 0x6c(%rsp)
movl 0x6c(%rsp), %eax
cmpl 0x68(%rsp), %eax
jl 0x5a95
movl 0x6c(%rsp), %eax
cmpl 0x68(%rsp), %eax
jne 0x5a97
movq 0x90(%rsp), %rdi
movl 0x6c(%rsp), %esi
movq 0x88(%rsp), %rdx
movl 0x68(%rsp), %ecx
callq 0x6010
cmpl $0x0, %eax
jge 0x5a97
jmp 0x5aa6
jmp 0x5a99
movl 0x44(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x44(%rsp)
jmp 0x5a2e
jmp 0x5aa8
xorl %eax, %eax
cmpl $0xa, 0x44(%rsp)
movb %al, 0xa(%rsp)
jge 0x5adc
movq 0x90(%rsp), %rdi
movl 0x6c(%rsp), %esi
movq 0x88(%rsp), %rdx
movl 0x68(%rsp), %ecx
callq 0x6010
cmpl $0x0, %eax
setl %al
movb %al, 0xa(%rsp)
movb 0xa(%rsp), %al
xorb $-0x1, %al
xorb $-0x1, %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x5b1c
xorl %edi, %edi
leaq 0x18c98(%rip), %rsi     # 0x1e794
leaq 0xc5db(%rip), %rdx      # 0x120de
leaq 0x18c72(%rip), %rcx     # 0x1e77c
movl $0x321, %r8d            # imm = 0x321
movb $0x0, %al
callq 0xe010
callq 0x1060
jmp 0x5b1e
jmp 0x5b20
movq 0x48(%rsp), %rax
movl (%rax), %eax
movl $0xa, %ecx
xorl %edx, %edx
divl %ecx
cmpl $0x0, %edx
sete %al
xorb $-0x1, %al
xorb $-0x1, %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x5b72
xorl %edi, %edi
leaq 0x18c42(%rip), %rsi     # 0x1e794
leaq 0xc585(%rip), %rdx      # 0x120de
leaq 0x18c1c(%rip), %rcx     # 0x1e77c
movl $0x324, %r8d            # imm = 0x324
movb $0x0, %al
callq 0xe010
callq 0x1060
jmp 0x5b74
movl 0x44(%rsp), %ecx
movq 0x48(%rsp), %rax
addl (%rax), %ecx
movl %ecx, (%rax)
movl 0x50(%rsp), %eax
movq 0xa8(%rsp), %rcx
cmpl 0x8(%rcx), %eax
jg 0x5ba6
cmpl $0x1, 0x6c(%rsp)
jne 0x5bab
movq 0x90(%rsp), %rax
cmpl $0x0, (%rax)
jne 0x5bab
jmp 0x5e4d
movq 0x90(%rsp), %rdi
movl 0x6c(%rsp), %esi
subl $0x1, %esi
callq 0x2350
movl %eax, 0x64(%rsp)
movq 0x88(%rsp), %rdi
movl 0x68(%rsp), %esi
subl $0x1, %esi
callq 0x2350
movl %eax, 0x60(%rsp)
xorl %eax, %eax
cmpl $0x0, 0x60(%rsp)
movb %al, 0x9(%rsp)
je 0x5bf4
cmpl $0x0, 0x64(%rsp)
setne %al
movb %al, 0x9(%rsp)
movb 0x9(%rsp), %al
xorb $-0x1, %al
xorb $-0x1, %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x5c34
xorl %edi, %edi
leaq 0x18b80(%rip), %rsi     # 0x1e794
leaq 0xc4c3(%rip), %rdx      # 0x120de
leaq 0x18b5a(%rip), %rcx     # 0x1e77c
movl $0x32f, %r8d            # imm = 0x32F
movb $0x0, %al
callq 0xe010
callq 0x1060
jmp 0x5c36
movl 0x6c(%rsp), %eax
subl 0x68(%rsp), %eax
movl %eax, 0x5c(%rsp)
cmpl $0x0, 0x5c(%rsp)
jge 0x5c70
movq 0x90(%rsp), %rdi
movq 0x90(%rsp), %rdx
movl 0x6c(%rsp), %ecx
xorl %r8d, %r8d
subl 0x5c(%rsp), %r8d
xorl %esi, %esi
callq 0x4af0
movl %eax, 0x6c(%rsp)
movq 0x90(%rsp), %rdi
movl 0x6c(%rsp), %esi
movq 0x88(%rsp), %rdx
movl 0x68(%rsp), %ecx
callq 0x6010
cmpl $0x0, %eax
jge 0x5d16
movl 0x5c(%rsp), %eax
addl $-0x1, %eax
movl %eax, 0x5c(%rsp)
movq 0x90(%rsp), %rdi
movq 0x90(%rsp), %rdx
movl 0x6c(%rsp), %ecx
xorl %esi, %esi
movl $0x1, %r8d
callq 0x4af0
movl %eax, 0x6c(%rsp)
movl 0x6c(%rsp), %eax
movl 0x68(%rsp), %ecx
addl $0x1, %ecx
cmpl %ecx, %eax
sete %al
xorb $-0x1, %al
xorb $-0x1, %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x5d12
xorl %edi, %edi
leaq 0x18aa2(%rip), %rsi     # 0x1e794
leaq 0xc3e5(%rip), %rdx      # 0x120de
leaq 0x18a7c(%rip), %rcx     # 0x1e77c
movl $0x33c, %r8d            # imm = 0x33C
movb $0x0, %al
callq 0xe010
callq 0x1060
jmp 0x5d14
jmp 0x5d63
jmp 0x5d18
movl 0x6c(%rsp), %eax
cmpl 0x68(%rsp), %eax
sete %al
xorb $-0x1, %al
xorb $-0x1, %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x5d5f
xorl %edi, %edi
leaq 0x18a55(%rip), %rsi     # 0x1e794
leaq 0xc398(%rip), %rdx      # 0x120de
leaq 0x18a2f(%rip), %rcx     # 0x1e77c
movl $0x33e, %r8d            # imm = 0x33E
movb $0x0, %al
callq 0xe010
callq 0x1060
jmp 0x5d61
jmp 0x5d63
jmp 0x5d65
cmpl $0x0, 0x5c(%rsp)
setl %al
xorb $-0x1, %al
xorb $-0x1, %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x5da9
xorl %edi, %edi
leaq 0x18a0b(%rip), %rsi     # 0x1e794
leaq 0xc34e(%rip), %rdx      # 0x120de
leaq 0x189e5(%rip), %rcx     # 0x1e77c
movl $0x340, %r8d            # imm = 0x340
movb $0x0, %al
callq 0xe010
callq 0x1060
jmp 0x5dab
xorl %eax, %eax
subl 0x5c(%rsp), %eax
movl %eax, 0x5c(%rsp)
movq 0xa8(%rsp), %rax
movl 0x8(%rax), %eax
subl 0x50(%rsp), %eax
movl %eax, 0x40(%rsp)
movl 0x5c(%rsp), %eax
movl 0x40(%rsp), %ecx
addl $0x1, %ecx
cmpl %ecx, %eax
jle 0x5e16
movq 0x48(%rsp), %rdi
movq 0x48(%rsp), %rdx
movl 0x50(%rsp), %ecx
movl 0x40(%rsp), %r8d
xorl %esi, %esi
callq 0x4af0
movl %eax, 0x50(%rsp)
movl 0x40(%rsp), %edx
movq 0xa8(%rsp), %rax
movl 0x4(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x4(%rax)
movl $0xc9, 0xb4(%rsp)
jmp 0x5e4d
movq 0x48(%rsp), %rdi
movq 0x48(%rsp), %rdx
movl 0x50(%rsp), %ecx
movl 0x5c(%rsp), %r8d
xorl %esi, %esi
callq 0x4af0
movl %eax, 0x50(%rsp)
movl 0x5c(%rsp), %edx
movq 0xa8(%rsp), %rax
movl 0x4(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x4(%rax)
jmp 0x59cf
movl 0x50(%rsp), %eax
movq 0xa8(%rsp), %rcx
cmpl 0x8(%rcx), %eax
jle 0x5f14
movq 0x48(%rsp), %rdi
movl $0x1, %esi
callq 0x2350
andl $0x1, %eax
movl %eax, 0x4(%rsp)
movq 0x48(%rsp), %rdi
xorl %esi, %esi
callq 0x2350
movl 0x4(%rsp), %edi
movl %eax, %esi
xorl %edx, %edx
callq 0xe9f0
cmpl $0x0, %eax
je 0x5eba
movl $0xa, 0x3c(%rsp)
movq 0x48(%rsp), %rdi
movl 0x50(%rsp), %esi
leaq 0x3c(%rsp), %rdx
movl $0x2, %ecx
callq 0x4f80
movl %eax, 0x50(%rsp)
movl 0x50(%rsp), %eax
movq 0xa8(%rsp), %rcx
subl 0x8(%rcx), %eax
movl %eax, 0x5c(%rsp)
movq 0x48(%rsp), %rdi
movq 0xa8(%rsp), %rax
movl 0x10(%rax), %esi
movq 0x48(%rsp), %rdx
movl 0x50(%rsp), %ecx
xorl %r8d, %r8d
subl 0x5c(%rsp), %r8d
callq 0x4af0
movl %eax, 0x50(%rsp)
movl 0x5c(%rsp), %ecx
movq 0xa8(%rsp), %rax
addl 0x4(%rax), %ecx
movl %ecx, 0x4(%rax)
movl $0xc9, 0xb4(%rsp)
movl 0x50(%rsp), %ecx
movq 0xa8(%rsp), %rax
movl %ecx, 0x14(%rax)
movq 0xa8(%rsp), %rax
cmpq 0xc8(%rsp), %rax
je 0x5f8d
movq 0xc8(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x1030
movq 0xc8(%rsp), %rax
movq 0xa8(%rsp), %rcx
movq (%rcx), %rdx
movq %rdx, (%rax)
movq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rax)
movq 0x10(%rcx), %rdx
movq %rdx, 0x10(%rax)
movq 0x18(%rcx), %rcx
movq %rcx, 0x18(%rax)
movq 0xa8(%rsp), %rdi
callq 0x1030
movq $0x0, 0xa8(%rsp)
jmp 0x5f8f
cmpq $0x0, 0x90(%rsp)
je 0x5fa7
movq 0x90(%rsp), %rdi
callq 0x1030
cmpq $0x0, 0x88(%rsp)
je 0x5fbf
movq 0x88(%rsp), %rdi
callq 0x1030
cmpq $0x0, 0xa8(%rsp)
je 0x5fe9
movq 0xa8(%rsp), %rax
cmpq 0xc8(%rsp), %rax
je 0x5fe9
movq 0xa8(%rsp), %rdi
callq 0x2080
movl 0xb4(%rsp), %eax
movl %eax, 0xd4(%rsp)
movl 0xd4(%rsp), %eax
addq $0xd8, %rsp
retq
nopw %cs:(%rax,%rax)