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
}
}