// File: /workspace/github_c_makefile_star2_O0/Ihsoh[P]ilang/compiler/frontend/semantics.c
// Function: calc_binary_constexpr
static void _calc_binary_constexpr(
	ParserContext *ctx,
	uint32_t expr_node_type,
	ParserASTNode *target,
	ParserASTNode *source1,
	ParserASTNode *source2
) {
	assert(ctx);
	assert(target);
	assert(source1);
	assert(FE_IS_EXPR_NODE(source1->type));
	assert(FE_EXPR_AST_NODE_GET_CONSTANT(source1));
	assert(source2);
	assert(FE_IS_EXPR_NODE(source2->type));
	assert(FE_EXPR_AST_NODE_GET_CONSTANT(source2));

	uint8_t target_type = FE_EXPR_AST_NODE_GET_TYPE(target);
	uint8_t source1_type = FE_EXPR_AST_NODE_GET_TYPE(source1);
	uint8_t source1_constant_type = FE_EXPR_AST_NODE_GET_CONSTANT_TYPE(source1);
	uint8_t source2_type = FE_EXPR_AST_NODE_GET_TYPE(source2);
	uint8_t source2_constant_type = FE_EXPR_AST_NODE_GET_CONSTANT_TYPE(source2);

	#define	_A(op)	\
		switch (source_type) {	\
			case FE_TYPE_INT64: {	\
				int64_t result = _get_constexpr_int64(ctx, source1) op _get_constexpr_int64(ctx, source2);	\
				_set_constexpr_int64(ctx, target, target_type, result);	\
				break;	\
			}	\
			case FE_TYPE_UINT64: {	\
				uint64_t result = _get_constexpr_uint64(ctx, source1) op _get_constexpr_uint64(ctx, source2);	\
				_set_constexpr_uint64(ctx, target, target_type, result);	\
				break;	\
			}	\
			case FE_TYPE_FLOAT: {	\
				float result = _get_constexpr_float(ctx, source1) op _get_constexpr_float(ctx, source2);	\
				_set_constexpr_float(ctx, target, target_type, result);	\
				break;	\
			}	\
			case FE_TYPE_DOUBLE: {	\
				double result = _get_constexpr_double(ctx, source1) op _get_constexpr_double(ctx, source2);	\
				_set_constexpr_double(ctx, target, target_type, result);	\
				break;	\
			}	\
			default: {	\
				assert(0);	\
				break;	\
			}	\
		}

	#define	_B(type, op)	\
		case type: {	\
			uint8_t source_type = _get_binary_constexpr_type(ctx, source1, source2);	\
			_A(op)	\
			break;	\
		}

	#define	_A1(op)	\
		switch (source_type) {	\
			case FE_TYPE_INT64: {	\
				int64_t result = _get_constexpr_int64(ctx, source1) op _get_constexpr_int64(ctx, source2);	\
				_set_constexpr_int64(ctx, target, target_type, result);	\
				break;	\
			}	\
			case FE_TYPE_UINT64: {	\
				uint64_t result = _get_constexpr_uint64(ctx, source1) op _get_constexpr_uint64(ctx, source2);	\
				_set_constexpr_uint64(ctx, target, target_type, result);	\
				break;	\
			}	\
			default: {	\
				assert(0);	\
				break;	\
			}	\
		}
	
	#define	_B1(type, op)	\
		case type: {	\
			uint8_t source_type = _get_binary_constexpr_type(ctx, source1, source2);	\
			_A1(op)	\
			break;	\
		}

	switch (expr_node_type) {
		_B(FE_NODE_EXPR_MUL, *)
		_B(FE_NODE_EXPR_DIV, /)
		case FE_NODE_EXPR_MOD: {
			uint8_t source_type = _get_binary_constexpr_type(ctx, source1, source2);
			switch (source_type) {
				case FE_TYPE_INT64: {
					int64_t result = _get_constexpr_int64(ctx, source1) % _get_constexpr_int64(ctx, source2);
					_set_constexpr_int64(ctx, target, target_type, result);
					break;
				}
				case FE_TYPE_UINT64: {
					uint64_t result = _get_constexpr_uint64(ctx, source1) % _get_constexpr_uint64(ctx, source2);
					_set_constexpr_uint64(ctx, target, target_type, result);
					break;
				}
				default: {
					assert(0);
					break;
				}
			}
			break;
		}
		case FE_NODE_EXPR_ADD: {
			if (source1_type == FE_TYPE_POINTER) {
				size_t increment_size = _calc_pointer_type_increment_size(
					ctx,
					source1,
					FE_EXPR_AST_NODE_GET_TYPE_NODE(source1)
				);
				uint64_t source1_value = FE_EXPR_AST_NODE_GET_CONSTEXPR_RESULT_POINTER_VAL(source1);
				if (_is_signed_type(source2_type)) {
					int64_t source2_value = _get_constexpr_int64(ctx, source2);
					FE_EXPR_AST_NODE_SET_CONSTEXPR_RESULT_POINTER_VAL(
						target,
						source1_value + increment_size * source2_value
					);
				} else if (_is_unsigned_type(source2_type)) {
					uint64_t source2_value = _get_constexpr_uint64(ctx, source2);
					FE_EXPR_AST_NODE_SET_CONSTEXPR_RESULT_POINTER_VAL(
						target,
						source1_value + increment_size * source2_value
					);
				} else {
					assert(0);
				}
			} else if (source2_type == FE_TYPE_POINTER) {
				size_t increment_size = _calc_pointer_type_increment_size(
					ctx,
					source2,
					FE_EXPR_AST_NODE_GET_TYPE_NODE(source2)
				);
				uint64_t source2_value = FE_EXPR_AST_NODE_GET_CONSTEXPR_RESULT_POINTER_VAL(source2);
				if (_is_signed_type(source1_type)) {
					int64_t source1_value =  _get_constexpr_int64(ctx, source1);
					FE_EXPR_AST_NODE_SET_CONSTEXPR_RESULT_POINTER_VAL(
						target,
						source2_value + increment_size * source1_value
					);
				} else if (_is_unsigned_type(source1_type)) {
					uint64_t source1_value =  _get_constexpr_uint64(ctx, source1);
					FE_EXPR_AST_NODE_SET_CONSTEXPR_RESULT_POINTER_VAL(
						target,
						source2_value + increment_size * source1_value
					);
				} else {
					assert(0);
				}
			} else {
				uint8_t source_type = _get_binary_constexpr_type(ctx, source1, source2);
				_A(+)
			}
			break;
		}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x4d0, %rsp            # imm = 0x4D0
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
cmpq $0x0, -0x8(%rbp)
je 0x52e97
jmp 0x52eb6
leaq 0x296b8(%rip), %rdi     # 0x7c556
leaq 0x2b3a5(%rip), %rsi     # 0x7e24a
movl $0xa94, %edx            # imm = 0xA94
leaq 0x2c848(%rip), %rcx     # 0x7f6f9
callq 0x30a0
cmpq $0x0, -0x18(%rbp)
je 0x52ebf
jmp 0x52ede
leaq 0x2885c(%rip), %rdi     # 0x7b722
leaq 0x2b37d(%rip), %rsi     # 0x7e24a
movl $0xa95, %edx            # imm = 0xA95
leaq 0x2c820(%rip), %rcx     # 0x7f6f9
callq 0x30a0
cmpq $0x0, -0x20(%rbp)
je 0x52ee7
jmp 0x52f06
leaq 0x2c70c(%rip), %rdi     # 0x7f5fa
leaq 0x2b355(%rip), %rsi     # 0x7e24a
movl $0xa96, %edx            # imm = 0xA96
leaq 0x2c7f8(%rip), %rcx     # 0x7f6f9
callq 0x30a0
movq -0x20(%rbp), %rax
movl (%rax), %eax
andl $0xff00, %eax           # imm = 0xFF00
cmpl $0xe00, %eax            # imm = 0xE00
jne 0x52f1a
jmp 0x52f39
leaq 0x2c6e1(%rip), %rdi     # 0x7f602
leaq 0x2b322(%rip), %rsi     # 0x7e24a
movl $0xa97, %edx            # imm = 0xA97
leaq 0x2c7c5(%rip), %rcx     # 0x7f6f9
callq 0x30a0
movq -0x20(%rbp), %rax
testb $0x1, 0x70(%rax)
je 0x52f45
jmp 0x52f64
leaq 0x2c6d5(%rip), %rdi     # 0x7f621
leaq 0x2b2f7(%rip), %rsi     # 0x7e24a
movl $0xa98, %edx            # imm = 0xA98
leaq 0x2c79a(%rip), %rcx     # 0x7f6f9
callq 0x30a0
cmpq $0x0, -0x28(%rbp)
je 0x52f6d
jmp 0x52f8c
leaq 0x2c6d4(%rip), %rdi     # 0x7f648
leaq 0x2b2cf(%rip), %rsi     # 0x7e24a
movl $0xa99, %edx            # imm = 0xA99
leaq 0x2c772(%rip), %rcx     # 0x7f6f9
callq 0x30a0
movq -0x28(%rbp), %rax
movl (%rax), %eax
andl $0xff00, %eax           # imm = 0xFF00
cmpl $0xe00, %eax            # imm = 0xE00
jne 0x52fa0
jmp 0x52fbf
leaq 0x2c6a9(%rip), %rdi     # 0x7f650
leaq 0x2b29c(%rip), %rsi     # 0x7e24a
movl $0xa9a, %edx            # imm = 0xA9A
leaq 0x2c73f(%rip), %rcx     # 0x7f6f9
callq 0x30a0
movq -0x28(%rbp), %rax
testb $0x1, 0x70(%rax)
je 0x52fcb
jmp 0x52fea
leaq 0x2c69d(%rip), %rdi     # 0x7f66f
leaq 0x2b271(%rip), %rsi     # 0x7e24a
movl $0xa9b, %edx            # imm = 0xA9B
leaq 0x2c714(%rip), %rcx     # 0x7f6f9
callq 0x30a0
movq -0x18(%rbp), %rax
movb 0x60(%rax), %al
movb %al, -0x29(%rbp)
movq -0x20(%rbp), %rax
movb 0x60(%rax), %al
movb %al, -0x2a(%rbp)
movq -0x20(%rbp), %rax
movb 0x71(%rax), %al
movb %al, -0x2b(%rbp)
movq -0x28(%rbp), %rax
movb 0x60(%rax), %al
movb %al, -0x2c(%rbp)
movq -0x28(%rbp), %rax
movb 0x71(%rax), %al
movb %al, -0x2d(%rbp)
movl -0xc(%rbp), %eax
addl $0xfffff1e0, %eax       # imm = 0xFFFFF1E0
movl %eax, %ecx
movq %rcx, -0x2d0(%rbp)
subl $0x92, %eax
ja 0x54dd9
movq -0x2d0(%rbp), %rax
leaq 0x2a812(%rip), %rcx     # 0x7d858
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x5b5a0
movb %al, -0x2e(%rbp)
movzbl -0x2e(%rbp), %eax
addl $-0x5, %eax
movl %eax, %ecx
movq %rcx, -0x2d8(%rbp)
subl $0x6, %eax
ja 0x531d1
movq -0x2d8(%rbp), %rax
leaq 0x2ab16(%rip), %rcx     # 0x7dba0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5b3a0
movq %rax, -0x2e0(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5b3a0
movq %rax, %rcx
movq -0x2e0(%rbp), %rax
imulq %rcx, %rax
movq %rax, -0x38(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movq -0x38(%rbp), %rcx
movzbl %al, %edx
callq 0x5b830
jmp 0x531f0
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5ba40
movq %rax, -0x2e8(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5ba40
movq %rax, %rcx
movq -0x2e8(%rbp), %rax
imulq %rcx, %rax
movq %rax, -0x40(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movq -0x40(%rbp), %rcx
movzbl %al, %edx
callq 0x5bc90
jmp 0x531f0
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5bf00
movss %xmm0, -0x2ec(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5bf00
movaps %xmm0, %xmm1
movss -0x2ec(%rbp), %xmm0
mulss %xmm1, %xmm0
movss %xmm0, -0x44(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movss -0x44(%rbp), %xmm0
movzbl %al, %edx
callq 0x5c150
jmp 0x531f0
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5c190
movsd %xmm0, -0x2f8(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5c190
movaps %xmm0, %xmm1
movsd -0x2f8(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x50(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movsd -0x50(%rbp), %xmm0
movzbl %al, %edx
callq 0x5c3d0
jmp 0x531f0
leaq 0x1f283(%rip), %rdi     # 0x7245b
leaq 0x2b06b(%rip), %rsi     # 0x7e24a
movl $0xae0, %edx            # imm = 0xAE0
leaq 0x2c50e(%rip), %rcx     # 0x7f6f9
callq 0x30a0
jmp 0x54df8
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x5b5a0
movb %al, -0x51(%rbp)
movzbl -0x51(%rbp), %eax
addl $-0x5, %eax
movl %eax, %ecx
movq %rcx, -0x300(%rbp)
subl $0x6, %eax
ja 0x53379
movq -0x300(%rbp), %rax
leaq 0x2a954(%rip), %rcx     # 0x7db84
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5b3a0
movq %rax, -0x308(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5b3a0
movq %rax, %rcx
movq -0x308(%rbp), %rax
cqto
idivq %rcx
movq %rax, -0x60(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movq -0x60(%rbp), %rcx
movzbl %al, %edx
callq 0x5b830
jmp 0x53398
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5ba40
movq %rax, -0x310(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5ba40
movq %rax, %rcx
movq -0x310(%rbp), %rax
xorl %edx, %edx
divq %rcx
movq %rax, -0x68(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movq -0x68(%rbp), %rcx
movzbl %al, %edx
callq 0x5bc90
jmp 0x53398
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5bf00
movss %xmm0, -0x314(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5bf00
movaps %xmm0, %xmm1
movss -0x314(%rbp), %xmm0
divss %xmm1, %xmm0
movss %xmm0, -0x6c(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movss -0x6c(%rbp), %xmm0
movzbl %al, %edx
callq 0x5c150
jmp 0x53398
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5c190
movsd %xmm0, -0x320(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5c190
movaps %xmm0, %xmm1
movsd -0x320(%rbp), %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, -0x78(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movsd -0x78(%rbp), %xmm0
movzbl %al, %edx
callq 0x5c3d0
jmp 0x53398
leaq 0x1f0db(%rip), %rdi     # 0x7245b
leaq 0x2aec3(%rip), %rsi     # 0x7e24a
movl $0xae1, %edx            # imm = 0xAE1
leaq 0x2c366(%rip), %rcx     # 0x7f6f9
callq 0x30a0
jmp 0x54df8
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x5b5a0
movb %al, -0x79(%rbp)
movzbl -0x79(%rbp), %eax
movl %eax, -0x324(%rbp)
subl $0x5, %eax
je 0x533d2
jmp 0x533c2
movl -0x324(%rbp), %eax
subl $0x9, %eax
je 0x53425
jmp 0x53478
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5b3a0
movq %rax, -0x330(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5b3a0
movq %rax, %rcx
movq -0x330(%rbp), %rax
cqto
idivq %rcx
movq %rdx, -0x88(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movq -0x88(%rbp), %rcx
movzbl %al, %edx
callq 0x5b830
jmp 0x53497
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5ba40
movq %rax, -0x338(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5ba40
movq %rax, %rcx
movq -0x338(%rbp), %rax
xorl %edx, %edx
divq %rcx
movq %rdx, -0x90(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movq -0x90(%rbp), %rcx
movzbl %al, %edx
callq 0x5bc90
jmp 0x53497
leaq 0x1efdc(%rip), %rdi     # 0x7245b
leaq 0x2adc4(%rip), %rsi     # 0x7e24a
movl $0xaf0, %edx            # imm = 0xAF0
leaq 0x2c267(%rip), %rcx     # 0x7f6f9
callq 0x30a0
jmp 0x54df8
movzbl -0x2a(%rbp), %eax
cmpl $0x10, %eax
jne 0x5359f
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x20(%rbp), %rax
movq 0x68(%rax), %rdx
callq 0x5c650
movq %rax, -0x98(%rbp)
movq -0x20(%rbp), %rax
movq 0x88(%rax), %rax
movq %rax, -0xa0(%rbp)
movzbl -0x2c(%rbp), %edi
callq 0x4d330
testb $0x1, %al
jne 0x534e6
jmp 0x53528
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5b3a0
movq %rax, -0xa8(%rbp)
movq -0xa0(%rbp), %rcx
movq -0x98(%rbp), %rax
imulq -0xa8(%rbp), %rax
addq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x88(%rax)
movq -0x18(%rbp), %rax
movb $0x10, 0x71(%rax)
jmp 0x5359a
movzbl -0x2c(%rbp), %edi
callq 0x4d380
testb $0x1, %al
jne 0x53537
jmp 0x53579
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5ba40
movq %rax, -0xb0(%rbp)
movq -0xa0(%rbp), %rcx
movq -0x98(%rbp), %rax
imulq -0xb0(%rbp), %rax
addq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x88(%rax)
movq -0x18(%rbp), %rax
movb $0x10, 0x71(%rax)
jmp 0x53598
leaq 0x1eedb(%rip), %rdi     # 0x7245b
leaq 0x2acc3(%rip), %rsi     # 0x7e24a
movl $0xb0b, %edx            # imm = 0xB0B
leaq 0x2c166(%rip), %rcx     # 0x7f6f9
callq 0x30a0
jmp 0x5359a
jmp 0x53863
movzbl -0x2c(%rbp), %eax
cmpl $0x10, %eax
jne 0x536a2
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
movq -0x28(%rbp), %rax
movq 0x68(%rax), %rdx
callq 0x5c650
movq %rax, -0xb8(%rbp)
movq -0x28(%rbp), %rax
movq 0x88(%rax), %rax
movq %rax, -0xc0(%rbp)
movzbl -0x2a(%rbp), %edi
callq 0x4d330
testb $0x1, %al
jne 0x535e9
jmp 0x5362b
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5b3a0
movq %rax, -0xc8(%rbp)
movq -0xc0(%rbp), %rcx
movq -0xb8(%rbp), %rax
imulq -0xc8(%rbp), %rax
addq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x88(%rax)
movq -0x18(%rbp), %rax
movb $0x10, 0x71(%rax)
jmp 0x5369d
movzbl -0x2a(%rbp), %edi
callq 0x4d380
testb $0x1, %al
jne 0x5363a
jmp 0x5367c
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5ba40
movq %rax, -0xd0(%rbp)
movq -0xc0(%rbp), %rcx
movq -0xb8(%rbp), %rax
imulq -0xd0(%rbp), %rax
addq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x88(%rax)
movq -0x18(%rbp), %rax
movb $0x10, 0x71(%rax)
jmp 0x5369b
leaq 0x1edd8(%rip), %rdi     # 0x7245b
leaq 0x2abc0(%rip), %rsi     # 0x7e24a
movl $0xb21, %edx            # imm = 0xB21
leaq 0x2c063(%rip), %rcx     # 0x7f6f9
callq 0x30a0
jmp 0x5369d
jmp 0x53861
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x5b5a0
movb %al, -0xd1(%rbp)
movzbl -0xd1(%rbp), %eax
addl $-0x5, %eax
movl %eax, %ecx
movq %rcx, -0x340(%rbp)
subl $0x6, %eax
ja 0x53840
movq -0x340(%rbp), %rax
leaq 0x2a485(%rip), %rcx     # 0x7db68
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5b3a0
movq %rax, -0x348(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5b3a0
movq %rax, %rcx
movq -0x348(%rbp), %rax
addq %rcx, %rax
movq %rax, -0xe0(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movq -0xe0(%rbp), %rcx
movzbl %al, %edx
callq 0x5b830
jmp 0x5385f
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5ba40
movq %rax, -0x350(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5ba40
movq %rax, %rcx
movq -0x350(%rbp), %rax
addq %rcx, %rax
movq %rax, -0xe8(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movq -0xe8(%rbp), %rcx
movzbl %al, %edx
callq 0x5bc90
jmp 0x5385f
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5bf00
movss %xmm0, -0x354(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5bf00
movaps %xmm0, %xmm1
movss -0x354(%rbp), %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0xec(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movss -0xec(%rbp), %xmm0
movzbl %al, %edx
callq 0x5c150
jmp 0x5385f
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5c190
movsd %xmm0, -0x360(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5c190
movaps %xmm0, %xmm1
movsd -0x360(%rbp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0xf8(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movsd -0xf8(%rbp), %xmm0
movzbl %al, %edx
callq 0x5c3d0
jmp 0x5385f
leaq 0x1ec14(%rip), %rdi     # 0x7245b
leaq 0x2a9fc(%rip), %rsi     # 0x7e24a
movl $0xb25, %edx            # imm = 0xB25
leaq 0x2be9f(%rip), %rcx     # 0x7f6f9
callq 0x30a0
jmp 0x53861
jmp 0x53863
jmp 0x54df8
movzbl -0x2a(%rbp), %eax
cmpl $0x10, %eax
jne 0x5396b
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x20(%rbp), %rax
movq 0x68(%rax), %rdx
callq 0x5c650
movq %rax, -0x100(%rbp)
movq -0x20(%rbp), %rax
movq 0x88(%rax), %rax
movq %rax, -0x108(%rbp)
movzbl -0x2c(%rbp), %edi
callq 0x4d330
testb $0x1, %al
jne 0x538b2
jmp 0x538f4
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5b3a0
movq %rax, -0x110(%rbp)
movq -0x108(%rbp), %rcx
movq -0x100(%rbp), %rax
imulq -0x110(%rbp), %rax
subq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x88(%rax)
movq -0x18(%rbp), %rax
movb $0x10, 0x71(%rax)
jmp 0x53966
movzbl -0x2c(%rbp), %edi
callq 0x4d380
testb $0x1, %al
jne 0x53903
jmp 0x53945
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5ba40
movq %rax, -0x118(%rbp)
movq -0x108(%rbp), %rcx
movq -0x100(%rbp), %rax
imulq -0x118(%rbp), %rax
subq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x88(%rax)
movq -0x18(%rbp), %rax
movb $0x10, 0x71(%rax)
jmp 0x53964
leaq 0x1eb0f(%rip), %rdi     # 0x7245b
leaq 0x2a8f7(%rip), %rsi     # 0x7e24a
movl $0xb3e, %edx            # imm = 0xB3E
leaq 0x2bd9a(%rip), %rcx     # 0x7f6f9
callq 0x30a0
jmp 0x53966
jmp 0x53b2a
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x5b5a0
movb %al, -0x119(%rbp)
movzbl -0x119(%rbp), %eax
addl $-0x5, %eax
movl %eax, %ecx
movq %rcx, -0x368(%rbp)
subl $0x6, %eax
ja 0x53b09
movq -0x368(%rbp), %rax
leaq 0x2a1a0(%rip), %rcx     # 0x7db4c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5b3a0
movq %rax, -0x370(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5b3a0
movq %rax, %rcx
movq -0x370(%rbp), %rax
subq %rcx, %rax
movq %rax, -0x128(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movq -0x128(%rbp), %rcx
movzbl %al, %edx
callq 0x5b830
jmp 0x53b28
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5ba40
movq %rax, -0x378(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5ba40
movq %rax, %rcx
movq -0x378(%rbp), %rax
subq %rcx, %rax
movq %rax, -0x130(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movq -0x130(%rbp), %rcx
movzbl %al, %edx
callq 0x5bc90
jmp 0x53b28
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5bf00
movss %xmm0, -0x37c(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5bf00
movaps %xmm0, %xmm1
movss -0x37c(%rbp), %xmm0
subss %xmm1, %xmm0
movss %xmm0, -0x134(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movss -0x134(%rbp), %xmm0
movzbl %al, %edx
callq 0x5c150
jmp 0x53b28
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5c190
movsd %xmm0, -0x388(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5c190
movaps %xmm0, %xmm1
movsd -0x388(%rbp), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, -0x140(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movsd -0x140(%rbp), %xmm0
movzbl %al, %edx
callq 0x5c3d0
jmp 0x53b28
leaq 0x1e94b(%rip), %rdi     # 0x7245b
leaq 0x2a733(%rip), %rsi     # 0x7e24a
movl $0xb42, %edx            # imm = 0xB42
leaq 0x2bbd6(%rip), %rcx     # 0x7f6f9
callq 0x30a0
jmp 0x53b2a
jmp 0x54df8
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x5b5a0
movb %al, -0x141(%rbp)
movzbl -0x141(%rbp), %eax
addl $-0x5, %eax
movl %eax, %ecx
movq %rcx, -0x390(%rbp)
subl $0x6, %eax
ja 0x53cf2
movq -0x390(%rbp), %rax
leaq 0x29fc0(%rip), %rcx     # 0x7db30
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5b3a0
movq %rax, -0x398(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5b3a0
movq %rax, %rcx
movq -0x398(%rbp), %rax
cmpq %rcx, %rax
setl %al
andb $0x1, %al
movzbl %al, %eax
cltq
movq %rax, -0x150(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movq -0x150(%rbp), %rcx
movzbl %al, %edx
callq 0x5b830
jmp 0x53d11
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5ba40
movq %rax, -0x3a0(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5ba40
movq %rax, %rcx
movq -0x3a0(%rbp), %rax
cmpq %rcx, %rax
setb %al
andb $0x1, %al
movzbl %al, %eax
cltq
movq %rax, -0x158(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movq -0x158(%rbp), %rcx
movzbl %al, %edx
callq 0x5bc90
jmp 0x53d11
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5bf00
movss %xmm0, -0x3a4(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5bf00
movss -0x3a4(%rbp), %xmm1
ucomiss %xmm1, %xmm0
seta %al
andb $0x1, %al
movzbl %al, %eax
cvtsi2ss %eax, %xmm0
movss %xmm0, -0x15c(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movss -0x15c(%rbp), %xmm0
movzbl %al, %edx
callq 0x5c150
jmp 0x53d11
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5c190
movsd %xmm0, -0x3b0(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5c190
movsd -0x3b0(%rbp), %xmm1
ucomisd %xmm1, %xmm0
seta %al
andb $0x1, %al
movzbl %al, %eax
cvtsi2sd %eax, %xmm0
movsd %xmm0, -0x168(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movsd -0x168(%rbp), %xmm0
movzbl %al, %edx
callq 0x5c3d0
jmp 0x53d11
leaq 0x1e762(%rip), %rdi     # 0x7245b
leaq 0x2a54a(%rip), %rsi     # 0x7e24a
movl $0xb46, %edx            # imm = 0xB46
leaq 0x2b9ed(%rip), %rcx     # 0x7f6f9
callq 0x30a0
jmp 0x54df8
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x5b5a0
movb %al, -0x169(%rbp)
movzbl -0x169(%rbp), %eax
addl $-0x5, %eax
movl %eax, %ecx
movq %rcx, -0x3b8(%rbp)
subl $0x6, %eax
ja 0x53ed9
movq -0x3b8(%rbp), %rax
leaq 0x29dbd(%rip), %rcx     # 0x7db14
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5b3a0
movq %rax, -0x3c0(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5b3a0
movq %rax, %rcx
movq -0x3c0(%rbp), %rax
cmpq %rcx, %rax
setle %al
andb $0x1, %al
movzbl %al, %eax
cltq
movq %rax, -0x178(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movq -0x178(%rbp), %rcx
movzbl %al, %edx
callq 0x5b830
jmp 0x53ef8
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5ba40
movq %rax, -0x3c8(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5ba40
movq %rax, %rcx
movq -0x3c8(%rbp), %rax
cmpq %rcx, %rax
setbe %al
andb $0x1, %al
movzbl %al, %eax
cltq
movq %rax, -0x180(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movq -0x180(%rbp), %rcx
movzbl %al, %edx
callq 0x5bc90
jmp 0x53ef8
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5bf00
movss %xmm0, -0x3cc(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5bf00
movss -0x3cc(%rbp), %xmm1
ucomiss %xmm1, %xmm0
setae %al
andb $0x1, %al
movzbl %al, %eax
cvtsi2ss %eax, %xmm0
movss %xmm0, -0x184(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movss -0x184(%rbp), %xmm0
movzbl %al, %edx
callq 0x5c150
jmp 0x53ef8
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5c190
movsd %xmm0, -0x3d8(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5c190
movsd -0x3d8(%rbp), %xmm1
ucomisd %xmm1, %xmm0
setae %al
andb $0x1, %al
movzbl %al, %eax
cvtsi2sd %eax, %xmm0
movsd %xmm0, -0x190(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movsd -0x190(%rbp), %xmm0
movzbl %al, %edx
callq 0x5c3d0
jmp 0x53ef8
leaq 0x1e57b(%rip), %rdi     # 0x7245b
leaq 0x2a363(%rip), %rsi     # 0x7e24a
movl $0xb47, %edx            # imm = 0xB47
leaq 0x2b806(%rip), %rcx     # 0x7f6f9
callq 0x30a0
jmp 0x54df8
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x5b5a0
movb %al, -0x191(%rbp)
movzbl -0x191(%rbp), %eax
addl $-0x5, %eax
movl %eax, %ecx
movq %rcx, -0x3e0(%rbp)
subl $0x6, %eax
ja 0x540c9
movq -0x3e0(%rbp), %rax
leaq 0x29bba(%rip), %rcx     # 0x7daf8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5b3a0
movq %rax, -0x3e8(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5b3a0
movq %rax, %rcx
movq -0x3e8(%rbp), %rax
cmpq %rcx, %rax
setg %al
andb $0x1, %al
movzbl %al, %eax
cltq
movq %rax, -0x1a0(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movq -0x1a0(%rbp), %rcx
movzbl %al, %edx
callq 0x5b830
jmp 0x540e8
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5ba40
movq %rax, -0x3f0(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5ba40
movq %rax, %rcx
movq -0x3f0(%rbp), %rax
cmpq %rcx, %rax
seta %al
andb $0x1, %al
movzbl %al, %eax
cltq
movq %rax, -0x1a8(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movq -0x1a8(%rbp), %rcx
movzbl %al, %edx
callq 0x5bc90
jmp 0x540e8
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5bf00
movss %xmm0, -0x3f4(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5bf00
movaps %xmm0, %xmm1
movss -0x3f4(%rbp), %xmm0
ucomiss %xmm1, %xmm0
seta %al
andb $0x1, %al
movzbl %al, %eax
cvtsi2ss %eax, %xmm0
movss %xmm0, -0x1ac(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movss -0x1ac(%rbp), %xmm0
movzbl %al, %edx
callq 0x5c150
jmp 0x540e8
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5c190
movsd %xmm0, -0x400(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5c190
movaps %xmm0, %xmm1
movsd -0x400(%rbp), %xmm0
ucomisd %xmm1, %xmm0
seta %al
andb $0x1, %al
movzbl %al, %eax
cvtsi2sd %eax, %xmm0
movsd %xmm0, -0x1b8(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movsd -0x1b8(%rbp), %xmm0
movzbl %al, %edx
callq 0x5c3d0
jmp 0x540e8
leaq 0x1e38b(%rip), %rdi     # 0x7245b
leaq 0x2a173(%rip), %rsi     # 0x7e24a
movl $0xb48, %edx            # imm = 0xB48
leaq 0x2b616(%rip), %rcx     # 0x7f6f9
callq 0x30a0
jmp 0x54df8
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x5b5a0
movb %al, -0x1b9(%rbp)
movzbl -0x1b9(%rbp), %eax
addl $-0x5, %eax
movl %eax, %ecx
movq %rcx, -0x408(%rbp)
subl $0x6, %eax
ja 0x542b9
movq -0x408(%rbp), %rax
leaq 0x299ae(%rip), %rcx     # 0x7dadc
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5b3a0
movq %rax, -0x410(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5b3a0
movq %rax, %rcx
movq -0x410(%rbp), %rax
cmpq %rcx, %rax
setge %al
andb $0x1, %al
movzbl %al, %eax
cltq
movq %rax, -0x1c8(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movq -0x1c8(%rbp), %rcx
movzbl %al, %edx
callq 0x5b830
jmp 0x542d8
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5ba40
movq %rax, -0x418(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5ba40
movq %rax, %rcx
movq -0x418(%rbp), %rax
cmpq %rcx, %rax
setae %al
andb $0x1, %al
movzbl %al, %eax
cltq
movq %rax, -0x1d0(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movq -0x1d0(%rbp), %rcx
movzbl %al, %edx
callq 0x5bc90
jmp 0x542d8
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5bf00
movss %xmm0, -0x41c(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5bf00
movaps %xmm0, %xmm1
movss -0x41c(%rbp), %xmm0
ucomiss %xmm1, %xmm0
setae %al
andb $0x1, %al
movzbl %al, %eax
cvtsi2ss %eax, %xmm0
movss %xmm0, -0x1d4(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movss -0x1d4(%rbp), %xmm0
movzbl %al, %edx
callq 0x5c150
jmp 0x542d8
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5c190
movsd %xmm0, -0x428(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5c190
movaps %xmm0, %xmm1
movsd -0x428(%rbp), %xmm0
ucomisd %xmm1, %xmm0
setae %al
andb $0x1, %al
movzbl %al, %eax
cvtsi2sd %eax, %xmm0
movsd %xmm0, -0x1e0(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movsd -0x1e0(%rbp), %xmm0
movzbl %al, %edx
callq 0x5c3d0
jmp 0x542d8
leaq 0x1e19b(%rip), %rdi     # 0x7245b
leaq 0x29f83(%rip), %rsi     # 0x7e24a
movl $0xb49, %edx            # imm = 0xB49
leaq 0x2b426(%rip), %rcx     # 0x7f6f9
callq 0x30a0
jmp 0x54df8
movzbl -0x2a(%rbp), %eax
cmpl $0x10, %eax
jne 0x543ad
movzbl -0x2c(%rbp), %eax
cmpl $0x10, %eax
jne 0x543ad
movq -0x20(%rbp), %rax
movq 0x88(%rax), %rax
movq %rax, -0x1e8(%rbp)
movq -0x28(%rbp), %rax
movq 0x88(%rax), %rax
movq %rax, -0x1f0(%rbp)
movq -0x8(%rbp), %rax
cmpl $0x1, 0x30(%rax)
jne 0x5434f
movq -0x1e8(%rbp), %rax
cmpq -0x1f0(%rbp), %rax
sete %al
andb $0x1, %al
movzbl %al, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x88(%rax)
movq -0x18(%rbp), %rax
movb $0x4, 0x71(%rax)
jmp 0x543a8
movq -0x8(%rbp), %rax
cmpl $0x2, 0x30(%rax)
jne 0x54387
movq -0x1e8(%rbp), %rax
cmpq -0x1f0(%rbp), %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
movslq %eax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x88(%rax)
movq -0x18(%rbp), %rax
movb $0x5, 0x71(%rax)
jmp 0x543a6
leaq 0x1e0cd(%rip), %rdi     # 0x7245b
leaq 0x29eb5(%rip), %rsi     # 0x7e24a
movl $0xb54, %edx            # imm = 0xB54
leaq 0x2b358(%rip), %rcx     # 0x7f6f9
callq 0x30a0
jmp 0x543a8
jmp 0x545a4
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x5b5a0
movb %al, -0x1f1(%rbp)
movzbl -0x1f1(%rbp), %eax
addl $-0x5, %eax
movl %eax, %ecx
movq %rcx, -0x430(%rbp)
subl $0x6, %eax
ja 0x54583
movq -0x430(%rbp), %rax
leaq 0x296d2(%rip), %rcx     # 0x7dac0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5b3a0
movq %rax, -0x438(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5b3a0
movq %rax, %rcx
movq -0x438(%rbp), %rax
cmpq %rcx, %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
movq %rax, -0x200(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movq -0x200(%rbp), %rcx
movzbl %al, %edx
callq 0x5b830
jmp 0x545a2
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5ba40
movq %rax, -0x440(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5ba40
movq %rax, %rcx
movq -0x440(%rbp), %rax
cmpq %rcx, %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
movq %rax, -0x208(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movq -0x208(%rbp), %rcx
movzbl %al, %edx
callq 0x5bc90
jmp 0x545a2
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5bf00
movss %xmm0, -0x444(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5bf00
movaps %xmm0, %xmm1
movss -0x444(%rbp), %xmm0
ucomiss %xmm1, %xmm0
sete %al
setnp %cl
andb %cl, %al
andb $0x1, %al
movzbl %al, %eax
cvtsi2ss %eax, %xmm0
movss %xmm0, -0x20c(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movss -0x20c(%rbp), %xmm0
movzbl %al, %edx
callq 0x5c150
jmp 0x545a2
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5c190
movsd %xmm0, -0x450(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5c190
movaps %xmm0, %xmm1
movsd -0x450(%rbp), %xmm0
ucomisd %xmm1, %xmm0
sete %al
setnp %cl
andb %cl, %al
andb $0x1, %al
movzbl %al, %eax
cvtsi2sd %eax, %xmm0
movsd %xmm0, -0x218(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movsd -0x218(%rbp), %xmm0
movzbl %al, %edx
callq 0x5c3d0
jmp 0x545a2
leaq 0x1ded1(%rip), %rdi     # 0x7245b
leaq 0x29cb9(%rip), %rsi     # 0x7e24a
movl $0xb58, %edx            # imm = 0xB58
leaq 0x2b15c(%rip), %rcx     # 0x7f6f9
callq 0x30a0
jmp 0x545a4
jmp 0x54df8
movzbl -0x2a(%rbp), %eax
cmpl $0x10, %eax
jne 0x54679
movzbl -0x2c(%rbp), %eax
cmpl $0x10, %eax
jne 0x54679
movq -0x20(%rbp), %rax
movq 0x88(%rax), %rax
movq %rax, -0x220(%rbp)
movq -0x28(%rbp), %rax
movq 0x88(%rax), %rax
movq %rax, -0x228(%rbp)
movq -0x8(%rbp), %rax
cmpl $0x1, 0x30(%rax)
jne 0x5461b
movq -0x220(%rbp), %rax
cmpq -0x228(%rbp), %rax
setne %al
andb $0x1, %al
movzbl %al, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x88(%rax)
movq -0x18(%rbp), %rax
movb $0x4, 0x71(%rax)
jmp 0x54674
movq -0x8(%rbp), %rax
cmpl $0x2, 0x30(%rax)
jne 0x54653
movq -0x220(%rbp), %rax
cmpq -0x228(%rbp), %rax
setne %al
andb $0x1, %al
movzbl %al, %eax
movslq %eax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x88(%rax)
movq -0x18(%rbp), %rax
movb $0x5, 0x71(%rax)
jmp 0x54672
leaq 0x1de01(%rip), %rdi     # 0x7245b
leaq 0x29be9(%rip), %rsi     # 0x7e24a
movl $0xb66, %edx            # imm = 0xB66
leaq 0x2b08c(%rip), %rcx     # 0x7f6f9
callq 0x30a0
jmp 0x54674
jmp 0x54870
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x5b5a0
movb %al, -0x229(%rbp)
movzbl -0x229(%rbp), %eax
addl $-0x5, %eax
movl %eax, %ecx
movq %rcx, -0x458(%rbp)
subl $0x6, %eax
ja 0x5484f
movq -0x458(%rbp), %rax
leaq 0x293ea(%rip), %rcx     # 0x7daa4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5b3a0
movq %rax, -0x460(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5b3a0
movq %rax, %rcx
movq -0x460(%rbp), %rax
cmpq %rcx, %rax
setne %al
andb $0x1, %al
movzbl %al, %eax
cltq
movq %rax, -0x238(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movq -0x238(%rbp), %rcx
movzbl %al, %edx
callq 0x5b830
jmp 0x5486e
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5ba40
movq %rax, -0x468(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5ba40
movq %rax, %rcx
movq -0x468(%rbp), %rax
cmpq %rcx, %rax
setne %al
andb $0x1, %al
movzbl %al, %eax
cltq
movq %rax, -0x240(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movq -0x240(%rbp), %rcx
movzbl %al, %edx
callq 0x5bc90
jmp 0x5486e
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5bf00
movss %xmm0, -0x46c(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5bf00
movaps %xmm0, %xmm1
movss -0x46c(%rbp), %xmm0
ucomiss %xmm1, %xmm0
setne %al
setp %cl
orb %cl, %al
andb $0x1, %al
movzbl %al, %eax
cvtsi2ss %eax, %xmm0
movss %xmm0, -0x244(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movss -0x244(%rbp), %xmm0
movzbl %al, %edx
callq 0x5c150
jmp 0x5486e
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5c190
movsd %xmm0, -0x478(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5c190
movaps %xmm0, %xmm1
movsd -0x478(%rbp), %xmm0
ucomisd %xmm1, %xmm0
setne %al
setp %cl
orb %cl, %al
andb $0x1, %al
movzbl %al, %eax
cvtsi2sd %eax, %xmm0
movsd %xmm0, -0x250(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movsd -0x250(%rbp), %xmm0
movzbl %al, %edx
callq 0x5c3d0
jmp 0x5486e
leaq 0x1dc05(%rip), %rdi     # 0x7245b
leaq 0x299ed(%rip), %rsi     # 0x7e24a
movl $0xb6a, %edx            # imm = 0xB6A
leaq 0x2ae90(%rip), %rcx     # 0x7f6f9
callq 0x30a0
jmp 0x54870
jmp 0x54df8
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x5b5a0
movb %al, -0x251(%rbp)
movzbl -0x251(%rbp), %eax
movl %eax, -0x47c(%rbp)
subl $0x5, %eax
je 0x548b0
jmp 0x548a0
movl -0x47c(%rbp), %eax
subl $0x9, %eax
je 0x54901
jmp 0x54952
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5b3a0
movq %rax, -0x488(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5b3a0
movq %rax, %rcx
movq -0x488(%rbp), %rax
andq %rcx, %rax
movq %rax, -0x260(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movq -0x260(%rbp), %rcx
movzbl %al, %edx
callq 0x5b830
jmp 0x54971
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5ba40
movq %rax, -0x490(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5ba40
movq %rax, %rcx
movq -0x490(%rbp), %rax
andq %rcx, %rax
movq %rax, -0x268(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movq -0x268(%rbp), %rcx
movzbl %al, %edx
callq 0x5bc90
jmp 0x54971
leaq 0x1db02(%rip), %rdi     # 0x7245b
leaq 0x298ea(%rip), %rsi     # 0x7e24a
movl $0xb6e, %edx            # imm = 0xB6E
leaq 0x2ad8d(%rip), %rcx     # 0x7f6f9
callq 0x30a0
jmp 0x54df8
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x5b5a0
movb %al, -0x269(%rbp)
movzbl -0x269(%rbp), %eax
movl %eax, -0x494(%rbp)
subl $0x5, %eax
je 0x549b1
jmp 0x549a1
movl -0x494(%rbp), %eax
subl $0x9, %eax
je 0x54a02
jmp 0x54a53
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5b3a0
movq %rax, -0x4a0(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5b3a0
movq %rax, %rcx
movq -0x4a0(%rbp), %rax
xorq %rcx, %rax
movq %rax, -0x278(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movq -0x278(%rbp), %rcx
movzbl %al, %edx
callq 0x5b830
jmp 0x54a72
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5ba40
movq %rax, -0x4a8(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5ba40
movq %rax, %rcx
movq -0x4a8(%rbp), %rax
xorq %rcx, %rax
movq %rax, -0x280(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movq -0x280(%rbp), %rcx
movzbl %al, %edx
callq 0x5bc90
jmp 0x54a72
leaq 0x1da01(%rip), %rdi     # 0x7245b
leaq 0x297e9(%rip), %rsi     # 0x7e24a
movl $0xb6f, %edx            # imm = 0xB6F
leaq 0x2ac8c(%rip), %rcx     # 0x7f6f9
callq 0x30a0
jmp 0x54df8
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x5b5a0
movb %al, -0x281(%rbp)
movzbl -0x281(%rbp), %eax
movl %eax, -0x4ac(%rbp)
subl $0x5, %eax
je 0x54ab2
jmp 0x54aa2
movl -0x4ac(%rbp), %eax
subl $0x9, %eax
je 0x54b03
jmp 0x54b54
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5b3a0
movq %rax, -0x4b8(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5b3a0
movq %rax, %rcx
movq -0x4b8(%rbp), %rax
orq %rcx, %rax
movq %rax, -0x290(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movq -0x290(%rbp), %rcx
movzbl %al, %edx
callq 0x5b830
jmp 0x54b73
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5ba40
movq %rax, -0x4c0(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5ba40
movq %rax, %rcx
movq -0x4c0(%rbp), %rax
orq %rcx, %rax
movq %rax, -0x298(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movq -0x298(%rbp), %rcx
movzbl %al, %edx
callq 0x5bc90
jmp 0x54b73
leaq 0x1d900(%rip), %rdi     # 0x7245b
leaq 0x296e8(%rip), %rsi     # 0x7e24a
movl $0xb70, %edx            # imm = 0xB70
leaq 0x2ab8b(%rip), %rcx     # 0x7f6f9
callq 0x30a0
jmp 0x54df8
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x5b5a0
movb %al, -0x299(%rbp)
movzbl -0x299(%rbp), %eax
movl %eax, -0x4c4(%rbp)
subl $0x5, %eax
je 0x54bb3
jmp 0x54ba3
movl -0x4c4(%rbp), %eax
subl $0x9, %eax
je 0x54c1e
jmp 0x54c86
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5b3a0
movq %rax, %rcx
xorl %eax, %eax
cmpq $0x0, %rcx
movb %al, -0x4c5(%rbp)
je 0x54beb
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5b3a0
cmpq $0x0, %rax
setne %al
movb %al, -0x4c5(%rbp)
movb -0x4c5(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cltq
movq %rax, -0x2a8(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movq -0x2a8(%rbp), %rcx
movzbl %al, %edx
callq 0x5b830
jmp 0x54ca5
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5ba40
movq %rax, %rcx
xorl %eax, %eax
cmpq $0x0, %rcx
movb %al, -0x4c6(%rbp)
je 0x54c56
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5ba40
cmpq $0x0, %rax
setne %al
movb %al, -0x4c6(%rbp)
movb -0x4c6(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cltq
movq %rax, -0x2b0(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movq -0x2b0(%rbp), %rcx
movzbl %al, %edx
callq 0x5bc90
jmp 0x54ca5
leaq 0x1d7ce(%rip), %rdi     # 0x7245b
leaq 0x295b6(%rip), %rsi     # 0x7e24a
movl $0xb71, %edx            # imm = 0xB71
leaq 0x2aa59(%rip), %rcx     # 0x7f6f9
callq 0x30a0
jmp 0x54df8
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x5b5a0
movb %al, -0x2b1(%rbp)
movzbl -0x2b1(%rbp), %eax
movl %eax, -0x4cc(%rbp)
subl $0x5, %eax
je 0x54ce5
jmp 0x54cd5
movl -0x4cc(%rbp), %eax
subl $0x9, %eax
je 0x54d50
jmp 0x54db8
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5b3a0
movq %rax, %rcx
movb $0x1, %al
cmpq $0x0, %rcx
movb %al, -0x4cd(%rbp)
jne 0x54d1d
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5b3a0
cmpq $0x0, %rax
setne %al
movb %al, -0x4cd(%rbp)
movb -0x4cd(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cltq
movq %rax, -0x2c0(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movq -0x2c0(%rbp), %rcx
movzbl %al, %edx
callq 0x5b830
jmp 0x54dd7
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5ba40
movq %rax, %rcx
movb $0x1, %al
cmpq $0x0, %rcx
movb %al, -0x4ce(%rbp)
jne 0x54d88
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5ba40
cmpq $0x0, %rax
setne %al
movb %al, -0x4ce(%rbp)
movb -0x4ce(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cltq
movq %rax, -0x2c8(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movb -0x29(%rbp), %al
movq -0x2c8(%rbp), %rcx
movzbl %al, %edx
callq 0x5bc90
jmp 0x54dd7
leaq 0x1d69c(%rip), %rdi     # 0x7245b
leaq 0x29484(%rip), %rsi     # 0x7e24a
movl $0xb72, %edx            # imm = 0xB72
leaq 0x2a927(%rip), %rcx     # 0x7f6f9
callq 0x30a0
jmp 0x54df8
leaq 0x1d67b(%rip), %rdi     # 0x7245b
leaq 0x29463(%rip), %rsi     # 0x7e24a
movl $0xb74, %edx            # imm = 0xB74
leaq 0x2a906(%rip), %rcx     # 0x7f6f9
callq 0x30a0
addq $0x4d0, %rsp            # imm = 0x4D0
popq %rbp
retq
nopw %cs:(%rax,%rax)