// File: /workspace/github_c_makefile_star2_O0/Ihsoh[P]ilang/compiler/backend/asmgen_gas32.c
// Function: asm_constexpr_param
static void _asm_constexpr_param(
	ASMGeneratorGas32Context *ctx,
	ResizableString *rstr_val_l,
	ResizableString *rstr_val_h,
	ParserASTNode *node_constexpr,
	int tmp_reg
) {
	assert(ctx);
	assert(rstr_val_l);
	assert(node_constexpr);
	assert(BE_EXPR_AST_NODE_GET_CONSTANT(node_constexpr));

	switch (BE_EXPR_AST_NODE_GET_CONSTANT_TYPE(node_constexpr)) {
		case BE_TYPE_CHAR: {
			char str[128];
			snprintf(
				str, sizeof(str), "$%d",
				BE_EXPR_AST_NODE_GET_CONSTEXPR_RESULT_CHAR_VAL(node_constexpr)
			);
			rstr_append_with_cstr(rstr_val_l, str);
			if (rstr_val_h != NULL) {
				rstr_append_with_cstr(rstr_val_h, _ASM_CONST_0);
			}
			break;
		}
		case BE_TYPE_INT8: {
			char str[128];
			snprintf(
				str, sizeof(str), "$%d",
				BE_EXPR_AST_NODE_GET_CONSTEXPR_RESULT_INT8_VAL(node_constexpr)
			);
			rstr_append_with_cstr(rstr_val_l, str);
			if (rstr_val_h != NULL) {
				rstr_append_with_cstr(rstr_val_h, _ASM_CONST_0);
			}
			break;
		}
		case BE_TYPE_INT16: {
			char str[128];
			snprintf(
				str, sizeof(str), "$%d",
				BE_EXPR_AST_NODE_GET_CONSTEXPR_RESULT_INT16_VAL(node_constexpr)
			);
			rstr_append_with_cstr(rstr_val_l, str);
			if (rstr_val_h != NULL) {
				rstr_append_with_cstr(rstr_val_h, _ASM_CONST_0);
			}
			break;
		}
		case BE_TYPE_INT32: {
			char str[128];
			snprintf(
				str, sizeof(str), "$%d",
				BE_EXPR_AST_NODE_GET_CONSTEXPR_RESULT_INT32_VAL(node_constexpr)
			);
			rstr_append_with_cstr(rstr_val_l, str);
			if (rstr_val_h != NULL) {
				rstr_append_with_cstr(rstr_val_h, _ASM_CONST_0);
			}
			break;
		}
		case BE_TYPE_INT64: {
			char str[128];

			int64_t val = BE_EXPR_AST_NODE_GET_CONSTEXPR_RESULT_INT64_VAL(node_constexpr);
			
			int32_t val_l = (int32_t)(val & 0xffffffff);
			snprintf(
				str, sizeof(str), "$%u",
				val_l
			);
			rstr_append_with_cstr(rstr_val_l, str);

			if (rstr_val_h != NULL) {
				int32_t val_h = (int32_t)((val >> 32) & 0xffffffff);
				snprintf(
					str, sizeof(str), "$%u",
					val_h
				);
				rstr_append_with_cstr(rstr_val_h, str);
			}
			break;
		}
		case BE_TYPE_UINT8: {
			char str[128];
			snprintf(
				str, sizeof(str), "$%u",
				BE_EXPR_AST_NODE_GET_CONSTEXPR_RESULT_UINT8_VAL(node_constexpr)
			);
			rstr_append_with_cstr(rstr_val_l, str);
			if (rstr_val_h != NULL) {
				rstr_append_with_cstr(rstr_val_h, _ASM_CONST_0);
			}
			break;
		}
		case BE_TYPE_UINT16: {
			char str[128];
			snprintf(
				str, sizeof(str), "$%u",
				BE_EXPR_AST_NODE_GET_CONSTEXPR_RESULT_UINT16_VAL(node_constexpr)
			);
			rstr_append_with_cstr(rstr_val_l, str);
			if (rstr_val_h != NULL) {
				rstr_append_with_cstr(rstr_val_h, _ASM_CONST_0);
			}
			break;
		}
		case BE_TYPE_UINT32: {
			char str[128];
			snprintf(
				str, sizeof(str), "$%u",
				BE_EXPR_AST_NODE_GET_CONSTEXPR_RESULT_UINT32_VAL(node_constexpr)
			);
			rstr_append_with_cstr(rstr_val_l, str);
			if (rstr_val_h != NULL) {
				rstr_append_with_cstr(rstr_val_h, _ASM_CONST_0);
			}
			break;
		}
		case BE_TYPE_UINT64: {
			char str[128];

			uint64_t val = BE_EXPR_AST_NODE_GET_CONSTEXPR_RESULT_UINT64_VAL(node_constexpr);

			uint32_t val_l = (uint32_t)(val & 0xffffffff);
			snprintf(
				str, sizeof(str), "$%u",
				val_l
			);
			rstr_append_with_cstr(rstr_val_l, str);

			if (rstr_val_h != NULL) {
				uint32_t val_h = (uint32_t)((val >> 32) & 0xffffffff);
				snprintf(
					str, sizeof(str), "$%u",
					val_h
				);
				rstr_append_with_cstr(rstr_val_h, str);
			}
			break;
		}
		case BE_TYPE_FLOAT: {
			char str[128];

			float fval = BE_EXPR_AST_NODE_GET_CONSTEXPR_RESULT_FLOAT_VAL(node_constexpr);
			uint32_t val = *(uint32_t *)&fval;
			
			snprintf(
				str, sizeof(str), "$%u",
				val
			);
			rstr_append_with_cstr(rstr_val_l, str);
			if (rstr_val_h != NULL) {
				rstr_append_with_cstr(rstr_val_h, _ASM_CONST_0);
			}
			break;
		}
		case BE_TYPE_DOUBLE: {
			char str[128];

			double dval = BE_EXPR_AST_NODE_GET_CONSTEXPR_RESULT_DOUBLE_VAL(node_constexpr);
			uint64_t val = *(uint64_t *)&dval;

			uint32_t val_l = (uint32_t)(val & 0xffffffff);
			snprintf(
				str, sizeof(str), "$%u",
				val_l
			);
			rstr_append_with_cstr(rstr_val_l, str);

			if (rstr_val_h != NULL) {
				uint32_t val_h = (uint32_t)((val >> 32) & 0xffffffff);
				snprintf(
					str, sizeof(str), "$%u",
					val_h
				);
				rstr_append_with_cstr(rstr_val_h, str);
			}
			break;
		}
		case BE_TYPE_POINTER: {
			if (BE_EXPR_AST_NODE_GET_HAS_CONSTSTR(node_constexpr)) {
				BeParserConstexprString *conststr = BE_EXPR_AST_NODE_GET_CONSTSTR(node_constexpr);
				uint64_t ptr_val = BE_EXPR_AST_NODE_GET_CONSTEXPR_RESULT_POINTER_VAL(node_constexpr);

				ResizableString conststr_name;
				rstr_init(&conststr_name);

				int len = _new_string(ctx, &conststr_name, conststr->str, conststr->len);

				ParserSymbol *cur_func_symbol = ctx->func_symbol;
				assert(cur_func_symbol);
				ParserASTNode *cur_func_name_node = BE_FUNC_SYMBOL_GET_FUNC_NAME_NODE(cur_func_symbol);
				assert(cur_func_name_node);

				ResizableString rstr_cur_func_name;
				rstr_init_with_raw(
					&rstr_cur_func_name,
					cur_func_name_node->token->content,
					cur_func_name_node->token->len
				);

				ResizableString rstr_disp;
				rstr_init(&rstr_disp);
				rstr_appendf(
					&rstr_disp,
					"%s-%s%s",
					RSTR_CSTR(&conststr_name),
					_ASM_IP_LABEL_PREFIX,
					RSTR_CSTR(&rstr_cur_func_name)
				);

				_asm_get_ip(ctx);

				ResizableString rstr_source;
				rstr_init(&rstr_source);
				_asm_inst_memref_base_disp(
					ctx,
					&rstr_source,
					_ASM_IP_REG,
					RSTR_CSTR(&rstr_disp)
				);

				_asm_inst_lea_x_x(
					ctx,
					ctx->body,
					_asm_inst_reg(ctx, BE_TYPE_INT32, tmp_reg),
					RSTR_CSTR(&rstr_source)
				);

				ResizableString rstr_ptr_val;
				rstr_init(&rstr_ptr_val);
				_asm_inst_uint_const(ctx, &rstr_ptr_val, ptr_val);
				_asm_inst_add_x_x(
					ctx,
					ctx->body,
					BE_TYPE_POINTER,
					_asm_inst_reg(ctx, BE_TYPE_INT32, tmp_reg),
					RSTR_CSTR(&rstr_ptr_val)
				);
				rstr_free(&rstr_ptr_val);

				rstr_append_with_cstr(
					rstr_val_l,
					_asm_inst_reg(ctx, BE_TYPE_INT32, tmp_reg)
				);
				if (rstr_val_h != NULL) {
					rstr_append_with_cstr(rstr_val_h, _ASM_CONST_0);
				}

				rstr_free(&conststr_name);
				rstr_free(&rstr_cur_func_name);
				rstr_free(&rstr_disp);
				rstr_free(&rstr_source);
			} else {
				char str[128];
				uint64_t val = BE_EXPR_AST_NODE_GET_CONSTEXPR_RESULT_POINTER_VAL(node_constexpr);
				snprintf(
					str, sizeof(str), "$%u",
					(uint32_t)val
				);
				rstr_append_with_cstr(rstr_val_l, str);
				if (rstr_val_h != NULL) {
					rstr_append_with_cstr(rstr_val_h, _ASM_CONST_0);
				}
			}
			break;
		}
		default: {
			assert(0);
		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x770, %rsp            # imm = 0x770
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movl %r8d, -0x24(%rbp)
cmpq $0x0, -0x8(%rbp)
je 0x21488
jmp 0x214a7
leaq 0x5ecd2(%rip), %rdi     # 0x80161
leaq 0x54462(%rip), %rsi     # 0x758f8
movl $0xbe7, %edx            # imm = 0xBE7
leaq 0x55548(%rip), %rcx     # 0x769ea
callq 0x30a0
cmpq $0x0, -0x10(%rbp)
je 0x214b0
jmp 0x214cf
leaq 0x555a5(%rip), %rdi     # 0x76a5c
leaq 0x5443a(%rip), %rsi     # 0x758f8
movl $0xbe8, %edx            # imm = 0xBE8
leaq 0x55520(%rip), %rcx     # 0x769ea
callq 0x30a0
cmpq $0x0, -0x20(%rbp)
je 0x214d8
jmp 0x214f7
leaq 0x5493a(%rip), %rdi     # 0x75e19
leaq 0x54412(%rip), %rsi     # 0x758f8
movl $0xbe9, %edx            # imm = 0xBE9
leaq 0x554f8(%rip), %rcx     # 0x769ea
callq 0x30a0
movq -0x20(%rbp), %rax
testb $0x1, 0x70(%rax)
je 0x21503
jmp 0x21522
leaq 0x5491e(%rip), %rdi     # 0x75e28
leaq 0x543e7(%rip), %rsi     # 0x758f8
movl $0xbea, %edx            # imm = 0xBEA
leaq 0x554cd(%rip), %rcx     # 0x769ea
callq 0x30a0
movq -0x20(%rbp), %rax
movzbl 0x71(%rax), %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0x700(%rbp)
subl $0xf, %eax
ja 0x21e4b
movq -0x700(%rbp), %rax
leaq 0x5436c(%rip), %rcx     # 0x758b8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq -0xb0(%rbp), %rdi
movq -0x20(%rbp), %rax
movsbl 0x88(%rax), %ecx
movl $0x80, %esi
leaq 0x554f4(%rip), %rdx     # 0x76a67
movb $0x0, %al
callq 0x3090
movq -0x10(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x8d70
cmpq $0x0, -0x18(%rbp)
je 0x215a1
movq -0x18(%rbp), %rdi
leaq 0x554cf(%rip), %rsi     # 0x76a6b
callq 0x8d70
jmp 0x21e6a
leaq -0x130(%rbp), %rdi
movq -0x20(%rbp), %rax
movsbl 0x88(%rax), %ecx
movl $0x80, %esi
leaq 0x554a3(%rip), %rdx     # 0x76a67
movb $0x0, %al
callq 0x3090
movq -0x10(%rbp), %rdi
leaq -0x130(%rbp), %rsi
callq 0x8d70
cmpq $0x0, -0x18(%rbp)
je 0x215f2
movq -0x18(%rbp), %rdi
leaq 0x5547e(%rip), %rsi     # 0x76a6b
callq 0x8d70
jmp 0x21e6a
leaq -0x1b0(%rbp), %rdi
movq -0x20(%rbp), %rax
movswl 0x88(%rax), %ecx
movl $0x80, %esi
leaq 0x55452(%rip), %rdx     # 0x76a67
movb $0x0, %al
callq 0x3090
movq -0x10(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x8d70
cmpq $0x0, -0x18(%rbp)
je 0x21643
movq -0x18(%rbp), %rdi
leaq 0x5542d(%rip), %rsi     # 0x76a6b
callq 0x8d70
jmp 0x21e6a
leaq -0x230(%rbp), %rdi
movq -0x20(%rbp), %rax
movl 0x88(%rax), %ecx
movl $0x80, %esi
leaq 0x55402(%rip), %rdx     # 0x76a67
movb $0x0, %al
callq 0x3090
movq -0x10(%rbp), %rdi
leaq -0x230(%rbp), %rsi
callq 0x8d70
cmpq $0x0, -0x18(%rbp)
je 0x21693
movq -0x18(%rbp), %rdi
leaq 0x553dd(%rip), %rsi     # 0x76a6b
callq 0x8d70
jmp 0x21e6a
movq -0x20(%rbp), %rax
movq 0x88(%rax), %rax
movq %rax, -0x2b8(%rbp)
movabsq $0xffffffff, %rax       # imm = 0xFFFFFFFF
andq -0x2b8(%rbp), %rax
movl %eax, -0x2bc(%rbp)
leaq -0x2b0(%rbp), %rdi
movl -0x2bc(%rbp), %ecx
movl $0x80, %esi
leaq 0x55394(%rip), %rdx     # 0x76a6e
movb $0x0, %al
callq 0x3090
movq -0x10(%rbp), %rdi
leaq -0x2b0(%rbp), %rsi
callq 0x8d70
cmpq $0x0, -0x18(%rbp)
je 0x21746
movq -0x2b8(%rbp), %rax
sarq $0x20, %rax
movabsq $0xffffffff, %rcx       # imm = 0xFFFFFFFF
andq %rcx, %rax
movl %eax, -0x2c0(%rbp)
leaq -0x2b0(%rbp), %rdi
movl -0x2c0(%rbp), %ecx
movl $0x80, %esi
leaq 0x5533f(%rip), %rdx     # 0x76a6e
movb $0x0, %al
callq 0x3090
movq -0x18(%rbp), %rdi
leaq -0x2b0(%rbp), %rsi
callq 0x8d70
jmp 0x21e6a
leaq -0x340(%rbp), %rdi
movq -0x20(%rbp), %rax
movzbl 0x88(%rax), %ecx
movl $0x80, %esi
leaq 0x55305(%rip), %rdx     # 0x76a6e
movb $0x0, %al
callq 0x3090
movq -0x10(%rbp), %rdi
leaq -0x340(%rbp), %rsi
callq 0x8d70
cmpq $0x0, -0x18(%rbp)
je 0x21797
movq -0x18(%rbp), %rdi
leaq 0x552d9(%rip), %rsi     # 0x76a6b
callq 0x8d70
jmp 0x21e6a
leaq -0x3c0(%rbp), %rdi
movq -0x20(%rbp), %rax
movzwl 0x88(%rax), %ecx
movl $0x80, %esi
leaq 0x552b4(%rip), %rdx     # 0x76a6e
movb $0x0, %al
callq 0x3090
movq -0x10(%rbp), %rdi
leaq -0x3c0(%rbp), %rsi
callq 0x8d70
cmpq $0x0, -0x18(%rbp)
je 0x217e8
movq -0x18(%rbp), %rdi
leaq 0x55288(%rip), %rsi     # 0x76a6b
callq 0x8d70
jmp 0x21e6a
leaq -0x440(%rbp), %rdi
movq -0x20(%rbp), %rax
movl 0x88(%rax), %ecx
movl $0x80, %esi
leaq 0x55264(%rip), %rdx     # 0x76a6e
movb $0x0, %al
callq 0x3090
movq -0x10(%rbp), %rdi
leaq -0x440(%rbp), %rsi
callq 0x8d70
cmpq $0x0, -0x18(%rbp)
je 0x21838
movq -0x18(%rbp), %rdi
leaq 0x55238(%rip), %rsi     # 0x76a6b
callq 0x8d70
jmp 0x21e6a
movq -0x20(%rbp), %rax
movq 0x88(%rax), %rax
movq %rax, -0x4c8(%rbp)
movabsq $0xffffffff, %rax       # imm = 0xFFFFFFFF
andq -0x4c8(%rbp), %rax
movl %eax, -0x4cc(%rbp)
leaq -0x4c0(%rbp), %rdi
movl -0x4cc(%rbp), %ecx
movl $0x80, %esi
leaq 0x551ef(%rip), %rdx     # 0x76a6e
movb $0x0, %al
callq 0x3090
movq -0x10(%rbp), %rdi
leaq -0x4c0(%rbp), %rsi
callq 0x8d70
cmpq $0x0, -0x18(%rbp)
je 0x218eb
movq -0x4c8(%rbp), %rax
shrq $0x20, %rax
movabsq $0xffffffff, %rcx       # imm = 0xFFFFFFFF
andq %rcx, %rax
movl %eax, -0x4d0(%rbp)
leaq -0x4c0(%rbp), %rdi
movl -0x4d0(%rbp), %ecx
movl $0x80, %esi
leaq 0x5519a(%rip), %rdx     # 0x76a6e
movb $0x0, %al
callq 0x3090
movq -0x18(%rbp), %rdi
leaq -0x4c0(%rbp), %rsi
callq 0x8d70
jmp 0x21e6a
movq -0x20(%rbp), %rax
movss 0x88(%rax), %xmm0
movss %xmm0, -0x554(%rbp)
movl -0x554(%rbp), %eax
movl %eax, -0x558(%rbp)
leaq -0x550(%rbp), %rdi
movl -0x558(%rbp), %ecx
movl $0x80, %esi
leaq 0x55145(%rip), %rdx     # 0x76a6e
movb $0x0, %al
callq 0x3090
movq -0x10(%rbp), %rdi
leaq -0x550(%rbp), %rsi
callq 0x8d70
cmpq $0x0, -0x18(%rbp)
je 0x21957
movq -0x18(%rbp), %rdi
leaq 0x55119(%rip), %rsi     # 0x76a6b
callq 0x8d70
jmp 0x21e6a
movq -0x20(%rbp), %rax
movsd 0x88(%rax), %xmm0
movsd %xmm0, -0x5e8(%rbp)
movq -0x5e8(%rbp), %rax
movq %rax, -0x5f0(%rbp)
movabsq $0xffffffff, %rax       # imm = 0xFFFFFFFF
andq -0x5f0(%rbp), %rax
movl %eax, -0x5f4(%rbp)
leaq -0x5e0(%rbp), %rdi
movl -0x5f4(%rbp), %ecx
movl $0x80, %esi
leaq 0x550c0(%rip), %rdx     # 0x76a6e
movb $0x0, %al
callq 0x3090
movq -0x10(%rbp), %rdi
leaq -0x5e0(%rbp), %rsi
callq 0x8d70
cmpq $0x0, -0x18(%rbp)
je 0x21a1a
movq -0x5f0(%rbp), %rax
shrq $0x20, %rax
movabsq $0xffffffff, %rcx       # imm = 0xFFFFFFFF
andq %rcx, %rax
movl %eax, -0x5f8(%rbp)
leaq -0x5e0(%rbp), %rdi
movl -0x5f8(%rbp), %ecx
movl $0x80, %esi
leaq 0x5506b(%rip), %rdx     # 0x76a6e
movb $0x0, %al
callq 0x3090
movq -0x18(%rbp), %rdi
leaq -0x5e0(%rbp), %rsi
callq 0x8d70
jmp 0x21e6a
movq -0x20(%rbp), %rax
testb $0x1, 0x72(%rax)
je 0x21deb
movq -0x20(%rbp), %rax
addq $0x60, %rax
addq $0x18, %rax
movq %rax, -0x600(%rbp)
movq -0x20(%rbp), %rax
movq 0x88(%rax), %rax
movq %rax, -0x608(%rbp)
leaq -0x618(%rbp), %rdi
callq 0x8c90
movq -0x8(%rbp), %rdi
movq -0x600(%rbp), %rax
movq (%rax), %rdx
movq -0x600(%rbp), %rax
movq 0x8(%rax), %rcx
leaq -0x618(%rbp), %rsi
callq 0x115b0
movl %eax, -0x61c(%rbp)
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movq %rax, -0x628(%rbp)
cmpq $0x0, -0x628(%rbp)
je 0x21aa4
jmp 0x21ac3
leaq 0x54a93(%rip), %rdi     # 0x7653e
leaq 0x53e46(%rip), %rsi     # 0x758f8
movl $0xc9f, %edx            # imm = 0xC9F
leaq 0x54f2c(%rip), %rcx     # 0x769ea
callq 0x30a0
movq -0x628(%rbp), %rax
movq 0x58(%rax), %rax
movq %rax, -0x630(%rbp)
cmpq $0x0, -0x630(%rbp)
je 0x21ae1
jmp 0x21b00
leaq 0x54a66(%rip), %rdi     # 0x7654e
leaq 0x53e09(%rip), %rsi     # 0x758f8
movl $0xca1, %edx            # imm = 0xCA1
leaq 0x54eef(%rip), %rcx     # 0x769ea
callq 0x30a0
movq -0x630(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
movq -0x630(%rbp), %rax
movq 0x10(%rax), %rax
movl 0x4(%rax), %edx
leaq -0x640(%rbp), %rdi
callq 0x8ee0
leaq -0x650(%rbp), %rdi
callq 0x8c90
cmpq $0x0, -0x610(%rbp)
jne 0x21b4f
leaq 0x543f9(%rip), %rax     # 0x75f3f
movq %rax, -0x708(%rbp)
jmp 0x21b5d
movq -0x610(%rbp), %rax
movq %rax, -0x708(%rbp)
movq -0x708(%rbp), %rax
movq %rax, -0x710(%rbp)
cmpq $0x0, -0x638(%rbp)
jne 0x21b85
leaq 0x543c3(%rip), %rax     # 0x75f3f
movq %rax, -0x718(%rbp)
jmp 0x21b93
movq -0x638(%rbp), %rax
movq %rax, -0x718(%rbp)
movq -0x710(%rbp), %rdx
movq -0x718(%rbp), %r8
leaq -0x650(%rbp), %rdi
leaq 0x54cd4(%rip), %rsi     # 0x76883
leaq 0x54654(%rip), %rcx     # 0x7620a
movb $0x0, %al
callq 0x94d0
movq -0x8(%rbp), %rdi
callq 0x20ea0
leaq -0x660(%rbp), %rdi
callq 0x8c90
movq -0x8(%rbp), %rax
movq %rax, -0x720(%rbp)
cmpq $0x0, -0x648(%rbp)
jne 0x21bf7
leaq 0x54351(%rip), %rax     # 0x75f3f
movq %rax, -0x728(%rbp)
jmp 0x21c05
movq -0x648(%rbp), %rax
movq %rax, -0x728(%rbp)
movq -0x720(%rbp), %rdi
movq -0x728(%rbp), %rcx
leaq -0x660(%rbp), %rsi
leaq 0x545f3(%rip), %rdx     # 0x76214
callq 0x10e00
movq -0x8(%rbp), %rax
movq %rax, -0x740(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x738(%rbp)
movq -0x8(%rbp), %rdi
movl -0x24(%rbp), %edx
movl $0x4, %esi
leaq 0x53ca5(%rip), %rcx     # 0x758f8
movl $0xcc2, %r8d            # imm = 0xCC2
callq 0x20d10
movq %rax, -0x730(%rbp)
cmpq $0x0, -0x658(%rbp)
jne 0x21c7f
leaq 0x542c9(%rip), %rax     # 0x75f3f
movq %rax, -0x748(%rbp)
jmp 0x21c8d
movq -0x658(%rbp), %rax
movq %rax, -0x748(%rbp)
movq -0x730(%rbp), %rdx
movq -0x738(%rbp), %rsi
movq -0x740(%rbp), %rdi
movq -0x748(%rbp), %rcx
callq 0x21370
leaq -0x670(%rbp), %rdi
callq 0x8c90
movq -0x8(%rbp), %rdi
movq -0x608(%rbp), %rdx
leaq -0x670(%rbp), %rsi
callq 0x21e80
movq -0x8(%rbp), %rax
movq %rax, -0x760(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x758(%rbp)
movq -0x8(%rbp), %rdi
movl -0x24(%rbp), %edx
movl $0x4, %esi
leaq 0x53bfa(%rip), %rcx     # 0x758f8
movl $0xccd, %r8d            # imm = 0xCCD
callq 0x20d10
movq %rax, -0x750(%rbp)
cmpq $0x0, -0x668(%rbp)
jne 0x21d2a
leaq 0x5421e(%rip), %rax     # 0x75f3f
movq %rax, -0x768(%rbp)
jmp 0x21d38
movq -0x668(%rbp), %rax
movq %rax, -0x768(%rbp)
movq -0x750(%rbp), %rcx
movq -0x758(%rbp), %rsi
movq -0x760(%rbp), %rdi
movq -0x768(%rbp), %r8
movl $0x10, %edx
callq 0x21eb0
leaq -0x670(%rbp), %rdi
callq 0x9310
movq -0x10(%rbp), %rax
movq %rax, -0x770(%rbp)
movq -0x8(%rbp), %rdi
movl -0x24(%rbp), %edx
movl $0x4, %esi
leaq 0x53b70(%rip), %rcx     # 0x758f8
movl $0xcd4, %r8d            # imm = 0xCD4
callq 0x20d10
movq -0x770(%rbp), %rdi
movq %rax, %rsi
callq 0x8d70
cmpq $0x0, -0x18(%rbp)
je 0x21db9
movq -0x18(%rbp), %rdi
leaq 0x54cb7(%rip), %rsi     # 0x76a6b
callq 0x8d70
leaq -0x618(%rbp), %rdi
callq 0x9310
leaq -0x640(%rbp), %rdi
callq 0x9310
leaq -0x650(%rbp), %rdi
callq 0x9310
leaq -0x660(%rbp), %rdi
callq 0x9310
jmp 0x21e49
movq -0x20(%rbp), %rax
movq 0x88(%rax), %rax
movq %rax, -0x6f8(%rbp)
leaq -0x6f0(%rbp), %rdi
movq -0x6f8(%rbp), %rax
movl %eax, %ecx
movl $0x80, %esi
leaq 0x54c55(%rip), %rdx     # 0x76a6e
movb $0x0, %al
callq 0x3090
movq -0x10(%rbp), %rdi
leaq -0x6f0(%rbp), %rsi
callq 0x8d70
cmpq $0x0, -0x18(%rbp)
je 0x21e47
movq -0x18(%rbp), %rdi
leaq 0x54c29(%rip), %rsi     # 0x76a6b
callq 0x8d70
jmp 0x21e49
jmp 0x21e6a
leaq 0x51608(%rip), %rdi     # 0x7345a
leaq 0x53a9f(%rip), %rsi     # 0x758f8
movl $0xced, %edx            # imm = 0xCED
leaq 0x54b85(%rip), %rcx     # 0x769ea
callq 0x30a0
addq $0x770, %rsp            # imm = 0x770
popq %rbp
retq
nopw %cs:(%rax,%rax)