// File: /workspace/github_c_makefile_star2_O0/kernfel[P]fNEAT/robot-simplistic.c
// Function: move_robot_in_tilemaze
void move_robot_in_tilemaze( Robot *bot, TileMaze *maze, struct Robot_Params *params, double *controller_outputs ) {
	adjust_heading( bot, params, controller_outputs );
	
	double motor_output = controller_outputs[0];
	if ( fabs(motor_output) > params->motor_threshold ) {
		if ( motor_output > 0 )
			motor_output = motor_output - params->motor_threshold;
		else
			motor_output = motor_output + params->motor_threshold;
		double m_x = cos(bot->heading) * motor_output * params->motor_sensitivity;
		double m_y = sin(bot->heading) * motor_output * params->motor_sensitivity;
		
		// Intercepts of the likeliest points of collision
		double forward_x = m_x>0 ? m_x + params->radius : m_x - params->radius;
		double forward_y = m_y>0 ? m_y + params->radius : m_y - params->radius;
		int curtile_x = (int)(bot->x / maze->tile_width);
		int curtile_y = (int)(bot->y / maze->tile_width);
		int cross_x = (int)((bot->x + forward_x) / maze->tile_width) - curtile_x;
		int cross_y = (int)((bot->y + forward_y) / maze->tile_width) - curtile_y;
		double depth_x = (bot->x + forward_x - (cross_x>0 ? curtile_x+1 : curtile_x)*maze->tile_width) / forward_x;
		double depth_y = (bot->y + forward_y - (cross_y>0 ? curtile_y+1 : curtile_y)*maze->tile_width) / forward_y;
		
		double adjust=0;
		
		// Collision only with an x edge
		if ( cross_x && ! cross_y
		 && (  curtile_x+cross_x == maze->x || curtile_x+cross_x == -1
		    || ! maze->tiles[curtile_x+cross_x + maze->x*curtile_y]
		    )
		) {
			adjust = depth_x;
		
		// Collision only with a y edge
		} else if ( cross_y && ! cross_x
		 && (  curtile_y+cross_y == maze->y || curtile_y+cross_y == -1
		    || ! maze->tiles[curtile_x + maze->x*(curtile_y+cross_y)]
		    )
		) {
			adjust = depth_y;
		
		// Collision with both x and y edges, necessitating checks against adjacent and diagonal tiles
		} else if ( cross_x && cross_y ) {
			// Separating axis perpendicular to the bot's path, as a unit vector:
			double sep_axis_x = m_y / sqrt(m_x*m_x + m_y*m_y);
			double sep_axis_y = -m_x / sqrt(m_x*m_x + m_y*m_y);
			// Half size of a tile when projected onto the separating axis:
			double proj_tile_halfwidth = (fabs(sep_axis_x) + fabs(sep_axis_y)) * maze->tile_width/2;
			// Bot's center projected onto the separating axis
			double proj_bot = sep_axis_x*(bot->x+m_x) + sep_axis_y*(bot->y+m_y);
			
			// Check against solid x-adjacent tile
			if ( curtile_x+cross_x == maze->x || curtile_x+cross_x == -1 ) {
				adjust = depth_x;
			} else if ( ! maze->tiles[curtile_x+cross_x + maze->x*curtile_y] ) {
				// Do tile and bot share space on the separating axis?
				// Note, this may not be the case even with cross_x appropriately set, as the border-crossing may happen only
				// at the edge between the y-adjacent and diagonally adjacent tiles.
				double proj_tile_center = maze->tile_width * (sep_axis_x*(curtile_x+cross_x+0.5) + sep_axis_y*(curtile_y+0.5));
				if ( fabs(proj_bot - proj_tile_center) < params->radius + proj_tile_halfwidth ) {
					adjust = depth_x;
				}
			}
			
			// Check against solid y-adjacent tile
			if ( curtile_y+cross_y == maze->y || curtile_y+cross_y == -1 ) {
				adjust = max(adjust, depth_y);
			} else if ( ! maze->tiles[curtile_x + maze->x*(curtile_y+cross_y)] ) {
				// Do tile and bot share space on the separating axis?
				double proj_tile_center = maze->tile_width * (sep_axis_x*(curtile_x+0.5) + sep_axis_y*(curtile_y+cross_y+0.5));
				if ( fabs(proj_bot - proj_tile_center) < params->radius + proj_tile_halfwidth ) {
					adjust = max(adjust, depth_y);
				}
			}

			// If all else fails, check against solid diagonally adjacent tile
			if ( ! adjust && ! maze->tiles[curtile_x+cross_x + maze->x*(curtile_y+cross_y)] ) {
				// Project corner onto separating axis
				double corner_x = maze->tile_width * (curtile_x + (cross_x>0?1:0)), corner_y = maze->tile_width * (curtile_y + (cross_y>0?1:0));
				double proj_corner = sep_axis_x*corner_x + sep_axis_y*corner_y;
				
				// Colliding with corner:
				if ( fabs(proj_bot - proj_corner) < params->radius ) {
					double bc_x = corner_x - bot->x, bc_y = corner_y - bot->y;
					double norm_m = sqrt(m_x*m_x + m_y*m_y);
					double bf = (bc_x*m_x + bc_y*m_y) / norm_m; // Projection of bot-to-corner onto the bot's path (pt F)
					double fc = bc_x*sep_axis_x + bc_y*sep_axis_y; // Distance from the corner to pt F; fc < r.
					double fx = sqrt(params->radius*params->radius - fc*fc); // Distance from pt F to pushback point X
					if ( norm_m > bf - fx )
						adjust = 1 - (bf - fx)/norm_m;
				
				// Colliding with the edge that continues one of curtile's y-parallel edges
				} else if ( (proj_bot > proj_corner && m_x < 0 && m_y > 0) // Bot heading UL
				 || (proj_bot < proj_corner && m_x < 0 && m_y < 0)         // Bot heading DL
				 || (proj_bot > proj_corner && m_x > 0 && m_y < 0)         // Bot heading DR
				 || (proj_bot < proj_corner && m_x > 0 && m_y > 0) ) {     // Bot heading UR
					adjust = depth_x;
				
				// Colliding with the edge that continues one of curtile's x-parallel edges
				} else if ( (proj_bot > proj_corner && m_x > 0 && m_y > 0) // Bot heading UR
				 || (proj_bot < proj_corner && m_x < 0 && m_y > 0)         // Bot heading UL
				 || (proj_bot > proj_corner && m_x < 0 && m_y < 0)         // Bot heading DL
				 || (proj_bot < proj_corner && m_x > 0 && m_y < 0) ) {     // Bot heading DR
					adjust = depth_y;
				}
			}
		}
		
		// Apply the adjusted movement vector
		bot->x += (1 - adjust) * m_x;
		bot->y += (1 - adjust) * m_y;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x140, %rsp            # imm = 0x140
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x7cb0
movq -0x20(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x28(%rbp)
movsd -0x28(%rbp), %xmm0
movaps 0x1f1b(%rip), %xmm1     # 0xa1b0
pand %xmm1, %xmm0
movq -0x18(%rbp), %rax
ucomisd 0x10(%rax), %xmm0
jbe 0x8d24
movsd -0x28(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x82cb
movsd -0x28(%rbp), %xmm0
movq -0x18(%rbp), %rax
subsd 0x10(%rax), %xmm0
movsd %xmm0, -0x28(%rbp)
jmp 0x82de
movsd -0x28(%rbp), %xmm0
movq -0x18(%rbp), %rax
addsd 0x10(%rax), %xmm0
movsd %xmm0, -0x28(%rbp)
movq -0x8(%rbp), %rax
movsd 0x10(%rax), %xmm0
callq 0x1090
mulsd -0x28(%rbp), %xmm0
movq -0x18(%rbp), %rax
mulsd 0x8(%rax), %xmm0
movsd %xmm0, -0x30(%rbp)
movq -0x8(%rbp), %rax
movsd 0x10(%rax), %xmm0
callq 0x1140
mulsd -0x28(%rbp), %xmm0
movq -0x18(%rbp), %rax
mulsd 0x8(%rax), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x30(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x8345
movsd -0x30(%rbp), %xmm0
movq -0x18(%rbp), %rax
addsd (%rax), %xmm0
movsd %xmm0, -0xf0(%rbp)
jmp 0x835a
movsd -0x30(%rbp), %xmm0
movq -0x18(%rbp), %rax
subsd (%rax), %xmm0
movsd %xmm0, -0xf0(%rbp)
movsd -0xf0(%rbp), %xmm0
movsd %xmm0, -0x40(%rbp)
movsd -0x38(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x838c
movsd -0x38(%rbp), %xmm0
movq -0x18(%rbp), %rax
addsd (%rax), %xmm0
movsd %xmm0, -0xf8(%rbp)
jmp 0x83a1
movsd -0x38(%rbp), %xmm0
movq -0x18(%rbp), %rax
subsd (%rax), %xmm0
movsd %xmm0, -0xf8(%rbp)
movsd -0xf8(%rbp), %xmm0
movsd %xmm0, -0x48(%rbp)
movq -0x8(%rbp), %rax
movsd (%rax), %xmm0
movq -0x10(%rbp), %rax
divsd (%rax), %xmm0
cvttsd2si %xmm0, %eax
movl %eax, -0x4c(%rbp)
movq -0x8(%rbp), %rax
movsd 0x8(%rax), %xmm0
movq -0x10(%rbp), %rax
divsd (%rax), %xmm0
cvttsd2si %xmm0, %eax
movl %eax, -0x50(%rbp)
movq -0x8(%rbp), %rax
movsd (%rax), %xmm0
addsd -0x40(%rbp), %xmm0
movq -0x10(%rbp), %rax
divsd (%rax), %xmm0
cvttsd2si %xmm0, %eax
subl -0x4c(%rbp), %eax
movl %eax, -0x54(%rbp)
movq -0x8(%rbp), %rax
movsd 0x8(%rax), %xmm0
addsd -0x48(%rbp), %xmm0
movq -0x10(%rbp), %rax
divsd (%rax), %xmm0
cvttsd2si %xmm0, %eax
subl -0x50(%rbp), %eax
movl %eax, -0x58(%rbp)
movq -0x8(%rbp), %rax
movsd (%rax), %xmm0
addsd -0x40(%rbp), %xmm0
movsd %xmm0, -0x100(%rbp)
cmpl $0x0, -0x54(%rbp)
jle 0x8445
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x104(%rbp)
jmp 0x844e
movl -0x4c(%rbp), %eax
movl %eax, -0x104(%rbp)
movsd -0x100(%rbp), %xmm1
movl -0x104(%rbp), %eax
cvtsi2sd %eax, %xmm0
movq -0x10(%rbp), %rax
movsd (%rax), %xmm2
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
divsd -0x40(%rbp), %xmm0
movsd %xmm0, -0x60(%rbp)
movq -0x8(%rbp), %rax
movsd 0x8(%rax), %xmm0
addsd -0x48(%rbp), %xmm0
movsd %xmm0, -0x110(%rbp)
cmpl $0x0, -0x58(%rbp)
jle 0x84bb
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x114(%rbp)
jmp 0x84c4
movl -0x50(%rbp), %eax
movl %eax, -0x114(%rbp)
movsd -0x110(%rbp), %xmm1
movl -0x114(%rbp), %eax
cvtsi2sd %eax, %xmm0
movq -0x10(%rbp), %rax
movsd (%rax), %xmm2
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
divsd -0x48(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x70(%rbp)
cmpl $0x0, -0x54(%rbp)
je 0x8568
cmpl $0x0, -0x58(%rbp)
jne 0x8568
movl -0x4c(%rbp), %eax
addl -0x54(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x8(%rcx), %eax
je 0x8559
movl -0x4c(%rbp), %eax
addl -0x54(%rbp), %eax
cmpl $-0x1, %eax
je 0x8559
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x4c(%rbp), %ecx
addl -0x54(%rbp), %ecx
movq -0x10(%rbp), %rdx
movl 0x8(%rdx), %edx
imull -0x50(%rbp), %edx
addl %edx, %ecx
movslq %ecx, %rcx
cmpb $0x0, (%rax,%rcx)
jne 0x8568
movsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
jmp 0x8cd6
cmpl $0x0, -0x58(%rbp)
je 0x85c3
cmpl $0x0, -0x54(%rbp)
jne 0x85c3
movl -0x50(%rbp), %eax
addl -0x58(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0xc(%rcx), %eax
je 0x85b4
movl -0x50(%rbp), %eax
addl -0x58(%rbp), %eax
cmpl $-0x1, %eax
je 0x85b4
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x4c(%rbp), %ecx
movq -0x10(%rbp), %rdx
movl 0x8(%rdx), %edx
movl -0x50(%rbp), %esi
addl -0x58(%rbp), %esi
imull %esi, %edx
addl %edx, %ecx
movslq %ecx, %rcx
cmpb $0x0, (%rax,%rcx)
jne 0x85c3
movsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
jmp 0x8cd4
cmpl $0x0, -0x54(%rbp)
je 0x8cd2
cmpl $0x0, -0x58(%rbp)
je 0x8cd2
movsd -0x38(%rbp), %xmm0
movsd %xmm0, -0x128(%rbp)
movsd -0x30(%rbp), %xmm0
movsd -0x30(%rbp), %xmm2
movsd -0x38(%rbp), %xmm1
mulsd -0x38(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
callq 0x1190
movaps %xmm0, %xmm1
movsd -0x128(%rbp), %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, -0x78(%rbp)
movsd -0x30(%rbp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd %xmm0, -0x120(%rbp)
movsd -0x30(%rbp), %xmm0
movsd -0x30(%rbp), %xmm2
movsd -0x38(%rbp), %xmm1
mulsd -0x38(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
callq 0x1190
movaps %xmm0, %xmm1
movsd -0x120(%rbp), %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, -0x80(%rbp)
movsd -0x78(%rbp), %xmm0
movaps 0x1b32(%rip), %xmm1     # 0xa1b0
pand %xmm1, %xmm0
movsd -0x80(%rbp), %xmm1
movaps 0x1b22(%rip), %xmm2     # 0xa1b0
pand %xmm2, %xmm1
addsd %xmm1, %xmm0
movq -0x10(%rbp), %rax
mulsd (%rax), %xmm0
movsd 0x19ea(%rip), %xmm1     # 0xa090
divsd %xmm1, %xmm0
movsd %xmm0, -0x88(%rbp)
movsd -0x78(%rbp), %xmm0
movq -0x8(%rbp), %rax
movsd (%rax), %xmm2
addsd -0x30(%rbp), %xmm2
movsd -0x80(%rbp), %xmm1
movq -0x8(%rbp), %rax
movsd 0x8(%rax), %xmm3
addsd -0x38(%rbp), %xmm3
mulsd %xmm3, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x90(%rbp)
movl -0x4c(%rbp), %eax
addl -0x54(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x8(%rcx), %eax
je 0x8705
movl -0x4c(%rbp), %eax
addl -0x54(%rbp), %eax
cmpl $-0x1, %eax
jne 0x8714
movsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
jmp 0x87cc
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x4c(%rbp), %ecx
addl -0x54(%rbp), %ecx
movq -0x10(%rbp), %rdx
movl 0x8(%rdx), %edx
imull -0x50(%rbp), %edx
addl %edx, %ecx
movslq %ecx, %rcx
cmpb $0x0, (%rax,%rcx)
jne 0x87ca
movq -0x10(%rbp), %rax
movsd (%rax), %xmm0
movsd -0x78(%rbp), %xmm1
movl -0x4c(%rbp), %eax
addl -0x54(%rbp), %eax
cvtsi2sd %eax, %xmm3
movsd 0x18dd(%rip), %xmm2     # 0xa038
addsd %xmm2, %xmm3
movsd -0x80(%rbp), %xmm2
cvtsi2sdl -0x50(%rbp), %xmm4
movsd 0x18c7(%rip), %xmm5     # 0xa038
addsd %xmm5, %xmm4
mulsd %xmm4, %xmm2
mulsd %xmm3, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0x98(%rbp)
movsd -0x90(%rbp), %xmm1
subsd -0x98(%rbp), %xmm1
movaps 0x1a0c(%rip), %xmm0     # 0xa1b0
pand %xmm0, %xmm1
movq -0x18(%rbp), %rax
movsd (%rax), %xmm0
addsd -0x88(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x87c8
movsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
jmp 0x87ca
jmp 0x87cc
movl -0x50(%rbp), %eax
addl -0x58(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0xc(%rcx), %eax
je 0x87e6
movl -0x50(%rbp), %eax
addl -0x58(%rbp), %eax
cmpl $-0x1, %eax
jne 0x8820
movsd -0x70(%rbp), %xmm0
ucomisd -0x68(%rbp), %xmm0
jbe 0x8801
movsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x130(%rbp)
jmp 0x880e
movsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x130(%rbp)
movsd -0x130(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
jmp 0x8905
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x4c(%rbp), %ecx
movq -0x10(%rbp), %rdx
movl 0x8(%rdx), %edx
movl -0x50(%rbp), %esi
addl -0x58(%rbp), %esi
imull %esi, %edx
addl %edx, %ecx
movslq %ecx, %rcx
cmpb $0x0, (%rax,%rcx)
jne 0x8903
movq -0x10(%rbp), %rax
movsd (%rax), %xmm0
movsd -0x78(%rbp), %xmm1
cvtsi2sdl -0x4c(%rbp), %xmm3
movsd 0x17d4(%rip), %xmm2     # 0xa038
addsd %xmm2, %xmm3
movsd -0x80(%rbp), %xmm2
movl -0x50(%rbp), %eax
addl -0x58(%rbp), %eax
cvtsi2sd %eax, %xmm4
movsd 0x17b9(%rip), %xmm5     # 0xa038
addsd %xmm5, %xmm4
mulsd %xmm4, %xmm2
mulsd %xmm3, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0xa0(%rbp)
movsd -0x90(%rbp), %xmm1
subsd -0xa0(%rbp), %xmm1
movaps 0x18fe(%rip), %xmm0     # 0xa1b0
pand %xmm0, %xmm1
movq -0x18(%rbp), %rax
movsd (%rax), %xmm0
addsd -0x88(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x8901
movsd -0x70(%rbp), %xmm0
ucomisd -0x68(%rbp), %xmm0
jbe 0x88e7
movsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x138(%rbp)
jmp 0x88f4
movsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x138(%rbp)
movsd -0x138(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
jmp 0x8903
jmp 0x8905
movsd -0x70(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x8cd0
jp 0x8cd0
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x4c(%rbp), %ecx
addl -0x54(%rbp), %ecx
movq -0x10(%rbp), %rdx
movl 0x8(%rdx), %edx
movl -0x50(%rbp), %esi
addl -0x58(%rbp), %esi
imull %esi, %edx
addl %edx, %ecx
movslq %ecx, %rcx
cmpb $0x0, (%rax,%rcx)
jne 0x8cd0
movq -0x10(%rbp), %rax
movsd (%rax), %xmm0
movl -0x4c(%rbp), %eax
movl -0x54(%rbp), %esi
xorl %ecx, %ecx
movl $0x1, %edx
cmpl $0x0, %esi
cmovgl %edx, %ecx
addl %ecx, %eax
cvtsi2sd %eax, %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0xa8(%rbp)
movq -0x10(%rbp), %rax
movsd (%rax), %xmm0
movl -0x50(%rbp), %eax
movl -0x58(%rbp), %esi
xorl %ecx, %ecx
movl $0x1, %edx
cmpl $0x0, %esi
cmovgl %edx, %ecx
addl %ecx, %eax
cvtsi2sd %eax, %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0xb0(%rbp)
movsd -0x78(%rbp), %xmm0
movsd -0xa8(%rbp), %xmm2
movsd -0x80(%rbp), %xmm1
mulsd -0xb0(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0xb8(%rbp)
movsd -0x90(%rbp), %xmm1
subsd -0xb8(%rbp), %xmm1
movaps 0x17cb(%rip), %xmm0     # 0xa1b0
pand %xmm0, %xmm1
movq -0x18(%rbp), %rax
movsd (%rax), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x8b49
movsd -0xa8(%rbp), %xmm0
movq -0x8(%rbp), %rax
subsd (%rax), %xmm0
movsd %xmm0, -0xc0(%rbp)
movsd -0xb0(%rbp), %xmm0
movq -0x8(%rbp), %rax
subsd 0x8(%rax), %xmm0
movsd %xmm0, -0xc8(%rbp)
movsd -0x30(%rbp), %xmm0
movsd -0x30(%rbp), %xmm2
movsd -0x38(%rbp), %xmm1
mulsd -0x38(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
callq 0x1190
movsd %xmm0, -0xd0(%rbp)
movsd -0xc0(%rbp), %xmm0
movsd -0x30(%rbp), %xmm2
movsd -0xc8(%rbp), %xmm1
mulsd -0x38(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
divsd -0xd0(%rbp), %xmm0
movsd %xmm0, -0xd8(%rbp)
movsd -0xc0(%rbp), %xmm0
movsd -0x78(%rbp), %xmm2
movsd -0xc8(%rbp), %xmm1
mulsd -0x80(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0xe0(%rbp)
movq -0x18(%rbp), %rax
movsd (%rax), %xmm0
movq -0x18(%rbp), %rax
movsd (%rax), %xmm2
movsd -0xe0(%rbp), %xmm1
mulsd -0xe0(%rbp), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
callq 0x1190
movsd %xmm0, -0xe8(%rbp)
movsd -0xd0(%rbp), %xmm0
movsd -0xd8(%rbp), %xmm1
subsd -0xe8(%rbp), %xmm1
ucomisd %xmm1, %xmm0
jbe 0x8b44
movsd -0xd8(%rbp), %xmm1
subsd -0xe8(%rbp), %xmm1
divsd -0xd0(%rbp), %xmm1
movsd 0x152d(%rip), %xmm0     # 0xa068
subsd %xmm1, %xmm0
movsd %xmm0, -0x70(%rbp)
jmp 0x8cce
movsd -0x90(%rbp), %xmm0
ucomisd -0xb8(%rbp), %xmm0
jbe 0x8b77
xorps %xmm0, %xmm0
ucomisd -0x30(%rbp), %xmm0
jbe 0x8b77
movsd -0x38(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
ja 0x8bfd
movsd -0x90(%rbp), %xmm1
movsd -0xb8(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x8ba1
xorps %xmm0, %xmm0
ucomisd -0x30(%rbp), %xmm0
jbe 0x8ba1
xorps %xmm0, %xmm0
ucomisd -0x38(%rbp), %xmm0
ja 0x8bfd
movsd -0x90(%rbp), %xmm0
ucomisd -0xb8(%rbp), %xmm0
jbe 0x8bcb
movsd -0x30(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x8bcb
xorps %xmm0, %xmm0
ucomisd -0x38(%rbp), %xmm0
ja 0x8bfd
movsd -0x90(%rbp), %xmm1
movsd -0xb8(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x8c0c
movsd -0x30(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x8c0c
movsd -0x38(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x8c0c
movsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
jmp 0x8ccc
movsd -0x90(%rbp), %xmm0
ucomisd -0xb8(%rbp), %xmm0
jbe 0x8c3e
movsd -0x30(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x8c3e
movsd -0x38(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
ja 0x8cc0
movsd -0x90(%rbp), %xmm1
movsd -0xb8(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x8c6c
xorps %xmm0, %xmm0
ucomisd -0x30(%rbp), %xmm0
jbe 0x8c6c
movsd -0x38(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
ja 0x8cc0
movsd -0x90(%rbp), %xmm0
ucomisd -0xb8(%rbp), %xmm0
jbe 0x8c92
xorps %xmm0, %xmm0
ucomisd -0x30(%rbp), %xmm0
jbe 0x8c92
xorps %xmm0, %xmm0
ucomisd -0x38(%rbp), %xmm0
ja 0x8cc0
movsd -0x90(%rbp), %xmm1
movsd -0xb8(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x8cca
movsd -0x30(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x8cca
xorps %xmm0, %xmm0
ucomisd -0x38(%rbp), %xmm0
jbe 0x8cca
movsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
jmp 0x8ccc
jmp 0x8cce
jmp 0x8cd0
jmp 0x8cd2
jmp 0x8cd4
jmp 0x8cd6
movsd 0x138a(%rip), %xmm0     # 0xa068
subsd -0x70(%rbp), %xmm0
movsd -0x30(%rbp), %xmm2
movq -0x8(%rbp), %rax
movsd (%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax)
movsd 0x1364(%rip), %xmm0     # 0xa068
subsd -0x70(%rbp), %xmm0
movsd -0x38(%rbp), %xmm2
movq -0x8(%rbp), %rax
movsd 0x8(%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x8(%rax)
addq $0x140, %rsp            # imm = 0x140
popq %rbp
retq
nopl (%rax)