// File: /workspace/github_c_makefile_star2_O2/space222[P]silo/silo.cpp
// Function: silo_launch(_cairo*, nk_context*)
void silo_launch(cairo_t* ct, nk_context* nk)
{
	const struct nk_command *cmd = 0;
	nk_foreach(cmd, nk) {
    	switch (cmd->type) {
	default: printf("Unhandled cmd: %i\nexiting...", cmd->type); exit(1);
	case NK_COMMAND_NOP: break;
	case NK_COMMAND_CURVE:
		{
			nk_command_curve* cl=(nk_command_curve*) cmd;
			cairo_set_source_rgb(ct, cl->color.r/255.0f, cl->color.g/255.0f, cl->color.b/255.0f); 
			cairo_set_line_width(ct, cl->line_thickness);
			cairo_move_to(ct, cl->begin.x, cl->begin.y);
			cairo_curve_to(ct, cl->ctrl[0].x, cl->ctrl[0].y, cl->ctrl[1].x, cl->ctrl[1].y, cl->end.x, cl->end.y);
			cairo_stroke(ct);
		}break;
	case NK_COMMAND_RECT_MULTI_COLOR:
		{
			nk_command_rect_multi_color* cl=(nk_command_rect_multi_color*) cmd;
			
			cairo_pattern_t *pattern = cairo_pattern_create_mesh();
			cairo_mesh_pattern_begin_patch (pattern);
			cairo_mesh_pattern_move_to(pattern, cl->x, cl->y+cl->h);
			cairo_mesh_pattern_line_to(pattern, cl->x, cl->y);
			cairo_mesh_pattern_line_to(pattern, cl->x+cl->w, cl->y);
			cairo_mesh_pattern_line_to(pattern, cl->x+cl->w, cl->y+cl->h);
			//cairo_mesh_pattern_line_to(pattern, cl->x, cl->y+cl->h);

			cairo_mesh_pattern_set_corner_color_rgba(pattern, 3, 
				cl->right.r/255.0f, cl->right.g/255.0f, cl->right.b/255.0f, cl->right.a/255.0f);
			cairo_mesh_pattern_set_corner_color_rgba(pattern, 2, 
				cl->top.r/255.0f, cl->top.g/255.0f, cl->top.b/255.0f, cl->top.a/255.0f);
			cairo_mesh_pattern_set_corner_color_rgba(pattern, 1, 
				cl->left.r/255.0f, cl->left.g/255.0f, cl->left.b/255.0f, cl->left.a/255.0f);
			cairo_mesh_pattern_set_corner_color_rgba(pattern, 0, 
				cl->bottom.r/255.0f, cl->bottom.g/255.0f, cl->bottom.b/255.0f, cl->bottom.a/255.0f);
			cairo_mesh_pattern_end_patch(pattern);

			cairo_set_source(ct, pattern);
			cairo_rectangle(ct, cl->x, cl->y, cl->w, cl->h);
			cairo_fill(ct);
			cairo_pattern_destroy(pattern);
		}break;
	case NK_COMMAND_ARC_FILLED:
		{
			nk_command_arc_filled* cl=(nk_command_arc_filled*) cmd;
			cairo_set_source_rgb(ct, cl->color.r/255.0f, cl->color.g/255.0f, cl->color.b/255.0f); 
			cairo_move_to(ct, cl->cx, cl->cy);
			cairo_arc(ct, cl->cx, cl->cy, cl->r, cl->a[0], cl->a[1]);
			cairo_fill(ct);			
		}break;
	case NK_COMMAND_ARC:
		{
			nk_command_arc* cl =(nk_command_arc*) cmd;
			cairo_set_source_rgb(ct, cl->color.r/255.0f, cl->color.g/255.0f, cl->color.b/255.0f); 
			cairo_set_line_width(ct, cl->line_thickness);
			cairo_move_to(ct, cl->cx, cl->cy);
			cairo_arc(ct, cl->cx, cl->cy, cl->r, cl->a[0], cl->a[1]);
			cairo_stroke(ct);
		}break;
	case NK_COMMAND_CIRCLE:
		{
			nk_command_circle* cl =(nk_command_circle*) cmd;
			cairo_set_source_rgb(ct, cl->color.r/255.0f, cl->color.g/255.0f, cl->color.b/255.0f); 
			cairo_set_line_width(ct, cl->line_thickness);
			cairo_move_to(ct, cl->x + cl->w/2, cl->y + cl->w/2);
			cairo_arc(ct, cl->x + cl->w/2, cl->y + cl->w/2, cl->w/2, 0, 6.28f);
			cairo_stroke(ct);
		}break;
	case NK_COMMAND_CIRCLE_FILLED:
		{
			nk_command_circle_filled* cl =(nk_command_circle_filled*) cmd;
			cairo_set_source_rgb(ct, cl->color.r/255.0f, cl->color.g/255.0f, cl->color.b/255.0f); 
			cairo_move_to(ct, cl->x + cl->w/2, cl->y + cl->w/2);
			cairo_arc(ct, cl->x + cl->w/2, cl->y + cl->w/2, cl->w/2, 0, 6.28f);
			cairo_fill(ct);
		}break;
	case NK_COMMAND_TEXT:
		{
			nk_command_text* txt =(nk_command_text*) cmd;
			cairo_set_source_rgb(ct, txt->background.r/255.0f, txt->background.g/255.0f, txt->background.b/255.0f); 
			cairo_rectangle(ct, txt->x, txt->y, txt->w, txt->h);
			cairo_fill(ct);
			pango_layout_set_text(layout, (char*)&txt->string, txt->length);
			cairo_set_source_rgb(ct, txt->foreground.r/255.0f, txt->foreground.g/255.0f, txt->foreground.b/255.0f); 
			cairo_move_to(ct, txt->x, txt->y);
			pango_cairo_show_layout(ct, layout);
		}break;
	case NK_COMMAND_SCISSOR:
		{
			nk_command_scissor* sc =(nk_command_scissor*) cmd;
			cairo_reset_clip(ct);
			cairo_rectangle(ct, sc->x, sc->y, sc->w, sc->h);
			cairo_clip(ct);
		}break;
   	case NK_COMMAND_LINE:
        	{
			nk_command_line* cl =(nk_command_line*) cmd;
			cairo_set_source_rgb(ct, cl->color.r/255.0f, cl->color.g/255.0f, cl->color.b/255.0f); 
			cairo_set_line_width(ct, cl->line_thickness);
			cairo_move_to(ct, cl->begin.x, cl->begin.y);
			cairo_line_to(ct, cl->end.x, cl->end.y);
			cairo_stroke(ct);
        	}break;
	case NK_COMMAND_RECT:
	        {
			nk_command_rect* cr =(nk_command_rect*) cmd;
			cairo_set_line_width(ct, cr->line_thickness);
			cairo_set_source_rgb(ct, cr->color.r/255.0f, cr->color.g/255.0f, cr->color.b/255.0f);
			cairo_rectangle(ct, cr->x, cr->y, cr->w, cr->h);
			cairo_stroke(ct);
		}break;
	case NK_COMMAND_RECT_FILLED:
		{
			nk_command_rect_filled* cr =(nk_command_rect_filled*) cmd;
			cairo_set_source_rgb(ct, cr->color.r/255.0f, cr->color.g/255.0f, cr->color.b/255.0f);
			cairo_rectangle(ct, cr->x, cr->y, cr->w, cr->h);
			cairo_fill(ct);
		}break;
	case NK_COMMAND_TRIANGLE:
		{
			nk_command_triangle* cr =(nk_command_triangle*) cmd;
			cairo_set_source_rgb(ct, cr->color.r/255.0f, cr->color.g/255.0f, cr->color.b/255.0f);
			cairo_set_line_width(ct, cr->line_thickness);
			cairo_move_to(ct, cr->a.x, cr->a.y);
			cairo_line_to(ct, cr->b.x, cr->b.y);
			cairo_line_to(ct, cr->c.x, cr->c.y);
			cairo_line_to(ct, cr->a.x, cr->a.y);
			cairo_stroke(ct);
		}break;
	case NK_COMMAND_TRIANGLE_FILLED:
		{
			nk_command_triangle_filled* cr =(nk_command_triangle_filled*) cmd;
			cairo_set_source_rgb(ct, cr->color.r/255.0f, cr->color.g/255.0f, cr->color.b/255.0f);
			cairo_move_to(ct, cr->a.x, cr->a.y);
			cairo_line_to(ct, cr->b.x, cr->b.y);
			cairo_line_to(ct, cr->c.x, cr->c.y);
			cairo_line_to(ct, cr->a.x, cr->a.y);
			cairo_fill(ct);
		}break;
	case NK_COMMAND_POLYGON_FILLED:
		{
			nk_command_polygon_filled* cr =(nk_command_polygon_filled*) cmd;
			cairo_set_source_rgb(ct, cr->color.r/255.0f, cr->color.g/255.0f, cr->color.b/255.0f);
			struct nk_vec2i* pts =(struct nk_vec2i*) &cr->points[0];
			cairo_move_to(ct, pts[0].x, pts[0].y);
			for(int ptindex = 1; ptindex < cr->point_count; ++ptindex) cairo_line_to(ct, pts[ptindex].x, pts[ptindex].y);
			cairo_line_to(ct, pts[0].x, pts[0].y);
			cairo_fill(ct);
		}break;
	case NK_COMMAND_POLYGON:
		{
			nk_command_polygon* cr=(nk_command_polygon*) cmd;
			cairo_set_source_rgb(ct, cr->color.r/255.0f, cr->color.g/255.0f, cr->color.b/255.0f);
			cairo_set_line_width(ct, cr->line_thickness);
			struct nk_vec2i* pts =(struct nk_vec2i*) &cr->points[0];
			cairo_move_to(ct, pts[0].x, pts[0].y);
			for(int ptindex = 1; ptindex < cr->point_count; ++ptindex) cairo_line_to(ct, pts[ptindex].x, pts[ptindex].y);
			cairo_line_to(ct, pts[0].x, pts[0].y);
			cairo_stroke(ct);
		}break;
	case NK_COMMAND_POLYLINE:
		{
			nk_command_polyline* cr =(nk_command_polyline*) cmd;
			cairo_set_source_rgb(ct, cr->color.r/255.0f, cr->color.g/255.0f, cr->color.b/255.0f);
			cairo_set_line_width(ct, cr->line_thickness);
			struct nk_vec2i* pts =(struct nk_vec2i*) &cr->points[0];
			cairo_move_to(ct, pts[0].x, pts[0].y);
			for(int ptindex = 1; ptindex < cr->point_count; ++ptindex) cairo_line_to(ct, pts[ptindex].x, pts[ptindex].y);
			//cairo_line_to(ct, pts[0].x, pts[0].y); // looks like polyline doesn't connect, otherwise would be same
								 // as stroked polygon
			cairo_stroke(ct);
		}break;
	} //end of cmd switch
	} //end of nk_foreach

	return;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r14
movq %rsi, %rdi
callq 0x9e5b
movq %rax, %r15
leaq 0x1d711(%rip), %r12     # 0x20098
pushq $0x7
popq %r13
testq %r15, %r15
je 0x3559
movl (%r15), %esi
cmpq $0x10, %rsi
ja 0x3568
movslq (%r12,%rsi,4), %rax
addq %r12, %rax
jmpq *%rax
movq %r14, %rdi
callq 0x2280
movswl 0x10(%r15), %eax
cvtsi2sd %eax, %xmm0
movswl 0x12(%r15), %eax
cvtsi2sd %eax, %xmm1
movzwl 0x14(%r15), %eax
cvtsi2sd %eax, %xmm2
movzwl 0x16(%r15), %eax
cvtsi2sd %eax, %xmm3
movq %r14, %rdi
callq 0x2150
movq %r14, %rdi
callq 0x2260
jmp 0x3546
movzbl 0x18(%r15), %eax
cvtsi2ss %eax, %xmm0
movss 0x1d68c(%rip), %xmm3    # 0x20088
divss %xmm3, %xmm0
cvtss2sd %xmm0, %xmm0
movzbl 0x19(%r15), %eax
cvtsi2ss %eax, %xmm1
movzbl 0x1a(%r15), %eax
cvtsi2ss %eax, %xmm2
divss %xmm3, %xmm1
cvtss2sd %xmm1, %xmm1
divss %xmm3, %xmm2
cvtss2sd %xmm2, %xmm2
movq %r14, %rdi
callq 0x22b0
movswl 0x20(%r15), %eax
cvtsi2sd %eax, %xmm0
movswl 0x22(%r15), %eax
cvtsi2sd %eax, %xmm1
movzwl 0x24(%r15), %eax
cvtsi2sd %eax, %xmm2
movzwl 0x26(%r15), %eax
cvtsi2sd %eax, %xmm3
movq %r14, %rdi
callq 0x2150
movq %r14, %rdi
callq 0x2270
movq 0x2c767(%rip), %rdi     # 0x2f1d0
leaq 0x30(%r15), %rsi
movl 0x2c(%r15), %edx
callq 0x2030
movzbl 0x1c(%r15), %eax
cvtsi2ss %eax, %xmm0
movss 0x1d601(%rip), %xmm3    # 0x20088
divss %xmm3, %xmm0
cvtss2sd %xmm0, %xmm0
movzbl 0x1d(%r15), %eax
cvtsi2ss %eax, %xmm1
movzbl 0x1e(%r15), %eax
cvtsi2ss %eax, %xmm2
divss %xmm3, %xmm1
cvtss2sd %xmm1, %xmm1
divss %xmm3, %xmm2
cvtss2sd %xmm2, %xmm2
movq %r14, %rdi
callq 0x22b0
movswl 0x20(%r15), %eax
cvtsi2sd %eax, %xmm0
movswl 0x22(%r15), %eax
cvtsi2sd %eax, %xmm1
movq %r14, %rdi
callq 0x2210
movq 0x2c6f6(%rip), %rsi     # 0x2f1d0
movq %r14, %rdi
callq 0x2240
jmp 0x3546
movzbl 0x10(%r15), %eax
cvtsi2ss %eax, %xmm0
movss 0x1d590(%rip), %xmm3    # 0x20088
divss %xmm3, %xmm0
cvtss2sd %xmm0, %xmm0
movzbl 0x11(%r15), %eax
cvtsi2ss %eax, %xmm1
movzbl 0x12(%r15), %eax
cvtsi2ss %eax, %xmm2
divss %xmm3, %xmm1
cvtss2sd %xmm1, %xmm1
divss %xmm3, %xmm2
cvtss2sd %xmm2, %xmm2
movq %r14, %rdi
callq 0x22b0
movswl 0x16(%r15), %eax
cvtsi2sd %eax, %xmm0
movswl 0x18(%r15), %eax
cvtsi2sd %eax, %xmm1
movq %r14, %rdi
callq 0x2210
movq %r13, %rbp
leaq -0x6(%rbp), %rax
movzwl 0x14(%r15), %ecx
cmpq %rcx, %rax
jae 0x2b75
movswl -0x2(%r15,%rbp,4), %eax
cvtsi2sd %eax, %xmm0
movswl (%r15,%rbp,4), %eax
cvtsi2sd %eax, %xmm1
movq %r14, %rdi
callq 0x2130
incq %rbp
jmp 0x2b47
movswl 0x16(%r15), %eax
cvtsi2sd %eax, %xmm0
movswl 0x18(%r15), %eax
jmp 0x2d61
movzbl 0x1e(%r15), %eax
cvtsi2ss %eax, %xmm0
movss 0x1d4ef(%rip), %xmm3    # 0x20088
divss %xmm3, %xmm0
cvtss2sd %xmm0, %xmm0
movzbl 0x1f(%r15), %eax
cvtsi2ss %eax, %xmm1
movzbl 0x20(%r15), %eax
cvtsi2ss %eax, %xmm2
divss %xmm3, %xmm1
cvtss2sd %xmm1, %xmm1
divss %xmm3, %xmm2
cvtss2sd %xmm2, %xmm2
movq %r14, %rdi
callq 0x22b0
movzwl 0x10(%r15), %eax
cvtsi2sd %eax, %xmm0
movq %r14, %rdi
callq 0x21b0
movswl 0x12(%r15), %eax
cvtsi2sd %eax, %xmm0
movswl 0x14(%r15), %eax
cvtsi2sd %eax, %xmm1
movq %r14, %rdi
callq 0x2210
movswl 0x16(%r15), %eax
cvtsi2sd %eax, %xmm0
movswl 0x18(%r15), %eax
cvtsi2sd %eax, %xmm1
movq %r14, %rdi
callq 0x2130
movswl 0x1a(%r15), %eax
cvtsi2sd %eax, %xmm0
movswl 0x1c(%r15), %eax
cvtsi2sd %eax, %xmm1
movq %r14, %rdi
callq 0x2130
movswl 0x12(%r15), %eax
cvtsi2sd %eax, %xmm0
movswl 0x14(%r15), %eax
jmp 0x31b7
movzwl 0x12(%r15), %eax
cvtsi2sd %eax, %xmm0
movq %r14, %rdi
callq 0x21b0
movzbl 0x1c(%r15), %eax
cvtsi2ss %eax, %xmm0
movss 0x1d429(%rip), %xmm3    # 0x20088
divss %xmm3, %xmm0
cvtss2sd %xmm0, %xmm0
movzbl 0x1d(%r15), %eax
cvtsi2ss %eax, %xmm1
movzbl 0x1e(%r15), %eax
cvtsi2ss %eax, %xmm2
divss %xmm3, %xmm1
cvtss2sd %xmm1, %xmm1
divss %xmm3, %xmm2
cvtss2sd %xmm2, %xmm2
movq %r14, %rdi
callq 0x22b0
movswl 0x14(%r15), %eax
cvtsi2sd %eax, %xmm0
movswl 0x16(%r15), %eax
cvtsi2sd %eax, %xmm1
movzwl 0x18(%r15), %eax
cvtsi2sd %eax, %xmm2
movzwl 0x1a(%r15), %eax
cvtsi2sd %eax, %xmm3
movq %r14, %rdi
callq 0x2150
jmp 0x31c3
movzbl 0x1c(%r15), %eax
cvtsi2ss %eax, %xmm0
movss 0x1d3b5(%rip), %xmm3    # 0x20088
divss %xmm3, %xmm0
cvtss2sd %xmm0, %xmm0
movzbl 0x1d(%r15), %eax
cvtsi2ss %eax, %xmm1
movzbl 0x1e(%r15), %eax
cvtsi2ss %eax, %xmm2
divss %xmm3, %xmm1
cvtss2sd %xmm1, %xmm1
divss %xmm3, %xmm2
cvtss2sd %xmm2, %xmm2
movq %r14, %rdi
callq 0x22b0
movswl 0x10(%r15), %eax
cvtsi2sd %eax, %xmm0
movswl 0x12(%r15), %eax
cvtsi2sd %eax, %xmm1
movq %r14, %rdi
callq 0x2210
movswl 0x14(%r15), %eax
cvtsi2sd %eax, %xmm0
movswl 0x16(%r15), %eax
cvtsi2sd %eax, %xmm1
movq %r14, %rdi
callq 0x2130
movswl 0x18(%r15), %eax
cvtsi2sd %eax, %xmm0
movswl 0x1a(%r15), %eax
cvtsi2sd %eax, %xmm1
movq %r14, %rdi
callq 0x2130
movswl 0x10(%r15), %eax
cvtsi2sd %eax, %xmm0
movswl 0x12(%r15), %eax
cvtsi2sd %eax, %xmm1
movq %r14, %rdi
callq 0x2130
jmp 0x353e
movzbl 0x20(%r15), %eax
cvtsi2ss %eax, %xmm0
movss 0x1d305(%rip), %xmm3    # 0x20088
divss %xmm3, %xmm0
cvtss2sd %xmm0, %xmm0
movzbl 0x21(%r15), %eax
cvtsi2ss %eax, %xmm1
movzbl 0x22(%r15), %eax
cvtsi2ss %eax, %xmm2
divss %xmm3, %xmm1
cvtss2sd %xmm1, %xmm1
divss %xmm3, %xmm2
cvtss2sd %xmm2, %xmm2
movq %r14, %rdi
callq 0x22b0
movzwl 0x16(%r15), %eax
cvtsi2sd %eax, %xmm0
movq %r14, %rdi
callq 0x21b0
movswl 0x10(%r15), %eax
cvtsi2sd %eax, %xmm0
movswl 0x12(%r15), %eax
cvtsi2sd %eax, %xmm1
movq %r14, %rdi
callq 0x2210
movswl 0x10(%r15), %eax
cvtsi2sd %eax, %xmm0
movswl 0x12(%r15), %eax
cvtsi2sd %eax, %xmm1
movzwl 0x14(%r15), %eax
cvtsi2sd %eax, %xmm2
cvtss2sd 0x18(%r15), %xmm3
cvtss2sd 0x1c(%r15), %xmm4
movq %r14, %rdi
jmp 0x308c
movzbl 0x1a(%r15), %eax
cvtsi2ss %eax, %xmm0
movss 0x1d268(%rip), %xmm3    # 0x20088
divss %xmm3, %xmm0
cvtss2sd %xmm0, %xmm0
movzbl 0x1b(%r15), %eax
cvtsi2ss %eax, %xmm1
movzbl 0x1c(%r15), %eax
cvtsi2ss %eax, %xmm2
divss %xmm3, %xmm1
cvtss2sd %xmm1, %xmm1
divss %xmm3, %xmm2
cvtss2sd %xmm2, %xmm2
movq %r14, %rdi
callq 0x22b0
movzwl 0x10(%r15), %eax
cvtsi2sd %eax, %xmm0
movq %r14, %rdi
callq 0x21b0
movswl 0x12(%r15), %eax
cvtsi2sd %eax, %xmm0
movswl 0x14(%r15), %eax
cvtsi2sd %eax, %xmm1
movq %r14, %rdi
callq 0x2210
movswl 0x16(%r15), %eax
cvtsi2sd %eax, %xmm0
movswl 0x18(%r15), %eax
jmp 0x31b7
movzbl 0x10(%r15), %eax
cvtsi2ss %eax, %xmm0
movss 0x1d1e7(%rip), %xmm3    # 0x20088
divss %xmm3, %xmm0
cvtss2sd %xmm0, %xmm0
movzbl 0x11(%r15), %eax
cvtsi2ss %eax, %xmm1
movzbl 0x12(%r15), %eax
cvtsi2ss %eax, %xmm2
divss %xmm3, %xmm1
cvtss2sd %xmm1, %xmm1
divss %xmm3, %xmm2
cvtss2sd %xmm2, %xmm2
movq %r14, %rdi
callq 0x22b0
movzwl 0x14(%r15), %eax
cvtsi2sd %eax, %xmm0
movq %r14, %rdi
callq 0x21b0
movswl 0x18(%r15), %eax
cvtsi2sd %eax, %xmm0
movswl 0x1a(%r15), %eax
cvtsi2sd %eax, %xmm1
movq %r14, %rdi
callq 0x2210
xorl %eax, %eax
leaq 0x1(%rax), %rbp
movzwl 0x16(%r15), %ecx
cmpq %rcx, %rbp
jae 0x31c3
movswl 0x1c(%r15,%rax,4), %ecx
cvtsi2sd %ecx, %xmm0
movswl 0x1e(%r15,%rax,4), %eax
cvtsi2sd %eax, %xmm1
movq %r14, %rdi
callq 0x2130
movq %rbp, %rax
jmp 0x2f00
movzbl 0x22(%r15), %eax
cvtsi2ss %eax, %xmm0
movss 0x1d144(%rip), %xmm3    # 0x20088
divss %xmm3, %xmm0
cvtss2sd %xmm0, %xmm0
movzbl 0x23(%r15), %eax
cvtsi2ss %eax, %xmm1
movzbl 0x24(%r15), %eax
cvtsi2ss %eax, %xmm2
divss %xmm3, %xmm1
cvtss2sd %xmm1, %xmm1
divss %xmm3, %xmm2
cvtss2sd %xmm2, %xmm2
movq %r14, %rdi
callq 0x22b0
movzwl 0x10(%r15), %eax
cvtsi2sd %eax, %xmm0
movq %r14, %rdi
callq 0x21b0
movswl 0x12(%r15), %eax
cvtsi2sd %eax, %xmm0
movswl 0x14(%r15), %eax
cvtsi2sd %eax, %xmm1
movq %r14, %rdi
callq 0x2210
movswl 0x1a(%r15), %eax
cvtsi2sd %eax, %xmm0
movswl 0x1c(%r15), %eax
cvtsi2sd %eax, %xmm1
movswl 0x1e(%r15), %eax
cvtsi2sd %eax, %xmm2
movswl 0x20(%r15), %eax
cvtsi2sd %eax, %xmm3
movswl 0x16(%r15), %eax
cvtsi2sd %eax, %xmm4
movswl 0x18(%r15), %eax
cvtsi2sd %eax, %xmm5
movq %r14, %rdi
callq 0x2220
jmp 0x31c3
movzbl 0x1a(%r15), %eax
cvtsi2ss %eax, %xmm0
movss 0x1d093(%rip), %xmm3    # 0x20088
divss %xmm3, %xmm0
cvtss2sd %xmm0, %xmm0
movzbl 0x1b(%r15), %eax
cvtsi2ss %eax, %xmm1
movzbl 0x1c(%r15), %eax
cvtsi2ss %eax, %xmm2
divss %xmm3, %xmm1
cvtss2sd %xmm1, %xmm1
divss %xmm3, %xmm2
cvtss2sd %xmm2, %xmm2
movq %r14, %rdi
callq 0x22b0
movzwl 0x14(%r15), %eax
cvtsi2sd %eax, %xmm0
movq %r14, %rdi
callq 0x21b0
movswl 0x10(%r15), %eax
movzwl 0x16(%r15), %ecx
shrl %ecx
addl %ecx, %eax
cvtsi2sd %eax, %xmm0
movswl 0x12(%r15), %eax
addl %ecx, %eax
cvtsi2sd %eax, %xmm1
movq %r14, %rdi
callq 0x2210
movswl 0x10(%r15), %eax
movzwl 0x16(%r15), %ecx
shrl %ecx
addl %ecx, %eax
cvtsi2sd %eax, %xmm0
movswl 0x12(%r15), %eax
addl %ecx, %eax
cvtsi2sd %eax, %xmm1
cvtsi2sd %ecx, %xmm2
xorps %xmm3, %xmm3
movq %r14, %rdi
movsd 0x1d004(%rip), %xmm4    # 0x20090
callq 0x2140
jmp 0x31c3
movzbl 0x1a(%r15), %eax
cvtsi2ss %eax, %xmm0
movss 0x1cfe1(%rip), %xmm3    # 0x20088
divss %xmm3, %xmm0
cvtss2sd %xmm0, %xmm0
movzbl 0x1b(%r15), %eax
cvtsi2ss %eax, %xmm1
movzbl 0x1c(%r15), %eax
cvtsi2ss %eax, %xmm2
divss %xmm3, %xmm1
cvtss2sd %xmm1, %xmm1
divss %xmm3, %xmm2
cvtss2sd %xmm2, %xmm2
movq %r14, %rdi
callq 0x22b0
movswl 0x12(%r15), %eax
cvtsi2sd %eax, %xmm0
movswl 0x14(%r15), %eax
cvtsi2sd %eax, %xmm1
movzwl 0x16(%r15), %eax
cvtsi2sd %eax, %xmm2
movzwl 0x18(%r15), %eax
cvtsi2sd %eax, %xmm3
movq %r14, %rdi
callq 0x2150
jmp 0x353e
movzbl 0x10(%r15), %eax
cvtsi2ss %eax, %xmm0
movss 0x1cf6d(%rip), %xmm3    # 0x20088
divss %xmm3, %xmm0
cvtss2sd %xmm0, %xmm0
movzbl 0x11(%r15), %eax
cvtsi2ss %eax, %xmm1
movzbl 0x12(%r15), %eax
cvtsi2ss %eax, %xmm2
divss %xmm3, %xmm1
cvtss2sd %xmm1, %xmm1
divss %xmm3, %xmm2
cvtss2sd %xmm2, %xmm2
movq %r14, %rdi
callq 0x22b0
movzwl 0x14(%r15), %eax
cvtsi2sd %eax, %xmm0
movq %r14, %rdi
callq 0x21b0
movswl 0x18(%r15), %eax
cvtsi2sd %eax, %xmm0
movswl 0x1a(%r15), %eax
cvtsi2sd %eax, %xmm1
movq %r14, %rdi
callq 0x2210
xorl %eax, %eax
leaq 0x1(%rax), %rbp
movzwl 0x16(%r15), %ecx
cmpq %rcx, %rbp
jae 0x31a9
movswl 0x1c(%r15,%rax,4), %ecx
cvtsi2sd %ecx, %xmm0
movswl 0x1e(%r15,%rax,4), %eax
cvtsi2sd %eax, %xmm1
movq %r14, %rdi
callq 0x2130
movq %rbp, %rax
jmp 0x317a
movswl 0x18(%r15), %eax
cvtsi2sd %eax, %xmm0
movswl 0x1a(%r15), %eax
cvtsi2sd %eax, %xmm1
movq %r14, %rdi
callq 0x2130
movq %r14, %rdi
callq 0x21c0
jmp 0x3546
callq 0x2080
movq %rax, %rbp
movq %rax, %rdi
callq 0x2320
movswl 0x10(%r15), %eax
cvtsi2sd %eax, %xmm0
movswl 0x12(%r15), %eax
movzwl 0x16(%r15), %ecx
addl %eax, %ecx
cvtsi2sd %ecx, %xmm1
movq %rbp, %rdi
callq 0x2090
movswl 0x10(%r15), %eax
cvtsi2sd %eax, %xmm0
movswl 0x12(%r15), %eax
cvtsi2sd %eax, %xmm1
movq %rbp, %rdi
callq 0x2110
movswl 0x10(%r15), %eax
movzwl 0x14(%r15), %ecx
addl %eax, %ecx
cvtsi2sd %ecx, %xmm0
movswl 0x12(%r15), %eax
cvtsi2sd %eax, %xmm1
movq %rbp, %rdi
callq 0x2110
movswl 0x10(%r15), %eax
movzwl 0x14(%r15), %ecx
addl %eax, %ecx
cvtsi2sd %ecx, %xmm0
movswl 0x12(%r15), %eax
movzwl 0x16(%r15), %ecx
addl %eax, %ecx
cvtsi2sd %ecx, %xmm1
movq %rbp, %rdi
callq 0x2110
movzbl 0x24(%r15), %eax
cvtsi2ss %eax, %xmm0
movzbl 0x25(%r15), %eax
cvtsi2ss %eax, %xmm1
movss 0x1ce0a(%rip), %xmm4    # 0x20088
divss %xmm4, %xmm0
cvtss2sd %xmm0, %xmm0
divss %xmm4, %xmm1
cvtss2sd %xmm1, %xmm1
movzbl 0x26(%r15), %eax
cvtsi2ss %eax, %xmm2
movzbl 0x27(%r15), %eax
cvtsi2ss %eax, %xmm3
divss %xmm4, %xmm2
cvtss2sd %xmm2, %xmm2
divss %xmm4, %xmm3
cvtss2sd %xmm3, %xmm3
movq %rbp, %rdi
pushq $0x3
popq %rsi
callq 0x2160
movzbl 0x1c(%r15), %eax
cvtsi2ss %eax, %xmm0
movzbl 0x1d(%r15), %eax
cvtsi2ss %eax, %xmm1
movss 0x1cdb3(%rip), %xmm4    # 0x20088
divss %xmm4, %xmm0
cvtss2sd %xmm0, %xmm0
divss %xmm4, %xmm1
cvtss2sd %xmm1, %xmm1
movzbl 0x1e(%r15), %eax
cvtsi2ss %eax, %xmm2
movzbl 0x1f(%r15), %eax
cvtsi2ss %eax, %xmm3
divss %xmm4, %xmm2
cvtss2sd %xmm2, %xmm2
divss %xmm4, %xmm3
cvtss2sd %xmm3, %xmm3
movq %rbp, %rdi
pushq $0x2
popq %rsi
callq 0x2160
movzbl 0x18(%r15), %eax
cvtsi2ss %eax, %xmm0
movzbl 0x19(%r15), %eax
cvtsi2ss %eax, %xmm1
movss 0x1cd5c(%rip), %xmm4    # 0x20088
divss %xmm4, %xmm0
cvtss2sd %xmm0, %xmm0
divss %xmm4, %xmm1
cvtss2sd %xmm1, %xmm1
movzbl 0x1a(%r15), %eax
cvtsi2ss %eax, %xmm2
movzbl 0x1b(%r15), %eax
cvtsi2ss %eax, %xmm3
divss %xmm4, %xmm2
cvtss2sd %xmm2, %xmm2
divss %xmm4, %xmm3
cvtss2sd %xmm3, %xmm3
movq %rbp, %rdi
pushq $0x1
popq %rsi
callq 0x2160
movzbl 0x20(%r15), %eax
cvtsi2ss %eax, %xmm0
movzbl 0x21(%r15), %eax
cvtsi2ss %eax, %xmm1
movss 0x1cd05(%rip), %xmm2    # 0x20088
divss %xmm2, %xmm0
cvtss2sd %xmm0, %xmm0
divss %xmm2, %xmm1
movaps %xmm2, %xmm4
cvtss2sd %xmm1, %xmm1
movzbl 0x22(%r15), %eax
cvtsi2ss %eax, %xmm2
movzbl 0x23(%r15), %eax
cvtsi2ss %eax, %xmm3
divss %xmm4, %xmm2
cvtss2sd %xmm2, %xmm2
divss %xmm4, %xmm3
cvtss2sd %xmm3, %xmm3
movq %rbp, %rdi
xorl %esi, %esi
callq 0x2160
movq %rbp, %rdi
callq 0x2040
movq %r14, %rdi
movq %rbp, %rsi
callq 0x2300
movswl 0x10(%r15), %eax
cvtsi2sd %eax, %xmm0
movswl 0x12(%r15), %eax
cvtsi2sd %eax, %xmm1
movzwl 0x14(%r15), %eax
cvtsi2sd %eax, %xmm2
movzwl 0x16(%r15), %eax
cvtsi2sd %eax, %xmm3
movq %r14, %rdi
callq 0x2150
movq %r14, %rdi
callq 0x2270
movq %rbp, %rdi
callq 0x22d0
jmp 0x3546
movzbl 0x20(%r15), %eax
cvtsi2ss %eax, %xmm0
movss 0x1cc61(%rip), %xmm3    # 0x20088
divss %xmm3, %xmm0
cvtss2sd %xmm0, %xmm0
movzbl 0x21(%r15), %eax
cvtsi2ss %eax, %xmm1
movzbl 0x22(%r15), %eax
cvtsi2ss %eax, %xmm2
divss %xmm3, %xmm1
cvtss2sd %xmm1, %xmm1
divss %xmm3, %xmm2
cvtss2sd %xmm2, %xmm2
movq %r14, %rdi
callq 0x22b0
movswl 0x10(%r15), %eax
cvtsi2sd %eax, %xmm0
movswl 0x12(%r15), %eax
cvtsi2sd %eax, %xmm1
movq %r14, %rdi
callq 0x2210
movswl 0x10(%r15), %eax
cvtsi2sd %eax, %xmm0
movswl 0x12(%r15), %eax
cvtsi2sd %eax, %xmm1
movzwl 0x14(%r15), %eax
cvtsi2sd %eax, %xmm2
cvtss2sd 0x18(%r15), %xmm3
cvtss2sd 0x1c(%r15), %xmm4
movq %r14, %rdi
jmp 0x3539
movzbl 0x18(%r15), %eax
cvtsi2ss %eax, %xmm0
movss 0x1cbd5(%rip), %xmm3    # 0x20088
divss %xmm3, %xmm0
cvtss2sd %xmm0, %xmm0
movzbl 0x19(%r15), %eax
cvtsi2ss %eax, %xmm1
movzbl 0x1a(%r15), %eax
cvtsi2ss %eax, %xmm2
divss %xmm3, %xmm1
cvtss2sd %xmm1, %xmm1
divss %xmm3, %xmm2
cvtss2sd %xmm2, %xmm2
movq %r14, %rdi
callq 0x22b0
movswl 0x10(%r15), %eax
movzwl 0x14(%r15), %ecx
shrl %ecx
addl %ecx, %eax
cvtsi2sd %eax, %xmm0
movswl 0x12(%r15), %eax
addl %ecx, %eax
cvtsi2sd %eax, %xmm1
movq %r14, %rdi
callq 0x2210
movswl 0x10(%r15), %eax
movzwl 0x14(%r15), %ecx
shrl %ecx
addl %ecx, %eax
cvtsi2sd %eax, %xmm0
movswl 0x12(%r15), %eax
addl %ecx, %eax
cvtsi2sd %eax, %xmm1
cvtsi2sd %ecx, %xmm2
xorps %xmm3, %xmm3
movq %r14, %rdi
movsd 0x1cb57(%rip), %xmm4    # 0x20090
callq 0x2140
movq %r14, %rdi
callq 0x2270
movq %rbx, %rdi
movq %r15, %rsi
callq 0xa08d
movq %rax, %r15
jmp 0x298b
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x1cb6d(%rip), %rdi     # 0x200dc
xorl %eax, %eax
callq 0x2050
pushq $0x1
popq %rdi
callq 0x21e0