// File: /workspace/github_c_makefile_star2_O0/Ihsoh[P]ilang/compiler/frontend/semantics.c
// Function: _type
static void __type(
	ParserContext *ctx,
	ParserASTNode *node,
	uint8_t *type,
	bool first_type
) {
	assert(ctx);
	assert(node);
	
	#define _SET_TYPE(t) { if (type != NULL) { *type = (t); } }

	switch (node->type) {
		case FE_NODE_TYPE_CHAR: {
			assert(node->nchilds == 0);
			_SET_TYPE(FE_TYPE_CHAR)
			break;
		}
		case FE_NODE_TYPE_INT8: {
			assert(node->nchilds == 0);
			_SET_TYPE(FE_TYPE_INT8)
			break;
		}
		case FE_NODE_TYPE_UINT8: {
			assert(node->nchilds == 0);
			_SET_TYPE(FE_TYPE_UINT8)
			break;
		}
		case FE_NODE_TYPE_INT16: {
			assert(node->nchilds == 0);
			_SET_TYPE(FE_TYPE_INT16)
			break;
		}
		case FE_NODE_TYPE_UINT16: {
			assert(node->nchilds == 0);
			_SET_TYPE(FE_TYPE_UINT16)
			break;
		}
		case FE_NODE_TYPE_INT32: {
			assert(node->nchilds == 0);
			_SET_TYPE(FE_TYPE_INT32)
			break;
		}
		case FE_NODE_TYPE_UINT32: {
			assert(node->nchilds == 0);
			_SET_TYPE(FE_TYPE_UINT32)
			break;
		}
		case FE_NODE_TYPE_INT64: {
			assert(node->nchilds == 0);
			_SET_TYPE(FE_TYPE_INT64)
			break;
		}
		case FE_NODE_TYPE_UINT64: {
			assert(node->nchilds == 0);
			_SET_TYPE(FE_TYPE_UINT64)
			break;
		}
		case FE_NODE_TYPE_FLOAT: {
			assert(node->nchilds == 0);
			_SET_TYPE(FE_TYPE_FLOAT)
			break;
		}
		case FE_NODE_TYPE_DOUBLE: {
			assert(node->nchilds == 0);
			_SET_TYPE(FE_TYPE_DOUBLE)
			break;
		}
		case FE_NODE_TYPE_VA_LIST: {
			assert(node->nchilds == 0);
			_SET_TYPE(FE_TYPE_VA_LIST)
			break;
		}
		case FE_NODE_TYPE_STRUCT: {
			assert(node->nchilds == 1);

			_SET_TYPE(FE_TYPE_STRUCT)

			ParserASTNode *node_id = node->childs[0];
			assert(node_id->type == FE_NODE_IDENTIFIER);

			LexerToken *token = node_id->token;
			ParserSymbol *symbol_struct = parser_get_symbol_from_node(ctx, node, FE_SYM_STRUCT, token);
			if (symbol_struct == NULL) {
				_SYNERR_TOKEN(ctx, token, "undefined struct.");
			} else {
				if (first_type
						&& FE_STRUCT_SYMBOL_GET_DUMMY(symbol_struct)) {
					_SYNERR_TOKEN(ctx, token, "struct not implemented.");
				}
			}

			break;
		}
		case FE_NODE_TYPE_ARRAY: {
			assert(node->nchilds == 2);

			_SET_TYPE(FE_TYPE_ARRAY)

			ParserASTNode *node_array_dims = node->childs[0];
			assert(node_array_dims->type == FE_NODE_TYPE_ARRAY_DIMS);
			for (int i = 0; i < node_array_dims->nchilds; i++) {
				ParserASTNode *node_array_dim = node_array_dims->childs[i];
				assert(node_array_dim->type == FE_NODE_LITERAL_UINT);

				uint64_t dim = fe_parser_get_uint_val(ctx, node_array_dim);
				if (dim == 0) {
					_SYNERR_NODE(
						ctx,
						node_array_dim,
						"array dimension size cannot be 0."
					);
				}
			}
			
			ParserASTNode *node_type = node->childs[1];
			__type(ctx, node_type, NULL, false);

			break;
		}
		case FE_NODE_TYPE_FUNC: {
			assert(node->nchilds == 1 || node->nchilds == 2);

			_SET_TYPE(FE_TYPE_FUNC)

			ParserASTNode *node_params = NULL;
			ParserASTNode *node_type = NULL;

			node_params = node->childs[0];
			for (int i = 0; i < node_params->nchilds; i++) {
				ParserASTNode *node_param = node_params->childs[i];
				switch (node_param->type) {
					case FE_NODE_FUNC_PARAMS_ELLIPSIS_ITEM: {

						break;
					}
					case FE_NODE_FUNC_PARAMS_ITEM: {
						assert(node_param->nchilds == 2);
						
						ParserASTNode *node_param_id = node_param->childs[0];

						ParserASTNode *node_param_type = node_param->childs[1];
						__type(ctx, node_param_type, NULL, false);

						break;
					}
					default: {
						assert(0);
					}
				}
			}
			
			if (node->nchilds == 2) {
				node_type = node->childs[1];
				__type(ctx, node_type, NULL, false);
			}

			break;
		}
		case FE_NODE_TYPE_POINTER: {
			assert(node->nchilds == 1);

			_SET_TYPE(FE_TYPE_POINTER)

			ParserASTNode *node_type = node->childs[0];
			__type(ctx, node_type, NULL, false);

			break;
		}
		case FE_NODE_TYPE_VOID: {
			assert(node->nchilds == 0);
			_SET_TYPE(FE_TYPE_VOID)
			break;
		}
		default: {
			assert(0);
		}
	}

	#undef	_SET_TYPE
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x4b0, %rsp            # imm = 0x4B0
movb %cl, %al
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
andb $0x1, %al
movb %al, -0x19(%rbp)
cmpq $0x0, -0x8(%rbp)
je 0x4f8b7
jmp 0x4f8d6
leaq 0x2cc98(%rip), %rdi     # 0x7c556
leaq 0x2e985(%rip), %rsi     # 0x7e24a
movl $0x34d, %edx            # imm = 0x34D
leaq 0x2ecee(%rip), %rcx     # 0x7e5bf
callq 0x30a0
cmpq $0x0, -0x10(%rbp)
je 0x4f8df
jmp 0x4f8fe
leaq 0x266ed(%rip), %rdi     # 0x75fd3
leaq 0x2e95d(%rip), %rsi     # 0x7e24a
movl $0x34e, %edx            # imm = 0x34E
leaq 0x2ecc6(%rip), %rcx     # 0x7e5bf
callq 0x30a0
movq -0x10(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x4a4(%rbp)
subl $0x400, %eax            # imm = 0x400
je 0x4fa4a
jmp 0x4f917
movl -0x4a4(%rbp), %eax
subl $0x401, %eax            # imm = 0x401
je 0x4fa88
jmp 0x4f92a
movl -0x4a4(%rbp), %eax
subl $0x402, %eax            # imm = 0x402
je 0x4fb04
jmp 0x4f93d
movl -0x4a4(%rbp), %eax
subl $0x403, %eax            # imm = 0x403
je 0x4fb80
jmp 0x4f950
movl -0x4a4(%rbp), %eax
subl $0x404, %eax            # imm = 0x404
je 0x4fbfc
jmp 0x4f963
movl -0x4a4(%rbp), %eax
subl $0x405, %eax            # imm = 0x405
je 0x4fac6
jmp 0x4f976
movl -0x4a4(%rbp), %eax
subl $0x406, %eax            # imm = 0x406
je 0x4fb42
jmp 0x4f989
movl -0x4a4(%rbp), %eax
subl $0x407, %eax            # imm = 0x407
je 0x4fbbe
jmp 0x4f99c
movl -0x4a4(%rbp), %eax
subl $0x408, %eax            # imm = 0x408
je 0x4fc3a
jmp 0x4f9af
movl -0x4a4(%rbp), %eax
subl $0x409, %eax            # imm = 0x409
je 0x4fc78
jmp 0x4f9c2
movl -0x4a4(%rbp), %eax
subl $0x40a, %eax            # imm = 0x40A
je 0x4fcb6
jmp 0x4f9d5
movl -0x4a4(%rbp), %eax
subl $0x40b, %eax            # imm = 0x40B
je 0x4fcf4
jmp 0x4f9e8
movl -0x4a4(%rbp), %eax
subl $0x410, %eax            # imm = 0x410
je 0x4fd32
jmp 0x4f9fb
movl -0x4a4(%rbp), %eax
subl $0x420, %eax            # imm = 0x420
je 0x4fe1f
jmp 0x4fa0e
movl -0x4a4(%rbp), %eax
subl $0x430, %eax            # imm = 0x430
je 0x4ff70
jmp 0x4fa21
movl -0x4a4(%rbp), %eax
subl $0x440, %eax            # imm = 0x440
je 0x50122
jmp 0x4fa34
movl -0x4a4(%rbp), %eax
subl $0x4ff, %eax            # imm = 0x4FF
je 0x50185
jmp 0x501c0
movq -0x10(%rbp), %rax
cmpl $0x0, 0x44(%rax)
jne 0x4fa56
jmp 0x4fa75
leaq 0x2eba2(%rip), %rdi     # 0x7e5ff
leaq 0x2e7e6(%rip), %rsi     # 0x7e24a
movl $0x354, %edx            # imm = 0x354
leaq 0x2eb4f(%rip), %rcx     # 0x7e5bf
callq 0x30a0
cmpq $0x0, -0x18(%rbp)
je 0x4fa83
movq -0x18(%rbp), %rax
movb $0x1, (%rax)
jmp 0x501df
movq -0x10(%rbp), %rax
cmpl $0x0, 0x44(%rax)
jne 0x4fa94
jmp 0x4fab3
leaq 0x2eb64(%rip), %rdi     # 0x7e5ff
leaq 0x2e7a8(%rip), %rsi     # 0x7e24a
movl $0x359, %edx            # imm = 0x359
leaq 0x2eb11(%rip), %rcx     # 0x7e5bf
callq 0x30a0
cmpq $0x0, -0x18(%rbp)
je 0x4fac1
movq -0x18(%rbp), %rax
movb $0x2, (%rax)
jmp 0x501df
movq -0x10(%rbp), %rax
cmpl $0x0, 0x44(%rax)
jne 0x4fad2
jmp 0x4faf1
leaq 0x2eb26(%rip), %rdi     # 0x7e5ff
leaq 0x2e76a(%rip), %rsi     # 0x7e24a
movl $0x35e, %edx            # imm = 0x35E
leaq 0x2ead3(%rip), %rcx     # 0x7e5bf
callq 0x30a0
cmpq $0x0, -0x18(%rbp)
je 0x4faff
movq -0x18(%rbp), %rax
movb $0x6, (%rax)
jmp 0x501df
movq -0x10(%rbp), %rax
cmpl $0x0, 0x44(%rax)
jne 0x4fb10
jmp 0x4fb2f
leaq 0x2eae8(%rip), %rdi     # 0x7e5ff
leaq 0x2e72c(%rip), %rsi     # 0x7e24a
movl $0x363, %edx            # imm = 0x363
leaq 0x2ea95(%rip), %rcx     # 0x7e5bf
callq 0x30a0
cmpq $0x0, -0x18(%rbp)
je 0x4fb3d
movq -0x18(%rbp), %rax
movb $0x3, (%rax)
jmp 0x501df
movq -0x10(%rbp), %rax
cmpl $0x0, 0x44(%rax)
jne 0x4fb4e
jmp 0x4fb6d
leaq 0x2eaaa(%rip), %rdi     # 0x7e5ff
leaq 0x2e6ee(%rip), %rsi     # 0x7e24a
movl $0x368, %edx            # imm = 0x368
leaq 0x2ea57(%rip), %rcx     # 0x7e5bf
callq 0x30a0
cmpq $0x0, -0x18(%rbp)
je 0x4fb7b
movq -0x18(%rbp), %rax
movb $0x7, (%rax)
jmp 0x501df
movq -0x10(%rbp), %rax
cmpl $0x0, 0x44(%rax)
jne 0x4fb8c
jmp 0x4fbab
leaq 0x2ea6c(%rip), %rdi     # 0x7e5ff
leaq 0x2e6b0(%rip), %rsi     # 0x7e24a
movl $0x36d, %edx            # imm = 0x36D
leaq 0x2ea19(%rip), %rcx     # 0x7e5bf
callq 0x30a0
cmpq $0x0, -0x18(%rbp)
je 0x4fbb9
movq -0x18(%rbp), %rax
movb $0x4, (%rax)
jmp 0x501df
movq -0x10(%rbp), %rax
cmpl $0x0, 0x44(%rax)
jne 0x4fbca
jmp 0x4fbe9
leaq 0x2ea2e(%rip), %rdi     # 0x7e5ff
leaq 0x2e672(%rip), %rsi     # 0x7e24a
movl $0x372, %edx            # imm = 0x372
leaq 0x2e9db(%rip), %rcx     # 0x7e5bf
callq 0x30a0
cmpq $0x0, -0x18(%rbp)
je 0x4fbf7
movq -0x18(%rbp), %rax
movb $0x8, (%rax)
jmp 0x501df
movq -0x10(%rbp), %rax
cmpl $0x0, 0x44(%rax)
jne 0x4fc08
jmp 0x4fc27
leaq 0x2e9f0(%rip), %rdi     # 0x7e5ff
leaq 0x2e634(%rip), %rsi     # 0x7e24a
movl $0x377, %edx            # imm = 0x377
leaq 0x2e99d(%rip), %rcx     # 0x7e5bf
callq 0x30a0
cmpq $0x0, -0x18(%rbp)
je 0x4fc35
movq -0x18(%rbp), %rax
movb $0x5, (%rax)
jmp 0x501df
movq -0x10(%rbp), %rax
cmpl $0x0, 0x44(%rax)
jne 0x4fc46
jmp 0x4fc65
leaq 0x2e9b2(%rip), %rdi     # 0x7e5ff
leaq 0x2e5f6(%rip), %rsi     # 0x7e24a
movl $0x37c, %edx            # imm = 0x37C
leaq 0x2e95f(%rip), %rcx     # 0x7e5bf
callq 0x30a0
cmpq $0x0, -0x18(%rbp)
je 0x4fc73
movq -0x18(%rbp), %rax
movb $0x9, (%rax)
jmp 0x501df
movq -0x10(%rbp), %rax
cmpl $0x0, 0x44(%rax)
jne 0x4fc84
jmp 0x4fca3
leaq 0x2e974(%rip), %rdi     # 0x7e5ff
leaq 0x2e5b8(%rip), %rsi     # 0x7e24a
movl $0x381, %edx            # imm = 0x381
leaq 0x2e921(%rip), %rcx     # 0x7e5bf
callq 0x30a0
cmpq $0x0, -0x18(%rbp)
je 0x4fcb1
movq -0x18(%rbp), %rax
movb $0xa, (%rax)
jmp 0x501df
movq -0x10(%rbp), %rax
cmpl $0x0, 0x44(%rax)
jne 0x4fcc2
jmp 0x4fce1
leaq 0x2e936(%rip), %rdi     # 0x7e5ff
leaq 0x2e57a(%rip), %rsi     # 0x7e24a
movl $0x386, %edx            # imm = 0x386
leaq 0x2e8e3(%rip), %rcx     # 0x7e5bf
callq 0x30a0
cmpq $0x0, -0x18(%rbp)
je 0x4fcef
movq -0x18(%rbp), %rax
movb $0xb, (%rax)
jmp 0x501df
movq -0x10(%rbp), %rax
cmpl $0x0, 0x44(%rax)
jne 0x4fd00
jmp 0x4fd1f
leaq 0x2e8f8(%rip), %rdi     # 0x7e5ff
leaq 0x2e53c(%rip), %rsi     # 0x7e24a
movl $0x38b, %edx            # imm = 0x38B
leaq 0x2e8a5(%rip), %rcx     # 0x7e5bf
callq 0x30a0
cmpq $0x0, -0x18(%rbp)
je 0x4fd2d
movq -0x18(%rbp), %rax
movb $0xc, (%rax)
jmp 0x501df
movq -0x10(%rbp), %rax
cmpl $0x1, 0x44(%rax)
jne 0x4fd3e
jmp 0x4fd5d
leaq 0x2f3ab(%rip), %rdi     # 0x7f0f0
leaq 0x2e4fe(%rip), %rsi     # 0x7e24a
movl $0x390, %edx            # imm = 0x390
leaq 0x2e867(%rip), %rcx     # 0x7e5bf
callq 0x30a0
cmpq $0x0, -0x18(%rbp)
je 0x4fd6b
movq -0x18(%rbp), %rax
movb $0xd, (%rax)
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
cmpl $0x200, (%rax)          # imm = 0x200
jne 0x4fd88
jmp 0x4fda7
leaq 0x249fd(%rip), %rdi     # 0x7478c
leaq 0x2e4b4(%rip), %rsi     # 0x7e24a
movl $0x395, %edx            # imm = 0x395
leaq 0x2e81d(%rip), %rcx     # 0x7e5bf
callq 0x30a0
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x30(%rbp), %rcx
movl $0x2, %edx
callq 0x82f0
movq %rax, -0x38(%rbp)
cmpq $0x0, -0x38(%rbp)
jne 0x4fdef
movq -0x8(%rbp), %rax
movq 0x50(%rax), %rax
movq -0x8(%rbp), %rdi
movq -0x30(%rbp), %rsi
leaq 0x2e827(%rip), %rdx     # 0x7e612
callq *%rax
jmp 0x4fe1a
testb $0x1, -0x19(%rbp)
je 0x4fe18
movq -0x38(%rbp), %rax
testb $0x1, 0x40(%rax)
je 0x4fe18
movq -0x8(%rbp), %rax
movq 0x50(%rax), %rax
movq -0x8(%rbp), %rdi
movq -0x30(%rbp), %rsi
leaq 0x2e80e(%rip), %rdx     # 0x7e624
callq *%rax
jmp 0x4fe1a
jmp 0x501df
movq -0x10(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x4fe2b
jmp 0x4fe4a
leaq 0x2e842(%rip), %rdi     # 0x7e674
leaq 0x2e411(%rip), %rsi     # 0x7e24a
movl $0x3a5, %edx            # imm = 0x3A5
leaq 0x2e77a(%rip), %rcx     # 0x7e5bf
callq 0x30a0
cmpq $0x0, -0x18(%rbp)
je 0x4fe58
movq -0x18(%rbp), %rax
movb $0xe, (%rax)
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpl $0x421, (%rax)          # imm = 0x421
jne 0x4fe75
jmp 0x4fe94
leaq 0x24934(%rip), %rdi     # 0x747b0
leaq 0x2e3c7(%rip), %rsi     # 0x7e24a
movl $0x3aa, %edx            # imm = 0x3AA
leaq 0x2e730(%rip), %rcx     # 0x7e5bf
callq 0x30a0
movl $0x0, -0x44(%rbp)
movl -0x44(%rbp), %eax
movq -0x40(%rbp), %rcx
cmpl 0x44(%rcx), %eax
jge 0x4ff42
movq -0x40(%rbp), %rax
movq 0x48(%rax), %rax
movslq -0x44(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
cmpl $0x300, (%rax)          # imm = 0x300
jne 0x4fecd
jmp 0x4feec
leaq 0x2492a(%rip), %rdi     # 0x747fe
leaq 0x2e36f(%rip), %rsi     # 0x7e24a
movl $0x3ad, %edx            # imm = 0x3AD
leaq 0x2e6d8(%rip), %rcx     # 0x7e5bf
callq 0x30a0
movq -0x8(%rbp), %rdi
movq -0x50(%rbp), %rsi
callq 0x429f0
movq %rax, -0x58(%rbp)
cmpq $0x0, -0x58(%rbp)
jne 0x4ff32
leaq -0x460(%rbp), %rdi
leaq 0x2e72a(%rip), %rsi     # 0x7e63c
movb $0x0, %al
callq 0x3160
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movq -0x8(%rbp), %rdi
movq -0x50(%rbp), %rsi
leaq -0x460(%rbp), %rdx
callq *%rax
jmp 0x4ff34
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
jmp 0x4fe9b
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, -0x468(%rbp)
movq -0x8(%rbp), %rdi
movq -0x468(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edx
xorl %ecx, %ecx
callq 0x4f890
jmp 0x501df
movq -0x10(%rbp), %rax
cmpl $0x1, 0x44(%rax)
je 0x4ff84
movq -0x10(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x4ff86
jmp 0x4ffa5
leaq 0x2e6d1(%rip), %rdi     # 0x7e65e
leaq 0x2e2b6(%rip), %rsi     # 0x7e24a
movl $0x3bf, %edx            # imm = 0x3BF
leaq 0x2e61f(%rip), %rcx     # 0x7e5bf
callq 0x30a0
cmpq $0x0, -0x18(%rbp)
je 0x4ffb3
movq -0x18(%rbp), %rax
movb $0xf, (%rax)
movq $0x0, -0x470(%rbp)
movq $0x0, -0x478(%rbp)
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rax
movq %rax, -0x470(%rbp)
movl $0x0, -0x47c(%rbp)
movl -0x47c(%rbp), %eax
movq -0x470(%rbp), %rcx
cmpl 0x44(%rcx), %eax
jge 0x500ea
movq -0x470(%rbp), %rax
movq 0x48(%rax), %rax
movslq -0x47c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x488(%rbp)
movq -0x488(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x4a8(%rbp)
subl $0xa02, %eax            # imm = 0xA02
je 0x50044
jmp 0x50030
movl -0x4a8(%rbp), %eax
subl $0xa03, %eax            # imm = 0xA03
jne 0x500b5
jmp 0x5003f
jmp 0x500d4
movq -0x488(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x50053
jmp 0x50072
leaq 0x24906(%rip), %rdi     # 0x74960
leaq 0x2e1e9(%rip), %rsi     # 0x7e24a
movl $0x3cf, %edx            # imm = 0x3CF
leaq 0x2e552(%rip), %rcx     # 0x7e5bf
callq 0x30a0
movq -0x488(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rax
movq %rax, -0x490(%rbp)
movq -0x488(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, -0x498(%rbp)
movq -0x8(%rbp), %rdi
movq -0x498(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edx
xorl %ecx, %ecx
callq 0x4f890
jmp 0x500d4
leaq 0x2239f(%rip), %rdi     # 0x7245b
leaq 0x2e187(%rip), %rsi     # 0x7e24a
movl $0x3d9, %edx            # imm = 0x3D9
leaq 0x2e4f0(%rip), %rcx     # 0x7e5bf
callq 0x30a0
jmp 0x500d6
movl -0x47c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x47c(%rbp)
jmp 0x4ffe5
movq -0x10(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x5011d
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, -0x478(%rbp)
movq -0x8(%rbp), %rdi
movq -0x478(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edx
xorl %ecx, %ecx
callq 0x4f890
jmp 0x501df
movq -0x10(%rbp), %rax
cmpl $0x1, 0x44(%rax)
jne 0x5012e
jmp 0x5014d
leaq 0x2efbb(%rip), %rdi     # 0x7f0f0
leaq 0x2e10e(%rip), %rsi     # 0x7e24a
movl $0x3e6, %edx            # imm = 0x3E6
leaq 0x2e477(%rip), %rcx     # 0x7e5bf
callq 0x30a0
cmpq $0x0, -0x18(%rbp)
je 0x5015b
movq -0x18(%rbp), %rax
movb $0x10, (%rax)
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rax
movq %rax, -0x4a0(%rbp)
movq -0x8(%rbp), %rdi
movq -0x4a0(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edx
xorl %ecx, %ecx
callq 0x4f890
jmp 0x501df
movq -0x10(%rbp), %rax
cmpl $0x0, 0x44(%rax)
jne 0x50191
jmp 0x501b0
leaq 0x2e467(%rip), %rdi     # 0x7e5ff
leaq 0x2e0ab(%rip), %rsi     # 0x7e24a
movl $0x3f0, %edx            # imm = 0x3F0
leaq 0x2e414(%rip), %rcx     # 0x7e5bf
callq 0x30a0
cmpq $0x0, -0x18(%rbp)
je 0x501be
movq -0x18(%rbp), %rax
movb $-0x1, (%rax)
jmp 0x501df
leaq 0x22294(%rip), %rdi     # 0x7245b
leaq 0x2e07c(%rip), %rsi     # 0x7e24a
movl $0x3f5, %edx            # imm = 0x3F5
leaq 0x2e3e5(%rip), %rcx     # 0x7e5bf
callq 0x30a0
addq $0x4b0, %rsp            # imm = 0x4B0
popq %rbp
retq
nopl (%rax,%rax)