// File: /workspace/github_c_makefile_star2_O0/Ihsoh[P]ilang/compiler/assembler/enc.c
// Function: eval_expr
static void _eval_expr(
	ParserContext *ctx,
	ParserASTNode *node,
	AsmExprEvalResult *result
) {
	assert(ctx);
	assert(node);
	assert(result);

	switch (node->type) {
		case ASM_NODE_EXPR_OR: {
			assert(node->nchilds == 2);
			
			AsmExprEvalResult oprd1;
			_expect_integer(ctx, node->childs[0], &oprd1);

			AsmExprEvalResult oprd2;
			_expect_integer(ctx, node->childs[1], &oprd2);

			result->type = ASM_EXPR_EVAL_RESULT_TYPE_UINT64;
			result->value.u64 = oprd1.value.u64 || oprd2.value.u64;
			break;
		}

		case ASM_NODE_EXPR_AND: {
			assert(node->nchilds == 2);
			
			AsmExprEvalResult oprd1;
			_expect_integer(ctx, node->childs[0], &oprd1);

			AsmExprEvalResult oprd2;
			_expect_integer(ctx, node->childs[1], &oprd2);

			result->type = ASM_EXPR_EVAL_RESULT_TYPE_UINT64;
			result->value.u64 = oprd1.value.u64 && oprd2.value.u64;
			break;
		}

		case ASM_NODE_EXPR_BOR: {
			assert(node->nchilds == 2);

			AsmExprEvalResult oprd1;
			_expect_integer(ctx, node->childs[0], &oprd1);

			AsmExprEvalResult oprd2;
			_expect_integer(ctx, node->childs[1], &oprd2);

			result->type = ASM_EXPR_EVAL_RESULT_TYPE_UINT64;
			result->value.u64 = oprd1.value.u64 | oprd2.value.u64;
			break;
		}

		case ASM_NODE_EXPR_BXOR: {
			assert(node->nchilds == 2);

			AsmExprEvalResult oprd1;
			_expect_integer(ctx, node->childs[0], &oprd1);

			AsmExprEvalResult oprd2;
			_expect_integer(ctx, node->childs[1], &oprd2);

			result->type = ASM_EXPR_EVAL_RESULT_TYPE_UINT64;
			result->value.u64 = oprd1.value.u64 ^ oprd2.value.u64;
			break;
		}

		case ASM_NODE_EXPR_BAND: {
			assert(node->nchilds == 2);

			AsmExprEvalResult oprd1;
			_expect_integer(ctx, node->childs[0], &oprd1);

			AsmExprEvalResult oprd2;
			_expect_integer(ctx, node->childs[1], &oprd2);

			result->type = ASM_EXPR_EVAL_RESULT_TYPE_UINT64;
			result->value.u64 = oprd1.value.u64 & oprd2.value.u64;
			break;
		}

		case ASM_NODE_EXPR_EQ: {
			assert(node->nchilds == 2);

			AsmExprEvalResult oprd1;
			_expect_integer(ctx, node->childs[0], &oprd1);

			AsmExprEvalResult oprd2;
			_expect_integer(ctx, node->childs[1], &oprd2);

			result->type = ASM_EXPR_EVAL_RESULT_TYPE_UINT64;
			result->value.u64 = oprd1.value.u64 == oprd2.value.u64;
			break;
		}

		case ASM_NODE_EXPR_NEQ: {
			assert(node->nchilds == 2);

			AsmExprEvalResult oprd1;
			_expect_integer(ctx, node->childs[0], &oprd1);

			AsmExprEvalResult oprd2;
			_expect_integer(ctx, node->childs[1], &oprd2);

			result->type = ASM_EXPR_EVAL_RESULT_TYPE_UINT64;
			result->value.u64 = oprd1.value.u64 != oprd2.value.u64;
			break;
		}

		case ASM_NODE_EXPR_LT: {
			assert(node->nchilds == 2);

			AsmExprEvalResult oprd1;
			_expect_integer(ctx, node->childs[0], &oprd1);

			AsmExprEvalResult oprd2;
			_expect_integer(ctx, node->childs[1], &oprd2);

			result->type = ASM_EXPR_EVAL_RESULT_TYPE_UINT64;
			result->value.u64 = oprd1.value.u64 < oprd2.value.u64;
			break;
		}

		case ASM_NODE_EXPR_LE: {
			assert(node->nchilds == 2);

			AsmExprEvalResult oprd1;
			_expect_integer(ctx, node->childs[0], &oprd1);

			AsmExprEvalResult oprd2;
			_expect_integer(ctx, node->childs[1], &oprd2);

			result->type = ASM_EXPR_EVAL_RESULT_TYPE_UINT64;
			result->value.u64 = oprd1.value.u64 <= oprd2.value.u64;
			break;
		}

		case ASM_NODE_EXPR_GT: {
			assert(node->nchilds == 2);

			AsmExprEvalResult oprd1;
			_expect_integer(ctx, node->childs[0], &oprd1);

			AsmExprEvalResult oprd2;
			_expect_integer(ctx, node->childs[1], &oprd2);

			result->type = ASM_EXPR_EVAL_RESULT_TYPE_UINT64;
			result->value.u64 = oprd1.value.u64 > oprd2.value.u64;
			break;
		}

		case ASM_NODE_EXPR_GE: {
			assert(node->nchilds == 2);

			AsmExprEvalResult oprd1;
			_expect_integer(ctx, node->childs[0], &oprd1);

			AsmExprEvalResult oprd2;
			_expect_integer(ctx, node->childs[1], &oprd2);

			result->type = ASM_EXPR_EVAL_RESULT_TYPE_UINT64;
			result->value.u64 = oprd1.value.u64 >= oprd2.value.u64;
			break;
		}

		case ASM_NODE_EXPR_SHIFT_LEFT: {
			assert(node->nchilds == 2);

			AsmExprEvalResult oprd1;
			_expect_integer(ctx, node->childs[0], &oprd1);

			AsmExprEvalResult oprd2;
			_expect_integer(ctx, node->childs[1], &oprd2);

			result->type = ASM_EXPR_EVAL_RESULT_TYPE_UINT64;
			result->value.u64 = oprd1.value.u64 << oprd2.value.u64;
			break;
		}

		case ASM_NODE_EXPR_SHIFT_RIGHT: {
			assert(node->nchilds == 2);

			AsmExprEvalResult oprd1;
			_expect_integer(ctx, node->childs[0], &oprd1);

			AsmExprEvalResult oprd2;
			_expect_integer(ctx, node->childs[1], &oprd2);

			result->type = ASM_EXPR_EVAL_RESULT_TYPE_UINT64;
			result->value.u64 = oprd1.value.u64 >> oprd2.value.u64;
			break;
		}

		case ASM_NODE_EXPR_ADD: {
			assert(node->nchilds == 2);

			AsmExprEvalResult oprd1;
			_expect_integer(ctx, node->childs[0], &oprd1);

			AsmExprEvalResult oprd2;
			_expect_integer(ctx, node->childs[1], &oprd2);

			result->type = ASM_EXPR_EVAL_RESULT_TYPE_UINT64;
			result->value.u64 = oprd1.value.u64 + oprd2.value.u64;
			break;
		}

		case ASM_NODE_EXPR_SUB: {
			assert(node->nchilds == 2);

			AsmExprEvalResult oprd1;
			_expect_integer(ctx, node->childs[0], &oprd1);

			AsmExprEvalResult oprd2;
			_expect_integer(ctx, node->childs[1], &oprd2);

			result->type = ASM_EXPR_EVAL_RESULT_TYPE_UINT64;
			result->value.u64 = oprd1.value.u64 - oprd2.value.u64;
			break;
		}

		case ASM_NODE_EXPR_MUL: {
			assert(node->nchilds == 2);

			AsmExprEvalResult oprd1;
			_expect_integer(ctx, node->childs[0], &oprd1);

			AsmExprEvalResult oprd2;
			_expect_integer(ctx, node->childs[1], &oprd2);

			result->type = ASM_EXPR_EVAL_RESULT_TYPE_UINT64;
			result->value.u64 = oprd1.value.u64 * oprd2.value.u64;
			break;
		}

		case ASM_NODE_EXPR_DIV: {
			assert(node->nchilds == 2);

			AsmExprEvalResult oprd1;
			_expect_integer(ctx, node->childs[0], &oprd1);

			AsmExprEvalResult oprd2;
			_expect_integer(ctx, node->childs[1], &oprd2);

			result->type = ASM_EXPR_EVAL_RESULT_TYPE_UINT64;
			result->value.u64 = oprd1.value.u64 / oprd2.value.u64;
			break;
		}

		case ASM_NODE_EXPR_MOD: {
			assert(node->nchilds == 2);

			AsmExprEvalResult oprd1;
			_expect_integer(ctx, node->childs[0], &oprd1);

			AsmExprEvalResult oprd2;
			_expect_integer(ctx, node->childs[1], &oprd2);

			result->type = ASM_EXPR_EVAL_RESULT_TYPE_UINT64;
			result->value.u64 = oprd1.value.u64 % oprd2.value.u64;
			break;
		}

		case ASM_NODE_EXPR_NOT: {
			assert(node->nchilds == 1);

			AsmExprEvalResult oprd;
			_expect_integer(ctx, node->childs[0], &oprd);

			result->type = ASM_EXPR_EVAL_RESULT_TYPE_UINT64;
			result->value.u64 = !oprd.value.u64;
			break;
		}

		case ASM_NODE_EXPR_BNOT: {
			assert(node->nchilds == 1);

			AsmExprEvalResult oprd;
			_expect_integer(ctx, node->childs[0], &oprd);

			result->type = ASM_EXPR_EVAL_RESULT_TYPE_UINT64;
			result->value.u64 = ~oprd.value.u64;
			break;
		}

		case ASM_NODE_EXPR_POSITIVE: {
			assert(node->nchilds == 1);

			AsmExprEvalResult oprd;
			_expect_integer(ctx, node->childs[0], &oprd);

			result->type = ASM_EXPR_EVAL_RESULT_TYPE_UINT64;
			result->value.u64 = oprd.value.u64;
			break;
		}

		case ASM_NODE_EXPR_NEGATIVE: {
			assert(node->nchilds == 1);

			AsmExprEvalResult oprd;
			_expect_integer(ctx, node->childs[0], &oprd);

			result->type = ASM_EXPR_EVAL_RESULT_TYPE_UINT64;
			result->value.u64 = -oprd.value.u64;
			break;
		}

		case ASM_NODE_EXPR_ATOM: {
			_eval_expr_atom(ctx, node, result);
			break;
		}
		default: {
			printf("ERROR: NODE-TYPE: %x, %s\n", node->type, node->type_name);
			assert(0);
			return;
		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x3f0, %rsp            # imm = 0x3F0
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
cmpq $0x0, -0x8(%rbp)
je 0x181b0
jmp 0x181cf
leaq 0x359aa(%rip), %rdi     # 0x4db61
leaq 0x313e2(%rip), %rsi     # 0x495a0
movl $0x6a, %edx
leaq 0x3150b(%rip), %rcx     # 0x496d5
callq 0xa0b0
cmpq $0x0, -0x10(%rbp)
je 0x181d8
jmp 0x181f7
leaq 0x32ea8(%rip), %rdi     # 0x4b087
leaq 0x313ba(%rip), %rsi     # 0x495a0
movl $0x6b, %edx
leaq 0x314e3(%rip), %rcx     # 0x496d5
callq 0xa0b0
cmpq $0x0, -0x18(%rbp)
je 0x18200
jmp 0x1821f
leaq 0x3141f(%rip), %rdi     # 0x49626
leaq 0x31392(%rip), %rsi     # 0x495a0
movl $0x6c, %edx
leaq 0x314bb(%rip), %rcx     # 0x496d5
callq 0xa0b0
movq -0x10(%rbp), %rax
movl (%rax), %eax
addl $0xfffff1e0, %eax       # imm = 0xFFFFF1E0
movl %eax, %ecx
movq %rcx, -0x3e0(%rbp)
subl $0xc0, %eax
ja 0x18dcf
movq -0x3e0(%rbp), %rax
leaq 0x31050(%rip), %rcx     # 0x4929c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x10(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x18261
jmp 0x18280
leaq 0x32a33(%rip), %rdi     # 0x4ac9b
leaq 0x31331(%rip), %rsi     # 0x495a0
movl $0x70, %edx
leaq 0x3145a(%rip), %rcx     # 0x496d5
callq 0xa0b0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
leaq -0x30(%rbp), %rdx
callq 0x18e20
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rsi
leaq -0x48(%rbp), %rdx
callq 0x18e20
movq -0x18(%rbp), %rax
movb $0x1, (%rax)
movb $0x1, %al
cmpq $0x0, -0x28(%rbp)
movb %al, -0x3e1(%rbp)
jne 0x182d5
cmpq $0x0, -0x40(%rbp)
setne %al
movb %al, -0x3e1(%rbp)
movb -0x3e1(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
movslq %eax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
jmp 0x18e0a
movq -0x10(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x182fc
jmp 0x1831b
leaq 0x32998(%rip), %rdi     # 0x4ac9b
leaq 0x31296(%rip), %rsi     # 0x495a0
movl $0x7e, %edx
leaq 0x313bf(%rip), %rcx     # 0x496d5
callq 0xa0b0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
leaq -0x60(%rbp), %rdx
callq 0x18e20
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rsi
leaq -0x78(%rbp), %rdx
callq 0x18e20
movq -0x18(%rbp), %rax
movb $0x1, (%rax)
xorl %eax, %eax
cmpq $0x0, -0x58(%rbp)
movb %al, -0x3e2(%rbp)
je 0x18370
cmpq $0x0, -0x70(%rbp)
setne %al
movb %al, -0x3e2(%rbp)
movb -0x3e2(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
movslq %eax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
jmp 0x18e0a
movq -0x10(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x18397
jmp 0x183b6
leaq 0x328fd(%rip), %rdi     # 0x4ac9b
leaq 0x311fb(%rip), %rsi     # 0x495a0
movl $0x8c, %edx
leaq 0x31324(%rip), %rcx     # 0x496d5
callq 0xa0b0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
leaq -0x90(%rbp), %rdx
callq 0x18e20
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rsi
leaq -0xa8(%rbp), %rdx
callq 0x18e20
movq -0x18(%rbp), %rax
movb $0x1, (%rax)
movq -0x88(%rbp), %rcx
orq -0xa0(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
jmp 0x18e0a
movq -0x10(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x1841b
jmp 0x1843a
leaq 0x32879(%rip), %rdi     # 0x4ac9b
leaq 0x31177(%rip), %rsi     # 0x495a0
movl $0x9a, %edx
leaq 0x312a0(%rip), %rcx     # 0x496d5
callq 0xa0b0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
leaq -0xc0(%rbp), %rdx
callq 0x18e20
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rsi
leaq -0xd8(%rbp), %rdx
callq 0x18e20
movq -0x18(%rbp), %rax
movb $0x1, (%rax)
movq -0xb8(%rbp), %rcx
xorq -0xd0(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
jmp 0x18e0a
movq -0x10(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x1849f
jmp 0x184be
leaq 0x327f5(%rip), %rdi     # 0x4ac9b
leaq 0x310f3(%rip), %rsi     # 0x495a0
movl $0xa8, %edx
leaq 0x3121c(%rip), %rcx     # 0x496d5
callq 0xa0b0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
leaq -0xf0(%rbp), %rdx
callq 0x18e20
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rsi
leaq -0x108(%rbp), %rdx
callq 0x18e20
movq -0x18(%rbp), %rax
movb $0x1, (%rax)
movq -0xe8(%rbp), %rcx
andq -0x100(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
jmp 0x18e0a
movq -0x10(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x18523
jmp 0x18542
leaq 0x32771(%rip), %rdi     # 0x4ac9b
leaq 0x3106f(%rip), %rsi     # 0x495a0
movl $0xb6, %edx
leaq 0x31198(%rip), %rcx     # 0x496d5
callq 0xa0b0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
leaq -0x120(%rbp), %rdx
callq 0x18e20
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rsi
leaq -0x138(%rbp), %rdx
callq 0x18e20
movq -0x18(%rbp), %rax
movb $0x1, (%rax)
movq -0x118(%rbp), %rax
cmpq -0x130(%rbp), %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
movslq %eax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
jmp 0x18e0a
movq -0x10(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x185b2
jmp 0x185d1
leaq 0x326e2(%rip), %rdi     # 0x4ac9b
leaq 0x30fe0(%rip), %rsi     # 0x495a0
movl $0xc4, %edx
leaq 0x31109(%rip), %rcx     # 0x496d5
callq 0xa0b0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
leaq -0x150(%rbp), %rdx
callq 0x18e20
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rsi
leaq -0x168(%rbp), %rdx
callq 0x18e20
movq -0x18(%rbp), %rax
movb $0x1, (%rax)
movq -0x148(%rbp), %rax
cmpq -0x160(%rbp), %rax
setne %al
andb $0x1, %al
movzbl %al, %eax
movslq %eax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
jmp 0x18e0a
movq -0x10(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x18641
jmp 0x18660
leaq 0x32653(%rip), %rdi     # 0x4ac9b
leaq 0x30f51(%rip), %rsi     # 0x495a0
movl $0xd2, %edx
leaq 0x3107a(%rip), %rcx     # 0x496d5
callq 0xa0b0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
leaq -0x180(%rbp), %rdx
callq 0x18e20
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rsi
leaq -0x198(%rbp), %rdx
callq 0x18e20
movq -0x18(%rbp), %rax
movb $0x1, (%rax)
movq -0x178(%rbp), %rax
cmpq -0x190(%rbp), %rax
setb %al
andb $0x1, %al
movzbl %al, %eax
movslq %eax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
jmp 0x18e0a
movq -0x10(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x186d0
jmp 0x186ef
leaq 0x325c4(%rip), %rdi     # 0x4ac9b
leaq 0x30ec2(%rip), %rsi     # 0x495a0
movl $0xe0, %edx
leaq 0x30feb(%rip), %rcx     # 0x496d5
callq 0xa0b0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
leaq -0x1b0(%rbp), %rdx
callq 0x18e20
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rsi
leaq -0x1c8(%rbp), %rdx
callq 0x18e20
movq -0x18(%rbp), %rax
movb $0x1, (%rax)
movq -0x1a8(%rbp), %rax
cmpq -0x1c0(%rbp), %rax
setbe %al
andb $0x1, %al
movzbl %al, %eax
movslq %eax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
jmp 0x18e0a
movq -0x10(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x1875f
jmp 0x1877e
leaq 0x32535(%rip), %rdi     # 0x4ac9b
leaq 0x30e33(%rip), %rsi     # 0x495a0
movl $0xee, %edx
leaq 0x30f5c(%rip), %rcx     # 0x496d5
callq 0xa0b0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
leaq -0x1e0(%rbp), %rdx
callq 0x18e20
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rsi
leaq -0x1f8(%rbp), %rdx
callq 0x18e20
movq -0x18(%rbp), %rax
movb $0x1, (%rax)
movq -0x1d8(%rbp), %rax
cmpq -0x1f0(%rbp), %rax
seta %al
andb $0x1, %al
movzbl %al, %eax
movslq %eax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
jmp 0x18e0a
movq -0x10(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x187ee
jmp 0x1880d
leaq 0x324a6(%rip), %rdi     # 0x4ac9b
leaq 0x30da4(%rip), %rsi     # 0x495a0
movl $0xfc, %edx
leaq 0x30ecd(%rip), %rcx     # 0x496d5
callq 0xa0b0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
leaq -0x210(%rbp), %rdx
callq 0x18e20
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rsi
leaq -0x228(%rbp), %rdx
callq 0x18e20
movq -0x18(%rbp), %rax
movb $0x1, (%rax)
movq -0x208(%rbp), %rax
cmpq -0x220(%rbp), %rax
setae %al
andb $0x1, %al
movzbl %al, %eax
movslq %eax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
jmp 0x18e0a
movq -0x10(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x1887d
jmp 0x1889c
leaq 0x32417(%rip), %rdi     # 0x4ac9b
leaq 0x30d15(%rip), %rsi     # 0x495a0
movl $0x10a, %edx            # imm = 0x10A
leaq 0x30e3e(%rip), %rcx     # 0x496d5
callq 0xa0b0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
leaq -0x240(%rbp), %rdx
callq 0x18e20
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rsi
leaq -0x258(%rbp), %rdx
callq 0x18e20
movq -0x18(%rbp), %rax
movb $0x1, (%rax)
movq -0x238(%rbp), %rax
movq -0x250(%rbp), %rcx
shlq %cl, %rax
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
jmp 0x18e0a
movq -0x10(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x18907
jmp 0x18926
leaq 0x3238d(%rip), %rdi     # 0x4ac9b
leaq 0x30c8b(%rip), %rsi     # 0x495a0
movl $0x118, %edx            # imm = 0x118
leaq 0x30db4(%rip), %rcx     # 0x496d5
callq 0xa0b0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
leaq -0x270(%rbp), %rdx
callq 0x18e20
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rsi
leaq -0x288(%rbp), %rdx
callq 0x18e20
movq -0x18(%rbp), %rax
movb $0x1, (%rax)
movq -0x268(%rbp), %rax
movq -0x280(%rbp), %rcx
shrq %cl, %rax
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
jmp 0x18e0a
movq -0x10(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x18991
jmp 0x189b0
leaq 0x32303(%rip), %rdi     # 0x4ac9b
leaq 0x30c01(%rip), %rsi     # 0x495a0
movl $0x126, %edx            # imm = 0x126
leaq 0x30d2a(%rip), %rcx     # 0x496d5
callq 0xa0b0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
leaq -0x2a0(%rbp), %rdx
callq 0x18e20
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rsi
leaq -0x2b8(%rbp), %rdx
callq 0x18e20
movq -0x18(%rbp), %rax
movb $0x1, (%rax)
movq -0x298(%rbp), %rcx
addq -0x2b0(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
jmp 0x18e0a
movq -0x10(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x18a15
jmp 0x18a34
leaq 0x3227f(%rip), %rdi     # 0x4ac9b
leaq 0x30b7d(%rip), %rsi     # 0x495a0
movl $0x134, %edx            # imm = 0x134
leaq 0x30ca6(%rip), %rcx     # 0x496d5
callq 0xa0b0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
leaq -0x2d0(%rbp), %rdx
callq 0x18e20
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rsi
leaq -0x2e8(%rbp), %rdx
callq 0x18e20
movq -0x18(%rbp), %rax
movb $0x1, (%rax)
movq -0x2c8(%rbp), %rcx
subq -0x2e0(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
jmp 0x18e0a
movq -0x10(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x18a99
jmp 0x18ab8
leaq 0x321fb(%rip), %rdi     # 0x4ac9b
leaq 0x30af9(%rip), %rsi     # 0x495a0
movl $0x142, %edx            # imm = 0x142
leaq 0x30c22(%rip), %rcx     # 0x496d5
callq 0xa0b0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
leaq -0x300(%rbp), %rdx
callq 0x18e20
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rsi
leaq -0x318(%rbp), %rdx
callq 0x18e20
movq -0x18(%rbp), %rax
movb $0x1, (%rax)
movq -0x2f8(%rbp), %rcx
imulq -0x310(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
jmp 0x18e0a
movq -0x10(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x18b1e
jmp 0x18b3d
leaq 0x32176(%rip), %rdi     # 0x4ac9b
leaq 0x30a74(%rip), %rsi     # 0x495a0
movl $0x150, %edx            # imm = 0x150
leaq 0x30b9d(%rip), %rcx     # 0x496d5
callq 0xa0b0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
leaq -0x330(%rbp), %rdx
callq 0x18e20
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rsi
leaq -0x348(%rbp), %rdx
callq 0x18e20
movq -0x18(%rbp), %rax
movb $0x1, (%rax)
movq -0x328(%rbp), %rax
xorl %ecx, %ecx
movl %ecx, %edx
divq -0x340(%rbp)
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
jmp 0x18e0a
movq -0x10(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x18ba9
jmp 0x18bc8
leaq 0x320eb(%rip), %rdi     # 0x4ac9b
leaq 0x309e9(%rip), %rsi     # 0x495a0
movl $0x15e, %edx            # imm = 0x15E
leaq 0x30b12(%rip), %rcx     # 0x496d5
callq 0xa0b0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
leaq -0x360(%rbp), %rdx
callq 0x18e20
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rsi
leaq -0x378(%rbp), %rdx
callq 0x18e20
movq -0x18(%rbp), %rax
movb $0x1, (%rax)
movq -0x358(%rbp), %rax
xorl %ecx, %ecx
movl %ecx, %edx
divq -0x370(%rbp)
movq -0x18(%rbp), %rax
movq %rdx, 0x8(%rax)
jmp 0x18e0a
movq -0x10(%rbp), %rax
cmpl $0x1, 0x44(%rax)
jne 0x18c31
jmp 0x18c50
leaq 0x31e3e(%rip), %rdi     # 0x4aa76
leaq 0x30961(%rip), %rsi     # 0x495a0
movl $0x16c, %edx            # imm = 0x16C
leaq 0x30a8a(%rip), %rcx     # 0x496d5
callq 0xa0b0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
leaq -0x390(%rbp), %rdx
callq 0x18e20
movq -0x18(%rbp), %rax
movb $0x1, (%rax)
cmpq $0x0, -0x388(%rbp)
setne %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
movslq %eax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
jmp 0x18e0a
movq -0x10(%rbp), %rax
cmpl $0x1, 0x44(%rax)
jne 0x18ca0
jmp 0x18cbf
leaq 0x31dcf(%rip), %rdi     # 0x4aa76
leaq 0x308f2(%rip), %rsi     # 0x495a0
movl $0x177, %edx            # imm = 0x177
leaq 0x30a1b(%rip), %rcx     # 0x496d5
callq 0xa0b0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
leaq -0x3a8(%rbp), %rdx
callq 0x18e20
movq -0x18(%rbp), %rax
movb $0x1, (%rax)
movq -0x3a0(%rbp), %rcx
xorq $-0x1, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
jmp 0x18e0a
movq -0x10(%rbp), %rax
cmpl $0x1, 0x44(%rax)
jne 0x18d05
jmp 0x18d24
leaq 0x31d6a(%rip), %rdi     # 0x4aa76
leaq 0x3088d(%rip), %rsi     # 0x495a0
movl $0x182, %edx            # imm = 0x182
leaq 0x309b6(%rip), %rcx     # 0x496d5
callq 0xa0b0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
leaq -0x3c0(%rbp), %rdx
callq 0x18e20
movq -0x18(%rbp), %rax
movb $0x1, (%rax)
movq -0x3b8(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
jmp 0x18e0a
movq -0x10(%rbp), %rax
cmpl $0x1, 0x44(%rax)
jne 0x18d66
jmp 0x18d85
leaq 0x31d09(%rip), %rdi     # 0x4aa76
leaq 0x3082c(%rip), %rsi     # 0x495a0
movl $0x18d, %edx            # imm = 0x18D
leaq 0x30955(%rip), %rcx     # 0x496d5
callq 0xa0b0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
leaq -0x3d8(%rbp), %rdx
callq 0x18e20
movq -0x18(%rbp), %rax
movb $0x1, (%rax)
xorl %eax, %eax
movl %eax, %ecx
subq -0x3d0(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
jmp 0x18e0a
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x18f10
jmp 0x18e0a
movq -0x10(%rbp), %rax
movl (%rax), %esi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdx
leaq 0x30938(%rip), %rdi     # 0x4971c
movb $0x0, %al
callq 0xa090
leaq 0x2e673(%rip), %rdi     # 0x47465
leaq 0x307a7(%rip), %rsi     # 0x495a0
movl $0x19d, %edx            # imm = 0x19D
leaq 0x308d0(%rip), %rcx     # 0x496d5
callq 0xa0b0
addq $0x3f0, %rsp            # imm = 0x3F0
popq %rbp
retq
nopw %cs:(%rax,%rax)