program SpaceShooter {
	section module {
 		io,
		sdl,
		std,
		string
	}
	section data {
		int rax = 0
		int rbx = 0
		int rcx = 0
		int rdx = 0
		int rsi = 0
		int rdi = 0
		int r8 = 0
		int r9 = 0
		int r10 = 0
		int r11 = 0
		int r12 = 0
		int r13 = 0
		int r14 = 0
		int r15 = 0
		int _ir0 = 0
		int _ir1 = 0
		int _ir2 = 0
		int _ir3 = 0
		float xmm0 = 0.0
		float xmm1 = 0.0
		float xmm2 = 0.0
		float xmm3 = 0.0
		float xmm4 = 0.0
		float xmm5 = 0.0
		float xmm6 = 0.0
		float xmm7 = 0.0
		ptr _tmpptr0 = null
		ptr _tmpptr1 = null
		ptr _tmpptr10 = null
		ptr _tmpptr100 = null
		ptr _tmpptr11 = null
		ptr _tmpptr12 = null
		ptr _tmpptr13 = null
		ptr _tmpptr14 = null
		ptr _tmpptr15 = null
		ptr _tmpptr16 = null
		ptr _tmpptr17 = null
		ptr _tmpptr18 = null
		ptr _tmpptr19 = null
		ptr _tmpptr2 = null
		ptr _tmpptr20 = null
		ptr _tmpptr21 = null
		ptr _tmpptr22 = null
		ptr _tmpptr23 = null
		ptr _tmpptr24 = null
		ptr _tmpptr25 = null
		ptr _tmpptr26 = null
		ptr _tmpptr27 = null
		ptr _tmpptr28 = null
		ptr _tmpptr29 = null
		ptr _tmpptr3 = null
		ptr _tmpptr30 = null
		ptr _tmpptr31 = null
		ptr _tmpptr32 = null
		ptr _tmpptr33 = null
		ptr _tmpptr34 = null
		ptr _tmpptr35 = null
		ptr _tmpptr36 = null
		ptr _tmpptr37 = null
		ptr _tmpptr38 = null
		ptr _tmpptr39 = null
		ptr _tmpptr4 = null
		ptr _tmpptr40 = null
		ptr _tmpptr41 = null
		ptr _tmpptr42 = null
		ptr _tmpptr43 = null
		ptr _tmpptr44 = null
		ptr _tmpptr45 = null
		ptr _tmpptr46 = null
		ptr _tmpptr47 = null
		ptr _tmpptr48 = null
		ptr _tmpptr49 = null
		ptr _tmpptr5 = null
		ptr _tmpptr50 = null
		ptr _tmpptr51 = null
		ptr _tmpptr52 = null
		ptr _tmpptr53 = null
		ptr _tmpptr54 = null
		ptr _tmpptr55 = null
		ptr _tmpptr56 = null
		ptr _tmpptr57 = null
		ptr _tmpptr58 = null
		ptr _tmpptr59 = null
		ptr _tmpptr6 = null
		ptr _tmpptr60 = null
		ptr _tmpptr61 = null
		ptr _tmpptr62 = null
		ptr _tmpptr63 = null
		ptr _tmpptr64 = null
		ptr _tmpptr65 = null
		ptr _tmpptr66 = null
		ptr _tmpptr67 = null
		ptr _tmpptr68 = null
		ptr _tmpptr69 = null
		ptr _tmpptr7 = null
		ptr _tmpptr70 = null
		ptr _tmpptr71 = null
		ptr _tmpptr72 = null
		ptr _tmpptr73 = null
		ptr _tmpptr74 = null
		ptr _tmpptr75 = null
		ptr _tmpptr76 = null
		ptr _tmpptr77 = null
		ptr _tmpptr78 = null
		ptr _tmpptr79 = null
		ptr _tmpptr8 = null
		ptr _tmpptr80 = null
		ptr _tmpptr81 = null
		ptr _tmpptr82 = null
		ptr _tmpptr83 = null
		ptr _tmpptr84 = null
		ptr _tmpptr85 = null
		ptr _tmpptr86 = null
		ptr _tmpptr87 = null
		ptr _tmpptr88 = null
		ptr _tmpptr89 = null
		ptr _tmpptr9 = null
		ptr _tmpptr90 = null
		ptr _tmpptr91 = null
		ptr _tmpptr92 = null
		ptr _tmpptr93 = null
		ptr _tmpptr94 = null
		ptr _tmpptr95 = null
		ptr _tmpptr96 = null
		ptr _tmpptr97 = null
		ptr _tmpptr98 = null
		ptr _tmpptr99 = null
		float real_const_3 = 100.0
		float real_const_2 = 0.05
		float real_const_1 = 0.0
		string str_0 = "data/font.ttf"
		string str_1 = "data/logo.bmp"
		string str_2 = "data/spacelogo.bmp"
		string str_3 = "data/ship.bmp"
		string str_4 = "data/asteroid.bmp"
		string str_5 = "data/saucer.bmp"
		string str_6 = "data/particle.bmp"
		string str_7 = "Lives: "
		string str_8 = "Score: "
		string str_9 = "You Died! Press ENTER to continue"
		string str_10 = "Game Over! Press ENTER to restart"
		string str_11 = "Press ENTER to Start"
		string str_12 = "Arrow Keys = Move   Space = Shoot"
		string str_13 = "failed to init SDL"
		string str_14 = "Space Shooter"
		string str_15 = "Could not create window"
		string str_16 = "Could not create renderer"
		string str_17 = "Could not create render target"
		string str_18 = "Font subsystem failed to load"
		string str_19 = "Failed to open: "
		string str_20 = "Warning: could not load "
		string fmt_str = "%s "
		string newline = "\n"
		ptr fontfile = null
		ptr logofile = null
		ptr spacelogofile = null
		ptr shipfile = null
		ptr asteroidfile = null
		ptr saucerfile = null
		ptr particlefile = null
		int running = 0
		int window_id = 0
		int renderer = 0
		int target_id = 0
		int font_id = 0
		int logo_tex = 0
		int spacelogo_tex = 0
		int ship_tex = 0
		int asteroid_tex = 0
		int saucer_tex = 0
		int particle_tex = 0
		int event_type_result = 0
		int key = 0
		int game_state = 0
		int player_x = 0
		int player_y = 0
		int player_w = 0
		int player_h = 0
		int player_die = 0
		int lives = 0
		int score = 0
		int regular_enemies_destroyed = 0
		int last_shot_time = 0
		int last_spawn_time = 0
		ptr stars = null
		ptr projectiles = null
		ptr enemies = null
		ptr circular = null
		ptr circular_cx = null
		ptr explosions = null
		int prev_time = 0
		int cur_time = 0
		int add_explosion_ex = 0
		int add_explosion_ey = 0
		int add_explosion_etype = 0
		int add_explosion_d = 0
		int add_explosion_i = 0
		int update_explosions_i = 0
		int draw_explosions_i = 0
		int draw_explosions_k = 0
		int draw_explosions_dx = 0
		int draw_explosions_dy = 0
		int draw_gradient_triangle_x1 = 0
		int draw_gradient_triangle_y1 = 0
		int draw_gradient_triangle_y3 = 0
		int draw_gradient_triangle_i = 0
		int draw_gradient_triangle_r = 0
		int draw_gradient_triangle_g = 0
		int draw_gradient_triangle_height = 0
		int draw_gradient_diamond_cx = 0
		int draw_gradient_diamond_cy = 0
		int draw_gradient_diamond_hw = 0
		int draw_gradient_diamond_hh = 0
		int draw_gradient_diamond_i = 0
		int draw_gradient_diamond_r = 0
		int draw_gradient_diamond_b = 0
		int draw_gradient_diamond_g2 = 0
		int draw_gradient_circle_cx = 0
		int draw_gradient_circle_cy = 0
		int draw_gradient_circle_radius = 0
		int draw_gradient_circle_i = 0
		int draw_gradient_circle_w = 0
		int draw_gradient_circle_color = 0
		int init_stars_i = 0
		int clear_all_entities_i = 0
		int update_game_dx = 0
		int update_game_dy = 0
		int update_game_ticks = 0
		int update_game_i = 0
		int update_game_ei = 0
		int update_game_ci = 0
		int update_game_slot = 0
		int update_game_crect_x = 0
		int update_game_crect_y = 0
		float update_game_new_cx = 0.0
		int render_game_i = 0
		int render_game_brightness = 0
		int render_game_r1 = 0
		int render_game_g1 = 0
		int render_game_b1 = 0
		int render_intro_r1 = 0
		int render_intro_g1 = 0
		int render_intro_b1 = 0
		int __funcret_init_sdl = 0
		int aabb_ax = 0
		int aabb_ay = 0
		int aabb_aw = 0
		int aabb_ah = 0
		int aabb_bx = 0
		int aabb_by = 0
		int aabb_bw = 0
		int aabb_bh = 0
		int __funcret_aabb = 0
		int find_free_projectile_i = 0
		int __funcret_find_free_projectile = 0
		int find_free_enemy_i = 0
		int __funcret_find_free_enemy = 0
		int find_free_circular_i = 0
		int __funcret_find_free_circular = 0
	}
	section code {
	start:
		mov fontfile, str_0
		mov logofile, str_1
		mov spacelogofile, str_2
		mov shipfile, str_3
		mov asteroidfile, str_4
		mov saucerfile, str_5
		mov particlefile, str_6
		alloc stars, 24, 100
		alloc projectiles, 40, 30
		alloc enemies, 40, 20
		alloc circular, 40, 8
		alloc circular_cx, 8, 8
		alloc explosions, 64, 15
		call PROC_init_sdl
		invoke seed_random
		mov game_state, 0
		mov lives, 5
		mov score, 0
		call PROC_clear_all_entities
		call PROC_init_stars
		invoke get_ticks
		return rbx
		mov prev_time, rbx
		mov running, 1
	WHILE_0:
		cmp running, 1
		jne ENDWHILE_1
	WHILE_4:
		invoke poll_event
		return rdx
		cmp rdx, 0
		je ENDWHILE_5
		invoke get_event_type
		return rdi
		mov event_type_result, rdi
		cmp event_type_result, 256
		jne ELSE_8
		mov running, 0
	ELSE_8:
		cmp event_type_result, 768
		jne ELSE_12
		invoke get_key_code
		return r9
		mov key, r9
		cmp key, 27
		jne ELSE_16
		mov running, 0
	ELSE_16:
		cmp key, 13
		jne ELSE_20
		cmp game_state, 0
		jne ELSE_24
		push rbx
		push rcx
		push rdx
		push rsi
		push rdi
		push r8
		call PROC_reset_game
		pop r8
		pop rdi
		pop rsi
		pop rdx
		pop rcx
		pop rbx
		jmp ENDIF_25
	ELSE_24:
		cmp game_state, 2
		jne ELSE_28
		push rbx
		push rcx
		push rdx
		push rsi
		push rdi
		push r8
		call PROC_reset_round
		pop r8
		pop rdi
		pop rsi
		pop rdx
		pop rcx
		pop rbx
		jmp ENDIF_29
	ELSE_28:
		cmp game_state, 3
		jne ELSE_32
		push rbx
		push rcx
		push rdx
		push rsi
		push rdi
		push r8
		call PROC_reset_game
		pop r8
		pop rdi
		pop rsi
		pop rdx
		pop rcx
		pop rbx
	ELSE_32:
	ENDIF_29:
	ENDIF_25:
	ELSE_20:
	ELSE_12:
		jmp WHILE_4
	ENDWHILE_5:
		invoke get_ticks
		return r9
		mov cur_time, r9
		sub r9, prev_time
		cmp r9, 15
		jl ELSE_36
		mov prev_time, cur_time
		cmp game_state, 1
		jne ELSE_40
		push rbx
		push rcx
		push rdx
		push rsi
		push rdi
		push r8
		call PROC_update_game
		pop r8
		pop rdi
		pop rsi
		pop rdx
		pop rcx
		pop rbx
	ELSE_40:
	ELSE_36:
		invoke set_render_target, renderer, target_id
		mov r9, 0
		mov r10, 0
		mov r11, 0
		mov r12, 255
		invoke set_draw_color, renderer, r9, r10, r11, r12
		invoke clear, renderer
		cmp game_state, 0
		jne ELSE_44
		push rbx
		push rcx
		push rdx
		push rsi
		push rdi
		push r8
		call PROC_render_intro
		pop r8
		pop rdi
		pop rsi
		pop rdx
		pop rcx
		pop rbx
		jmp ENDIF_45
	ELSE_44:
		push rbx
		push rcx
		push rdx
		push rsi
		push rdi
		push r8
		call PROC_render_game
		pop r8
		pop rdi
		pop rsi
		pop rdx
		pop rcx
		pop rbx
	ENDIF_45:
		mov r9, 1440
		mov r10, 1080
		invoke present_scaled, renderer, target_id, r9, r10
		mov r9, 16
		invoke delay, r9
		jmp WHILE_0
	ENDWHILE_1:
		push rbx
		push rcx
		push rdx
		push rsi
		push rdi
		push r8
		call PROC_cleanup
		pop r8
		pop rdi
		pop rsi
		pop rdx
		pop rcx
		pop rbx
		free stars
		free projectiles
		free enemies
		free circular
		free circular_cx
		free explosions
		done
	function PROC_add_explosion:
		mov add_explosion_ex, rbx
		mov add_explosion_ey, rcx
		mov add_explosion_etype, rdx
		mov add_explosion_d, rsi
		mov add_explosion_i, 0
	WHILE_48:
		cmp add_explosion_i, 15
		jge ENDWHILE_49
		mov rcx, add_explosion_i
		mov rdx, rcx
		mul rdx, 64
		mov _tmpptr0, explosions
		add _tmpptr0, rdx
		load rcx, _tmpptr0, 56, 1
		cmp rcx, 0
		jne ELSE_52
		mov rsi, add_explosion_i
		mov rdi, rsi
		mul rdi, 64
		mov _tmpptr1, explosions
		add _tmpptr1, rdi
		store add_explosion_ex, _tmpptr1, 0, 1
		mov rsi, add_explosion_i
		mov rdi, rsi
		mul rdi, 64
		mov _tmpptr1, explosions
		add _tmpptr1, rdi
		store add_explosion_ey, _tmpptr1, 8, 1
		mov rsi, add_explosion_i
		mov rdi, rsi
		mul rdi, 64
		mov _tmpptr1, explosions
		add _tmpptr1, rdi
		store 60, _tmpptr1, 16, 1
		mov rsi, add_explosion_i
		mov rdi, rsi
		mul rdi, 64
		mov _tmpptr1, explosions
		add _tmpptr1, rdi
		store add_explosion_d, _tmpptr1, 48, 1
		mov rsi, add_explosion_i
		mov rdi, rsi
		mul rdi, 64
		mov _tmpptr1, explosions
		add _tmpptr1, rdi
		store 1, _tmpptr1, 56, 1
		cmp add_explosion_etype, 0
		jne ELSE_56
		mov rdi, add_explosion_i
		mov r8, rdi
		mul r8, 64
		mov _tmpptr1, explosions
		add _tmpptr1, r8
		store 255, _tmpptr1, 24, 1
		mov rdi, add_explosion_i
		mov r8, rdi
		mul r8, 64
		mov _tmpptr1, explosions
		add _tmpptr1, r8
		store 0, _tmpptr1, 32, 1
		mov rdi, add_explosion_i
		mov r8, rdi
		mul r8, 64
		mov _tmpptr1, explosions
		add _tmpptr1, r8
		store 0, _tmpptr1, 40, 1
		jmp ENDIF_57
	ELSE_56:
		mov rdi, add_explosion_i
		mov r8, rdi
		mul r8, 64
		mov _tmpptr1, explosions
		add _tmpptr1, r8
		store 0, _tmpptr1, 24, 1
		mov rdi, add_explosion_i
		mov r8, rdi
		mul r8, 64
		mov _tmpptr1, explosions
		add _tmpptr1, r8
		store 0, _tmpptr1, 32, 1
		mov rdi, add_explosion_i
		mov r8, rdi
		mul r8, 64
		mov _tmpptr1, explosions
		add _tmpptr1, r8
		store 255, _tmpptr1, 40, 1
	ENDIF_57:
		jmp PROC_END_add_explosion
	ELSE_52:
		add add_explosion_i, 1
		jmp WHILE_48
	ENDWHILE_49:
	PROC_END_add_explosion:
		ret
	function PROC_subtract_life:
		sub lives, 1
		cmp lives, 0
		jg ELSE_60
		mov game_state, 3
		jmp ENDIF_61
	ELSE_60:
		mov game_state, 2
	ENDIF_61:
		mov player_die, 0
	PROC_END_subtract_life:
		ret
	function PROC_update_explosions:
		mov update_explosions_i, 0
	FOR_64:
		cmp update_explosions_i, 14
		jg ENDFOR_65
		mov rbx, update_explosions_i
		mov rcx, rbx
		mul rcx, 64
		mov _tmpptr1, explosions
		add _tmpptr1, rcx
		load rbx, _tmpptr1, 56, 1
		cmp rbx, 0
		je ELSE_67
		mov rcx, update_explosions_i
		mov rdx, rcx
		mul rdx, 64
		mov _tmpptr2, explosions
		add _tmpptr2, rdx
		load rcx, _tmpptr2, 16, 1
		mov rdx, rcx
		sub rdx, 1
		mov rsi, update_explosions_i
		mov rdi, rsi
		mul rdi, 64
		mov _tmpptr3, explosions
		add _tmpptr3, rdi
		store rdx, _tmpptr3, 16, 1
		mov rsi, update_explosions_i
		mov rdi, rsi
		mul rdi, 64
		mov _tmpptr3, explosions
		add _tmpptr3, rdi
		load rsi, _tmpptr3, 16, 1
		cmp rsi, 0
		jg ELSE_69
		mov r8, update_explosions_i
		mov r9, r8
		mul r9, 64
		mov _tmpptr4, explosions
		add _tmpptr4, r9
		store 0, _tmpptr4, 56, 1
		mov r8, update_explosions_i
		mov r9, r8
		mul r9, 64
		mov _tmpptr4, explosions
		add _tmpptr4, r9
		load r8, _tmpptr4, 48, 1
		cmp r8, 0
		je ELSE_73
		push rbx
		push rcx
		push rdx
		push rsi
		push rdi
		push r8
		push update_explosions_i
		call PROC_subtract_life
		pop update_explosions_i
		pop r8
		pop rdi
		pop rsi
		pop rdx
		pop rcx
		pop rbx
	ELSE_73:
	ELSE_69:
	ELSE_67:
	FOR_CONTINUE_66:
		add update_explosions_i, 1
		jmp FOR_64
	ENDFOR_65:
	PROC_END_update_explosions:
		ret
	function PROC_draw_explosions:
		mov draw_explosions_i, 0
	FOR_75:
		cmp draw_explosions_i, 14
		jg ENDFOR_76
		mov rbx, draw_explosions_i
		mov rcx, rbx
		mul rcx, 64
		mov _tmpptr5, explosions
		add _tmpptr5, rcx
		load rbx, _tmpptr5, 56, 1
		cmp rbx, 0
		je ELSE_78
		mov rcx, draw_explosions_i
		mov rdx, rcx
		mul rdx, 64
		mov _tmpptr6, explosions
		add _tmpptr6, rdx
		load rcx, _tmpptr6, 48, 1
		cmp rcx, 0
		je ELSE_80
		mov draw_explosions_k, 0
	FOR_82:
		cmp draw_explosions_k, 39
		jg ENDFOR_83
		invoke rand
		return rdx
		mov draw_explosions_dx, rdx
		mod draw_explosions_dx, 160
		sub draw_explosions_dx, 80
		invoke rand
		return r8
		mov r9, r8
		mod r9, 160
		sub r9, 80
		mov draw_explosions_dy, r9
		invoke rand
		return r9
		mod r9, 56
		mov r10, 200
		add r10, r9
		invoke rand
		return r9
		mod r9, 80
		mov r11, 255
		mov r12, 255
		invoke set_draw_color, renderer, r11, r10, r9, r12
		mov r9, draw_explosions_i
		mov r10, r9
		mul r10, 64
		mov _tmpptr7, explosions
		add _tmpptr7, r10
		load r9, _tmpptr7, 0, 1
		mov r10, draw_explosions_i
		mov r11, r10
		mul r11, 64
		mov _tmpptr8, explosions
		add _tmpptr8, r11
		load r10, _tmpptr8, 8, 1
		mov r11, draw_explosions_i
		mov r12, r11
		mul r12, 64
		mov _tmpptr9, explosions
		add _tmpptr9, r12
		load r11, _tmpptr9, 0, 1
		add r11, draw_explosions_dx
		mov r12, draw_explosions_i
		mov r13, r12
		mul r13, 64
		mov _tmpptr10, explosions
		add _tmpptr10, r13
		load r12, _tmpptr10, 8, 1
		add r12, draw_explosions_dy
		invoke draw_line, renderer, r9, r10, r11, r12
	FOR_CONTINUE_84:
		add draw_explosions_k, 1
		jmp FOR_82
	ENDFOR_83:
		mov r9, 255
		mov r10, 255
		mov r11, 200
		mov r12, 255
		invoke set_draw_color, renderer, r9, r10, r11, r12
		mov draw_explosions_k, 0
	FOR_85:
		cmp draw_explosions_k, 14
		jg ENDFOR_86
		invoke rand
		return r9
		mod r9, 40
		sub r9, 20
		mov draw_explosions_dx, r9
		invoke rand
		return r9
		mod r9, 40
		sub r9, 20
		mov draw_explosions_dy, r9
		mov r9, draw_explosions_i
		mov r10, r9
		mul r10, 64
		mov _tmpptr11, explosions
		add _tmpptr11, r10
		load r9, _tmpptr11, 0, 1
		add r9, draw_explosions_dx
		mov r10, draw_explosions_i
		mov r11, r10
		mul r11, 64
		mov _tmpptr12, explosions
		add _tmpptr12, r11
		load r10, _tmpptr12, 8, 1
		add r10, draw_explosions_dy
		mov r11, draw_explosions_i
		mov r12, r11
		mul r12, 64
		mov _tmpptr13, explosions
		add _tmpptr13, r12
		load r11, _tmpptr13, 0, 1
		invoke rand
		return r12
		mod r12, 20
		add r11, r12
		sub r11, 10
		mov r12, draw_explosions_i
		mov r13, r12
		mul r13, 64
		mov _tmpptr14, explosions
		add _tmpptr14, r13
		load r12, _tmpptr14, 8, 1
		invoke rand
		return r13
		mod r13, 20
		add r12, r13
		sub r12, 10
		invoke draw_line, renderer, r9, r10, r11, r12
	FOR_CONTINUE_87:
		add draw_explosions_k, 1
		jmp FOR_85
	ENDFOR_86:
		jmp ENDIF_81
	ELSE_80:
		mov r9, draw_explosions_i
		mov r10, r9
		mul r10, 64
		mov _tmpptr15, explosions
		add _tmpptr15, r10
		load r9, _tmpptr15, 24, 1
		mov r10, draw_explosions_i
		mov r11, r10
		mul r11, 64
		mov _tmpptr16, explosions
		add _tmpptr16, r11
		load r10, _tmpptr16, 32, 1
		mov r11, draw_explosions_i
		mov r12, r11
		mul r12, 64
		mov _tmpptr17, explosions
		add _tmpptr17, r12
		load r11, _tmpptr17, 40, 1
		mov r12, 255
		invoke set_draw_color, renderer, r9, r10, r11, r12
		mov draw_explosions_k, 0
	FOR_88:
		cmp draw_explosions_k, 19
		jg ENDFOR_89
		invoke rand
		return r9
		mod r9, 60
		sub r9, 30
		mov draw_explosions_dx, r9
		invoke rand
		return r9
		mod r9, 60
		sub r9, 30
		mov draw_explosions_dy, r9
		mov r9, draw_explosions_i
		mov r10, r9
		mul r10, 64
		mov _tmpptr18, explosions
		add _tmpptr18, r10
		load r9, _tmpptr18, 0, 1
		mov r10, draw_explosions_i
		mov r11, r10
		mul r11, 64
		mov _tmpptr19, explosions
		add _tmpptr19, r11
		load r10, _tmpptr19, 8, 1
		mov r11, draw_explosions_i
		mov r12, r11
		mul r12, 64
		mov _tmpptr20, explosions
		add _tmpptr20, r12
		load r11, _tmpptr20, 0, 1
		add r11, draw_explosions_dx
		mov r12, draw_explosions_i
		mov r13, r12
		mul r13, 64
		mov _tmpptr21, explosions
		add _tmpptr21, r13
		load r12, _tmpptr21, 8, 1
		add r12, draw_explosions_dy
		invoke draw_line, renderer, r9, r10, r11, r12
	FOR_CONTINUE_90:
		add draw_explosions_k, 1
		jmp FOR_88
	ENDFOR_89:
	ENDIF_81:
	ELSE_78:
	FOR_CONTINUE_77:
		add draw_explosions_i, 1
		jmp FOR_75
	ENDFOR_76:
	PROC_END_draw_explosions:
		ret
	function PROC_draw_gradient_triangle:
		mov draw_gradient_triangle_x1, rbx
		mov draw_gradient_triangle_y1, rcx
		mov draw_gradient_triangle_y3, rdx
		cmp player_die, 0
		je ELSE_91
		jmp PROC_END_draw_gradient_triangle
	ELSE_91:
		mov draw_gradient_triangle_height, draw_gradient_triangle_y3
		sub draw_gradient_triangle_height, draw_gradient_triangle_y1
		cmp draw_gradient_triangle_height, 0
		jg ELSE_93
		jmp PROC_END_draw_gradient_triangle
	ELSE_93:
		mov rdx, draw_gradient_triangle_height
		sub rdx, 1
		mov draw_gradient_triangle_i, 0
	FOR_97:
		cmp draw_gradient_triangle_i, rdx
		jg ENDFOR_98
		mov rsi, 255
		mul rsi, draw_gradient_triangle_i
		mov rdi, rsi
		div rdi, draw_gradient_triangle_height
		mov draw_gradient_triangle_r, 255
		sub draw_gradient_triangle_r, rdi
		mov r9, 255
		mul r9, draw_gradient_triangle_i
		div r9, draw_gradient_triangle_height
		mov draw_gradient_triangle_g, r9
		mov r9, 255
		mov r10, 255
		invoke set_draw_color, renderer, draw_gradient_triangle_r, draw_gradient_triangle_g, r9, r10
		mov r9, draw_gradient_triangle_x1
		sub r9, draw_gradient_triangle_i
		mov r10, draw_gradient_triangle_y1
		add r10, draw_gradient_triangle_i
		mov r11, draw_gradient_triangle_x1
		add r11, draw_gradient_triangle_i
		mov r12, draw_gradient_triangle_y1
		add r12, draw_gradient_triangle_i
		invoke draw_line, renderer, r9, r10, r11, r12
	FOR_CONTINUE_99:
		add draw_gradient_triangle_i, 1
		jmp FOR_97
	ENDFOR_98:
	PROC_END_draw_gradient_triangle:
		ret
	function PROC_draw_gradient_diamond:
		mov draw_gradient_diamond_cx, rbx
		mov draw_gradient_diamond_cy, rcx
		mov draw_gradient_diamond_hw, rdx
		mov draw_gradient_diamond_hh, rsi
		mov rbx, draw_gradient_diamond_hh
		sub rbx, 1
		mov draw_gradient_diamond_i, 0
	FOR_100:
		cmp draw_gradient_diamond_i, rbx
		jg ENDFOR_101
		mov rcx, 255
		mul rcx, draw_gradient_diamond_i
		mov rdx, rcx
		div rdx, draw_gradient_diamond_hh
		mov draw_gradient_diamond_r, 255
		sub draw_gradient_diamond_r, rdx
		mov draw_gradient_diamond_b, 255
		mul draw_gradient_diamond_b, draw_gradient_diamond_i
		div draw_gradient_diamond_b, draw_gradient_diamond_hh
		mov r9, 255
		mov r10, 255
		invoke set_draw_color, renderer, draw_gradient_diamond_r, r9, draw_gradient_diamond_b, r10
		mov r9, draw_gradient_diamond_cx
		sub r9, draw_gradient_diamond_i
		mov r10, draw_gradient_diamond_cy
		sub r10, draw_gradient_diamond_i
		mov r11, draw_gradient_diamond_cx
		add r11, draw_gradient_diamond_i
		mov r12, draw_gradient_diamond_cy
		sub r12, draw_gradient_diamond_i
		invoke draw_line, renderer, r9, r10, r11, r12
	FOR_CONTINUE_102:
		add draw_gradient_diamond_i, 1
		jmp FOR_100
	ENDFOR_101:
		mov r9, draw_gradient_diamond_hh
		sub r9, 1
		mov draw_gradient_diamond_i, 0
	FOR_103:
		cmp draw_gradient_diamond_i, r9
		jg ENDFOR_104
		mov r10, 255
		mul r10, draw_gradient_diamond_i
		div r10, draw_gradient_diamond_hh
		mov r11, 255
		sub r11, r10
		mov draw_gradient_diamond_g2, r11
		mov r10, 255
		mul r10, draw_gradient_diamond_i
		div r10, draw_gradient_diamond_hh
		mov draw_gradient_diamond_b, r10
		mov r10, 255
		mov r11, 255
		invoke set_draw_color, renderer, r10, draw_gradient_diamond_g2, draw_gradient_diamond_b, r11
		mov r10, draw_gradient_diamond_cx
		sub r10, draw_gradient_diamond_i
		mov r11, draw_gradient_diamond_cy
		add r11, draw_gradient_diamond_i
		mov r12, draw_gradient_diamond_cx
		add r12, draw_gradient_diamond_i
		mov r13, draw_gradient_diamond_cy
		add r13, draw_gradient_diamond_i
		invoke draw_line, renderer, r10, r11, r12, r13
	FOR_CONTINUE_105:
		add draw_gradient_diamond_i, 1
		jmp FOR_103
	ENDFOR_104:
	PROC_END_draw_gradient_diamond:
		ret
	function PROC_draw_gradient_circle:
		mov draw_gradient_circle_cx, rbx
		mov draw_gradient_circle_cy, rcx
		mov draw_gradient_circle_radius, rdx
		mov rbx, draw_gradient_circle_radius
		sub rbx, 1
		mov draw_gradient_circle_i, 0
	FOR_106:
		cmp draw_gradient_circle_i, rbx
		jg ENDFOR_107
		mov draw_gradient_circle_w, draw_gradient_circle_radius
		sub draw_gradient_circle_w, draw_gradient_circle_i
		mov draw_gradient_circle_color, 255
		mul draw_gradient_circle_color, draw_gradient_circle_w
		div draw_gradient_circle_color, draw_gradient_circle_radius
		mov rdi, 0
		mov r8, 255
		invoke set_draw_color, renderer, draw_gradient_circle_color, rdi, draw_gradient_circle_color, r8
		mov rdi, draw_gradient_circle_cx
		sub rdi, draw_gradient_circle_w
		mov r8, draw_gradient_circle_cy
		sub r8, draw_gradient_circle_i
		mov r9, draw_gradient_circle_cx
		add r9, draw_gradient_circle_w
		mov r10, draw_gradient_circle_cy
		sub r10, draw_gradient_circle_i
		invoke draw_line, renderer, rdi, r8, r9, r10
		mov rdi, draw_gradient_circle_cx
		sub rdi, draw_gradient_circle_w
		mov r8, draw_gradient_circle_cy
		add r8, draw_gradient_circle_i
		mov r9, draw_gradient_circle_cx
		add r9, draw_gradient_circle_w
		mov r10, draw_gradient_circle_cy
		add r10, draw_gradient_circle_i
		invoke draw_line, renderer, rdi, r8, r9, r10
	FOR_CONTINUE_108:
		add draw_gradient_circle_i, 1
		jmp FOR_106
	ENDFOR_107:
	PROC_END_draw_gradient_circle:
		ret
	function PROC_init_stars:
		mov init_stars_i, 0
	FOR_109:
		cmp init_stars_i, 99
		jg ENDFOR_110
		invoke rand
		return rbx
		mov rcx, rbx
		mod rcx, 1440
		mov rdx, init_stars_i
		mov rsi, rdx
		mul rsi, 24
		mov _tmpptr22, stars
		add _tmpptr22, rsi
		store rcx, _tmpptr22, 0, 1
		invoke rand
		return rdx
		mov rsi, rdx
		mod rsi, 1080
		mov rdi, init_stars_i
		mov r8, rdi
		mul r8, 24
		mov _tmpptr22, stars
		add _tmpptr22, r8
		store rsi, _tmpptr22, 8, 1
		invoke rand
		return rdi
		mov r8, rdi
		mod r8, 3
		mov r9, 1
		add r9, r8
		mov r10, init_stars_i
		mov r11, r10
		mul r11, 24
		mov _tmpptr22, stars
		add _tmpptr22, r11
		store r9, _tmpptr22, 16, 1
	FOR_CONTINUE_111:
		add init_stars_i, 1
		jmp FOR_109
	ENDFOR_110:
	PROC_END_init_stars:
		ret
	function PROC_clear_all_entities:
		mov clear_all_entities_i, 0
	FOR_112:
		cmp clear_all_entities_i, 29
		jg ENDFOR_113
		mov rbx, clear_all_entities_i
		mov rcx, rbx
		mul rcx, 40
		mov _tmpptr22, projectiles
		add _tmpptr22, rcx
		store 0, _tmpptr22, 32, 1
	FOR_CONTINUE_114:
		add clear_all_entities_i, 1
		jmp FOR_112
	ENDFOR_113:
		mov clear_all_entities_i, 0
	FOR_115:
		cmp clear_all_entities_i, 19
		jg ENDFOR_116
		mov rbx, clear_all_entities_i
		mov rcx, rbx
		mul rcx, 40
		mov _tmpptr22, enemies
		add _tmpptr22, rcx
		store 0, _tmpptr22, 32, 1
	FOR_CONTINUE_117:
		add clear_all_entities_i, 1
		jmp FOR_115
	ENDFOR_116:
		mov clear_all_entities_i, 0
	FOR_118:
		cmp clear_all_entities_i, 7
		jg ENDFOR_119
		mov rbx, clear_all_entities_i
		mov rcx, rbx
		mul rcx, 40
		mov _tmpptr22, circular
		add _tmpptr22, rcx
		store 0, _tmpptr22, 32, 1
	FOR_CONTINUE_120:
		add clear_all_entities_i, 1
		jmp FOR_118
	ENDFOR_119:
		mov clear_all_entities_i, 0
	FOR_121:
		cmp clear_all_entities_i, 14
		jg ENDFOR_122
		mov rbx, clear_all_entities_i
		mov rcx, rbx
		mul rcx, 64
		mov _tmpptr22, explosions
		add _tmpptr22, rcx
		store 0, _tmpptr22, 56, 1
	FOR_CONTINUE_123:
		add clear_all_entities_i, 1
		jmp FOR_121
	ENDFOR_122:
	PROC_END_clear_all_entities:
		ret
	function PROC_reset_game:
		mov player_x, 696
		mov player_y, 1000
		mov player_w, 48
		mov player_h, 48
		mov player_die, 0
		call PROC_clear_all_entities
		mov lives, 5
		mov score, 0
		mov regular_enemies_destroyed, 0
		mov last_shot_time, 0
		invoke get_ticks
		return rbx
		mov last_spawn_time, rbx
		push rbx
		call PROC_init_stars
		pop rbx
		mov game_state, 1
	PROC_END_reset_game:
		ret
	function PROC_reset_round:
		call PROC_clear_all_entities
		mov player_die, 0
		mov player_x, 696
		mov player_y, 1000
		mov game_state, 1
	PROC_END_reset_round:
		ret
	function PROC_update_game:
		cmp game_state, 1
		je ELSE_124
		jmp PROC_END_update_game
	ELSE_124:
		push rbx
		push update_game_dx
		push update_game_dy
		push update_game_ticks
		push update_game_i
		push update_game_ei
		push update_game_ci
		push update_game_slot
		push update_game_crect_x
		push update_game_crect_y
		push update_game_new_cx
		call PROC_update_explosions
		pop update_game_new_cx
		pop update_game_crect_y
		pop update_game_crect_x
		pop update_game_slot
		pop update_game_ci
		pop update_game_ei
		pop update_game_i
		pop update_game_ticks
		pop update_game_dy
		pop update_game_dx
		pop rbx
		mov update_game_dx, 0
		mov update_game_dy, 0
		mov rdx, 80
		invoke is_key_pressed, rdx
		return rcx
		cmp rcx, 0
		je ELSE_128
		mov rsi, update_game_dx
		sub rsi, 5
		mov update_game_dx, rsi
	ELSE_128:
		mov r8, 79
		invoke is_key_pressed, r8
		return rdi
		cmp rdi, 0
		je ELSE_132
		mov r9, update_game_dx
		add r9, 5
		mov update_game_dx, r9
	ELSE_132:
		mov r10, 82
		invoke is_key_pressed, r10
		return r9
		cmp r9, 0
		je ELSE_136
		mov r9, update_game_dy
		sub r9, 5
		mov update_game_dy, r9
	ELSE_136:
		mov r10, 81
		invoke is_key_pressed, r10
		return r9
		cmp r9, 0
		je ELSE_140
		mov r9, update_game_dy
		add r9, 5
		mov update_game_dy, r9
	ELSE_140:
		mov r9, player_x
		add r9, update_game_dx
		mov player_x, r9
		mov r9, player_y
		add r9, update_game_dy
		mov player_y, r9
		cmp player_x, 0
		jge ELSE_144
		mov player_x, 0
	ELSE_144:
		mov r9, 1440
		sub r9, player_w
		cmp player_x, r9
		jle ELSE_148
		mov r9, 1440
		sub r9, player_w
		mov player_x, r9
	ELSE_148:
		cmp player_y, 0
		jge ELSE_152
		mov player_y, 0
	ELSE_152:
		mov r9, 1080
		sub r9, player_h
		cmp player_y, r9
		jle ELSE_156
		mov r9, 1080
		sub r9, player_h
		mov player_y, r9
	ELSE_156:
		invoke get_ticks
		return r9
		mov update_game_ticks, r9
		mov r10, 44
		invoke is_key_pressed, r10
		return r9
		cmp r9, 0
		je ELSE_160
		mov r9, update_game_ticks
		sub r9, last_shot_time
		cmp r9, 300
		jle ELSE_160
		push rbx
		push rcx
		push rdx
		push rsi
		push rdi
		push r8
		push update_game_dx
		push update_game_dy
		push update_game_ticks
		push update_game_i
		push update_game_ei
		push update_game_ci
		push update_game_slot
		push update_game_crect_x
		push update_game_crect_y
		push update_game_new_cx
		call FUNC_find_free_projectile
		pop update_game_new_cx
		pop update_game_crect_y
		pop update_game_crect_x
		pop update_game_slot
		pop update_game_ci
		pop update_game_ei
		pop update_game_i
		pop update_game_ticks
		pop update_game_dy
		pop update_game_dx
		pop r8
		pop rdi
		pop rsi
		pop rdx
		pop rcx
		pop rbx
		mov r9, rax
		mov update_game_slot, r9
		mov r9, 0
		sub r9, 1
		cmp update_game_slot, r9
		je ELSE_168
		mov r9, player_w
		div r9, 2
		mov r10, player_x
		add r10, r9
		sub r10, 8
		mov r9, update_game_slot
		mov r11, r9
		mul r11, 40
		mov _tmpptr22, projectiles
		add _tmpptr22, r11
		store r10, _tmpptr22, 0, 1
		mov r9, player_y
		sub r9, 30
		mov r10, update_game_slot
		mov r11, r10
		mul r11, 40
		mov _tmpptr22, projectiles
		add _tmpptr22, r11
		store r9, _tmpptr22, 8, 1
		mov r9, update_game_slot
		mov r10, r9
		mul r10, 40
		mov _tmpptr22, projectiles
		add _tmpptr22, r10
		store 16, _tmpptr22, 16, 1
		mov r9, update_game_slot
		mov r10, r9
		mul r10, 40
		mov _tmpptr22, projectiles
		add _tmpptr22, r10
		store 24, _tmpptr22, 24, 1
		mov r9, update_game_slot
		mov r10, r9
		mul r10, 40
		mov _tmpptr22, projectiles
		add _tmpptr22, r10
		store 1, _tmpptr22, 32, 1
		mov last_shot_time, update_game_ticks
	ELSE_168:
	ELSE_160:
		mov update_game_i, 0
	FOR_172:
		cmp update_game_i, 29
		jg ENDFOR_173
		mov r9, update_game_i
		mov r10, r9
		mul r10, 40
		mov _tmpptr22, projectiles
		add _tmpptr22, r10
		load r9, _tmpptr22, 32, 1
		cmp r9, 0
		je ELSE_175
		mov r9, update_game_i
		mov r10, r9
		mul r10, 40
		mov _tmpptr23, projectiles
		add _tmpptr23, r10
		load r9, _tmpptr23, 8, 1
		sub r9, 10
		mov r10, update_game_i
		mov r11, r10
		mul r11, 40
		mov _tmpptr24, projectiles
		add _tmpptr24, r11
		store r9, _tmpptr24, 8, 1
		mov r9, update_game_i
		mov r10, r9
		mul r10, 40
		mov _tmpptr24, projectiles
		add _tmpptr24, r10
		load r9, _tmpptr24, 8, 1
		mov r10, 0
		sub r10, 24
		cmp r9, r10
		jge ELSE_177
		mov r9, update_game_i
		mov r10, r9
		mul r10, 40
		mov _tmpptr25, projectiles
		add _tmpptr25, r10
		store 0, _tmpptr25, 32, 1
		jmp ENDIF_178
	ELSE_177:
		mov update_game_ei, 0
	FOR_181:
		cmp update_game_ei, 19
		jg ENDFOR_182
		mov r9, update_game_ei
		mov r10, r9
		mul r10, 40
		mov _tmpptr25, enemies
		add _tmpptr25, r10
		load r9, _tmpptr25, 32, 1
		mov r10, update_game_i
		mov r11, r10
		mul r11, 40
		mov _tmpptr26, projectiles
		add _tmpptr26, r11
		load r10, _tmpptr26, 32, 1
		cmp r9, 0
		je ELSE_184
		cmp r10, 0
		je ELSE_184
		mov r9, update_game_i
		mov r10, r9
		mul r10, 40
		mov _tmpptr27, projectiles
		add _tmpptr27, r10
		load r9, _tmpptr27, 0, 1
		mov r10, update_game_i
		mov r11, r10
		mul r11, 40
		mov _tmpptr28, projectiles
		add _tmpptr28, r11
		load r10, _tmpptr28, 8, 1
		mov r11, update_game_i
		mov r12, r11
		mul r12, 40
		mov _tmpptr29, projectiles
		add _tmpptr29, r12
		load r11, _tmpptr29, 16, 1
		mov r12, update_game_i
		mov r13, r12
		mul r13, 40
		mov _tmpptr30, projectiles
		add _tmpptr30, r13
		load r12, _tmpptr30, 24, 1
		mov r13, update_game_ei
		mov r14, r13
		mul r14, 40
		mov _tmpptr31, enemies
		add _tmpptr31, r14
		load r13, _tmpptr31, 0, 1
		mov r14, update_game_ei
		mov r15, r14
		mul r15, 40
		mov _tmpptr32, enemies
		add _tmpptr32, r15
		load r14, _tmpptr32, 8, 1
		mov r15, update_game_ei
		mov _ir0, r15
		mul _ir0, 40
		mov _tmpptr33, enemies
		add _tmpptr33, _ir0
		load r15, _tmpptr33, 16, 1
		mov _ir0, update_game_ei
		mov _ir1, _ir0
		mul _ir1, 40
		mov _tmpptr34, enemies
		add _tmpptr34, _ir1
		load _ir0, _tmpptr34, 24, 1
		mov _ir1, r9
		mov _ir2, r10
		push rbx
		push rcx
		push rdx
		push rsi
		push rdi
		push r8
		push r9
		push r10
		mov rbx, _ir1
		mov rcx, _ir2
		mov rdx, r11
		mov rsi, r12
		mov rdi, r13
		mov r8, r14
		mov r9, r15
		mov r10, _ir0
		push update_game_dx
		push update_game_dy
		push update_game_ticks
		push update_game_i
		push update_game_ei
		push update_game_ci
		push update_game_slot
		push update_game_crect_x
		push update_game_crect_y
		push update_game_new_cx
		call FUNC_aabb
		pop update_game_new_cx
		pop update_game_crect_y
		pop update_game_crect_x
		pop update_game_slot
		pop update_game_ci
		pop update_game_ei
		pop update_game_i
		pop update_game_ticks
		pop update_game_dy
		pop update_game_dx
		pop r10
		pop r9
		pop r8
		pop rdi
		pop rsi
		pop rdx
		pop rcx
		pop rbx
		mov _ir3, rax
		cmp _ir3, 0
		je ELSE_188
		mov r11, update_game_ei
		mov r12, r11
		mul r12, 40
		mov _tmpptr35, enemies
		add _tmpptr35, r12
		load r11, _tmpptr35, 0, 1
		mov r12, update_game_ei
		mov r13, r12
		mul r13, 40
		mov _tmpptr36, enemies
		add _tmpptr36, r13
		load r12, _tmpptr36, 16, 1
		div r12, 2
		add r11, r12
		mov r12, update_game_ei
		mov r13, r12
		mul r13, 40
		mov _tmpptr37, enemies
		add _tmpptr37, r13
		load r12, _tmpptr37, 8, 1
		mov r13, update_game_ei
		mov r14, r13
		mul r14, 40
		mov _tmpptr38, enemies
		add _tmpptr38, r14
		load r13, _tmpptr38, 24, 1
		div r13, 2
		add r12, r13
		push rbx
		push rcx
		push rdx
		push rsi
		push rdi
		push r8
		push r9
		push r10
		mov rbx, r11
		mov rcx, r12
		mov rdx, 0
		mov rsi, 0
		push update_game_dx
		push update_game_dy
		push update_game_ticks
		push update_game_i
		push update_game_ei
		push update_game_ci
		push update_game_slot
		push update_game_crect_x
		push update_game_crect_y
		push update_game_new_cx
		call PROC_add_explosion
		pop update_game_new_cx
		pop update_game_crect_y
		pop update_game_crect_x
		pop update_game_slot
		pop update_game_ci
		pop update_game_ei
		pop update_game_i
		pop update_game_ticks
		pop update_game_dy
		pop update_game_dx
		pop r10
		pop r9
		pop r8
		pop rdi
		pop rsi
		pop rdx
		pop rcx
		pop rbx
		mov r11, update_game_ei
		mov r12, r11
		mul r12, 40
		mov _tmpptr39, enemies
		add _tmpptr39, r12
		store 0, _tmpptr39, 32, 1
		mov r11, update_game_i
		mov r12, r11
		mul r12, 40
		mov _tmpptr39, projectiles
		add _tmpptr39, r12
		store 0, _tmpptr39, 32, 1
		mov r11, score
		add r11, 5
		mov score, r11
		mov r11, regular_enemies_destroyed
		add r11, 1
		mov regular_enemies_destroyed, r11
		mod r11, 5
		cmp r11, 0
		jne ELSE_190
		push rbx
		push rcx
		push rdx
		push rsi
		push rdi
		push r8
		push r9
		push r10
		push update_game_dx
		push update_game_dy
		push update_game_ticks
		push update_game_i
		push update_game_ei
		push update_game_ci
		push update_game_slot
		push update_game_crect_x
		push update_game_crect_y
		push update_game_new_cx
		call FUNC_find_free_circular
		pop update_game_new_cx
		pop update_game_crect_y
		pop update_game_crect_x
		pop update_game_slot
		pop update_game_ci
		pop update_game_ei
		pop update_game_i
		pop update_game_ticks
		pop update_game_dy
		pop update_game_dx
		pop r10
		pop r9
		pop r8
		pop rdi
		pop rsi
		pop rdx
		pop rcx
		pop rbx
		mov r11, rax
		mov update_game_slot, r11
		mov r11, 0
		sub r11, 1
		cmp update_game_slot, r11
		je ELSE_194
		invoke rand
		return r11
		mod r11, 1240
		mov r12, 100
		add r12, r11
		cmp update_game_slot, 0
		jl IDX_OOB_199
		cmp update_game_slot, 7
		jg IDX_OOB_199
		jmp IDX_OK_198
	IDX_OOB_199:
		exit 1
	IDX_OK_198:
		mov r11, update_game_slot
		store r12, circular_cx, r11, 8
		mov r11, update_game_slot
		load r12, circular_cx, r11, 8
		mov r11, update_game_slot
		mov r13, r11
		mul r13, 40
		mov _tmpptr39, circular
		add _tmpptr39, r13
		store r12, _tmpptr39, 0, 1
		mov r11, 0
		sub r11, 128
		mov r12, update_game_slot
		mov r13, r12
		mul r13, 40
		mov _tmpptr39, circular
		add _tmpptr39, r13
		store r11, _tmpptr39, 8, 1
		mov xmm0, real_const_1
		mov r11, update_game_slot
		mov r12, r11
		mul r12, 40
		mov _tmpptr39, circular
		add _tmpptr39, r12
		store xmm0, _tmpptr39, 16, 1
		mov r11, update_game_slot
		mov r12, r11
		mul r12, 40
		mov _tmpptr39, circular
		add _tmpptr39, r12
		store 1, _tmpptr39, 24, 1
		mov r11, update_game_slot
		mov r12, r11
		mul r12, 40
		mov _tmpptr39, circular
		add _tmpptr39, r12
		store 1, _tmpptr39, 32, 1
	ELSE_194:
	ELSE_190:
	ELSE_188:
	ELSE_184:
	FOR_CONTINUE_183:
		add update_game_ei, 1
		jmp FOR_181
	ENDFOR_182:
		mov update_game_ci, 0
	FOR_200:
		cmp update_game_ci, 7
		jg ENDFOR_201
		mov r11, update_game_ci
		mov r12, r11
		mul r12, 40
		mov _tmpptr39, circular
		add _tmpptr39, r12
		load r11, _tmpptr39, 32, 1
		mov r12, update_game_i
		mov r13, r12
		mul r13, 40
		mov _tmpptr40, projectiles
		add _tmpptr40, r13
		load r12, _tmpptr40, 32, 1
		cmp r11, 0
		je ELSE_203
		cmp r12, 0
		je ELSE_203
		mov r11, update_game_ci
		mov r12, r11
		mul r12, 40
		mov _tmpptr41, circular
		add _tmpptr41, r12
		load r11, _tmpptr41, 0, 1
		sub r11, 64
		mov update_game_crect_x, r11
		mov r11, update_game_ci
		mov r12, r11
		mul r12, 40
		mov _tmpptr42, circular
		add _tmpptr42, r12
		load r11, _tmpptr42, 8, 1
		sub r11, 64
		mov update_game_crect_y, r11
		mov r11, update_game_i
		mov r12, r11
		mul r12, 40
		mov _tmpptr43, projectiles
		add _tmpptr43, r12
		load r11, _tmpptr43, 0, 1
		mov r12, update_game_i
		mov r13, r12
		mul r13, 40
		mov _tmpptr44, projectiles
		add _tmpptr44, r13
		load r12, _tmpptr44, 8, 1
		mov r13, update_game_i
		mov r14, r13
		mul r14, 40
		mov _tmpptr45, projectiles
		add _tmpptr45, r14
		load r13, _tmpptr45, 16, 1
		mov r14, update_game_i
		mov r15, r14
		mul r15, 40
		mov _tmpptr46, projectiles
		add _tmpptr46, r15
		load r14, _tmpptr46, 24, 1
		push rbx
		push rcx
		push rdx
		push rsi
		push rdi
		push r8
		push r9
		push r10
		mov rbx, r11
		mov rcx, r12
		mov rdx, r13
		mov rsi, r14
		mov rdi, update_game_crect_x
		mov r8, update_game_crect_y
		mov r9, 128
		mov r10, 128
		push update_game_dx
		push update_game_dy
		push update_game_ticks
		push update_game_i
		push update_game_ei
		push update_game_ci
		push update_game_slot
		push update_game_crect_x
		push update_game_crect_y
		push update_game_new_cx
		call FUNC_aabb
		pop update_game_new_cx
		pop update_game_crect_y
		pop update_game_crect_x
		pop update_game_slot
		pop update_game_ci
		pop update_game_ei
		pop update_game_i
		pop update_game_ticks
		pop update_game_dy
		pop update_game_dx
		pop r10
		pop r9
		pop r8
		pop rdi
		pop rsi
		pop rdx
		pop rcx
		pop rbx
		mov r15, rax
		cmp r15, 0
		je ELSE_207
		mov r11, update_game_ci
		mov r12, r11
		mul r12, 40
		mov _tmpptr47, circular
		add _tmpptr47, r12
		load r11, _tmpptr47, 0, 1
		mov r12, update_game_ci
		mov r13, r12
		mul r13, 40
		mov _tmpptr48, circular
		add _tmpptr48, r13
		load r12, _tmpptr48, 8, 1
		push rbx
		push rcx
		push rdx
		push rsi
		push rdi
		push r8
		push r9
		push r10
		mov rbx, r11
		mov rcx, r12
		mov rdx, 1
		mov rsi, 0
		push update_game_dx
		push update_game_dy
		push update_game_ticks
		push update_game_i
		push update_game_ei
		push update_game_ci
		push update_game_slot
		push update_game_crect_x
		push update_game_crect_y
		push update_game_new_cx
		call PROC_add_explosion
		pop update_game_new_cx
		pop update_game_crect_y
		pop update_game_crect_x
		pop update_game_slot
		pop update_game_ci
		pop update_game_ei
		pop update_game_i
		pop update_game_ticks
		pop update_game_dy
		pop update_game_dx
		pop r10
		pop r9
		pop r8
		pop rdi
		pop rsi
		pop rdx
		pop rcx
		pop rbx
		mov r11, update_game_ci
		mov r12, r11
		mul r12, 40
		mov _tmpptr49, circular
		add _tmpptr49, r12
		store 0, _tmpptr49, 32, 1
		mov r11, update_game_i
		mov r12, r11
		mul r12, 40
		mov _tmpptr49, projectiles
		add _tmpptr49, r12
		store 0, _tmpptr49, 32, 1
		mov r11, score
		add r11, 10
		mov score, r11
	ELSE_207:
	ELSE_203:
	FOR_CONTINUE_202:
		add update_game_ci, 1
		jmp FOR_200
	ENDFOR_201:
	ENDIF_178:
	ELSE_175:
	FOR_CONTINUE_174:
		add update_game_i, 1
		jmp FOR_172
	ENDFOR_173:
		mov update_game_ei, 0
	FOR_209:
		cmp update_game_ei, 19
		jg ENDFOR_210
		mov r11, update_game_ei
		mov r12, r11
		mul r12, 40
		mov _tmpptr49, enemies
		add _tmpptr49, r12
		load r11, _tmpptr49, 32, 1
		cmp r11, 0
		je ELSE_212
		mov r11, update_game_ei
		mov r12, r11
		mul r12, 40
		mov _tmpptr50, enemies
		add _tmpptr50, r12
		load r11, _tmpptr50, 8, 1
		add r11, 2
		mov r12, update_game_ei
		mov r13, r12
		mul r13, 40
		mov _tmpptr51, enemies
		add _tmpptr51, r13
		store r11, _tmpptr51, 8, 1
		mov r11, update_game_ei
		mov r12, r11
		mul r12, 40
		mov _tmpptr51, enemies
		add _tmpptr51, r12
		load r11, _tmpptr51, 8, 1
		cmp r11, 1080
		jle ELSE_214
		mov r11, update_game_ei
		mov r12, r11
		mul r12, 40
		mov _tmpptr52, enemies
		add _tmpptr52, r12
		load r11, _tmpptr52, 0, 1
		mov r12, update_game_ei
		mov r13, r12
		mul r13, 40
		mov _tmpptr53, enemies
		add _tmpptr53, r13
		load r12, _tmpptr53, 16, 1
		div r12, 2
		add r11, r12
		push rbx
		push rcx
		push rdx
		push rsi
		push rdi
		push r8
		push r9
		push r10
		mov rbx, r11
		mov rcx, 1060
		mov rdx, 0
		mov rsi, 1
		push update_game_dx
		push update_game_dy
		push update_game_ticks
		push update_game_i
		push update_game_ei
		push update_game_ci
		push update_game_slot
		push update_game_crect_x
		push update_game_crect_y
		push update_game_new_cx
		call PROC_add_explosion
		pop update_game_new_cx
		pop update_game_crect_y
		pop update_game_crect_x
		pop update_game_slot
		pop update_game_ci
		pop update_game_ei
		pop update_game_i
		pop update_game_ticks
		pop update_game_dy
		pop update_game_dx
		pop r10
		pop r9
		pop r8
		pop rdi
		pop rsi
		pop rdx
		pop rcx
		pop rbx
		mov r11, update_game_ei
		mov r12, r11
		mul r12, 40
		mov _tmpptr54, enemies
		add _tmpptr54, r12
		store 0, _tmpptr54, 32, 1
		jmp ENDIF_215
	ELSE_214:
		mov r11, update_game_ei
		mov r12, r11
		mul r12, 40
		mov _tmpptr54, enemies
		add _tmpptr54, r12
		load r11, _tmpptr54, 0, 1
		mov r12, update_game_ei
		mov r13, r12
		mul r13, 40
		mov _tmpptr55, enemies
		add _tmpptr55, r13
		load r12, _tmpptr55, 8, 1
		mov r13, update_game_ei
		mov r14, r13
		mul r14, 40
		mov _tmpptr56, enemies
		add _tmpptr56, r14
		load r13, _tmpptr56, 16, 1
		mov r14, update_game_ei
		mov r15, r14
		mul r15, 40
		mov _tmpptr57, enemies
		add _tmpptr57, r15
		load r14, _tmpptr57, 24, 1
		push rbx
		push rcx
		push rdx
		push rsi
		push rdi
		push r8
		push r9
		push r10
		mov rbx, player_x
		mov rcx, player_y
		mov rdx, player_w
		mov rsi, player_h
		mov rdi, r11
		mov r8, r12
		mov r9, r13
		mov r10, r14
		push update_game_dx
		push update_game_dy
		push update_game_ticks
		push update_game_i
		push update_game_ei
		push update_game_ci
		push update_game_slot
		push update_game_crect_x
		push update_game_crect_y
		push update_game_new_cx
		call FUNC_aabb
		pop update_game_new_cx
		pop update_game_crect_y
		pop update_game_crect_x
		pop update_game_slot
		pop update_game_ci
		pop update_game_ei
		pop update_game_i
		pop update_game_ticks
		pop update_game_dy
		pop update_game_dx
		pop r10
		pop r9
		pop r8
		pop rdi
		pop rsi
		pop rdx
		pop rcx
		pop rbx
		cmp rax, 0
		je ELSE_218
		mov r11, player_w
		div r11, 2
		mov r12, player_x
		add r12, r11
		mov r11, player_h
		div r11, 2
		mov r13, player_y
		add r13, r11
		push rbx
		push rcx
		push rdx
		push rsi
		push rdi
		push r8
		push r9
		push r10
		mov rbx, r12
		mov rcx, r13
		mov rdx, 0
		mov rsi, 1
		push update_game_dx
		push update_game_dy
		push update_game_ticks
		push update_game_i
		push update_game_ei
		push update_game_ci
		push update_game_slot
		push update_game_crect_x
		push update_game_crect_y
		push update_game_new_cx
		call PROC_add_explosion
		pop update_game_new_cx
		pop update_game_crect_y
		pop update_game_crect_x
		pop update_game_slot
		pop update_game_ci
		pop update_game_ei
		pop update_game_i
		pop update_game_ticks
		pop update_game_dy
		pop update_game_dx
		pop r10
		pop r9
		pop r8
		pop rdi
		pop rsi
		pop rdx
		pop rcx
		pop rbx
		mov r11, update_game_ei
		mov r12, r11
		mul r12, 40
		mov _tmpptr58, enemies
		add _tmpptr58, r12
		store 0, _tmpptr58, 32, 1
		mov player_die, 1
	ELSE_218:
	ENDIF_215:
	ELSE_212:
	FOR_CONTINUE_211:
		add update_game_ei, 1
		jmp FOR_209
	ENDFOR_210:
		mov update_game_ci, 0
	FOR_220:
		cmp update_game_ci, 7
		jg ENDFOR_221
		mov r11, update_game_ci
		mov r12, r11
		mul r12, 40
		mov _tmpptr58, circular
		add _tmpptr58, r12
		load r11, _tmpptr58, 32, 1
		cmp r11, 0
		je ELSE_223
		mov r11, update_game_ci
		mov r12, r11
		mul r12, 40
		mov _tmpptr59, circular
		add _tmpptr59, r12
		load xmm1, _tmpptr59, 16, 1
		mov xmm2, real_const_2
		add xmm1, xmm2
		mov r11, update_game_ci
		mov r12, r11
		mul r12, 40
		mov _tmpptr60, circular
		add _tmpptr60, r12
		store xmm1, _tmpptr60, 16, 1
		mov r11, update_game_ci
		load r12, circular_cx, r11, 8
		mov xmm3, real_const_3
		mov r11, update_game_ci
		mov r13, r11
		mul r13, 40
		mov _tmpptr60, circular
		add _tmpptr60, r13
		load xmm4, _tmpptr60, 16, 1
		invoke cos, xmm4
		return xmm5
		mul xmm3, xmm5
		mov update_game_new_cx, r12
		add update_game_new_cx, xmm3
		mov xmm6, update_game_new_cx
		invoke trunc, xmm6
		return xmm7
		mov r11, update_game_ci
		mov r13, r11
		mul r13, 40
		mov _tmpptr61, circular
		add _tmpptr61, r13
		mov r11, xmm7
		store r11, _tmpptr61, 0, 1
		mov r11, update_game_ci
		mov r13, r11
		mul r13, 40
		mov _tmpptr61, circular
		add _tmpptr61, r13
		load r11, _tmpptr61, 8, 1
		mov r13, update_game_ci
		mov r14, r13
		mul r14, 40
		mov _tmpptr62, circular
		add _tmpptr62, r14
		load r13, _tmpptr62, 24, 1
		mul r13, 2
		add r11, r13
		mov r13, update_game_ci
		mov r14, r13
		mul r14, 40
		mov _tmpptr63, circular
		add _tmpptr63, r14
		store r11, _tmpptr63, 8, 1
		mov r11, update_game_ci
		mov r13, r11
		mul r13, 40
		mov _tmpptr63, circular
		add _tmpptr63, r13
		load r11, _tmpptr63, 8, 1
		cmp r11, 1080
		jle ELSE_225
		mov r11, 0
		sub r11, 1
		mov r13, update_game_ci
		mov r14, r13
		mul r14, 40
		mov _tmpptr64, circular
		add _tmpptr64, r14
		store r11, _tmpptr64, 24, 1
	ELSE_225:
		mov r11, update_game_ci
		mov r13, r11
		mul r13, 40
		mov _tmpptr64, circular
		add _tmpptr64, r13
		load r11, _tmpptr64, 8, 1
		cmp r11, 0
		jge ELSE_229
		mov r11, update_game_ci
		mov r13, r11
		mul r13, 40
		mov _tmpptr65, circular
		add _tmpptr65, r13
		store 1, _tmpptr65, 24, 1
	ELSE_229:
		mov r11, update_game_ci
		mov r13, r11
		mul r13, 40
		mov _tmpptr65, circular
		add _tmpptr65, r13
		load r11, _tmpptr65, 0, 1
		sub r11, 64
		mov update_game_crect_x, r11
		mov r11, update_game_ci
		mov r13, r11
		mul r13, 40
		mov _tmpptr66, circular
		add _tmpptr66, r13
		load r11, _tmpptr66, 8, 1
		sub r11, 64
		mov update_game_crect_y, r11
		push rbx
		push rcx
		push rdx
		push rsi
		push rdi
		push r8
		push r9
		push r10
		push r12
		mov rbx, player_x
		mov rcx, player_y
		mov rdx, player_w
		mov rsi, player_h
		mov rdi, update_game_crect_x
		mov r8, update_game_crect_y
		mov r9, 128
		mov r10, 128
		push update_game_dx
		push update_game_dy
		push update_game_ticks
		push update_game_i
		push update_game_ei
		push update_game_ci
		push update_game_slot
		push update_game_crect_x
		push update_game_crect_y
		push update_game_new_cx
		call FUNC_aabb
		pop update_game_new_cx
		pop update_game_crect_y
		pop update_game_crect_x
		pop update_game_slot
		pop update_game_ci
		pop update_game_ei
		pop update_game_i
		pop update_game_ticks
		pop update_game_dy
		pop update_game_dx
		pop r12
		pop r10
		pop r9
		pop r8
		pop rdi
		pop rsi
		pop rdx
		pop rcx
		pop rbx
		mov r11, rax
		cmp r11, 0
		je ELSE_233
		mov r11, player_w
		div r11, 2
		mov r13, player_x
		add r13, r11
		mov r11, player_h
		div r11, 2
		mov r14, player_y
		add r14, r11
		push rbx
		push rcx
		push rdx
		push rsi
		push rdi
		push r8
		push r9
		push r10
		push r12
		mov rbx, r13
		mov rcx, r14
		mov rdx, 0
		mov rsi, 1
		push update_game_dx
		push update_game_dy
		push update_game_ticks
		push update_game_i
		push update_game_ei
		push update_game_ci
		push update_game_slot
		push update_game_crect_x
		push update_game_crect_y
		push update_game_new_cx
		call PROC_add_explosion
		pop update_game_new_cx
		pop update_game_crect_y
		pop update_game_crect_x
		pop update_game_slot
		pop update_game_ci
		pop update_game_ei
		pop update_game_i
		pop update_game_ticks
		pop update_game_dy
		pop update_game_dx
		pop r12
		pop r10
		pop r9
		pop r8
		pop rdi
		pop rsi
		pop rdx
		pop rcx
		pop rbx
		mov r11, update_game_ci
		mov r13, r11
		mul r13, 40
		mov _tmpptr67, circular
		add _tmpptr67, r13
		store 0, _tmpptr67, 32, 1
		mov player_die, 1
	ELSE_233:
	ELSE_223:
	FOR_CONTINUE_222:
		add update_game_ci, 1
		jmp FOR_220
	ENDFOR_221:
		mov update_game_i, 0
	FOR_235:
		cmp update_game_i, 99
		jg ENDFOR_236
		mov r11, update_game_i
		mov r13, r11
		mul r13, 24
		mov _tmpptr67, stars
		add _tmpptr67, r13
		load r11, _tmpptr67, 8, 1
		mov r13, update_game_i
		mov r14, r13
		mul r14, 24
		mov _tmpptr68, stars
		add _tmpptr68, r14
		load r13, _tmpptr68, 16, 1
		add r11, r13
		mov r13, update_game_i
		mov r14, r13
		mul r14, 24
		mov _tmpptr69, stars
		add _tmpptr69, r14
		store r11, _tmpptr69, 8, 1
		mov r11, update_game_i
		mov r13, r11
		mul r13, 24
		mov _tmpptr69, stars
		add _tmpptr69, r13
		load r11, _tmpptr69, 8, 1
		cmp r11, 1080
		jle ELSE_238
		mov r11, update_game_i
		mov r13, r11
		mul r13, 24
		mov _tmpptr70, stars
		add _tmpptr70, r13
		store 0, _tmpptr70, 8, 1
		invoke rand
		return r11
		mod r11, 1440
		mov r13, update_game_i
		mov r14, r13
		mul r14, 24
		mov _tmpptr70, stars
		add _tmpptr70, r14
		store r11, _tmpptr70, 0, 1
	ELSE_238:
	FOR_CONTINUE_237:
		add update_game_i, 1
		jmp FOR_235
	ENDFOR_236:
		mov r11, update_game_ticks
		sub r11, last_spawn_time
		cmp r11, 1000
		jle ELSE_242
		push rbx
		push rcx
		push rdx
		push rsi
		push rdi
		push r8
		push r9
		push r10
		push r12
		push update_game_dx
		push update_game_dy
		push update_game_ticks
		push update_game_i
		push update_game_ei
		push update_game_ci
		push update_game_slot
		push update_game_crect_x
		push update_game_crect_y
		push update_game_new_cx
		call FUNC_find_free_enemy
		pop update_game_new_cx
		pop update_game_crect_y
		pop update_game_crect_x
		pop update_game_slot
		pop update_game_ci
		pop update_game_ei
		pop update_game_i
		pop update_game_ticks
		pop update_game_dy
		pop update_game_dx
		pop r12
		pop r10
		pop r9
		pop r8
		pop rdi
		pop rsi
		pop rdx
		pop rcx
		pop rbx
		mov r11, rax
		mov update_game_slot, r11
		mov r11, 0
		sub r11, 1
		cmp update_game_slot, r11
		je ELSE_246
		invoke rand
		return r11
		mod r11, 1376
		mov r13, update_game_slot
		mov r14, r13
		mul r14, 40
		mov _tmpptr70, enemies
		add _tmpptr70, r14
		store r11, _tmpptr70, 0, 1
		mov r11, 0
		sub r11, 64
		mov r13, update_game_slot
		mov r14, r13
		mul r14, 40
		mov _tmpptr70, enemies
		add _tmpptr70, r14
		store r11, _tmpptr70, 8, 1
		mov r11, update_game_slot
		mov r13, r11
		mul r13, 40
		mov _tmpptr70, enemies
		add _tmpptr70, r13
		store 64, _tmpptr70, 16, 1
		mov r11, update_game_slot
		mov r13, r11
		mul r13, 40
		mov _tmpptr70, enemies
		add _tmpptr70, r13
		store 64, _tmpptr70, 24, 1
		mov r11, update_game_slot
		mov r13, r11
		mul r13, 40
		mov _tmpptr70, enemies
		add _tmpptr70, r13
		store 1, _tmpptr70, 32, 1
	ELSE_246:
		mov last_spawn_time, update_game_ticks
	ELSE_242:
	PROC_END_update_game:
		ret
	function PROC_render_game:
		push render_game_i
		push render_game_brightness
		push render_game_r1
		push render_game_g1
		push render_game_b1
		call PROC_draw_explosions
		pop render_game_b1
		pop render_game_g1
		pop render_game_r1
		pop render_game_brightness
		pop render_game_i
		mov render_game_i, 0
	FOR_250:
		cmp render_game_i, 99
		jg ENDFOR_251
		mov rbx, render_game_i
		mov rcx, rbx
		mul rcx, 24
		mov _tmpptr70, stars
		add _tmpptr70, rcx
		load rbx, _tmpptr70, 16, 1
		mov rcx, rbx
		sub rcx, 1
		mov rdx, 55
		mul rdx, rcx
		mov rsi, 200
		add rsi, rdx
		mov render_game_brightness, rsi
		cmp render_game_brightness, 255
		jle ELSE_253
		mov render_game_brightness, 255
	ELSE_253:
		mov r8, 255
		invoke set_draw_color, renderer, render_game_brightness, render_game_brightness, render_game_brightness, r8
		mov r8, render_game_i
		mov r9, r8
		mul r9, 24
		mov _tmpptr71, stars
		add _tmpptr71, r9
		load r8, _tmpptr71, 0, 1
		mov r9, render_game_i
		mov r10, r9
		mul r10, 24
		mov _tmpptr72, stars
		add _tmpptr72, r10
		load r9, _tmpptr72, 8, 1
		invoke draw_point, renderer, r8, r9
	FOR_CONTINUE_252:
		add render_game_i, 1
		jmp FOR_250
	ENDFOR_251:
		cmp game_state, 1
		jne ELSE_257
		cmp player_die, 0
		jne ELSE_261
		mov r9, 0
		sub r9, 1
		cmp ship_tex, r9
		je ELSE_265
		mov r9, 0
		sub r9, 1
		mov r10, 0
		sub r10, 1
		mov r11, 0
		sub r11, 1
		mov r12, 0
		sub r12, 1
		mov r13, player_x
		sub r13, 8
		mov r14, player_y
		sub r14, 8
		mov r15, 64
		mov _ir0, 64
		invoke render_texture, renderer, ship_tex, r9, r10, r11, r12, r13, r14, r15, _ir0
		jmp ENDIF_266
	ELSE_265:
		mov r9, player_w
		div r9, 2
		mov r10, player_x
		add r10, r9
		mov r9, player_y
		add r9, player_h
		push rbx
		push rcx
		push rdx
		push rsi
		push rdi
		push r8
		mov rbx, r10
		mov rcx, player_y
		mov rdx, r9
		push render_game_i
		push render_game_brightness
		push render_game_r1
		push render_game_g1
		push render_game_b1
		call PROC_draw_gradient_triangle
		pop render_game_b1
		pop render_game_g1
		pop render_game_r1
		pop render_game_brightness
		pop render_game_i
		pop r8
		pop rdi
		pop rsi
		pop rdx
		pop rcx
		pop rbx
	ENDIF_266:
	ELSE_261:
		mov render_game_i, 0
	FOR_269:
		cmp render_game_i, 29
		jg ENDFOR_270
		mov r9, render_game_i
		mov r10, r9
		mul r10, 40
		mov _tmpptr73, projectiles
		add _tmpptr73, r10
		load r9, _tmpptr73, 32, 1
		cmp r9, 0
		je ELSE_272
		mov r9, 0
		sub r9, 1
		cmp particle_tex, r9
		je ELSE_274
		mov r9, 0
		sub r9, 1
		mov r10, 0
		sub r10, 1
		mov r11, 0
		sub r11, 1
		mov r12, 0
		sub r12, 1
		mov r13, render_game_i
		mov r14, r13
		mul r14, 40
		mov _tmpptr74, projectiles
		add _tmpptr74, r14
		load r13, _tmpptr74, 0, 1
		mov r14, render_game_i
		mov r15, r14
		mul r15, 40
		mov _tmpptr75, projectiles
		add _tmpptr75, r15
		load r14, _tmpptr75, 8, 1
		mov r15, render_game_i
		mov _ir0, r15
		mul _ir0, 40
		mov _tmpptr76, projectiles
		add _tmpptr76, _ir0
		load r15, _tmpptr76, 16, 1
		mov _ir0, render_game_i
		mov _ir1, _ir0
		mul _ir1, 40
		mov _tmpptr77, projectiles
		add _tmpptr77, _ir1
		load _ir0, _tmpptr77, 24, 1
		invoke render_texture, renderer, particle_tex, r9, r10, r11, r12, r13, r14, r15, _ir0
		jmp ENDIF_275
	ELSE_274:
		mov r9, 255
		mov r10, 255
		mov r11, 255
		mov r12, 255
		invoke set_draw_color, renderer, r9, r10, r11, r12
		mov r9, render_game_i
		mov r10, r9
		mul r10, 40
		mov _tmpptr78, projectiles
		add _tmpptr78, r10
		load r9, _tmpptr78, 0, 1
		mov r10, render_game_i
		mov r11, r10
		mul r11, 40
		mov _tmpptr79, projectiles
		add _tmpptr79, r11
		load r10, _tmpptr79, 8, 1
		mov r11, render_game_i
		mov r12, r11
		mul r12, 40
		mov _tmpptr80, projectiles
		add _tmpptr80, r12
		load r11, _tmpptr80, 16, 1
		mov r12, render_game_i
		mov r13, r12
		mul r13, 40
		mov _tmpptr81, projectiles
		add _tmpptr81, r13
		load r12, _tmpptr81, 24, 1
		invoke fill_rect, renderer, r9, r10, r11, r12
	ENDIF_275:
	ELSE_272:
	FOR_CONTINUE_271:
		add render_game_i, 1
		jmp FOR_269
	ENDFOR_270:
		mov render_game_i, 0
	FOR_278:
		cmp render_game_i, 19
		jg ENDFOR_279
		mov r9, render_game_i
		mov r10, r9
		mul r10, 40
		mov _tmpptr82, enemies
		add _tmpptr82, r10
		load r9, _tmpptr82, 32, 1
		cmp r9, 0
		je ELSE_281
		mov r9, 0
		sub r9, 1
		cmp asteroid_tex, r9
		je ELSE_283
		mov r9, 0
		sub r9, 1
		mov r10, 0
		sub r10, 1
		mov r11, 0
		sub r11, 1
		mov r12, 0
		sub r12, 1
		mov r13, render_game_i
		mov r14, r13
		mul r14, 40
		mov _tmpptr83, enemies
		add _tmpptr83, r14
		load r13, _tmpptr83, 0, 1
		mov r14, render_game_i
		mov r15, r14
		mul r15, 40
		mov _tmpptr84, enemies
		add _tmpptr84, r15
		load r14, _tmpptr84, 8, 1
		mov r15, render_game_i
		mov _ir0, r15
		mul _ir0, 40
		mov _tmpptr85, enemies
		add _tmpptr85, _ir0
		load r15, _tmpptr85, 16, 1
		mov _ir0, render_game_i
		mov _ir1, _ir0
		mul _ir1, 40
		mov _tmpptr86, enemies
		add _tmpptr86, _ir1
		load _ir0, _tmpptr86, 24, 1
		invoke render_texture, renderer, asteroid_tex, r9, r10, r11, r12, r13, r14, r15, _ir0
		jmp ENDIF_284
	ELSE_283:
		mov r9, render_game_i
		mov r10, r9
		mul r10, 40
		mov _tmpptr87, enemies
		add _tmpptr87, r10
		load r9, _tmpptr87, 0, 1
		mov r10, render_game_i
		mov r11, r10
		mul r11, 40
		mov _tmpptr88, enemies
		add _tmpptr88, r11
		load r10, _tmpptr88, 16, 1
		div r10, 2
		add r9, r10
		mov r10, render_game_i
		mov r11, r10
		mul r11, 40
		mov _tmpptr89, enemies
		add _tmpptr89, r11
		load r10, _tmpptr89, 8, 1
		mov r11, render_game_i
		mov r12, r11
		mul r12, 40
		mov _tmpptr90, enemies
		add _tmpptr90, r12
		load r11, _tmpptr90, 24, 1
		div r11, 2
		add r10, r11
		mov r11, render_game_i
		mov r12, r11
		mul r12, 40
		mov _tmpptr91, enemies
		add _tmpptr91, r12
		load r11, _tmpptr91, 16, 1
		div r11, 2
		mov r12, render_game_i
		mov r13, r12
		mul r13, 40
		mov _tmpptr92, enemies
		add _tmpptr92, r13
		load r12, _tmpptr92, 24, 1
		div r12, 2
		push rbx
		push rcx
		push rdx
		push rsi
		push rdi
		push r8
		mov rbx, r9
		mov rcx, r10
		mov rdx, r11
		mov rsi, r12
		push render_game_i
		push render_game_brightness
		push render_game_r1
		push render_game_g1
		push render_game_b1
		call PROC_draw_gradient_diamond
		pop render_game_b1
		pop render_game_g1
		pop render_game_r1
		pop render_game_brightness
		pop render_game_i
		pop r8
		pop rdi
		pop rsi
		pop rdx
		pop rcx
		pop rbx
	ENDIF_284:
	ELSE_281:
	FOR_CONTINUE_280:
		add render_game_i, 1
		jmp FOR_278
	ENDFOR_279:
		mov render_game_i, 0
	FOR_287:
		cmp render_game_i, 7
		jg ENDFOR_288
		mov r9, render_game_i
		mov r10, r9
		mul r10, 40
		mov _tmpptr93, circular
		add _tmpptr93, r10
		load r9, _tmpptr93, 32, 1
		cmp r9, 0
		je ELSE_290
		mov r9, 0
		sub r9, 1
		cmp saucer_tex, r9
		je ELSE_292
		mov r9, 0
		sub r9, 1
		mov r10, 0
		sub r10, 1
		mov r11, 0
		sub r11, 1
		mov r12, 0
		sub r12, 1
		mov r13, render_game_i
		mov r14, r13
		mul r14, 40
		mov _tmpptr94, circular
		add _tmpptr94, r14
		load r13, _tmpptr94, 0, 1
		sub r13, 64
		mov r14, render_game_i
		mov r15, r14
		mul r15, 40
		mov _tmpptr95, circular
		add _tmpptr95, r15
		load r14, _tmpptr95, 8, 1
		sub r14, 64
		mov r15, 128
		mov _ir0, 128
		invoke render_texture, renderer, saucer_tex, r9, r10, r11, r12, r13, r14, r15, _ir0
		jmp ENDIF_293
	ELSE_292:
		mov r9, render_game_i
		mov r10, r9
		mul r10, 40
		mov _tmpptr96, circular
		add _tmpptr96, r10
		load r9, _tmpptr96, 0, 1
		mov r10, render_game_i
		mov r11, r10
		mul r11, 40
		mov _tmpptr97, circular
		add _tmpptr97, r11
		load r10, _tmpptr97, 8, 1
		push rbx
		push rcx
		push rdx
		push rsi
		push rdi
		push r8
		mov rbx, r9
		mov rcx, r10
		mov rdx, 64
		push render_game_i
		push render_game_brightness
		push render_game_r1
		push render_game_g1
		push render_game_b1
		call PROC_draw_gradient_circle
		pop render_game_b1
		pop render_game_g1
		pop render_game_r1
		pop render_game_brightness
		pop render_game_i
		pop r8
		pop rdi
		pop rsi
		pop rdx
		pop rcx
		pop rbx
	ENDIF_293:
	ELSE_290:
	FOR_CONTINUE_289:
		add render_game_i, 1
		jmp FOR_287
	ENDFOR_288:
	ELSE_257:
		invoke inttostr, lives
		return _tmpptr98
		invoke strlen, str_7
		return r9
		invoke strlen, _tmpptr98
		return r10
		mov r11, r9
		add r11, r10
		add r11, 1
		alloc _tmpptr99, 1, r11
		invoke strncpy, _tmpptr99, str_7, r9
		invoke strncat, _tmpptr99, _tmpptr98, r10
		mov r9, 10
		mov r10, 10
		mov r11, 255
		mov r12, 255
		mov r13, 255
		mov r14, 255
		invoke draw_text, renderer, font_id, _tmpptr99, r9, r10, r11, r12, r13, r14
		free _tmpptr99
		free _tmpptr98
		invoke inttostr, score
		return _tmpptr98
		invoke strlen, str_8
		return r9
		invoke strlen, _tmpptr98
		return r10
		mov r11, r9
		add r11, r10
		add r11, 1
		alloc _tmpptr99, 1, r11
		invoke strncpy, _tmpptr99, str_8, r9
		invoke strncat, _tmpptr99, _tmpptr98, r10
		mov r9, 10
		mov r10, 30
		mov r11, 255
		mov r12, 255
		mov r13, 255
		mov r14, 255
		invoke draw_text, renderer, font_id, _tmpptr99, r9, r10, r11, r12, r13, r14
		free _tmpptr99
		free _tmpptr98
		cmp game_state, 2
		jne ELSE_296
		mov r9, 0
		sub r9, 1
		cmp spacelogo_tex, r9
		je ELSE_300
		mov r9, 0
		sub r9, 1
		mov r10, 0
		sub r10, 1
		mov r11, 0
		sub r11, 1
		mov r12, 0
		sub r12, 1
		mov r13, 0
		mov r14, 0
		mov r15, 1440
		mov _ir0, 1080
		invoke render_texture, renderer, spacelogo_tex, r9, r10, r11, r12, r13, r14, r15, _ir0
	ELSE_300:
		invoke rand
		return r9
		mod r9, 255
		mov render_game_r1, r9
		invoke rand
		return r9
		mod r9, 255
		mov render_game_g1, r9
		invoke rand
		return r9
		mod r9, 255
		mov render_game_b1, r9
		mov r9, 0
		mov r10, 0
		mov r11, 0
		mov r12, 255
		invoke set_draw_color, renderer, r9, r10, r11, r12
		mov r9, 470
		mov r10, 530
		mov r11, 500
		mov r12, 40
		invoke fill_rect, renderer, r9, r10, r11, r12
		mov r9, 490
		mov r10, 538
		mov r11, 255
		invoke draw_text, renderer, font_id, str_9, r9, r10, render_game_r1, render_game_g1, render_game_b1, r11
	ELSE_296:
		cmp game_state, 3
		jne ELSE_304
		mov r9, 0
		sub r9, 1
		cmp spacelogo_tex, r9
		je ELSE_308
		mov r9, 0
		sub r9, 1
		mov r10, 0
		sub r10, 1
		mov r11, 0
		sub r11, 1
		mov r12, 0
		sub r12, 1
		mov r13, 0
		mov r14, 0
		mov r15, 1440
		mov _ir0, 1080
		invoke render_texture, renderer, spacelogo_tex, r9, r10, r11, r12, r13, r14, r15, _ir0
	ELSE_308:
		invoke rand
		return r9
		mod r9, 255
		mov render_game_r1, r9
		invoke rand
		return r9
		mod r9, 255
		mov render_game_g1, r9
		invoke rand
		return r9
		mod r9, 255
		mov render_game_b1, r9
		mov r9, 0
		mov r10, 0
		mov r11, 0
		mov r12, 255
		invoke set_draw_color, renderer, r9, r10, r11, r12
		mov r9, 470
		mov r10, 530
		mov r11, 500
		mov r12, 40
		invoke fill_rect, renderer, r9, r10, r11, r12
		mov r9, 490
		mov r10, 538
		mov r11, 255
		invoke draw_text, renderer, font_id, str_10, r9, r10, render_game_r1, render_game_g1, render_game_b1, r11
	ELSE_304:
	PROC_END_render_game:
		ret
	function PROC_render_intro:
		mov rbx, 0
		sub rbx, 1
		cmp spacelogo_tex, rbx
		je ELSE_312
		mov rdx, 0
		sub rdx, 1
		mov rsi, 0
		sub rsi, 1
		mov rdi, 0
		sub rdi, 1
		mov r8, 0
		sub r8, 1
		mov r9, 0
		mov r10, 0
		mov r11, 1440
		mov r12, 1080
		invoke render_texture, renderer, spacelogo_tex, rdx, rsi, rdi, r8, r9, r10, r11, r12
		jmp ENDIF_313
	ELSE_312:
		mov rdx, 0
		mov rsi, 0
		mov rdi, 0
		mov r8, 255
		invoke set_draw_color, renderer, rdx, rsi, rdi, r8
		invoke clear, renderer
	ENDIF_313:
		mov rdx, 0
		sub rdx, 1
		cmp logo_tex, rdx
		je ELSE_316
		mov rdi, 0
		sub rdi, 1
		mov r8, 0
		sub r8, 1
		mov r9, 0
		sub r9, 1
		mov r10, 0
		sub r10, 1
		mov r11, 0
		mov r12, 0
		mov r13, 1440
		mov r14, 1080
		invoke render_texture, renderer, logo_tex, rdi, r8, r9, r10, r11, r12, r13, r14
	ELSE_316:
		invoke rand
		return rdi
		mov render_intro_r1, rdi
		mod render_intro_r1, 255
		invoke rand
		return r9
		mod r9, 255
		mov render_intro_g1, r9
		invoke rand
		return r9
		mod r9, 255
		mov render_intro_b1, r9
		mov r9, 640
		mov r10, 700
		mov r11, 255
		invoke draw_text, renderer, font_id, str_11, r9, r10, render_intro_r1, render_intro_g1, render_intro_b1, r11
		mov r9, 584
		mov r10, 740
		mov r11, 180
		mov r12, 180
		mov r13, 180
		mov r14, 255
		invoke draw_text, renderer, font_id, str_12, r9, r10, r11, r12, r13, r14
	PROC_END_render_intro:
		ret
	function PROC_init_sdl:
		invoke init
		return rbx
		mov __funcret_init_sdl, rbx
		cmp __funcret_init_sdl, 0
		je ELSE_320
		print fmt_str, str_13
		print newline
		exit 1
	ELSE_320:
		mov rsi, 100
		mov rdi, 100
		mov r8, 1440
		mov r9, 1080
		mov r10, 4
		invoke create_window, str_14, rsi, rdi, r8, r9, r10
		return rdx
		mov window_id, rdx
		mov rsi, 0
		sub rsi, 1
		cmp window_id, rsi
		jne ELSE_324
		print fmt_str, str_15
		print newline
		invoke quit
		exit 1
	ELSE_324:
		mov r8, 0
		sub r8, 1
		mov r10, 2
		invoke create_renderer, window_id, r8, r10
		return r9
		mov renderer, r9
		mov r8, 0
		sub r8, 1
		cmp renderer, r8
		jne ELSE_328
		print fmt_str, str_16
		print newline
		invoke destroy_window, window_id
		invoke quit
		exit 1
	ELSE_328:
		mov r10, 1440
		mov r11, 1080
		invoke create_render_target, renderer, r10, r11
		return r9
		mov target_id, r9
		mov r9, 0
		sub r9, 1
		cmp target_id, r9
		jne ELSE_332
		print fmt_str, str_17
		print newline
		invoke destroy_renderer, renderer
		invoke destroy_window, window_id
		invoke quit
		exit 1
	ELSE_332:
		mov r9, 0
		mov r10, 0
		mov r11, 0
		mov r12, 255
		invoke set_draw_color, renderer, r9, r10, r11, r12
		invoke init_text
		return r9
		cmp r9, 1
		je ELSE_336
		print fmt_str, str_18
		print newline
		exit 1
	ELSE_336:
		mov r10, 14
		invoke load_font, fontfile, r10
		return r9
		mov font_id, r9
		mov r9, 0
		sub r9, 1
		cmp font_id, r9
		jne ELSE_340
		print fmt_str, str_19
		print fmt_str, fontfile
		print newline
		exit 1
	ELSE_340:
		invoke load_texture, renderer, logofile
		return r9
		mov logo_tex, r9
		mov r9, 0
		sub r9, 1
		cmp logo_tex, r9
		jne ELSE_344
		print fmt_str, str_20
		print fmt_str, logofile
		print newline
	ELSE_344:
		invoke load_texture, renderer, spacelogofile
		return r9
		mov spacelogo_tex, r9
		mov r9, 0
		sub r9, 1
		cmp spacelogo_tex, r9
		jne ELSE_348
		print fmt_str, str_20
		print fmt_str, spacelogofile
		print newline
	ELSE_348:
		invoke load_texture_color_key, renderer, shipfile
		return r9
		mov ship_tex, r9
		mov r9, 0
		sub r9, 1
		cmp ship_tex, r9
		jne ELSE_352
		print fmt_str, str_20
		print fmt_str, shipfile
		print newline
	ELSE_352:
		invoke load_texture_color_key, renderer, asteroidfile
		return r9
		mov asteroid_tex, r9
		mov r9, 0
		sub r9, 1
		cmp asteroid_tex, r9
		jne ELSE_356
		print fmt_str, str_20
		print fmt_str, asteroidfile
		print newline
	ELSE_356:
		invoke load_texture_color_key, renderer, saucerfile
		return r9
		mov saucer_tex, r9
		mov r9, 0
		sub r9, 1
		cmp saucer_tex, r9
		jne ELSE_360
		print fmt_str, str_20
		print fmt_str, saucerfile
		print newline
	ELSE_360:
		invoke load_texture_color_key, renderer, particlefile
		return r9
		mov particle_tex, r9
		mov r9, 0
		sub r9, 1
		cmp particle_tex, r9
		jne ELSE_364
		print fmt_str, str_20
		print fmt_str, particlefile
		print newline
	ELSE_364:
	PROC_END_init_sdl:
		ret
	function PROC_cleanup:
		mov rbx, 0
		sub rbx, 1
		cmp ship_tex, rbx
		je ELSE_368
		invoke destroy_texture, ship_tex
	ELSE_368:
		mov rdx, 0
		sub rdx, 1
		cmp asteroid_tex, rdx
		je ELSE_372
		invoke destroy_texture, asteroid_tex
	ELSE_372:
		mov rdi, 0
		sub rdi, 1
		cmp saucer_tex, rdi
		je ELSE_376
		invoke destroy_texture, saucer_tex
	ELSE_376:
		mov r9, 0
		sub r9, 1
		cmp particle_tex, r9
		je ELSE_380
		invoke destroy_texture, particle_tex
	ELSE_380:
		mov r9, 0
		sub r9, 1
		cmp logo_tex, r9
		je ELSE_384
		invoke destroy_texture, logo_tex
	ELSE_384:
		mov r9, 0
		sub r9, 1
		cmp spacelogo_tex, r9
		je ELSE_388
		invoke destroy_texture, spacelogo_tex
	ELSE_388:
		invoke destroy_render_target, target_id
		invoke destroy_renderer, renderer
		invoke destroy_window, window_id
		invoke quit_text
		invoke quit
	PROC_END_cleanup:
		ret
	function FUNC_aabb:
		mov aabb_ax, rbx
		mov aabb_ay, rcx
		mov aabb_aw, rdx
		mov aabb_ah, rsi
		mov aabb_bx, rdi
		mov aabb_by, r8
		mov aabb_bw, r9
		mov aabb_bh, r10
		mov rbx, aabb_ax
		add rbx, aabb_aw
		cmp rbx, aabb_bx
		jle OR_ONE_396
		mov rdx, aabb_bx
		add rdx, aabb_bw
		cmp rdx, aabb_ax
		jle OR_ONE_396
		mov rdi, 0
		jmp OR_END_397
	OR_ONE_396:
		mov rdi, 1
	OR_END_397:
		mov r8, aabb_ay
		add r8, aabb_ah
		cmp r8, aabb_by
		jle OR_ONE_400
		cmp rdi, 0
		jne OR_ONE_400
		mov r10, 0
		jmp OR_END_401
	OR_ONE_400:
		mov r10, 1
	OR_END_401:
		mov r9, aabb_by
		add r9, aabb_bh
		cmp r9, aabb_ay
		jle OR_ONE_404
		cmp r10, 0
		jne OR_ONE_404
		mov r9, 0
		jmp OR_END_405
	OR_ONE_404:
		mov r9, 1
	OR_END_405:
		not r9
		mov __funcret_aabb, r9
	FUNC_END_aabb:
		mov rax, __funcret_aabb
		ret
	function FUNC_find_free_projectile:
		mov __funcret_find_free_projectile, 0
		sub __funcret_find_free_projectile, 1
		mov find_free_projectile_i, 0
	FOR_406:
		cmp find_free_projectile_i, 29
		jg ENDFOR_407
		mov rcx, find_free_projectile_i
		mov rdx, rcx
		mul rdx, 40
		mov _tmpptr98, projectiles
		add _tmpptr98, rdx
		load rcx, _tmpptr98, 32, 1
		cmp rcx, 0
		jne ELSE_409
		mov __funcret_find_free_projectile, find_free_projectile_i
		jmp FUNC_END_find_free_projectile
	ELSE_409:
	FOR_CONTINUE_408:
		add find_free_projectile_i, 1
		jmp FOR_406
	ENDFOR_407:
	FUNC_END_find_free_projectile:
		mov rax, __funcret_find_free_projectile
		ret
	function FUNC_find_free_enemy:
		mov __funcret_find_free_enemy, 0
		sub __funcret_find_free_enemy, 1
		mov find_free_enemy_i, 0
	FOR_413:
		cmp find_free_enemy_i, 19
		jg ENDFOR_414
		mov rcx, find_free_enemy_i
		mov rdx, rcx
		mul rdx, 40
		mov _tmpptr99, enemies
		add _tmpptr99, rdx
		load rcx, _tmpptr99, 32, 1
		cmp rcx, 0
		jne ELSE_416
		mov __funcret_find_free_enemy, find_free_enemy_i
		jmp FUNC_END_find_free_enemy
	ELSE_416:
	FOR_CONTINUE_415:
		add find_free_enemy_i, 1
		jmp FOR_413
	ENDFOR_414:
	FUNC_END_find_free_enemy:
		mov rax, __funcret_find_free_enemy
		ret
	function FUNC_find_free_circular:
		mov __funcret_find_free_circular, 0
		sub __funcret_find_free_circular, 1
		mov find_free_circular_i, 0
	FOR_420:
		cmp find_free_circular_i, 7
		jg ENDFOR_421
		mov rcx, find_free_circular_i
		mov rdx, rcx
		mul rdx, 40
		mov _tmpptr100, circular
		add _tmpptr100, rdx
		load rcx, _tmpptr100, 32, 1
		cmp rcx, 0
		jne ELSE_423
		mov __funcret_find_free_circular, find_free_circular_i
		jmp FUNC_END_find_free_circular
	ELSE_423:
	FOR_CONTINUE_422:
		add find_free_circular_i, 1
		jmp FOR_420
	ENDFOR_421:
	FUNC_END_find_free_circular:
		mov rax, __funcret_find_free_circular
		ret
	}
}