// File: /workspace/github_c_makefile_star2_O0/Ihsoh[P]ilang/compiler/preprocessor/evaluator.c
// Function: eval_expr
static int _eval_expr(
	PPGeneratorContext *genctx,
	ParserASTNode *node
) {
	assert(genctx);
	assert(node);

	switch (node->type) {
		case _NODE_EXPR: {
			assert(node->nchilds == 1);
			return _eval_expr(genctx, node->childs[0]);
		}

		case _NODE_EXPR_OR: {
			assert(node->nchilds == 2);
			return _eval_expr(genctx, node->childs[0])
				|| _eval_expr(genctx, node->childs[1]);
		}

		case _NODE_EXPR_AND: {
			assert(node->nchilds == 2);
			return _eval_expr(genctx, node->childs[0])
				&& _eval_expr(genctx, node->childs[1]);
		}

		case _NODE_EXPR_BOR: {
			assert(node->nchilds == 2);
			return _eval_expr(genctx, node->childs[0])
				| _eval_expr(genctx, node->childs[1]);
		}

		case _NODE_EXPR_BXOR: {
			assert(node->nchilds == 2);
			return _eval_expr(genctx, node->childs[0])
				^ _eval_expr(genctx, node->childs[1]);
		}

		case _NODE_EXPR_BAND: {
			assert(node->nchilds == 2);
			return _eval_expr(genctx, node->childs[0])
				& _eval_expr(genctx, node->childs[1]);
		}

		case _NODE_EXPR_EQ: {
			assert(node->nchilds == 2);
			return _eval_expr(genctx, node->childs[0])
				== _eval_expr(genctx, node->childs[1]);
		}
		case _NODE_EXPR_NEQ: {
			assert(node->nchilds == 2);
			return _eval_expr(genctx, node->childs[0])
				!= _eval_expr(genctx, node->childs[1]);
		}

		case _NODE_EXPR_LT: {
			assert(node->nchilds == 2);
			return _eval_expr(genctx, node->childs[0])
				< _eval_expr(genctx, node->childs[1]);
		}
		case _NODE_EXPR_LE: {
			assert(node->nchilds == 2);
			return _eval_expr(genctx, node->childs[0])
				<= _eval_expr(genctx, node->childs[1]);
		}
		case _NODE_EXPR_GT: {
			assert(node->nchilds == 2);
			return _eval_expr(genctx, node->childs[0])
				> _eval_expr(genctx, node->childs[1]);
		}
		case _NODE_EXPR_GE: {
			assert(node->nchilds == 2);
			return _eval_expr(genctx, node->childs[0])
				>= _eval_expr(genctx, node->childs[1]);
		}

		case _NODE_EXPR_SHIFT_LEFT: {
			assert(node->nchilds == 2);
			return _eval_expr(genctx, node->childs[0])
				<< _eval_expr(genctx, node->childs[1]);
		}
		case _NODE_EXPR_SHIFT_RIGHT: {
			assert(node->nchilds == 2);
			return _eval_expr(genctx, node->childs[0])
				>> _eval_expr(genctx, node->childs[1]);
		}

		case _NODE_EXPR_ADD: {
			assert(node->nchilds == 2);
			return _eval_expr(genctx, node->childs[0])
				+ _eval_expr(genctx, node->childs[1]);
		}
		case _NODE_EXPR_SUB: {
			assert(node->nchilds == 2);
			return _eval_expr(genctx, node->childs[0])
				- _eval_expr(genctx, node->childs[1]);
		}

		case _NODE_EXPR_MUL: {
			assert(node->nchilds == 2);
			return _eval_expr(genctx, node->childs[0])
				* _eval_expr(genctx, node->childs[1]);
		}
		case _NODE_EXPR_DIV: {
			assert(node->nchilds == 2);
			return _eval_expr(genctx, node->childs[0])
				/ _eval_expr(genctx, node->childs[1]);
		}
		case _NODE_EXPR_MOD: {
			assert(node->nchilds == 2);
			return _eval_expr(genctx, node->childs[0])
				% _eval_expr(genctx, node->childs[1]);
		}

		case _NODE_EXPR_NOT: {
			assert(node->nchilds == 1);
			return !_eval_expr(genctx, node->childs[0]);
		}
		case _NODE_EXPR_BNOT: {
			assert(node->nchilds == 1);
			return ~_eval_expr(genctx, node->childs[0]);
		}
		case _NODE_EXPR_POSITIVE: {
			assert(node->nchilds == 1);
			return +_eval_expr(genctx, node->childs[0]);
		}
		case _NODE_EXPR_NEGATIVE: {
			assert(node->nchilds == 1);
			return -_eval_expr(genctx, node->childs[0]);
		}
		case _NODE_EXPR_DEFINED: {
			assert(node->nchilds == 1);
			
			ParserASTNode *child = node->childs[0];
			assert(child->type == _NODE_IDENTIFIER);

			LexerToken *token = child->token;
			assert(token->type == _TOKEN_IDENTIFIER);

			int result;

			ResizableString key;
			rstr_init_with_raw(&key, token->content, token->len);
			if (map_exists_key(genctx->map_kv, &key)) {
				result = 1;
			} else {
				result = 0;
			}
			rstr_free(&key);

			return result;
		}
		case _NODE_EXPR_STREQ: {
			assert(node->nchilds == 2);

			ParserASTNode *node_param1 = node->childs[0];
			ResizableString rstr_param1;
			rstr_init(&rstr_param1);
			_get_string_from_node(genctx, &rstr_param1, node_param1);

			ParserASTNode *node_param2 = node->childs[1];
			ResizableString rstr_param2;
			rstr_init(&rstr_param2);
			_get_string_from_node(genctx, &rstr_param2, node_param2);

			int result = rstr_compare(&rstr_param1, &rstr_param2) ? 1 : 0;

			rstr_free(&rstr_param1);
			rstr_free(&rstr_param2);

			return result;
		}
		case _NODE_EXPR_ATOM: {
			return _eval_expr_atom(genctx, node);
		}

		default: {
			assert(0);
			return 0;
		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xd0, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x365cc
jmp 0x365eb
leaq 0x185f1(%rip), %rdi     # 0x4ebc4
leaq 0x185f1(%rip), %rsi     # 0x4ebcb
movl $0x4cd, %edx            # imm = 0x4CD
leaq 0x1866e(%rip), %rcx     # 0x4ec54
callq 0xa0b0
cmpq $0x0, -0x18(%rbp)
je 0x365f4
jmp 0x36613
leaq 0x14a8c(%rip), %rdi     # 0x4b087
leaq 0x185c9(%rip), %rsi     # 0x4ebcb
movl $0x4ce, %edx            # imm = 0x4CE
leaq 0x18646(%rip), %rcx     # 0x4ec54
callq 0xa0b0
movq -0x18(%rbp), %rax
movl (%rax), %eax
addl $0xfffff200, %eax       # imm = 0xFFFFF200
movl %eax, %ecx
movq %rcx, -0x80(%rbp)
subl $0xc0, %eax
ja 0x3716f
movq -0x80(%rbp), %rax
leaq 0x18276(%rip), %rcx     # 0x4e8b0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x18(%rbp), %rax
cmpl $0x1, 0x44(%rax)
jne 0x3664f
jmp 0x3666e
leaq 0x14420(%rip), %rdi     # 0x4aa76
leaq 0x1856e(%rip), %rsi     # 0x4ebcb
movl $0x4d2, %edx            # imm = 0x4D2
leaq 0x185eb(%rip), %rcx     # 0x4ec54
callq 0xa0b0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
callq 0x365b0
movl %eax, -0x4(%rbp)
jmp 0x3718e
movq -0x18(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x36696
jmp 0x366b5
leaq 0x145fe(%rip), %rdi     # 0x4ac9b
leaq 0x18527(%rip), %rsi     # 0x4ebcb
movl $0x4d7, %edx            # imm = 0x4D7
leaq 0x185a4(%rip), %rcx     # 0x4ec54
callq 0xa0b0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
callq 0x365b0
movl %eax, %ecx
movb $0x1, %al
cmpl $0x0, %ecx
movb %al, -0x81(%rbp)
jne 0x366f9
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x365b0
cmpl $0x0, %eax
setne %al
movb %al, -0x81(%rbp)
movb -0x81(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x4(%rbp)
jmp 0x3718e
movq -0x18(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x36718
jmp 0x36737
leaq 0x1457c(%rip), %rdi     # 0x4ac9b
leaq 0x184a5(%rip), %rsi     # 0x4ebcb
movl $0x4dd, %edx            # imm = 0x4DD
leaq 0x18522(%rip), %rcx     # 0x4ec54
callq 0xa0b0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
callq 0x365b0
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x82(%rbp)
je 0x3677b
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x365b0
cmpl $0x0, %eax
setne %al
movb %al, -0x82(%rbp)
movb -0x82(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x4(%rbp)
jmp 0x3718e
movq -0x18(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x3679a
jmp 0x367b9
leaq 0x144fa(%rip), %rdi     # 0x4ac9b
leaq 0x18423(%rip), %rsi     # 0x4ebcb
movl $0x4e3, %edx            # imm = 0x4E3
leaq 0x184a0(%rip), %rcx     # 0x4ec54
callq 0xa0b0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
callq 0x365b0
movl %eax, -0x88(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x365b0
movl %eax, %ecx
movl -0x88(%rbp), %eax
orl %ecx, %eax
movl %eax, -0x4(%rbp)
jmp 0x3718e
movq -0x18(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x36806
jmp 0x36825
leaq 0x1448e(%rip), %rdi     # 0x4ac9b
leaq 0x183b7(%rip), %rsi     # 0x4ebcb
movl $0x4e9, %edx            # imm = 0x4E9
leaq 0x18434(%rip), %rcx     # 0x4ec54
callq 0xa0b0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
callq 0x365b0
movl %eax, -0x8c(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x365b0
movl %eax, %ecx
movl -0x8c(%rbp), %eax
xorl %ecx, %eax
movl %eax, -0x4(%rbp)
jmp 0x3718e
movq -0x18(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x36872
jmp 0x36891
leaq 0x14422(%rip), %rdi     # 0x4ac9b
leaq 0x1834b(%rip), %rsi     # 0x4ebcb
movl $0x4ef, %edx            # imm = 0x4EF
leaq 0x183c8(%rip), %rcx     # 0x4ec54
callq 0xa0b0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
callq 0x365b0
movl %eax, -0x90(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x365b0
movl %eax, %ecx
movl -0x90(%rbp), %eax
andl %ecx, %eax
movl %eax, -0x4(%rbp)
jmp 0x3718e
movq -0x18(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x368de
jmp 0x368fd
leaq 0x143b6(%rip), %rdi     # 0x4ac9b
leaq 0x182df(%rip), %rsi     # 0x4ebcb
movl $0x4f5, %edx            # imm = 0x4F5
leaq 0x1835c(%rip), %rcx     # 0x4ec54
callq 0xa0b0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
callq 0x365b0
movl %eax, -0x94(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x365b0
movl %eax, %ecx
movl -0x94(%rbp), %eax
cmpl %ecx, %eax
sete %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x4(%rbp)
jmp 0x3718e
movq -0x18(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x36952
jmp 0x36971
leaq 0x14342(%rip), %rdi     # 0x4ac9b
leaq 0x1826b(%rip), %rsi     # 0x4ebcb
movl $0x4fa, %edx            # imm = 0x4FA
leaq 0x182e8(%rip), %rcx     # 0x4ec54
callq 0xa0b0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
callq 0x365b0
movl %eax, -0x98(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x365b0
movl %eax, %ecx
movl -0x98(%rbp), %eax
cmpl %ecx, %eax
setne %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x4(%rbp)
jmp 0x3718e
movq -0x18(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x369c6
jmp 0x369e5
leaq 0x142ce(%rip), %rdi     # 0x4ac9b
leaq 0x181f7(%rip), %rsi     # 0x4ebcb
movl $0x500, %edx            # imm = 0x500
leaq 0x18274(%rip), %rcx     # 0x4ec54
callq 0xa0b0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
callq 0x365b0
movl %eax, -0x9c(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x365b0
movl %eax, %ecx
movl -0x9c(%rbp), %eax
cmpl %ecx, %eax
setl %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x4(%rbp)
jmp 0x3718e
movq -0x18(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x36a3a
jmp 0x36a59
leaq 0x1425a(%rip), %rdi     # 0x4ac9b
leaq 0x18183(%rip), %rsi     # 0x4ebcb
movl $0x505, %edx            # imm = 0x505
leaq 0x18200(%rip), %rcx     # 0x4ec54
callq 0xa0b0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
callq 0x365b0
movl %eax, -0xa0(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x365b0
movl %eax, %ecx
movl -0xa0(%rbp), %eax
cmpl %ecx, %eax
setle %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x4(%rbp)
jmp 0x3718e
movq -0x18(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x36aae
jmp 0x36acd
leaq 0x141e6(%rip), %rdi     # 0x4ac9b
leaq 0x1810f(%rip), %rsi     # 0x4ebcb
movl $0x50a, %edx            # imm = 0x50A
leaq 0x1818c(%rip), %rcx     # 0x4ec54
callq 0xa0b0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
callq 0x365b0
movl %eax, -0xa4(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x365b0
movl %eax, %ecx
movl -0xa4(%rbp), %eax
cmpl %ecx, %eax
setg %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x4(%rbp)
jmp 0x3718e
movq -0x18(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x36b22
jmp 0x36b41
leaq 0x14172(%rip), %rdi     # 0x4ac9b
leaq 0x1809b(%rip), %rsi     # 0x4ebcb
movl $0x50f, %edx            # imm = 0x50F
leaq 0x18118(%rip), %rcx     # 0x4ec54
callq 0xa0b0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
callq 0x365b0
movl %eax, -0xa8(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x365b0
movl %eax, %ecx
movl -0xa8(%rbp), %eax
cmpl %ecx, %eax
setge %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x4(%rbp)
jmp 0x3718e
movq -0x18(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x36b96
jmp 0x36bb5
leaq 0x140fe(%rip), %rdi     # 0x4ac9b
leaq 0x18027(%rip), %rsi     # 0x4ebcb
movl $0x515, %edx            # imm = 0x515
leaq 0x180a4(%rip), %rcx     # 0x4ec54
callq 0xa0b0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
callq 0x365b0
movl %eax, -0xac(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x365b0
movl %eax, %ecx
movl -0xac(%rbp), %eax
shll %cl, %eax
movl %eax, -0x4(%rbp)
jmp 0x3718e
movq -0x18(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x36c02
jmp 0x36c21
leaq 0x14092(%rip), %rdi     # 0x4ac9b
leaq 0x17fbb(%rip), %rsi     # 0x4ebcb
movl $0x51a, %edx            # imm = 0x51A
leaq 0x18038(%rip), %rcx     # 0x4ec54
callq 0xa0b0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
callq 0x365b0
movl %eax, -0xb0(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x365b0
movl %eax, %ecx
movl -0xb0(%rbp), %eax
sarl %cl, %eax
movl %eax, -0x4(%rbp)
jmp 0x3718e
movq -0x18(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x36c6e
jmp 0x36c8d
leaq 0x14026(%rip), %rdi     # 0x4ac9b
leaq 0x17f4f(%rip), %rsi     # 0x4ebcb
movl $0x520, %edx            # imm = 0x520
leaq 0x17fcc(%rip), %rcx     # 0x4ec54
callq 0xa0b0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
callq 0x365b0
movl %eax, -0xb4(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x365b0
movl %eax, %ecx
movl -0xb4(%rbp), %eax
addl %ecx, %eax
movl %eax, -0x4(%rbp)
jmp 0x3718e
movq -0x18(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x36cda
jmp 0x36cf9
leaq 0x13fba(%rip), %rdi     # 0x4ac9b
leaq 0x17ee3(%rip), %rsi     # 0x4ebcb
movl $0x525, %edx            # imm = 0x525
leaq 0x17f60(%rip), %rcx     # 0x4ec54
callq 0xa0b0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
callq 0x365b0
movl %eax, -0xb8(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x365b0
movl %eax, %ecx
movl -0xb8(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x4(%rbp)
jmp 0x3718e
movq -0x18(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x36d46
jmp 0x36d65
leaq 0x13f4e(%rip), %rdi     # 0x4ac9b
leaq 0x17e77(%rip), %rsi     # 0x4ebcb
movl $0x52b, %edx            # imm = 0x52B
leaq 0x17ef4(%rip), %rcx     # 0x4ec54
callq 0xa0b0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
callq 0x365b0
movl %eax, -0xbc(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x365b0
movl %eax, %ecx
movl -0xbc(%rbp), %eax
imull %ecx, %eax
movl %eax, -0x4(%rbp)
jmp 0x3718e
movq -0x18(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x36db3
jmp 0x36dd2
leaq 0x13ee1(%rip), %rdi     # 0x4ac9b
leaq 0x17e0a(%rip), %rsi     # 0x4ebcb
movl $0x530, %edx            # imm = 0x530
leaq 0x17e87(%rip), %rcx     # 0x4ec54
callq 0xa0b0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
callq 0x365b0
movl %eax, -0xc0(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x365b0
movl %eax, %ecx
movl -0xc0(%rbp), %eax
cltd
idivl %ecx
movl %eax, -0x4(%rbp)
jmp 0x3718e
movq -0x18(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x36e20
jmp 0x36e3f
leaq 0x13e74(%rip), %rdi     # 0x4ac9b
leaq 0x17d9d(%rip), %rsi     # 0x4ebcb
movl $0x535, %edx            # imm = 0x535
leaq 0x17e1a(%rip), %rcx     # 0x4ec54
callq 0xa0b0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
callq 0x365b0
movl %eax, -0xc4(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x365b0
movl %eax, %ecx
movl -0xc4(%rbp), %eax
cltd
idivl %ecx
movl %edx, -0x4(%rbp)
jmp 0x3718e
movq -0x18(%rbp), %rax
cmpl $0x1, 0x44(%rax)
jne 0x36e8d
jmp 0x36eac
leaq 0x13be2(%rip), %rdi     # 0x4aa76
leaq 0x17d30(%rip), %rsi     # 0x4ebcb
movl $0x53b, %edx            # imm = 0x53B
leaq 0x17dad(%rip), %rcx     # 0x4ec54
callq 0xa0b0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
callq 0x365b0
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x4(%rbp)
jmp 0x3718e
movq -0x18(%rbp), %rax
cmpl $0x1, 0x44(%rax)
jne 0x36ee1
jmp 0x36f00
leaq 0x13b8e(%rip), %rdi     # 0x4aa76
leaq 0x17cdc(%rip), %rsi     # 0x4ebcb
movl $0x53f, %edx            # imm = 0x53F
leaq 0x17d59(%rip), %rcx     # 0x4ec54
callq 0xa0b0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
callq 0x365b0
xorl $-0x1, %eax
movl %eax, -0x4(%rbp)
jmp 0x3718e
movq -0x18(%rbp), %rax
cmpl $0x1, 0x44(%rax)
jne 0x36f2b
jmp 0x36f4a
leaq 0x13b44(%rip), %rdi     # 0x4aa76
leaq 0x17c92(%rip), %rsi     # 0x4ebcb
movl $0x543, %edx            # imm = 0x543
leaq 0x17d0f(%rip), %rcx     # 0x4ec54
callq 0xa0b0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
callq 0x365b0
movl %eax, -0x4(%rbp)
jmp 0x3718e
movq -0x18(%rbp), %rax
cmpl $0x1, 0x44(%rax)
jne 0x36f72
jmp 0x36f91
leaq 0x13afd(%rip), %rdi     # 0x4aa76
leaq 0x17c4b(%rip), %rsi     # 0x4ebcb
movl $0x547, %edx            # imm = 0x547
leaq 0x17cc8(%rip), %rcx     # 0x4ec54
callq 0xa0b0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
callq 0x365b0
movl %eax, %ecx
xorl %eax, %eax
subl %ecx, %eax
movl %eax, -0x4(%rbp)
jmp 0x3718e
movq -0x18(%rbp), %rax
cmpl $0x1, 0x44(%rax)
jne 0x36fbf
jmp 0x36fde
leaq 0x13ab0(%rip), %rdi     # 0x4aa76
leaq 0x17bfe(%rip), %rsi     # 0x4ebcb
movl $0x54b, %edx            # imm = 0x54B
leaq 0x17c7b(%rip), %rcx     # 0x4ec54
callq 0xa0b0
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
cmpl $0x200, (%rax)          # imm = 0x200
jne 0x36ffb
jmp 0x3701a
leaq 0x17c88(%rip), %rdi     # 0x4ec8a
leaq 0x17bc2(%rip), %rsi     # 0x4ebcb
movl $0x54e, %edx            # imm = 0x54E
leaq 0x17c3f(%rip), %rcx     # 0x4ec54
callq 0xa0b0
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
cmpl $0x2000, (%rax)         # imm = 0x2000
jne 0x37034
jmp 0x37053
leaq 0x17c6f(%rip), %rdi     # 0x4ecaa
leaq 0x17b89(%rip), %rsi     # 0x4ebcb
movl $0x551, %edx            # imm = 0x551
leaq 0x17c06(%rip), %rcx     # 0x4ec54
callq 0xa0b0
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0x28(%rbp), %rax
movl 0x4(%rax), %edx
leaq -0x40(%rbp), %rdi
callq 0xfef0
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
leaq -0x40(%rbp), %rsi
callq 0xd8f0
testb $0x1, %al
jne 0x37082
jmp 0x3708b
movl $0x1, -0x2c(%rbp)
jmp 0x37092
movl $0x0, -0x2c(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x10320
movl -0x2c(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x3718e
movq -0x18(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x370b2
jmp 0x370d1
leaq 0x13be2(%rip), %rdi     # 0x4ac9b
leaq 0x17b0b(%rip), %rsi     # 0x4ebcb
movl $0x561, %edx            # imm = 0x561
leaq 0x17b88(%rip), %rcx     # 0x4ec54
callq 0xa0b0
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rax
movq %rax, -0x48(%rbp)
leaq -0x58(%rbp), %rdi
callq 0xfca0
movq -0x10(%rbp), %rdi
movq -0x48(%rbp), %rdx
leaq -0x58(%rbp), %rsi
callq 0x3c260
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, -0x60(%rbp)
leaq -0x70(%rbp), %rdi
callq 0xfca0
movq -0x10(%rbp), %rdi
movq -0x60(%rbp), %rdx
leaq -0x70(%rbp), %rsi
callq 0x3c260
leaq -0x58(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x10c60
movb %al, %dl
xorl %eax, %eax
movl $0x1, %ecx
testb $0x1, %dl
cmovnel %ecx, %eax
movl %eax, -0x74(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x10320
leaq -0x70(%rbp), %rdi
callq 0x10320
movl -0x74(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x3718e
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x3c400
movl %eax, -0x4(%rbp)
jmp 0x3718e
leaq 0x102ef(%rip), %rdi     # 0x47465
leaq 0x17a4e(%rip), %rsi     # 0x4ebcb
movl $0x579, %edx            # imm = 0x579
leaq 0x17acb(%rip), %rcx     # 0x4ec54
callq 0xa0b0
movl -0x4(%rbp), %eax
addq $0xd0, %rsp
popq %rbp
retq
nopw (%rax,%rax)