// File: /workspace/github_c_makefile_star2_O0/Nealsbo[P]C-Software-Renderer/src/raster.c
// Function: Raster_DrawTriangle
void Raster_DrawTriangle( vec4 *v, SDL_Surface *Surface, obj_model_t *model, shader_t *shader ) {
	float w0, w1, w2, z, area;
	int index, x ,y, srcX, srcY;
	
	mat4 sst;
	color_t color;
	
	mat4_screen( sst, WINDOW_WIDTH / 2, WINDOW_HEIGHT / 2 );

	//vec3 p;
	vec3 overW = { 1.0f / v[0].w, 1.0f / v[1].w, 1.0f / v[2].w };
	vec3 pts[3] = {vec4_toVec3( vec4_pdiv( vec4_byMat4(v[0], sst) ) ),
				   vec4_toVec3( vec4_pdiv( vec4_byMat4(v[1], sst) ) ),
				   vec4_toVec3( vec4_pdiv( vec4_byMat4(v[2], sst) ) )};
				   
	vec2i bboxmin = { 0, 0 };
	vec2i bboxmax = { WINDOW_WIDTH - 1, WINDOW_HEIGHT - 1 };
	vec2i clamp   = { WINDOW_WIDTH - 1, WINDOW_HEIGHT - 1 };
	
	area = EdgeFunc( &pts[0], &pts[1], &pts[2] );
	
	bboxmax.x = MIN( MAX( pts[0].x, MAX( pts[1].x, pts[2].x) ), clamp.x );
	bboxmin.x = MAX( MIN( pts[0].x, MIN( pts[1].x, pts[2].x) ), 0 );
	bboxmax.y = MIN( MAX( pts[0].y, MAX( pts[1].y, pts[2].y) ), clamp.y );
	bboxmin.y = MAX( MIN( pts[0].y, MIN( pts[1].y, pts[2].y) ), 0 );

	for( x = bboxmin.x; x <= bboxmax.x; x++ ) {
		for( y = bboxmin.y; y <= bboxmax.y; y++ ) {
			int index = y * WINDOW_WIDTH + x;
			vec3 p = { x, y, 0.0f };
			w0 = EdgeFunc( &pts[1], &pts[2], &p );
			w1 = EdgeFunc( &pts[2], &pts[0], &p );
			w2 = EdgeFunc( &pts[0], &pts[1], &p );
			
			if( w0 >= 0.0f && w1 >= 0.0f && w2 >= 0.0f ) {
				w0 /= area;
				w1 /= area;
				w2 /= area;
				z = 1.0f / ( pts[0].z * w0 + pts[1].z * w1 + pts[2].z * w2 );
				
				if( z < renderer_->z_Buffer[index] ) {
					renderer_->z_Buffer[index] = z;
					
					vec3 d = { w0 * overW.x, w1 * overW.y, w2 * overW.z };
					float f = 1.0f/ (d.x + d.y + d.z);
					d = vec3_mlt(d, f);
					
					switch( renderer_->flagState ) {
						case RENDER_STATE_Z_BUFFER:
							color = Color_Gray( (unsigned char)( 255.0f * renderer_->z_Buffer[index] ) );
							break;
						case RENDER_STATE_LIT:
							color = Shader_Fragment( shader, model, d );
							break;
						case RENDER_STATE_UNLIT:
							color = Shader_Fragment( shader, model, d );
							break;
					}
					renderer_->PutPixel( Surface, p.x, p.y, Color_ToUInt32( color ) );
				}
			}
		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2c0, %rsp            # imm = 0x2C0
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
leaq -0x90(%rbp), %rdi
movq %rdi, -0x208(%rbp)
movss 0x3d4f(%rip), %xmm0     # 0xebc0
movss 0x3d4b(%rip), %xmm1     # 0xebc4
callq 0x79c0
movq -0x208(%rbp), %rdi
movq -0x8(%rbp), %rax
movss 0xc(%rax), %xmm2
movss 0x316e(%rip), %xmm0     # 0xe004
movaps %xmm0, %xmm1
divss %xmm2, %xmm1
movss %xmm1, -0xa0(%rbp)
movq -0x8(%rbp), %rax
movss 0x1c(%rax), %xmm2
movaps %xmm0, %xmm1
divss %xmm2, %xmm1
movss %xmm1, -0x9c(%rbp)
movq -0x8(%rbp), %rax
movss 0x2c(%rax), %xmm1
divss %xmm1, %xmm0
movss %xmm0, -0x98(%rbp)
movq -0x8(%rbp), %rax
movsd (%rax), %xmm0
movsd 0x8(%rax), %xmm1
callq 0x55d0
movlpd %xmm0, -0xf0(%rbp)
movlpd %xmm1, -0xe8(%rbp)
movsd -0xf0(%rbp), %xmm0
movsd -0xe8(%rbp), %xmm1
callq 0x4ea0
movlpd %xmm0, -0xe0(%rbp)
movlpd %xmm1, -0xd8(%rbp)
movsd -0xe0(%rbp), %xmm0
movsd -0xd8(%rbp), %xmm1
callq 0x4e50
movq -0x208(%rbp), %rdi
movss %xmm1, -0xf8(%rbp)
movlpd %xmm0, -0x100(%rbp)
movl -0xf8(%rbp), %eax
movl %eax, -0xc8(%rbp)
movq -0x100(%rbp), %rax
movq %rax, -0xd0(%rbp)
movq -0x8(%rbp), %rax
movsd 0x10(%rax), %xmm0
movsd 0x18(%rax), %xmm1
callq 0x55d0
movlpd %xmm0, -0x120(%rbp)
movlpd %xmm1, -0x118(%rbp)
movsd -0x120(%rbp), %xmm0
movsd -0x118(%rbp), %xmm1
callq 0x4ea0
movlpd %xmm0, -0x110(%rbp)
movlpd %xmm1, -0x108(%rbp)
movsd -0x110(%rbp), %xmm0
movsd -0x108(%rbp), %xmm1
callq 0x4e50
movq -0x208(%rbp), %rdi
movss %xmm1, -0x128(%rbp)
movlpd %xmm0, -0x130(%rbp)
movl -0x128(%rbp), %eax
movl %eax, -0xbc(%rbp)
movq -0x130(%rbp), %rax
movq %rax, -0xc4(%rbp)
movq -0x8(%rbp), %rax
movsd 0x20(%rax), %xmm0
movsd 0x28(%rax), %xmm1
callq 0x55d0
movlpd %xmm0, -0x150(%rbp)
movlpd %xmm1, -0x148(%rbp)
movsd -0x150(%rbp), %xmm0
movsd -0x148(%rbp), %xmm1
callq 0x4ea0
movlpd %xmm0, -0x140(%rbp)
movlpd %xmm1, -0x138(%rbp)
movsd -0x140(%rbp), %xmm0
movsd -0x138(%rbp), %xmm1
callq 0x4e50
movss %xmm1, -0x158(%rbp)
movlpd %xmm0, -0x160(%rbp)
movq -0x160(%rbp), %rax
movq %rax, -0xb8(%rbp)
movl -0x158(%rbp), %eax
movl %eax, -0xb0(%rbp)
leaq -0x168(%rbp), %rdi
xorl %esi, %esi
movl $0x8, %edx
callq 0x10c0
movq 0x3b3a(%rip), %rax      # 0xebc8
movq %rax, -0x170(%rbp)
movq 0x3b2c(%rip), %rax      # 0xebc8
movq %rax, -0x178(%rbp)
leaq -0xd0(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
addq $0xc, %rsi
leaq -0xd0(%rbp), %rdx
addq $0x18, %rdx
callq 0xbbf0
movss %xmm0, -0x34(%rbp)
movss -0xd0(%rbp), %xmm0
movss %xmm0, -0x1fc(%rbp)
movss -0xc4(%rbp), %xmm0
ucomiss -0xb8(%rbp), %xmm0
jbe 0xb0fd
movss -0xc4(%rbp), %xmm0
movss %xmm0, -0x20c(%rbp)
jmp 0xb10d
movss -0xb8(%rbp), %xmm0
movss %xmm0, -0x20c(%rbp)
movss -0x1fc(%rbp), %xmm0
movss -0x20c(%rbp), %xmm1
ucomiss %xmm1, %xmm0
jbe 0xb134
movss -0xd0(%rbp), %xmm0
movss %xmm0, -0x210(%rbp)
jmp 0xb177
movss -0xc4(%rbp), %xmm0
ucomiss -0xb8(%rbp), %xmm0
jbe 0xb157
movss -0xc4(%rbp), %xmm0
movss %xmm0, -0x214(%rbp)
jmp 0xb167
movss -0xb8(%rbp), %xmm0
movss %xmm0, -0x214(%rbp)
movss -0x214(%rbp), %xmm0
movss %xmm0, -0x210(%rbp)
movss -0x210(%rbp), %xmm1
cvtsi2ssl -0x178(%rbp), %xmm0
ucomiss %xmm1, %xmm0
jbe 0xb24f
movss -0xd0(%rbp), %xmm0
movss %xmm0, -0x218(%rbp)
movss -0xc4(%rbp), %xmm0
ucomiss -0xb8(%rbp), %xmm0
jbe 0xb1c3
movss -0xc4(%rbp), %xmm0
movss %xmm0, -0x21c(%rbp)
jmp 0xb1d3
movss -0xb8(%rbp), %xmm0
movss %xmm0, -0x21c(%rbp)
movss -0x218(%rbp), %xmm0
movss -0x21c(%rbp), %xmm1
ucomiss %xmm1, %xmm0
jbe 0xb1fa
movss -0xd0(%rbp), %xmm0
movss %xmm0, -0x220(%rbp)
jmp 0xb23d
movss -0xc4(%rbp), %xmm0
ucomiss -0xb8(%rbp), %xmm0
jbe 0xb21d
movss -0xc4(%rbp), %xmm0
movss %xmm0, -0x224(%rbp)
jmp 0xb22d
movss -0xb8(%rbp), %xmm0
movss %xmm0, -0x224(%rbp)
movss -0x224(%rbp), %xmm0
movss %xmm0, -0x220(%rbp)
movss -0x220(%rbp), %xmm0
movss %xmm0, -0x228(%rbp)
jmp 0xb25f
cvtsi2ssl -0x178(%rbp), %xmm0
movss %xmm0, -0x228(%rbp)
movss -0x228(%rbp), %xmm0
cvttss2si %xmm0, %eax
movl %eax, -0x170(%rbp)
movss -0xd0(%rbp), %xmm0
movss %xmm0, -0x22c(%rbp)
movss -0xc4(%rbp), %xmm1
movss -0xb8(%rbp), %xmm0
ucomiss %xmm1, %xmm0
jbe 0xb2a8
movss -0xc4(%rbp), %xmm0
movss %xmm0, -0x230(%rbp)
jmp 0xb2b8
movss -0xb8(%rbp), %xmm0
movss %xmm0, -0x230(%rbp)
movss -0x22c(%rbp), %xmm1
movss -0x230(%rbp), %xmm0
ucomiss %xmm1, %xmm0
jbe 0xb2df
movss -0xd0(%rbp), %xmm0
movss %xmm0, -0x234(%rbp)
jmp 0xb326
movss -0xc4(%rbp), %xmm1
movss -0xb8(%rbp), %xmm0
ucomiss %xmm1, %xmm0
jbe 0xb306
movss -0xc4(%rbp), %xmm0
movss %xmm0, -0x238(%rbp)
jmp 0xb316
movss -0xb8(%rbp), %xmm0
movss %xmm0, -0x238(%rbp)
movss -0x238(%rbp), %xmm0
movss %xmm0, -0x234(%rbp)
movss -0x234(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jbe 0xb401
movss -0xd0(%rbp), %xmm0
movss %xmm0, -0x23c(%rbp)
movss -0xc4(%rbp), %xmm1
movss -0xb8(%rbp), %xmm0
ucomiss %xmm1, %xmm0
jbe 0xb371
movss -0xc4(%rbp), %xmm0
movss %xmm0, -0x240(%rbp)
jmp 0xb381
movss -0xb8(%rbp), %xmm0
movss %xmm0, -0x240(%rbp)
movss -0x23c(%rbp), %xmm1
movss -0x240(%rbp), %xmm0
ucomiss %xmm1, %xmm0
jbe 0xb3a8
movss -0xd0(%rbp), %xmm0
movss %xmm0, -0x244(%rbp)
jmp 0xb3ef
movss -0xc4(%rbp), %xmm1
movss -0xb8(%rbp), %xmm0
ucomiss %xmm1, %xmm0
jbe 0xb3cf
movss -0xc4(%rbp), %xmm0
movss %xmm0, -0x248(%rbp)
jmp 0xb3df
movss -0xb8(%rbp), %xmm0
movss %xmm0, -0x248(%rbp)
movss -0x248(%rbp), %xmm0
movss %xmm0, -0x244(%rbp)
movss -0x244(%rbp), %xmm0
movss %xmm0, -0x24c(%rbp)
jmp 0xb40e
xorps %xmm0, %xmm0
movss %xmm0, -0x24c(%rbp)
jmp 0xb40e
movss -0x24c(%rbp), %xmm0
cvttss2si %xmm0, %eax
movl %eax, -0x168(%rbp)
movss -0xcc(%rbp), %xmm0
movss %xmm0, -0x250(%rbp)
movss -0xc0(%rbp), %xmm0
ucomiss -0xb4(%rbp), %xmm0
jbe 0xb453
movss -0xc0(%rbp), %xmm0
movss %xmm0, -0x254(%rbp)
jmp 0xb463
movss -0xb4(%rbp), %xmm0
movss %xmm0, -0x254(%rbp)
movss -0x250(%rbp), %xmm0
movss -0x254(%rbp), %xmm1
ucomiss %xmm1, %xmm0
jbe 0xb48a
movss -0xcc(%rbp), %xmm0
movss %xmm0, -0x258(%rbp)
jmp 0xb4cd
movss -0xc0(%rbp), %xmm0
ucomiss -0xb4(%rbp), %xmm0
jbe 0xb4ad
movss -0xc0(%rbp), %xmm0
movss %xmm0, -0x25c(%rbp)
jmp 0xb4bd
movss -0xb4(%rbp), %xmm0
movss %xmm0, -0x25c(%rbp)
movss -0x25c(%rbp), %xmm0
movss %xmm0, -0x258(%rbp)
movss -0x258(%rbp), %xmm1
cvtsi2ssl -0x174(%rbp), %xmm0
ucomiss %xmm1, %xmm0
jbe 0xb5a5
movss -0xcc(%rbp), %xmm0
movss %xmm0, -0x260(%rbp)
movss -0xc0(%rbp), %xmm0
ucomiss -0xb4(%rbp), %xmm0
jbe 0xb519
movss -0xc0(%rbp), %xmm0
movss %xmm0, -0x264(%rbp)
jmp 0xb529
movss -0xb4(%rbp), %xmm0
movss %xmm0, -0x264(%rbp)
movss -0x260(%rbp), %xmm0
movss -0x264(%rbp), %xmm1
ucomiss %xmm1, %xmm0
jbe 0xb550
movss -0xcc(%rbp), %xmm0
movss %xmm0, -0x268(%rbp)
jmp 0xb593
movss -0xc0(%rbp), %xmm0
ucomiss -0xb4(%rbp), %xmm0
jbe 0xb573
movss -0xc0(%rbp), %xmm0
movss %xmm0, -0x26c(%rbp)
jmp 0xb583
movss -0xb4(%rbp), %xmm0
movss %xmm0, -0x26c(%rbp)
movss -0x26c(%rbp), %xmm0
movss %xmm0, -0x268(%rbp)
movss -0x268(%rbp), %xmm0
movss %xmm0, -0x270(%rbp)
jmp 0xb5b5
cvtsi2ssl -0x174(%rbp), %xmm0
movss %xmm0, -0x270(%rbp)
movss -0x270(%rbp), %xmm0
cvttss2si %xmm0, %eax
movl %eax, -0x16c(%rbp)
movss -0xcc(%rbp), %xmm0
movss %xmm0, -0x274(%rbp)
movss -0xc0(%rbp), %xmm1
movss -0xb4(%rbp), %xmm0
ucomiss %xmm1, %xmm0
jbe 0xb5fe
movss -0xc0(%rbp), %xmm0
movss %xmm0, -0x278(%rbp)
jmp 0xb60e
movss -0xb4(%rbp), %xmm0
movss %xmm0, -0x278(%rbp)
movss -0x274(%rbp), %xmm1
movss -0x278(%rbp), %xmm0
ucomiss %xmm1, %xmm0
jbe 0xb635
movss -0xcc(%rbp), %xmm0
movss %xmm0, -0x27c(%rbp)
jmp 0xb67c
movss -0xc0(%rbp), %xmm1
movss -0xb4(%rbp), %xmm0
ucomiss %xmm1, %xmm0
jbe 0xb65c
movss -0xc0(%rbp), %xmm0
movss %xmm0, -0x280(%rbp)
jmp 0xb66c
movss -0xb4(%rbp), %xmm0
movss %xmm0, -0x280(%rbp)
movss -0x280(%rbp), %xmm0
movss %xmm0, -0x27c(%rbp)
movss -0x27c(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jbe 0xb757
movss -0xcc(%rbp), %xmm0
movss %xmm0, -0x284(%rbp)
movss -0xc0(%rbp), %xmm1
movss -0xb4(%rbp), %xmm0
ucomiss %xmm1, %xmm0
jbe 0xb6c7
movss -0xc0(%rbp), %xmm0
movss %xmm0, -0x288(%rbp)
jmp 0xb6d7
movss -0xb4(%rbp), %xmm0
movss %xmm0, -0x288(%rbp)
movss -0x284(%rbp), %xmm1
movss -0x288(%rbp), %xmm0
ucomiss %xmm1, %xmm0
jbe 0xb6fe
movss -0xcc(%rbp), %xmm0
movss %xmm0, -0x28c(%rbp)
jmp 0xb745
movss -0xc0(%rbp), %xmm1
movss -0xb4(%rbp), %xmm0
ucomiss %xmm1, %xmm0
jbe 0xb725
movss -0xc0(%rbp), %xmm0
movss %xmm0, -0x290(%rbp)
jmp 0xb735
movss -0xb4(%rbp), %xmm0
movss %xmm0, -0x290(%rbp)
movss -0x290(%rbp), %xmm0
movss %xmm0, -0x28c(%rbp)
movss -0x28c(%rbp), %xmm0
movss %xmm0, -0x294(%rbp)
jmp 0xb764
xorps %xmm0, %xmm0
movss %xmm0, -0x294(%rbp)
jmp 0xb764
movss -0x294(%rbp), %xmm0
cvttss2si %xmm0, %eax
movl %eax, -0x164(%rbp)
movl -0x168(%rbp), %eax
movl %eax, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
cmpl -0x170(%rbp), %eax
jg 0xbbe4
movl -0x164(%rbp), %eax
movl %eax, -0x40(%rbp)
movl -0x40(%rbp), %eax
cmpl -0x16c(%rbp), %eax
jg 0xbbd4
imull $0x500, -0x40(%rbp), %eax # imm = 0x500
addl -0x3c(%rbp), %eax
movl %eax, -0x17c(%rbp)
cvtsi2ssl -0x3c(%rbp), %xmm0
movss %xmm0, -0x188(%rbp)
cvtsi2ssl -0x40(%rbp), %xmm0
movss %xmm0, -0x184(%rbp)
xorps %xmm0, %xmm0
movss %xmm0, -0x180(%rbp)
leaq -0xd0(%rbp), %rdi
addq $0xc, %rdi
leaq -0xd0(%rbp), %rsi
addq $0x18, %rsi
leaq -0x188(%rbp), %rdx
callq 0xbbf0
movss %xmm0, -0x24(%rbp)
leaq -0xd0(%rbp), %rdi
addq $0x18, %rdi
leaq -0xd0(%rbp), %rsi
leaq -0x188(%rbp), %rdx
callq 0xbbf0
movss %xmm0, -0x28(%rbp)
leaq -0xd0(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
addq $0xc, %rsi
leaq -0x188(%rbp), %rdx
callq 0xbbf0
movss %xmm0, -0x2c(%rbp)
movss -0x24(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jb 0xbbc4
movss -0x28(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jb 0xbbc4
movss -0x2c(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jb 0xbbc4
movss -0x34(%rbp), %xmm1
movss -0x24(%rbp), %xmm0
divss %xmm1, %xmm0
movss %xmm0, -0x24(%rbp)
movss -0x34(%rbp), %xmm1
movss -0x28(%rbp), %xmm0
divss %xmm1, %xmm0
movss %xmm0, -0x28(%rbp)
movss -0x34(%rbp), %xmm1
movss -0x2c(%rbp), %xmm0
divss %xmm1, %xmm0
movss %xmm0, -0x2c(%rbp)
movss -0xc8(%rbp), %xmm0
movss -0x24(%rbp), %xmm2
movss -0xbc(%rbp), %xmm1
mulss -0x28(%rbp), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss -0xb0(%rbp), %xmm1
movss -0x2c(%rbp), %xmm2
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0x2711(%rip), %xmm0     # 0xe004
divss %xmm1, %xmm0
movss %xmm0, -0x30(%rbp)
movss -0x30(%rbp), %xmm1
leaq 0x7928(%rip), %rax      # 0x13230
movq (%rax), %rax
movq 0x18(%rax), %rax
movslq -0x17c(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
ucomiss %xmm1, %xmm0
jbe 0xbbc2
movss -0x30(%rbp), %xmm0
leaq 0x7900(%rip), %rax      # 0x13230
movq %rax, -0x2a0(%rbp)
movq (%rax), %rax
movq 0x18(%rax), %rax
movslq -0x17c(%rbp), %rcx
movss %xmm0, (%rax,%rcx,4)
movss -0x24(%rbp), %xmm0
movss -0xa0(%rbp), %xmm1
mulss %xmm1, %xmm0
movss %xmm0, -0x198(%rbp)
movss -0x28(%rbp), %xmm0
movss -0x9c(%rbp), %xmm1
mulss %xmm1, %xmm0
movss %xmm0, -0x194(%rbp)
movss -0x2c(%rbp), %xmm0
movss -0x98(%rbp), %xmm1
mulss %xmm1, %xmm0
movss %xmm0, -0x190(%rbp)
movss -0x198(%rbp), %xmm1
movss -0x194(%rbp), %xmm0
addss %xmm0, %xmm1
movss -0x190(%rbp), %xmm0
addss %xmm0, %xmm1
movss 0x2647(%rip), %xmm0     # 0xe004
divss %xmm1, %xmm0
movss %xmm0, -0x19c(%rbp)
movss -0x19c(%rbp), %xmm2
movl -0x190(%rbp), %eax
movl %eax, -0x1b0(%rbp)
movq -0x198(%rbp), %rax
movq %rax, -0x1b8(%rbp)
movsd -0x1b8(%rbp), %xmm0
movss -0x1b0(%rbp), %xmm1
callq 0x4440
movq -0x2a0(%rbp), %rax
movss %xmm1, -0x1c0(%rbp)
movlpd %xmm0, -0x1c8(%rbp)
movl -0x1c0(%rbp), %ecx
movl %ecx, -0x1a0(%rbp)
movq -0x1c8(%rbp), %rcx
movq %rcx, -0x1a8(%rbp)
movl -0x1a0(%rbp), %ecx
movl %ecx, -0x190(%rbp)
movq -0x1a8(%rbp), %rcx
movq %rcx, -0x198(%rbp)
movq (%rax), %rax
movl 0x8(%rax), %eax
movl %eax, -0x298(%rbp)
subl $0x1, %eax
je 0xbac9
jmp 0xba5e
movl -0x298(%rbp), %eax
subl $0x2, %eax
je 0xbb14
jmp 0xba6f
movl -0x298(%rbp), %eax
subl $0x3, %eax
jne 0xbb5d
jmp 0xba80
leaq 0x77a9(%rip), %rax      # 0x13230
movq (%rax), %rax
movq 0x18(%rax), %rax
movslq -0x17c(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
movss 0x277e(%rip), %xmm1     # 0xe220
mulss %xmm1, %xmm0
cvttss2si %xmm0, %eax
movzbl %al, %edi
callq 0x2d30
movl %eax, -0x1cc(%rbp)
movl -0x1cc(%rbp), %eax
movl %eax, -0x94(%rbp)
jmp 0xbb5d
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rsi
movl -0x190(%rbp), %eax
movl %eax, -0x1d8(%rbp)
movq -0x198(%rbp), %rax
movq %rax, -0x1e0(%rbp)
movsd -0x1e0(%rbp), %xmm0
movss -0x1d8(%rbp), %xmm1
callq 0xce10
movl %eax, -0x1d0(%rbp)
movl -0x1d0(%rbp), %eax
movl %eax, -0x94(%rbp)
jmp 0xbb5d
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rsi
movl -0x190(%rbp), %eax
movl %eax, -0x1f0(%rbp)
movq -0x198(%rbp), %rax
movq %rax, -0x1f8(%rbp)
movsd -0x1f8(%rbp), %xmm0
movss -0x1f0(%rbp), %xmm1
callq 0xce10
movl %eax, -0x1e4(%rbp)
movl -0x1e4(%rbp), %eax
movl %eax, -0x94(%rbp)
leaq 0x76cc(%rip), %rax      # 0x13230
movq (%rax), %rax
movq 0x28(%rax), %rax
movq %rax, -0x2a8(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x2b8(%rbp)
cvttss2si -0x188(%rbp), %eax
movl %eax, -0x2b0(%rbp)
cvttss2si -0x184(%rbp), %eax
movl %eax, -0x2ac(%rbp)
movl -0x94(%rbp), %edi
callq 0x3010
movq -0x2b8(%rbp), %rdi
movl -0x2b0(%rbp), %esi
movl -0x2ac(%rbp), %edx
movl %eax, %ecx
movq -0x2a8(%rbp), %rax
callq *%rax
jmp 0xbbc4
jmp 0xbbc6
movl -0x40(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x40(%rbp)
jmp 0xb797
jmp 0xbbd6
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0xb77f
addq $0x2c0, %rsp            # imm = 0x2C0
popq %rbp
retq
nopl (%rax)