// File: /workspace/github_c_makefile_star2_O0/Ihsoh[P]ilang/compiler/backend/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(BE_IS_EXPR_NODE(source1->type));
	assert(BE_EXPR_AST_NODE_GET_CONSTANT(source1));
	assert(source2);
	assert(BE_IS_EXPR_NODE(source2->type));
	assert(BE_EXPR_AST_NODE_GET_CONSTANT(source2));

	uint8_t target_type = BE_EXPR_AST_NODE_GET_TYPE(target);
	uint8_t source1_type = BE_EXPR_AST_NODE_GET_TYPE(source1);
	uint8_t source1_constant_type = BE_EXPR_AST_NODE_GET_CONSTANT_TYPE(source1);
	uint8_t source2_type = BE_EXPR_AST_NODE_GET_TYPE(source2);
	uint8_t source2_constant_type = BE_EXPR_AST_NODE_GET_CONSTANT_TYPE(source2);

	#define	_A(op)	\
		switch (source_type) {	\
			case BE_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 BE_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 BE_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 BE_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 BE_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 BE_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(BE_NODE_EXPR_MUL, *)
		_B(BE_NODE_EXPR_DIV, /)
		case BE_NODE_EXPR_MOD: {
			uint8_t source_type = _get_binary_constexpr_type(ctx, source1, source2);
			switch (source_type) {
				case BE_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 BE_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 BE_NODE_EXPR_ADD: {
			if (source1_type == BE_TYPE_POINTER) {
				size_t increment_size = _calc_pointer_type_increment_size(
					ctx,
					source1,
					BE_EXPR_AST_NODE_GET_TYPE_NODE(source1)
				);
				uint64_t source1_value = BE_EXPR_AST_NODE_GET_CONSTEXPR_RESULT_POINTER_VAL(source1);
				if (_is_signed_type(source2_type)) {
					int64_t source2_value = _get_constexpr_int64(ctx, source2);
					BE_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);
					BE_EXPR_AST_NODE_SET_CONSTEXPR_RESULT_POINTER_VAL(
						target,
						source1_value + increment_size * source2_value
					);
				} else {
					assert(0);
				}
			} else if (source2_type == BE_TYPE_POINTER) {
				size_t increment_size = _calc_pointer_type_increment_size(
					ctx,
					source2,
					BE_EXPR_AST_NODE_GET_TYPE_NODE(source2)
				);
				uint64_t source2_value = BE_EXPR_AST_NODE_GET_CONSTEXPR_RESULT_POINTER_VAL(source2);
				if (_is_signed_type(source1_type)) {
					int64_t source1_value =  _get_constexpr_int64(ctx, source1);
					BE_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);
					BE_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 0x51407
jmp 0x51426
leaq 0x2ed53(%rip), %rdi     # 0x80161
leaq 0x3146b(%rip), %rsi     # 0x82880
movl $0x7ac, %edx            # imm = 0x7AC
leaq 0x328c4(%rip), %rcx     # 0x83ce5
callq 0x30a0
cmpq $0x0, -0x18(%rbp)
je 0x5142f
jmp 0x5144e
leaq 0x2defe(%rip), %rdi     # 0x7f334
leaq 0x31443(%rip), %rsi     # 0x82880
movl $0x7ad, %edx            # imm = 0x7AD
leaq 0x3289c(%rip), %rcx     # 0x83ce5
callq 0x30a0
cmpq $0x0, -0x20(%rbp)
je 0x51457
jmp 0x51476
leaq 0x2764b(%rip), %rdi     # 0x78aa9
leaq 0x3141b(%rip), %rsi     # 0x82880
movl $0x7ae, %edx            # imm = 0x7AE
leaq 0x32874(%rip), %rcx     # 0x83ce5
callq 0x30a0
movq -0x20(%rbp), %rax
movl (%rax), %eax
andl $0xff00, %eax           # imm = 0xFF00
cmpl $0xe00, %eax            # imm = 0xE00
jne 0x5148a
jmp 0x514a9
leaq 0x325fe(%rip), %rdi     # 0x83a8f
leaq 0x313e8(%rip), %rsi     # 0x82880
movl $0x7af, %edx            # imm = 0x7AF
leaq 0x32841(%rip), %rcx     # 0x83ce5
callq 0x30a0
movq -0x20(%rbp), %rax
testb $0x1, 0x70(%rax)
je 0x514b5
jmp 0x514d4
leaq 0x325f2(%rip), %rdi     # 0x83aae
leaq 0x313bd(%rip), %rsi     # 0x82880
movl $0x7b0, %edx            # imm = 0x7B0
leaq 0x32816(%rip), %rcx     # 0x83ce5
callq 0x30a0
cmpq $0x0, -0x28(%rbp)
je 0x514dd
jmp 0x514fc
leaq 0x275cd(%rip), %rdi     # 0x78ab1
leaq 0x31395(%rip), %rsi     # 0x82880
movl $0x7b1, %edx            # imm = 0x7B1
leaq 0x327ee(%rip), %rcx     # 0x83ce5
callq 0x30a0
movq -0x28(%rbp), %rax
movl (%rax), %eax
andl $0xff00, %eax           # imm = 0xFF00
cmpl $0xe00, %eax            # imm = 0xE00
jne 0x51510
jmp 0x5152f
leaq 0x325be(%rip), %rdi     # 0x83ad5
leaq 0x31362(%rip), %rsi     # 0x82880
movl $0x7b2, %edx            # imm = 0x7B2
leaq 0x327bb(%rip), %rcx     # 0x83ce5
callq 0x30a0
movq -0x28(%rbp), %rax
testb $0x1, 0x70(%rax)
je 0x5153b
jmp 0x5155a
leaq 0x325b2(%rip), %rdi     # 0x83af4
leaq 0x31337(%rip), %rsi     # 0x82880
movl $0x7b3, %edx            # imm = 0x7B3
leaq 0x32790(%rip), %rcx     # 0x83ce5
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 0x53349
movq -0x2d0(%rbp), %rax
leaq 0x304e6(%rip), %rcx     # 0x81a9c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x590d0
movb %al, -0x2e(%rbp)
movzbl -0x2e(%rbp), %eax
addl $-0x5, %eax
movl %eax, %ecx
movq %rcx, -0x2d8(%rbp)
subl $0x6, %eax
ja 0x51741
movq -0x2d8(%rbp), %rax
leaq 0x307ea(%rip), %rcx     # 0x81de4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x58ed0
movq %rax, -0x2e0(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x58ed0
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 0x59360
jmp 0x51760
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x59570
movq %rax, -0x2e8(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59570
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 0x597c0
jmp 0x51760
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x59a30
movss %xmm0, -0x2ec(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59a30
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 0x59c80
jmp 0x51760
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x59cc0
movsd %xmm0, -0x2f8(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59cc0
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 0x59f00
jmp 0x51760
leaq 0x21d12(%rip), %rdi     # 0x7345a
leaq 0x31131(%rip), %rsi     # 0x82880
movl $0x7f8, %edx            # imm = 0x7F8
leaq 0x3258a(%rip), %rcx     # 0x83ce5
callq 0x30a0
jmp 0x53368
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x590d0
movb %al, -0x51(%rbp)
movzbl -0x51(%rbp), %eax
addl $-0x5, %eax
movl %eax, %ecx
movq %rcx, -0x300(%rbp)
subl $0x6, %eax
ja 0x518e9
movq -0x300(%rbp), %rax
leaq 0x30628(%rip), %rcx     # 0x81dc8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x58ed0
movq %rax, -0x308(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x58ed0
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 0x59360
jmp 0x51908
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x59570
movq %rax, -0x310(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59570
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 0x597c0
jmp 0x51908
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x59a30
movss %xmm0, -0x314(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59a30
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 0x59c80
jmp 0x51908
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x59cc0
movsd %xmm0, -0x320(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59cc0
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 0x59f00
jmp 0x51908
leaq 0x21b6a(%rip), %rdi     # 0x7345a
leaq 0x30f89(%rip), %rsi     # 0x82880
movl $0x7f9, %edx            # imm = 0x7F9
leaq 0x323e2(%rip), %rcx     # 0x83ce5
callq 0x30a0
jmp 0x53368
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x590d0
movb %al, -0x79(%rbp)
movzbl -0x79(%rbp), %eax
movl %eax, -0x324(%rbp)
subl $0x5, %eax
je 0x51942
jmp 0x51932
movl -0x324(%rbp), %eax
subl $0x9, %eax
je 0x51995
jmp 0x519e8
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x58ed0
movq %rax, -0x330(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x58ed0
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 0x59360
jmp 0x51a07
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x59570
movq %rax, -0x338(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59570
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 0x597c0
jmp 0x51a07
leaq 0x21a6b(%rip), %rdi     # 0x7345a
leaq 0x30e8a(%rip), %rsi     # 0x82880
movl $0x808, %edx            # imm = 0x808
leaq 0x322e3(%rip), %rcx     # 0x83ce5
callq 0x30a0
jmp 0x53368
movzbl -0x2a(%rbp), %eax
cmpl $0x10, %eax
jne 0x51b0f
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x20(%rbp), %rax
movq 0x68(%rax), %rdx
callq 0x5a180
movq %rax, -0x98(%rbp)
movq -0x20(%rbp), %rax
movq 0x88(%rax), %rax
movq %rax, -0xa0(%rbp)
movzbl -0x2c(%rbp), %edi
callq 0x4da00
testb $0x1, %al
jne 0x51a56
jmp 0x51a98
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x58ed0
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 0x51b0a
movzbl -0x2c(%rbp), %edi
callq 0x4da50
testb $0x1, %al
jne 0x51aa7
jmp 0x51ae9
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59570
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 0x51b08
leaq 0x2196a(%rip), %rdi     # 0x7345a
leaq 0x30d89(%rip), %rsi     # 0x82880
movl $0x823, %edx            # imm = 0x823
leaq 0x321e2(%rip), %rcx     # 0x83ce5
callq 0x30a0
jmp 0x51b0a
jmp 0x51dd3
movzbl -0x2c(%rbp), %eax
cmpl $0x10, %eax
jne 0x51c12
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
movq -0x28(%rbp), %rax
movq 0x68(%rax), %rdx
callq 0x5a180
movq %rax, -0xb8(%rbp)
movq -0x28(%rbp), %rax
movq 0x88(%rax), %rax
movq %rax, -0xc0(%rbp)
movzbl -0x2a(%rbp), %edi
callq 0x4da00
testb $0x1, %al
jne 0x51b59
jmp 0x51b9b
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x58ed0
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 0x51c0d
movzbl -0x2a(%rbp), %edi
callq 0x4da50
testb $0x1, %al
jne 0x51baa
jmp 0x51bec
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x59570
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 0x51c0b
leaq 0x21867(%rip), %rdi     # 0x7345a
leaq 0x30c86(%rip), %rsi     # 0x82880
movl $0x839, %edx            # imm = 0x839
leaq 0x320df(%rip), %rcx     # 0x83ce5
callq 0x30a0
jmp 0x51c0d
jmp 0x51dd1
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x590d0
movb %al, -0xd1(%rbp)
movzbl -0xd1(%rbp), %eax
addl $-0x5, %eax
movl %eax, %ecx
movq %rcx, -0x340(%rbp)
subl $0x6, %eax
ja 0x51db0
movq -0x340(%rbp), %rax
leaq 0x30159(%rip), %rcx     # 0x81dac
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x58ed0
movq %rax, -0x348(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x58ed0
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 0x59360
jmp 0x51dcf
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x59570
movq %rax, -0x350(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59570
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 0x597c0
jmp 0x51dcf
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x59a30
movss %xmm0, -0x354(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59a30
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 0x59c80
jmp 0x51dcf
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x59cc0
movsd %xmm0, -0x360(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59cc0
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 0x59f00
jmp 0x51dcf
leaq 0x216a3(%rip), %rdi     # 0x7345a
leaq 0x30ac2(%rip), %rsi     # 0x82880
movl $0x83d, %edx            # imm = 0x83D
leaq 0x31f1b(%rip), %rcx     # 0x83ce5
callq 0x30a0
jmp 0x51dd1
jmp 0x51dd3
jmp 0x53368
movzbl -0x2a(%rbp), %eax
cmpl $0x10, %eax
jne 0x51edb
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x20(%rbp), %rax
movq 0x68(%rax), %rdx
callq 0x5a180
movq %rax, -0x100(%rbp)
movq -0x20(%rbp), %rax
movq 0x88(%rax), %rax
movq %rax, -0x108(%rbp)
movzbl -0x2c(%rbp), %edi
callq 0x4da00
testb $0x1, %al
jne 0x51e22
jmp 0x51e64
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x58ed0
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 0x51ed6
movzbl -0x2c(%rbp), %edi
callq 0x4da50
testb $0x1, %al
jne 0x51e73
jmp 0x51eb5
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59570
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 0x51ed4
leaq 0x2159e(%rip), %rdi     # 0x7345a
leaq 0x309bd(%rip), %rsi     # 0x82880
movl $0x856, %edx            # imm = 0x856
leaq 0x31e16(%rip), %rcx     # 0x83ce5
callq 0x30a0
jmp 0x51ed6
jmp 0x5209a
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x590d0
movb %al, -0x119(%rbp)
movzbl -0x119(%rbp), %eax
addl $-0x5, %eax
movl %eax, %ecx
movq %rcx, -0x368(%rbp)
subl $0x6, %eax
ja 0x52079
movq -0x368(%rbp), %rax
leaq 0x2fe74(%rip), %rcx     # 0x81d90
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x58ed0
movq %rax, -0x370(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x58ed0
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 0x59360
jmp 0x52098
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x59570
movq %rax, -0x378(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59570
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 0x597c0
jmp 0x52098
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x59a30
movss %xmm0, -0x37c(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59a30
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 0x59c80
jmp 0x52098
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x59cc0
movsd %xmm0, -0x388(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59cc0
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 0x59f00
jmp 0x52098
leaq 0x213da(%rip), %rdi     # 0x7345a
leaq 0x307f9(%rip), %rsi     # 0x82880
movl $0x85a, %edx            # imm = 0x85A
leaq 0x31c52(%rip), %rcx     # 0x83ce5
callq 0x30a0
jmp 0x5209a
jmp 0x53368
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x590d0
movb %al, -0x141(%rbp)
movzbl -0x141(%rbp), %eax
addl $-0x5, %eax
movl %eax, %ecx
movq %rcx, -0x390(%rbp)
subl $0x6, %eax
ja 0x52262
movq -0x390(%rbp), %rax
leaq 0x2fc94(%rip), %rcx     # 0x81d74
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x58ed0
movq %rax, -0x398(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x58ed0
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 0x59360
jmp 0x52281
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x59570
movq %rax, -0x3a0(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59570
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 0x597c0
jmp 0x52281
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x59a30
movss %xmm0, -0x3a4(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59a30
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 0x59c80
jmp 0x52281
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x59cc0
movsd %xmm0, -0x3b0(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59cc0
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 0x59f00
jmp 0x52281
leaq 0x211f1(%rip), %rdi     # 0x7345a
leaq 0x30610(%rip), %rsi     # 0x82880
movl $0x85e, %edx            # imm = 0x85E
leaq 0x31a69(%rip), %rcx     # 0x83ce5
callq 0x30a0
jmp 0x53368
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x590d0
movb %al, -0x169(%rbp)
movzbl -0x169(%rbp), %eax
addl $-0x5, %eax
movl %eax, %ecx
movq %rcx, -0x3b8(%rbp)
subl $0x6, %eax
ja 0x52449
movq -0x3b8(%rbp), %rax
leaq 0x2fa91(%rip), %rcx     # 0x81d58
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x58ed0
movq %rax, -0x3c0(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x58ed0
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 0x59360
jmp 0x52468
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x59570
movq %rax, -0x3c8(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59570
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 0x597c0
jmp 0x52468
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x59a30
movss %xmm0, -0x3cc(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59a30
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 0x59c80
jmp 0x52468
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x59cc0
movsd %xmm0, -0x3d8(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59cc0
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 0x59f00
jmp 0x52468
leaq 0x2100a(%rip), %rdi     # 0x7345a
leaq 0x30429(%rip), %rsi     # 0x82880
movl $0x85f, %edx            # imm = 0x85F
leaq 0x31882(%rip), %rcx     # 0x83ce5
callq 0x30a0
jmp 0x53368
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x590d0
movb %al, -0x191(%rbp)
movzbl -0x191(%rbp), %eax
addl $-0x5, %eax
movl %eax, %ecx
movq %rcx, -0x3e0(%rbp)
subl $0x6, %eax
ja 0x52639
movq -0x3e0(%rbp), %rax
leaq 0x2f88e(%rip), %rcx     # 0x81d3c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x58ed0
movq %rax, -0x3e8(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x58ed0
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 0x59360
jmp 0x52658
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x59570
movq %rax, -0x3f0(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59570
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 0x597c0
jmp 0x52658
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x59a30
movss %xmm0, -0x3f4(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59a30
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 0x59c80
jmp 0x52658
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x59cc0
movsd %xmm0, -0x400(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59cc0
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 0x59f00
jmp 0x52658
leaq 0x20e1a(%rip), %rdi     # 0x7345a
leaq 0x30239(%rip), %rsi     # 0x82880
movl $0x860, %edx            # imm = 0x860
leaq 0x31692(%rip), %rcx     # 0x83ce5
callq 0x30a0
jmp 0x53368
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x590d0
movb %al, -0x1b9(%rbp)
movzbl -0x1b9(%rbp), %eax
addl $-0x5, %eax
movl %eax, %ecx
movq %rcx, -0x408(%rbp)
subl $0x6, %eax
ja 0x52829
movq -0x408(%rbp), %rax
leaq 0x2f682(%rip), %rcx     # 0x81d20
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x58ed0
movq %rax, -0x410(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x58ed0
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 0x59360
jmp 0x52848
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x59570
movq %rax, -0x418(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59570
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 0x597c0
jmp 0x52848
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x59a30
movss %xmm0, -0x41c(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59a30
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 0x59c80
jmp 0x52848
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x59cc0
movsd %xmm0, -0x428(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59cc0
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 0x59f00
jmp 0x52848
leaq 0x20c2a(%rip), %rdi     # 0x7345a
leaq 0x30049(%rip), %rsi     # 0x82880
movl $0x861, %edx            # imm = 0x861
leaq 0x314a2(%rip), %rcx     # 0x83ce5
callq 0x30a0
jmp 0x53368
movzbl -0x2a(%rbp), %eax
cmpl $0x10, %eax
jne 0x5291d
movzbl -0x2c(%rbp), %eax
cmpl $0x10, %eax
jne 0x5291d
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 0x528bf
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 0x52918
movq -0x8(%rbp), %rax
cmpl $0x2, 0x30(%rax)
jne 0x528f7
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 0x52916
leaq 0x20b5c(%rip), %rdi     # 0x7345a
leaq 0x2ff7b(%rip), %rsi     # 0x82880
movl $0x86c, %edx            # imm = 0x86C
leaq 0x313d4(%rip), %rcx     # 0x83ce5
callq 0x30a0
jmp 0x52918
jmp 0x52b14
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x590d0
movb %al, -0x1f1(%rbp)
movzbl -0x1f1(%rbp), %eax
addl $-0x5, %eax
movl %eax, %ecx
movq %rcx, -0x430(%rbp)
subl $0x6, %eax
ja 0x52af3
movq -0x430(%rbp), %rax
leaq 0x2f3a6(%rip), %rcx     # 0x81d04
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x58ed0
movq %rax, -0x438(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x58ed0
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 0x59360
jmp 0x52b12
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x59570
movq %rax, -0x440(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59570
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 0x597c0
jmp 0x52b12
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x59a30
movss %xmm0, -0x444(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59a30
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 0x59c80
jmp 0x52b12
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x59cc0
movsd %xmm0, -0x450(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59cc0
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 0x59f00
jmp 0x52b12
leaq 0x20960(%rip), %rdi     # 0x7345a
leaq 0x2fd7f(%rip), %rsi     # 0x82880
movl $0x870, %edx            # imm = 0x870
leaq 0x311d8(%rip), %rcx     # 0x83ce5
callq 0x30a0
jmp 0x52b14
jmp 0x53368
movzbl -0x2a(%rbp), %eax
cmpl $0x10, %eax
jne 0x52be9
movzbl -0x2c(%rbp), %eax
cmpl $0x10, %eax
jne 0x52be9
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 0x52b8b
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 0x52be4
movq -0x8(%rbp), %rax
cmpl $0x2, 0x30(%rax)
jne 0x52bc3
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 0x52be2
leaq 0x20890(%rip), %rdi     # 0x7345a
leaq 0x2fcaf(%rip), %rsi     # 0x82880
movl $0x87e, %edx            # imm = 0x87E
leaq 0x31108(%rip), %rcx     # 0x83ce5
callq 0x30a0
jmp 0x52be4
jmp 0x52de0
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x590d0
movb %al, -0x229(%rbp)
movzbl -0x229(%rbp), %eax
addl $-0x5, %eax
movl %eax, %ecx
movq %rcx, -0x458(%rbp)
subl $0x6, %eax
ja 0x52dbf
movq -0x458(%rbp), %rax
leaq 0x2f0be(%rip), %rcx     # 0x81ce8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x58ed0
movq %rax, -0x460(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x58ed0
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 0x59360
jmp 0x52dde
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x59570
movq %rax, -0x468(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59570
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 0x597c0
jmp 0x52dde
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x59a30
movss %xmm0, -0x46c(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59a30
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 0x59c80
jmp 0x52dde
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x59cc0
movsd %xmm0, -0x478(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59cc0
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 0x59f00
jmp 0x52dde
leaq 0x20694(%rip), %rdi     # 0x7345a
leaq 0x2fab3(%rip), %rsi     # 0x82880
movl $0x882, %edx            # imm = 0x882
leaq 0x30f0c(%rip), %rcx     # 0x83ce5
callq 0x30a0
jmp 0x52de0
jmp 0x53368
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x590d0
movb %al, -0x251(%rbp)
movzbl -0x251(%rbp), %eax
movl %eax, -0x47c(%rbp)
subl $0x5, %eax
je 0x52e20
jmp 0x52e10
movl -0x47c(%rbp), %eax
subl $0x9, %eax
je 0x52e71
jmp 0x52ec2
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x58ed0
movq %rax, -0x488(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x58ed0
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 0x59360
jmp 0x52ee1
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x59570
movq %rax, -0x490(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59570
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 0x597c0
jmp 0x52ee1
leaq 0x20591(%rip), %rdi     # 0x7345a
leaq 0x2f9b0(%rip), %rsi     # 0x82880
movl $0x886, %edx            # imm = 0x886
leaq 0x30e09(%rip), %rcx     # 0x83ce5
callq 0x30a0
jmp 0x53368
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x590d0
movb %al, -0x269(%rbp)
movzbl -0x269(%rbp), %eax
movl %eax, -0x494(%rbp)
subl $0x5, %eax
je 0x52f21
jmp 0x52f11
movl -0x494(%rbp), %eax
subl $0x9, %eax
je 0x52f72
jmp 0x52fc3
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x58ed0
movq %rax, -0x4a0(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x58ed0
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 0x59360
jmp 0x52fe2
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x59570
movq %rax, -0x4a8(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59570
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 0x597c0
jmp 0x52fe2
leaq 0x20490(%rip), %rdi     # 0x7345a
leaq 0x2f8af(%rip), %rsi     # 0x82880
movl $0x887, %edx            # imm = 0x887
leaq 0x30d08(%rip), %rcx     # 0x83ce5
callq 0x30a0
jmp 0x53368
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x590d0
movb %al, -0x281(%rbp)
movzbl -0x281(%rbp), %eax
movl %eax, -0x4ac(%rbp)
subl $0x5, %eax
je 0x53022
jmp 0x53012
movl -0x4ac(%rbp), %eax
subl $0x9, %eax
je 0x53073
jmp 0x530c4
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x58ed0
movq %rax, -0x4b8(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x58ed0
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 0x59360
jmp 0x530e3
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x59570
movq %rax, -0x4c0(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59570
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 0x597c0
jmp 0x530e3
leaq 0x2038f(%rip), %rdi     # 0x7345a
leaq 0x2f7ae(%rip), %rsi     # 0x82880
movl $0x888, %edx            # imm = 0x888
leaq 0x30c07(%rip), %rcx     # 0x83ce5
callq 0x30a0
jmp 0x53368
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x590d0
movb %al, -0x299(%rbp)
movzbl -0x299(%rbp), %eax
movl %eax, -0x4c4(%rbp)
subl $0x5, %eax
je 0x53123
jmp 0x53113
movl -0x4c4(%rbp), %eax
subl $0x9, %eax
je 0x5318e
jmp 0x531f6
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x58ed0
movq %rax, %rcx
xorl %eax, %eax
cmpq $0x0, %rcx
movb %al, -0x4c5(%rbp)
je 0x5315b
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x58ed0
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 0x59360
jmp 0x53215
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x59570
movq %rax, %rcx
xorl %eax, %eax
cmpq $0x0, %rcx
movb %al, -0x4c6(%rbp)
je 0x531c6
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59570
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 0x597c0
jmp 0x53215
leaq 0x2025d(%rip), %rdi     # 0x7345a
leaq 0x2f67c(%rip), %rsi     # 0x82880
movl $0x889, %edx            # imm = 0x889
leaq 0x30ad5(%rip), %rcx     # 0x83ce5
callq 0x30a0
jmp 0x53368
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x590d0
movb %al, -0x2b1(%rbp)
movzbl -0x2b1(%rbp), %eax
movl %eax, -0x4cc(%rbp)
subl $0x5, %eax
je 0x53255
jmp 0x53245
movl -0x4cc(%rbp), %eax
subl $0x9, %eax
je 0x532c0
jmp 0x53328
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x58ed0
movq %rax, %rcx
movb $0x1, %al
cmpq $0x0, %rcx
movb %al, -0x4cd(%rbp)
jne 0x5328d
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x58ed0
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 0x59360
jmp 0x53347
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x59570
movq %rax, %rcx
movb $0x1, %al
cmpq $0x0, %rcx
movb %al, -0x4ce(%rbp)
jne 0x532f8
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x59570
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 0x597c0
jmp 0x53347
leaq 0x2012b(%rip), %rdi     # 0x7345a
leaq 0x2f54a(%rip), %rsi     # 0x82880
movl $0x88a, %edx            # imm = 0x88A
leaq 0x309a3(%rip), %rcx     # 0x83ce5
callq 0x30a0
jmp 0x53368
leaq 0x2010a(%rip), %rdi     # 0x7345a
leaq 0x2f529(%rip), %rsi     # 0x82880
movl $0x88c, %edx            # imm = 0x88C
leaq 0x30982(%rip), %rcx     # 0x83ce5
callq 0x30a0
addq $0x4d0, %rsp            # imm = 0x4D0
popq %rbp
retq
nopw %cs:(%rax,%rax)