Skip to content

Instantly share code, notes, and snippets.

@beholdnec
Created May 21, 2018 07:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save beholdnec/9e186064f64e5992f9dd50d20b6e4387 to your computer and use it in GitHub Desktop.
Save beholdnec/9e186064f64e5992f9dd50d20b6e4387 to your computer and use it in GitHub Desktop.
Test file for llvm-m6502; originates from a small game
; ModuleID = 'SPACY4.c'
source_filename = "SPACY4.c"
target datalayout = "e-p:16:8-n8"
target triple = "m6502"
%struct.ENEMY = type { i8, i8, i8, i8, i8, i8, i8, i8 }
%struct.BULLET = type { i8, i8, i8, i8, i8, i8, i8, i8 }
@Title = constant [209 x i8] c"\01\00\01\C7\90\91\92\93\94\95\96\97\98\99\9A\9B\9C\9D\9E\9F\9F\00\01\0E\A0\A1\A2\A3\A4\A5\A6\A7\A8\A9\AA\AB\AC\AD\AE\AF\AF\00\01\0E\B0\B1\B2\B3\B4\B5\B6\B7\B8\B9\BA\BB\BC\BD\BE\BF\BF\00\01\0E\C0\C1\C2\C3\C4\C5\C6\C7\C8\C9\CA\CB\CC\CD\CE\CF\00\01\0F\D0\D1\D2\D3\D4\D5\D6\D7\D8\D9\DA\DB\DC\DD\DE\DF\00\01\0F\E0\E1\E2\E3\E4\E5\E6\E7\E8\E9\EA\EB\EC\ED\EE\EF\00\01\0F\F0\F1\F2\F3\F4\F5\F6\F7\00\F9\FA\FB\FC\FD\FE\FF\00\01\91Press\00\00Start\00\01\912015\00Doug\00Fraker\00\01N Updated\00Aug\002016\00\01\A9\08\0A\0A\02\00\01\0B\05\01\03\00\01\09\01\00", align 1
@Stars = constant [160 x i8] c"\01\00\01\11\07\00\01\09\04\00\01\04\06\00\01*\04\00\01\05\06\00\01$\05\06\00\01#\04\00\06\00\07\00\01)\06\00\01\06\08\00\01\11\05\00\01'\04\00\01%\05\00\01\0E\06\00\01\11\06\00\01/\04\00\01\05\05\00\01\0B\05\00\01\0E\07\00\01&\04\00\014\06\00\01\0C\07\00\01\05\04\00\01%\05\00\01\06\05\00\01\0D\05\00\01F\05\00\01\0A\04\00\01\03\05\00\01\17\06\00\01\0F\07\00\019\04\00\01\10\05\00\01\04\06\00\01\0F\04\00\012\06\00\01\16\06\00\01\11\06\00\01\11\08\01\00", align 1
@Keep = constant [42 x i8] c"\01\00\01\FE\00\01\09Keep\00Playing?\00\01UYes\00\01<No\00\01\FE\00\01\FE\00\01\13\01\00", align 1
@PALETTE = constant [32 x i8] c"\0F\02\13$\00\00\00\00\00\00\00\00\00\00\10 \0F\01(\22\00\16'8\00\02\133\00\17\1A9", align 1
@HUD = constant [7 x i8] c"SCORE:\00", align 1
@HUD2 = constant [7 x i8] c"LIVES:\00", align 1
@joypad1 = common global i8 0, align 1
@song = common global i8 0, align 1
@Game_Mode = common global i8 0, align 1
@NMI_flag = common global i8 0, align 1
@joypad1old = common global i8 0, align 1
@hero_ship = common global %struct.ENEMY zeroinitializer, align 1
@Wave = common global i8 0, align 1
@Master_Delay = common global i8 0, align 1
@Init_Wave_Flag = common global i8 0, align 1
@injury_Timer = common global i8 0, align 1
@Save_Game_Mode = common global i8 0, align 1
@Death_Flag = common global i8 0, align 1
@Wait = common global i8 0, align 1
@Wait2 = common global i8 0, align 1
@Selection = common global i8 0, align 1
@SPRITES = common global [256 x i8] zeroinitializer, align 1
@invincible = common global i8 0, align 1
@Lives = common global i8 0, align 1
@index_ = common global i8 0, align 1
@Palette_Fade = constant [4 x i8] c"$\14\04\14", align 1
@Frame_Count = common global i8 0, align 1
@X_speed = common global i8 0, align 1
@Vert_scroll = common global i8 0, align 1
@bullet_Wait = common global i8 0, align 1
@hero_bullet1 = common global %struct.BULLET zeroinitializer, align 1
@hero_bullet2 = common global %struct.BULLET zeroinitializer, align 1
@hero_bullet3 = common global %struct.BULLET zeroinitializer, align 1
@hero_bullet4 = common global %struct.BULLET zeroinitializer, align 1
@hero_bullet5 = common global %struct.BULLET zeroinitializer, align 1
@hero_bullet6 = common global %struct.BULLET zeroinitializer, align 1
@dummy = common global %struct.ENEMY zeroinitializer, align 1
@Sprite_index_ = common global i8 0, align 1
@hero_bullet7 = common global %struct.BULLET zeroinitializer, align 1
@hero_bullet8 = common global %struct.BULLET zeroinitializer, align 1
@enemy_bullet1 = common global %struct.BULLET zeroinitializer, align 1
@enemy_bullet2 = common global %struct.BULLET zeroinitializer, align 1
@enemy_bullet3 = common global %struct.BULLET zeroinitializer, align 1
@enemy_bullet4 = common global %struct.BULLET zeroinitializer, align 1
@enemy_bullet5 = common global %struct.BULLET zeroinitializer, align 1
@enemy_bullet6 = common global %struct.BULLET zeroinitializer, align 1
@enemy_bullet7 = common global %struct.BULLET zeroinitializer, align 1
@enemy_bullet8 = common global %struct.BULLET zeroinitializer, align 1
@Frame_Count2 = common global i8 0, align 1
@ENEMY1 = common global %struct.ENEMY zeroinitializer, align 1
@ENEMY2 = common global %struct.ENEMY zeroinitializer, align 1
@ENEMY3 = common global %struct.ENEMY zeroinitializer, align 1
@ENEMY4 = common global %struct.ENEMY zeroinitializer, align 1
@ENEMY5 = common global %struct.ENEMY zeroinitializer, align 1
@ENEMY6 = common global %struct.ENEMY zeroinitializer, align 1
@ENEMY7 = common global %struct.ENEMY zeroinitializer, align 1
@ENEMY8 = common global %struct.ENEMY zeroinitializer, align 1
@Enemy_Pointer = common global %struct.ENEMY* null, align 1
@Explode1 = common global %struct.ENEMY zeroinitializer, align 1
@objectB_y = common global i8 0, align 1
@objectB_x = common global i8 0, align 1
@Explode2 = common global %struct.ENEMY zeroinitializer, align 1
@Explode3 = common global %struct.ENEMY zeroinitializer, align 1
@Explode4 = common global %struct.ENEMY zeroinitializer, align 1
@collision = common global i8 0, align 1
@Score4 = common global i8 0, align 1
@objectA_width = common global i8 0, align 1
@objectB_width = common global i8 0, align 1
@objectB_height = common global i8 0, align 1
@objectA_height = common global i8 0, align 1
@objectA_y = common global i8 0, align 1
@objectA_x = common global i8 0, align 1
@Score3 = common global i8 0, align 1
@Score2 = common global i8 0, align 1
@Score1 = common global i8 0, align 1
@Big_Math = common global i16 0, align 1
@Wave0 = constant [64 x i8] c"\06\00 \FF\00\01\00\00\06\000\FF\10\00\00\00\06\00@\FF \00\00\00\06\00P\FF0\00\00\00\06\00`\FF@\02\00\00\06\00p\FFP\00\00\00\06\00\80\FF`\03\00\00\06\00\90\FFp\00\00\00", align 1
@Wave1 = constant [64 x i8] c"\08@\01\10\00\00\00\00\08@\01\10\10\00\00\00\08@\01\10 \00\00\00\08@\01\100\00\00\00\08@\01\10@\00\00\00\08@\01\10P\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 1
@Wave2 = constant [64 x i8] c"\08\00\01\E0\00\00\00\00\08\00\01\E0\10\00\00\00\08\00\01\E0 \00\00\00\08\00\01\E00\00\00\00\08\00\01\E0@\00\00\00\08\00\01\E0P\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 1
@Wave3 = constant [64 x i8] c"\06\00 \00\00\01\02\00\06\000\00@\00\02\00\06\00@\00\10\00\02\00\06\00P\00P\00\02\00\06\00`\00 \02\02\00\06\00p\00`\00\02\00\06\00\80\000\03\02\00\06\00\90\00p\00\02\00", align 1
@Wave4 = constant [64 x i8] c"\0A\00\A0\FF\00\01\00\00\0A\00\A0\FF\10\00\00\00\0A\00\A0\FF \00\00\00\0A\00\A0\FF0\00\00\00\0A\00\A0\FF@\02\00\00\0A\00\A0\FFP\00\00\00\0A\00\A0\FF`\00\00\00\0A\00\A0\FFp\00\00\00", align 1
@Wave5 = constant [64 x i8] c"\0A@\A0\00\00\01\00\00\0A@\A0\00\10\00\00\00\0A@\A0\00 \00\00\00\0A@\A0\000\00\00\00\0A@\A0\00@\03\00\00\0A@\A0\00P\00\00\00\0A@\A0\00`\00\00\00\0A@\A0\00p\00\00\00", align 1
@Wave6 = constant [64 x i8] c"\09@\01\10\00\01\00\00\09\00\01\E0\10\00\02\00\09@\01\10 \00\00\00\09\00\01\E00\01\02\00\09@\01\10@\00\00\00\09\00\01\E0P\00\02\00\09@\01\10`\00\00\00\09\00\01\E0p\00\02\00", align 1
@Wave7 = constant [64 x i8] c"\09@\01\10\00\02\00\00\09@\01\10\10\01\00\00\09@\01\10 \00\00\00\09@\01\100\00\00\00\09@\01\10@\00\00\00\09@\01\10P\00\00\00\09@\01\10`\00\00\00\09@\01\10p\00\00\00", align 1
@Wave8 = constant [64 x i8] c"\09\00\01\E0\00\03\02\00\09\00\01\E0\10\01\02\00\09\00\01\E0 \00\02\00\09\00\01\E00\00\02\00\09\00\01\E0@\00\02\00\09\00\01\E0P\00\02\00\09\00\01\E0`\00\02\00\09\00\01\E0p\00\02\00", align 1
@Wave9 = constant [64 x i8] c"\0A\00(\FF\00\00\00\00\0A\00(\FF\10\05\00\00\0A\00(\FF \00\00\00\0A\00(\FF0\06\00\00\0A\00(\FF@\00\00\00\0A\00(\FFP\00\00\00\0A\00(\FF`\05\00\00\0A\00(\FFp\00\00\00", align 1
@Wave10 = constant [64 x i8] c"\06\00@\00\00\00\00\00\06\00\01\00\10\00\00\00\06\00\010 \00\00\00\06\00\01`0\00\00\00\06\00\01\A0\08\00\00\00\06\00\01\D0\18\00\00\00\06\00\01\FF8\00\00\00\06\00@\FFH\00\00\00", align 1
@All_Wave_Addresses = constant [54 x i8*] [i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave0, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave3, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave1, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave2, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave3, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave1, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave2, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave7, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave8, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave1, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave2, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave7, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave8, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave6, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave0, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave4, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave5, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave3, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave4, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave5, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave0, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave6, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave6, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave9, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave1, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave2, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave9, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave1, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave2, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave6, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave6, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave10, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave9, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave9, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave1, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave2, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave1, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave2, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave6, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave6, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave7, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave8, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave6, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave10, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave4, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave5, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave10, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave4, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave5, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave9, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave9, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave10, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave10, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @Wave10, i32 0, i32 0)], align 1
@Wave_to_Pattern = constant [54 x i8] c"\00\00\01\02\00\01\02\05\05\01\02\05\05\05\00\03\04\00\03\04\00\05\05\06\01\02\06\01\02\05\05\07\06\06\01\02\01\02\05\05\05\05\05\07\03\04\07\03\04\06\06\07\07\07", align 1
@Pattern = common global i8 0, align 1
@p_Wave_Data = common global i8* null, align 1
@CIRCLE_X = constant [32 x i8] c"\E4\E8\EC\F1\F4\F7\FA\FD\00\03\06\09\0C\0F\12\15\18\15\12\0F\0C\09\06\03\00\FD\FA\F7\F4\F1\EC\E8", align 1
@CIRCLE_Y = constant [32 x i8] c"\00\03\06\09\0C\0F\12\15\18\15\12\0F\0C\06\03\00\FE\FD\FA\F7\F4\F1\EC\E8\E4\E8\ED\F1\F4\F7\FA\FD", align 1
@CIRCLE_D = constant [32 x i8] c"\00\00\00\00\00\00\00\00\00\00@@@@@@@@@@@@@@@@\00\00\00\00\00\00", align 1
@CIRCLE_A = constant [32 x i8] c"\0A\0A\09\09\09\09\08\08\08\08\09\09\09\09\0A\0A\0A\0A\0B\0B\0B\0B\0C\0C\0C\0C\0B\0B\0B\0B\0A\0A", align 1
@Current_Move = common global i8 0, align 1
@temp = common global i8 0, align 1
@temp2 = common global i8 0, align 1
@temp3 = common global i8 0, align 1
@Current_Type = common global i8 0, align 1
@X_compare = common global i8 0, align 1
@BOSS = common global %struct.ENEMY zeroinitializer, align 1
@BOSS_health = common global i8 0, align 1
@LASER1 = common global %struct.ENEMY zeroinitializer, align 1
@LASER2 = common global %struct.ENEMY zeroinitializer, align 1
@LASER3 = common global %struct.ENEMY zeroinitializer, align 1
@LASER4 = common global %struct.ENEMY zeroinitializer, align 1
@BOSS_health_test = common global i8 0, align 1
@BOSS_eyes = common global i8 0, align 1
@BOSS_BLINK = constant [4 x i8] c"\02\12\1F\12", align 1
@Shake_Timer_1 = common global i8 0, align 1
@Shake_Timer_2 = common global i8 0, align 1
@Flag_Blink_Boss = common global i8 0, align 1
@index_4 = common global i8 0, align 1
@joypad1test = common global i8 0, align 1
@joypad2 = common global i8 0, align 1
@joypad2old = common global i8 0, align 1
@joypad2test = common global i8 0, align 1
@Vert_scroll2 = common global i8 0, align 1
@Y_speed = common global i8 0, align 1
@ENEMY_X = common global i8 0, align 1
@ENEMY_Y = common global i8 0, align 1
; Function Attrs: nounwind
define void @main() #0 {
entry:
call void @All_Off()
call void @Draw_Title()
store i8 -1, i8* @joypad1, align 1
call void @Load_Palette()
call void @Reset_Scroll()
call void @Reset_Music()
%0 = load i8, i8* @song, align 1
call void @Play_Music(i8 zeroext %0)
call void @Wait_Vblank()
call void @All_On()
br label %while.body
while.body: ; preds = %entry, %while.end209
br label %while.cond1
while.cond1: ; preds = %if.end, %while.body
%1 = load i8, i8* @Game_Mode, align 1
%conv = zext i8 %1 to i16
%cmp = icmp eq i16 %conv, 0
br i1 %cmp, label %while.body3, label %while.end22
while.body3: ; preds = %while.cond1
br label %while.cond4
while.cond4: ; preds = %while.body8, %while.body3
%2 = load i8, i8* @NMI_flag, align 1
%conv5 = zext i8 %2 to i16
%cmp6 = icmp eq i16 %conv5, 0
br i1 %cmp6, label %while.body8, label %while.end
while.body8: ; preds = %while.cond4
br label %while.cond4
while.end: ; preds = %while.cond4
call void @Rotate_Palette()
call void @Reset_Scroll()
call void @Get_Input()
%3 = load i8, i8* @joypad1old, align 1
%conv9 = zext i8 %3 to i16
%and = and i16 %conv9, 16
%cmp10 = icmp eq i16 %and, 0
br i1 %cmp10, label %land.lhs.true, label %if.end
land.lhs.true: ; preds = %while.end
%4 = load i8, i8* @joypad1, align 1
%conv12 = zext i8 %4 to i16
%and13 = and i16 %conv12, 16
%cmp14 = icmp ne i16 %and13, 0
br i1 %cmp14, label %if.then, label %if.end
if.then: ; preds = %land.lhs.true
store i8 0, i8* @NMI_flag, align 1
br label %while.cond16
while.cond16: ; preds = %while.body20, %if.then
%5 = load i8, i8* @NMI_flag, align 1
%conv17 = zext i8 %5 to i16
%cmp18 = icmp eq i16 %conv17, 0
br i1 %cmp18, label %while.body20, label %while.end21
while.body20: ; preds = %while.cond16
br label %while.cond16
while.end21: ; preds = %while.cond16
call void @All_Off()
store i8 1, i8* @Game_Mode, align 1
store i8 120, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 3), align 1
store i8 -48, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 2), align 1
store i8 0, i8* @Wave, align 1
store i8 50, i8* @Master_Delay, align 1
call void @Clear_Enemies()
call void @Set_Sprite_Zero()
call void @Draw_Background()
call void @Reset_Music()
store i8 1, i8* @song, align 1
%6 = load i8, i8* @song, align 1
call void @Play_Music(i8 zeroext %6)
call void @Wait_Vblank()
store i8 -111, i8* inttoptr (i16 8192 to i8*), align 1
br label %if.end
if.end: ; preds = %while.end21, %land.lhs.true, %while.end
call void @Music_Update()
store i8 0, i8* @NMI_flag, align 1
br label %while.cond1
while.end22: ; preds = %while.cond1
br label %while.cond23
while.cond23: ; preds = %if.end73, %while.end22
%7 = load i8, i8* @Game_Mode, align 1
%conv24 = zext i8 %7 to i16
%cmp25 = icmp eq i16 %conv24, 1
br i1 %cmp25, label %while.body27, label %while.end74
while.body27: ; preds = %while.cond23
br label %while.cond28
while.cond28: ; preds = %while.body32, %while.body27
%8 = load i8, i8* @NMI_flag, align 1
%conv29 = zext i8 %8 to i16
%cmp30 = icmp eq i16 %conv29, 0
br i1 %cmp30, label %while.body32, label %while.end33
while.body32: ; preds = %while.cond28
br label %while.cond28
while.end33: ; preds = %while.cond28
call void @Get_Input()
call void @Blank_sprite()
call void @Set_Sprite_Zero()
%9 = load i8, i8* @Master_Delay, align 1
%conv34 = zext i8 %9 to i16
%cmp35 = icmp ne i16 %conv34, 0
br i1 %cmp35, label %if.then37, label %if.end43
if.then37: ; preds = %while.end33
%10 = load i8, i8* @Master_Delay, align 1
%dec = add i8 %10, -1
store i8 %dec, i8* @Master_Delay, align 1
%11 = load i8, i8* @Master_Delay, align 1
%conv38 = zext i8 %11 to i16
%cmp39 = icmp eq i16 %conv38, 0
br i1 %cmp39, label %if.then41, label %if.end42
if.then41: ; preds = %if.then37
%12 = load i8, i8* @Init_Wave_Flag, align 1
%inc = add i8 %12, 1
store i8 %inc, i8* @Init_Wave_Flag, align 1
br label %if.end42
if.end42: ; preds = %if.then41, %if.then37
br label %if.end43
if.end43: ; preds = %if.end42, %while.end33
%13 = load i8, i8* @Init_Wave_Flag, align 1
%conv44 = zext i8 %13 to i16
%cmp45 = icmp ne i16 %conv44, 0
br i1 %cmp45, label %if.then47, label %if.end48
if.then47: ; preds = %if.end43
store i8 0, i8* @Init_Wave_Flag, align 1
call void @Init_New_Wave()
br label %if.end48
if.end48: ; preds = %if.then47, %if.end43
call void @Check_Wave_Over()
%14 = load i8, i8* @injury_Timer, align 1
%conv49 = zext i8 %14 to i16
%cmp50 = icmp eq i16 %conv49, 0
br i1 %cmp50, label %if.then52, label %if.end53
if.then52: ; preds = %if.end48
call void @shooting()
br label %if.end53
if.end53: ; preds = %if.then52, %if.end48
call void @Check_Injury()
call void @move_logic()
call void @collision_Test()
call void @Randomly_Shoot()
call void @Draw_Bullets()
call void @Draw_Hero()
call void @Draw_Enemies2()
call void @Set_Sprite_Zero()
call void @Music_Update()
call void @Adjust_Scoreboard()
%15 = load i8, i8* @joypad1old, align 1
%conv54 = zext i8 %15 to i16
%and55 = and i16 %conv54, 16
%cmp56 = icmp eq i16 %and55, 0
br i1 %cmp56, label %land.lhs.true58, label %if.end64
land.lhs.true58: ; preds = %if.end53
%16 = load i8, i8* @joypad1, align 1
%conv59 = zext i8 %16 to i16
%and60 = and i16 %conv59, 16
%cmp61 = icmp ne i16 %and60, 0
br i1 %cmp61, label %if.then63, label %if.end64
if.then63: ; preds = %land.lhs.true58
call void @Blank_sprite()
call void @Set_Sprite_Zero()
call void @Turn_On_Pause_Sprites()
call void @Reset_Music()
store i8 2, i8* @song, align 1
%17 = load i8, i8* @song, align 1
call void @Play_Music(i8 zeroext %17)
%18 = load i8, i8* @Game_Mode, align 1
store i8 %18, i8* @Save_Game_Mode, align 1
store i8 2, i8* @Game_Mode, align 1
br label %if.end64
if.end64: ; preds = %if.then63, %land.lhs.true58, %if.end53
%19 = load i8, i8* @injury_Timer, align 1
%conv65 = zext i8 %19 to i16
%cmp66 = icmp eq i16 %conv65, 99
br i1 %cmp66, label %land.lhs.true68, label %if.end73
land.lhs.true68: ; preds = %if.end64
%20 = load i8, i8* @Death_Flag, align 1
%conv69 = zext i8 %20 to i16
%cmp70 = icmp ne i16 %conv69, 0
br i1 %cmp70, label %if.then72, label %if.end73
if.then72: ; preds = %land.lhs.true68
call void @Blank_sprite()
call void @Set_Sprite_Zero()
call void @Turn_On_Game_Over_Sprites()
call void @Reset_Music()
store i8 3, i8* @song, align 1
%21 = load i8, i8* @song, align 1
call void @Play_Music(i8 zeroext %21)
store i8 3, i8* @Game_Mode, align 1
br label %if.end73
if.end73: ; preds = %if.then72, %land.lhs.true68, %if.end64
store i8 0, i8* @NMI_flag, align 1
br label %while.cond23
while.end74: ; preds = %while.cond23
br label %while.cond75
while.cond75: ; preds = %if.end115, %while.end74
%22 = load i8, i8* @Game_Mode, align 1
%conv76 = zext i8 %22 to i16
%cmp77 = icmp eq i16 %conv76, 5
br i1 %cmp77, label %while.body79, label %while.end116
while.body79: ; preds = %while.cond75
br label %while.cond80
while.cond80: ; preds = %while.body84, %while.body79
%23 = load i8, i8* @NMI_flag, align 1
%conv81 = zext i8 %23 to i16
%cmp82 = icmp eq i16 %conv81, 0
br i1 %cmp82, label %while.body84, label %while.end85
while.body84: ; preds = %while.cond80
br label %while.cond80
while.end85: ; preds = %while.cond80
call void @Get_Input()
call void @Blank_sprite()
call void @Set_Sprite_Zero()
%24 = load i8, i8* @injury_Timer, align 1
%conv86 = zext i8 %24 to i16
%cmp87 = icmp eq i16 %conv86, 0
br i1 %cmp87, label %if.then89, label %if.end90
if.then89: ; preds = %while.end85
call void @shooting()
br label %if.end90
if.end90: ; preds = %if.then89, %while.end85
call void @Check_Injury()
call void @move_logic()
call void @collision_Test4()
%25 = load i8, i8* @Game_Mode, align 1
%conv91 = zext i8 %25 to i16
%cmp92 = icmp ne i16 %conv91, 5
br i1 %cmp92, label %if.then94, label %if.end95
if.then94: ; preds = %if.end90
br label %while.end116
if.end95: ; preds = %if.end90
call void @Draw_Bullets()
call void @Draw_Hero()
call void @Move_Lasers()
call void @Move_Boss()
call void @Set_Sprite_Zero()
call void @Music_Update()
call void @Adjust_Scoreboard()
%26 = load i8, i8* @joypad1old, align 1
%conv96 = zext i8 %26 to i16
%and97 = and i16 %conv96, 16
%cmp98 = icmp eq i16 %and97, 0
br i1 %cmp98, label %land.lhs.true100, label %if.end106
land.lhs.true100: ; preds = %if.end95
%27 = load i8, i8* @joypad1, align 1
%conv101 = zext i8 %27 to i16
%and102 = and i16 %conv101, 16
%cmp103 = icmp ne i16 %and102, 0
br i1 %cmp103, label %if.then105, label %if.end106
if.then105: ; preds = %land.lhs.true100
call void @Blank_sprite()
call void @Set_Sprite_Zero()
call void @Turn_On_Pause_Sprites()
call void @Reset_Music()
store i8 2, i8* @song, align 1
%28 = load i8, i8* @song, align 1
call void @Play_Music(i8 zeroext %28)
%29 = load i8, i8* @Game_Mode, align 1
store i8 %29, i8* @Save_Game_Mode, align 1
store i8 2, i8* @Game_Mode, align 1
br label %if.end106
if.end106: ; preds = %if.then105, %land.lhs.true100, %if.end95
%30 = load i8, i8* @injury_Timer, align 1
%conv107 = zext i8 %30 to i16
%cmp108 = icmp eq i16 %conv107, 99
br i1 %cmp108, label %land.lhs.true110, label %if.end115
land.lhs.true110: ; preds = %if.end106
%31 = load i8, i8* @Death_Flag, align 1
%conv111 = zext i8 %31 to i16
%cmp112 = icmp ne i16 %conv111, 0
br i1 %cmp112, label %if.then114, label %if.end115
if.then114: ; preds = %land.lhs.true110
call void @Blank_sprite()
call void @Set_Sprite_Zero()
call void @Turn_On_Game_Over_Sprites()
call void @Reset_Music()
store i8 3, i8* @song, align 1
%32 = load i8, i8* @song, align 1
call void @Play_Music(i8 zeroext %32)
store i8 3, i8* @Game_Mode, align 1
br label %if.end115
if.end115: ; preds = %if.then114, %land.lhs.true110, %if.end106
store i8 0, i8* @NMI_flag, align 1
br label %while.cond75
while.end116: ; preds = %if.then94, %while.cond75
br label %while.cond117
while.cond117: ; preds = %if.end138, %while.end116
%33 = load i8, i8* @Game_Mode, align 1
%conv118 = zext i8 %33 to i16
%cmp119 = icmp eq i16 %conv118, 2
br i1 %cmp119, label %while.body121, label %while.end139
while.body121: ; preds = %while.cond117
br label %while.cond122
while.cond122: ; preds = %while.body126, %while.body121
%34 = load i8, i8* @NMI_flag, align 1
%conv123 = zext i8 %34 to i16
%cmp124 = icmp eq i16 %conv123, 0
br i1 %cmp124, label %while.body126, label %while.end127
while.body126: ; preds = %while.cond122
br label %while.cond122
while.end127: ; preds = %while.cond122
call void @Get_Input()
call void @Music_Update()
%35 = load i8, i8* @joypad1old, align 1
%conv128 = zext i8 %35 to i16
%and129 = and i16 %conv128, 16
%cmp130 = icmp eq i16 %and129, 0
br i1 %cmp130, label %land.lhs.true132, label %if.end138
land.lhs.true132: ; preds = %while.end127
%36 = load i8, i8* @joypad1, align 1
%conv133 = zext i8 %36 to i16
%and134 = and i16 %conv133, 16
%cmp135 = icmp ne i16 %and134, 0
br i1 %cmp135, label %if.then137, label %if.end138
if.then137: ; preds = %land.lhs.true132
call void @Blank_sprite()
call void @Set_Sprite_Zero()
call void @Reset_Music()
store i8 1, i8* @song, align 1
%37 = load i8, i8* @song, align 1
call void @Play_Music(i8 zeroext %37)
%38 = load i8, i8* @Save_Game_Mode, align 1
store i8 %38, i8* @Game_Mode, align 1
br label %if.end138
if.end138: ; preds = %if.then137, %land.lhs.true132, %while.end127
store i8 0, i8* @NMI_flag, align 1
br label %while.cond117
while.end139: ; preds = %while.cond117
br label %while.cond140
while.cond140: ; preds = %if.end162, %while.end139
%39 = load i8, i8* @Game_Mode, align 1
%conv141 = zext i8 %39 to i16
%cmp142 = icmp eq i16 %conv141, 3
br i1 %cmp142, label %while.body144, label %while.end163
while.body144: ; preds = %while.cond140
br label %while.cond145
while.cond145: ; preds = %while.body149, %while.body144
%40 = load i8, i8* @NMI_flag, align 1
%conv146 = zext i8 %40 to i16
%cmp147 = icmp eq i16 %conv146, 0
br i1 %cmp147, label %while.body149, label %while.end150
while.body149: ; preds = %while.cond145
br label %while.cond145
while.end150: ; preds = %while.cond145
call void @Get_Input()
call void @Music_Update()
%41 = load i8, i8* @Wait, align 1
%inc151 = add i8 %41, 1
store i8 %inc151, i8* @Wait, align 1
%42 = load i8, i8* @Wait, align 1
%conv152 = zext i8 %42 to i16
%cmp153 = icmp eq i16 %conv152, 0
br i1 %cmp153, label %if.then155, label %if.end157
if.then155: ; preds = %while.end150
%43 = load i8, i8* @Wait2, align 1
%inc156 = add i8 %43, 1
store i8 %inc156, i8* @Wait2, align 1
br label %if.end157
if.end157: ; preds = %if.then155, %while.end150
%44 = load i8, i8* @Wait2, align 1
%conv158 = zext i8 %44 to i16
%cmp159 = icmp eq i16 %conv158, 2
br i1 %cmp159, label %if.then161, label %if.end162
if.then161: ; preds = %if.end157
call void @All_Off()
call void @Reset()
br label %if.end162
if.end162: ; preds = %if.then161, %if.end157
store i8 0, i8* @NMI_flag, align 1
br label %while.cond140
while.end163: ; preds = %while.cond140
br label %while.cond164
while.cond164: ; preds = %if.end208, %while.end163
%45 = load i8, i8* @Game_Mode, align 1
%conv165 = zext i8 %45 to i16
%cmp166 = icmp eq i16 %conv165, 4
br i1 %cmp166, label %while.body168, label %while.end209
while.body168: ; preds = %while.cond164
br label %while.cond169
while.cond169: ; preds = %while.body173, %while.body168
%46 = load i8, i8* @NMI_flag, align 1
%conv170 = zext i8 %46 to i16
%cmp171 = icmp eq i16 %conv170, 0
br i1 %cmp171, label %while.body173, label %while.end174
while.body173: ; preds = %while.cond169
br label %while.cond169
while.end174: ; preds = %while.cond169
call void @Get_Input()
call void @Blank_sprite()
call void @Set_Sprite_Zero()
call void @Turn_On_Victory_Sprites()
call void @Draw_Hero()
call void @Music_Update()
%47 = load i8, i8* @Wait2, align 1
%conv175 = zext i8 %47 to i16
%cmp176 = icmp slt i16 %conv175, 2
br i1 %cmp176, label %if.then178, label %if.end186
if.then178: ; preds = %while.end174
%48 = load i8, i8* @Wait, align 1
%inc179 = add i8 %48, 1
store i8 %inc179, i8* @Wait, align 1
%49 = load i8, i8* @Wait, align 1
%conv180 = zext i8 %49 to i16
%cmp181 = icmp eq i16 %conv180, 0
br i1 %cmp181, label %if.then183, label %if.end185
if.then183: ; preds = %if.then178
%50 = load i8, i8* @Wait2, align 1
%inc184 = add i8 %50, 1
store i8 %inc184, i8* @Wait2, align 1
br label %if.end185
if.end185: ; preds = %if.then183, %if.then178
br label %if.end186
if.end186: ; preds = %if.end185, %while.end174
%51 = load i8, i8* @Wait2, align 1
%conv187 = zext i8 %51 to i16
%cmp188 = icmp eq i16 %conv187, 2
br i1 %cmp188, label %if.then190, label %if.end208
if.then190: ; preds = %if.end186
%52 = load i8, i8* @joypad1old, align 1
%conv191 = zext i8 %52 to i16
%and192 = and i16 %conv191, 16
%cmp193 = icmp eq i16 %and192, 0
br i1 %cmp193, label %land.lhs.true195, label %if.end207
land.lhs.true195: ; preds = %if.then190
%53 = load i8, i8* @joypad1, align 1
%conv196 = zext i8 %53 to i16
%and197 = and i16 %conv196, 16
%cmp198 = icmp ne i16 %and197, 0
br i1 %cmp198, label %if.then200, label %if.end207
if.then200: ; preds = %land.lhs.true195
store i8 0, i8* @NMI_flag, align 1
br label %while.cond201
while.cond201: ; preds = %while.body205, %if.then200
%54 = load i8, i8* @NMI_flag, align 1
%conv202 = zext i8 %54 to i16
%cmp203 = icmp eq i16 %conv202, 0
br i1 %cmp203, label %while.body205, label %while.end206
while.body205: ; preds = %while.cond201
br label %while.cond201
while.end206: ; preds = %while.cond201
call void @All_Off()
store i8 32, i8* inttoptr (i16 8198 to i8*), align 1
store i8 0, i8* inttoptr (i16 8198 to i8*), align 1
call void @UnRLE(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @Keep, i32 0, i32 0))
store i8 63, i8* inttoptr (i16 8198 to i8*), align 1
store i8 3, i8* inttoptr (i16 8198 to i8*), align 1
store i8 48, i8* inttoptr (i16 8199 to i8*), align 1
call void @Reset_Scroll()
store i8 0, i8* @Game_Mode, align 1
call void @Blank_sprite()
store i8 0, i8* @Selection, align 1
call void @Wait_Vblank()
call void @All_On()
store i8 0, i8* @NMI_flag, align 1
call void @Keep_Loop()
br label %if.end207
if.end207: ; preds = %while.end206, %land.lhs.true195, %if.then190
br label %if.end208
if.end208: ; preds = %if.end207, %if.end186
store i8 0, i8* @NMI_flag, align 1
br label %while.cond164
while.end209: ; preds = %while.cond164
br label %while.body
return: ; No predecessors!
ret void
}
; Function Attrs: nounwind
define void @All_Off() #0 {
entry:
store i8 0, i8* inttoptr (i16 8192 to i8*), align 1
store i8 0, i8* inttoptr (i16 8193 to i8*), align 1
ret void
}
; Function Attrs: nounwind
define void @Draw_Title() #0 {
entry:
store i8 32, i8* inttoptr (i16 8198 to i8*), align 1
store i8 0, i8* inttoptr (i16 8198 to i8*), align 1
call void @UnRLE(i8* getelementptr inbounds ([209 x i8], [209 x i8]* @Title, i32 0, i32 0))
store i8 36, i8* inttoptr (i16 8198 to i8*), align 1
store i8 100, i8* inttoptr (i16 8198 to i8*), align 1
store i8 0, i8* @index_, align 1
br label %for.cond
for.cond: ; preds = %for.inc, %entry
%0 = load i8, i8* @index_, align 1
%conv = zext i8 %0 to i16
%cmp = icmp ult i16 %conv, 7
br i1 %cmp, label %for.body, label %for.end
for.body: ; preds = %for.cond
%1 = load i8, i8* @index_, align 1
%idxprom = zext i8 %1 to i16
%arrayidx = getelementptr inbounds [7 x i8], [7 x i8]* @HUD, i16 0, i16 %idxprom
%2 = load i8, i8* %arrayidx, align 1
store i8 %2, i8* inttoptr (i16 8199 to i8*), align 1
br label %for.inc
for.inc: ; preds = %for.body
%3 = load i8, i8* @index_, align 1
%inc = add i8 %3, 1
store i8 %inc, i8* @index_, align 1
br label %for.cond
for.end: ; preds = %for.cond
store i8 36, i8* inttoptr (i16 8198 to i8*), align 1
store i8 116, i8* inttoptr (i16 8198 to i8*), align 1
store i8 0, i8* @index_, align 1
br label %for.cond2
for.cond2: ; preds = %for.inc9, %for.end
%4 = load i8, i8* @index_, align 1
%conv3 = zext i8 %4 to i16
%cmp4 = icmp ult i16 %conv3, 7
br i1 %cmp4, label %for.body6, label %for.end11
for.body6: ; preds = %for.cond2
%5 = load i8, i8* @index_, align 1
%idxprom7 = zext i8 %5 to i16
%arrayidx8 = getelementptr inbounds [7 x i8], [7 x i8]* @HUD2, i16 0, i16 %idxprom7
%6 = load i8, i8* %arrayidx8, align 1
store i8 %6, i8* inttoptr (i16 8199 to i8*), align 1
br label %for.inc9
for.inc9: ; preds = %for.body6
%7 = load i8, i8* @index_, align 1
%inc10 = add i8 %7, 1
store i8 %inc10, i8* @index_, align 1
br label %for.cond2
for.end11: ; preds = %for.cond2
store i8 39, i8* inttoptr (i16 8198 to i8*), align 1
store i8 -64, i8* inttoptr (i16 8198 to i8*), align 1
store i8 0, i8* @index_, align 1
br label %for.cond12
for.cond12: ; preds = %for.inc17, %for.end11
%8 = load i8, i8* @index_, align 1
%conv13 = zext i8 %8 to i16
%cmp14 = icmp slt i16 %conv13, 8
br i1 %cmp14, label %for.body16, label %for.end19
for.body16: ; preds = %for.cond12
store i8 -1, i8* inttoptr (i16 8199 to i8*), align 1
br label %for.inc17
for.inc17: ; preds = %for.body16
%9 = load i8, i8* @index_, align 1
%inc18 = add i8 %9, 1
store i8 %inc18, i8* @index_, align 1
br label %for.cond12
for.end19: ; preds = %for.cond12
ret void
}
; Function Attrs: nounwind
define void @Load_Palette() #0 {
entry:
store i8 63, i8* inttoptr (i16 8198 to i8*), align 1
store i8 0, i8* inttoptr (i16 8198 to i8*), align 1
store i8 0, i8* @index_, align 1
br label %for.cond
for.cond: ; preds = %for.inc, %entry
%0 = load i8, i8* @index_, align 1
%conv = zext i8 %0 to i16
%cmp = icmp ult i16 %conv, 32
br i1 %cmp, label %for.body, label %for.end
for.body: ; preds = %for.cond
%1 = load i8, i8* @index_, align 1
%idxprom = zext i8 %1 to i16
%arrayidx = getelementptr inbounds [32 x i8], [32 x i8]* @PALETTE, i16 0, i16 %idxprom
%2 = load i8, i8* %arrayidx, align 1
store i8 %2, i8* inttoptr (i16 8199 to i8*), align 1
br label %for.inc
for.inc: ; preds = %for.body
%3 = load i8, i8* @index_, align 1
%inc = add i8 %3, 1
store i8 %inc, i8* @index_, align 1
br label %for.cond
for.end: ; preds = %for.cond
ret void
}
; Function Attrs: nounwind
define void @Reset_Scroll() #0 {
entry:
store i8 0, i8* inttoptr (i16 8198 to i8*), align 1
store i8 0, i8* inttoptr (i16 8198 to i8*), align 1
store i8 0, i8* inttoptr (i16 8197 to i8*), align 1
store i8 0, i8* inttoptr (i16 8197 to i8*), align 1
ret void
}
declare void @Reset_Music() #1
declare void @Play_Music(i8 zeroext) #1
declare void @Wait_Vblank() #1
; Function Attrs: nounwind
define void @All_On() #0 {
entry:
store i8 -112, i8* inttoptr (i16 8192 to i8*), align 1
store i8 30, i8* inttoptr (i16 8193 to i8*), align 1
ret void
}
; Function Attrs: nounwind
define void @Rotate_Palette() #0 {
entry:
store i8 63, i8* inttoptr (i16 8198 to i8*), align 1
store i8 11, i8* inttoptr (i16 8198 to i8*), align 1
%0 = load i8, i8* @Frame_Count, align 1
%conv = zext i8 %0 to i16
%shr = ashr i16 %conv, 2
%and = and i16 %shr, 3
%arrayidx = getelementptr inbounds [4 x i8], [4 x i8]* @Palette_Fade, i16 0, i16 %and
%1 = load i8, i8* %arrayidx, align 1
store i8 %1, i8* inttoptr (i16 8199 to i8*), align 1
ret void
}
declare void @Get_Input() #1
; Function Attrs: nounwind
define void @Clear_Enemies() #0 {
entry:
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY1, i32 0, i32 2), align 1
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY2, i32 0, i32 2), align 1
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY3, i32 0, i32 2), align 1
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY4, i32 0, i32 2), align 1
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY5, i32 0, i32 2), align 1
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY6, i32 0, i32 2), align 1
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY7, i32 0, i32 2), align 1
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY8, i32 0, i32 2), align 1
store i8 0, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet1, i32 0, i32 0), align 1
store i8 0, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet2, i32 0, i32 0), align 1
store i8 0, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet3, i32 0, i32 0), align 1
store i8 0, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet4, i32 0, i32 0), align 1
store i8 0, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet5, i32 0, i32 0), align 1
store i8 0, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet6, i32 0, i32 0), align 1
store i8 0, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet7, i32 0, i32 0), align 1
store i8 0, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet8, i32 0, i32 0), align 1
ret void
}
; Function Attrs: nounwind
define void @Set_Sprite_Zero() #0 {
entry:
store i8 29, i8* getelementptr inbounds ([256 x i8], [256 x i8]* @SPRITES, i16 0, i16 0), align 1
store i8 -1, i8* getelementptr inbounds ([256 x i8], [256 x i8]* @SPRITES, i16 0, i16 1), align 1
store i8 32, i8* getelementptr inbounds ([256 x i8], [256 x i8]* @SPRITES, i16 0, i16 2), align 1
store i8 -71, i8* getelementptr inbounds ([256 x i8], [256 x i8]* @SPRITES, i16 0, i16 3), align 1
store i8 4, i8* @Sprite_index_, align 1
ret void
}
; Function Attrs: nounwind
define void @Draw_Background() #0 {
entry:
store i8 32, i8* inttoptr (i16 8198 to i8*), align 1
store i8 0, i8* inttoptr (i16 8198 to i8*), align 1
call void @UnRLE(i8* getelementptr inbounds ([160 x i8], [160 x i8]* @Stars, i32 0, i32 0))
store i8 63, i8* inttoptr (i16 8198 to i8*), align 1
store i8 1, i8* inttoptr (i16 8198 to i8*), align 1
store i8 3, i8* inttoptr (i16 8199 to i8*), align 1
store i8 39, i8* inttoptr (i16 8199 to i8*), align 1
store i8 5, i8* inttoptr (i16 8199 to i8*), align 1
ret void
}
declare void @Music_Update() #1
declare void @Blank_sprite() #1
; Function Attrs: nounwind
define void @Init_New_Wave() #0 {
entry:
%0 = load i8, i8* @Wave, align 1
%conv = zext i8 %0 to i16
%cmp = icmp uge i16 %conv, 54
br i1 %cmp, label %if.then, label %if.end
if.then: ; preds = %entry
call void @Init_Boss_Level()
br label %return
if.end: ; preds = %entry
%1 = load i8, i8* @Wave, align 1
%idxprom = zext i8 %1 to i16
%arrayidx = getelementptr inbounds [54 x i8], [54 x i8]* @Wave_to_Pattern, i16 0, i16 %idxprom
%2 = load i8, i8* %arrayidx, align 1
store i8 %2, i8* @Pattern, align 1
%3 = load i8, i8* @Wave, align 1
%idxprom2 = zext i8 %3 to i16
%arrayidx3 = getelementptr inbounds [54 x i8*], [54 x i8*]* @All_Wave_Addresses, i16 0, i16 %idxprom2
%4 = load i8*, i8** %arrayidx3, align 1
store i8* %4, i8** @p_Wave_Data, align 1
%5 = load i8*, i8** @p_Wave_Data, align 1
call void @memcpy(i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY1, i32 0, i32 0), i8* %5, i16 64)
%6 = load i8, i8* @Wave, align 1
%inc = add i8 %6, 1
store i8 %inc, i8* @Wave, align 1
br label %return
return: ; preds = %if.end, %if.then
ret void
}
; Function Attrs: nounwind
define void @Check_Wave_Over() #0 {
entry:
%0 = load i8, i8* @Init_Wave_Flag, align 1
%conv = zext i8 %0 to i16
%cmp = icmp eq i16 %conv, 0
br i1 %cmp, label %land.lhs.true, label %if.end22
land.lhs.true: ; preds = %entry
%1 = load i8, i8* @Master_Delay, align 1
%conv2 = zext i8 %1 to i16
%cmp3 = icmp eq i16 %conv2, 0
br i1 %cmp3, label %if.then, label %if.end22
if.then: ; preds = %land.lhs.true
%2 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY1, i32 0, i32 2), align 1
%conv5 = zext i8 %2 to i16
store i16 %conv5, i16* @Big_Math, align 1
%3 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY2, i32 0, i32 2), align 1
%conv6 = zext i8 %3 to i16
%4 = load i16, i16* @Big_Math, align 1
%add = add nsw i16 %4, %conv6
store i16 %add, i16* @Big_Math, align 1
%5 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY3, i32 0, i32 2), align 1
%conv7 = zext i8 %5 to i16
%6 = load i16, i16* @Big_Math, align 1
%add8 = add nsw i16 %6, %conv7
store i16 %add8, i16* @Big_Math, align 1
%7 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY4, i32 0, i32 2), align 1
%conv9 = zext i8 %7 to i16
%8 = load i16, i16* @Big_Math, align 1
%add10 = add nsw i16 %8, %conv9
store i16 %add10, i16* @Big_Math, align 1
%9 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY5, i32 0, i32 2), align 1
%conv11 = zext i8 %9 to i16
%10 = load i16, i16* @Big_Math, align 1
%add12 = add nsw i16 %10, %conv11
store i16 %add12, i16* @Big_Math, align 1
%11 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY6, i32 0, i32 2), align 1
%conv13 = zext i8 %11 to i16
%12 = load i16, i16* @Big_Math, align 1
%add14 = add nsw i16 %12, %conv13
store i16 %add14, i16* @Big_Math, align 1
%13 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY7, i32 0, i32 2), align 1
%conv15 = zext i8 %13 to i16
%14 = load i16, i16* @Big_Math, align 1
%add16 = add nsw i16 %14, %conv15
store i16 %add16, i16* @Big_Math, align 1
%15 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY8, i32 0, i32 2), align 1
%conv17 = zext i8 %15 to i16
%16 = load i16, i16* @Big_Math, align 1
%add18 = add nsw i16 %16, %conv17
store i16 %add18, i16* @Big_Math, align 1
%17 = load i16, i16* @Big_Math, align 1
%cmp19 = icmp eq i16 %17, 0
br i1 %cmp19, label %if.then21, label %if.end
if.then21: ; preds = %if.then
store i8 100, i8* @Master_Delay, align 1
br label %if.end
if.end: ; preds = %if.then21, %if.then
br label %if.end22
if.end22: ; preds = %if.end, %land.lhs.true, %entry
ret void
}
; Function Attrs: nounwind
define void @shooting() #0 {
entry:
%0 = load i8, i8* @joypad1, align 1
%conv = zext i8 %0 to i16
%and = and i16 %conv, 192
%cmp = icmp eq i16 %and, 0
br i1 %cmp, label %if.then, label %if.end
if.then: ; preds = %entry
store i8 0, i8* @bullet_Wait, align 1
br label %if.end
if.end: ; preds = %if.then, %entry
%1 = load i8, i8* @bullet_Wait, align 1
%conv2 = zext i8 %1 to i16
%cmp3 = icmp ne i16 %conv2, 0
br i1 %cmp3, label %if.then5, label %if.else
if.then5: ; preds = %if.end
%2 = load i8, i8* @bullet_Wait, align 1
%dec = add i8 %2, -1
store i8 %dec, i8* @bullet_Wait, align 1
br label %if.end12
if.else: ; preds = %if.end
%3 = load i8, i8* @joypad1, align 1
%conv6 = zext i8 %3 to i16
%and7 = and i16 %conv6, 192
%cmp8 = icmp ne i16 %and7, 0
br i1 %cmp8, label %if.then10, label %if.end11
if.then10: ; preds = %if.else
call void @spawn_bullets()
br label %if.end11
if.end11: ; preds = %if.then10, %if.else
br label %if.end12
if.end12: ; preds = %if.end11, %if.then5
ret void
}
; Function Attrs: nounwind
define void @Check_Injury() #0 {
entry:
%0 = load i8, i8* @injury_Timer, align 1
%conv = zext i8 %0 to i16
%cmp = icmp eq i16 %conv, 0
br i1 %cmp, label %if.then, label %if.else16
if.then: ; preds = %entry
%1 = load i8, i8* @invincible, align 1
%conv2 = zext i8 %1 to i16
%cmp3 = icmp eq i16 %conv2, 0
br i1 %cmp3, label %if.then5, label %if.end15
if.then5: ; preds = %if.then
%2 = load i8, i8* @Game_Mode, align 1
%conv6 = zext i8 %2 to i16
%cmp7 = icmp eq i16 %conv6, 1
br i1 %cmp7, label %if.then9, label %if.else
if.then9: ; preds = %if.then5
call void @collision_Test2()
br label %if.end14
if.else: ; preds = %if.then5
%3 = load i8, i8* @Game_Mode, align 1
%conv10 = zext i8 %3 to i16
%cmp11 = icmp eq i16 %conv10, 5
br i1 %cmp11, label %if.then13, label %if.end
if.then13: ; preds = %if.else
call void @collision_Test3()
br label %if.end
if.end: ; preds = %if.then13, %if.else
br label %if.end14
if.end14: ; preds = %if.end, %if.then9
br label %if.end15
if.end15: ; preds = %if.end14, %if.then
br label %if.end22
if.else16: ; preds = %entry
store i8 0, i8* @joypad1, align 1
%4 = load i8, i8* @injury_Timer, align 1
%inc = add i8 %4, 1
store i8 %inc, i8* @injury_Timer, align 1
%5 = load i8, i8* @injury_Timer, align 1
%conv17 = zext i8 %5 to i16
%cmp18 = icmp eq i16 %conv17, 100
br i1 %cmp18, label %if.then20, label %if.end21
if.then20: ; preds = %if.else16
store i8 0, i8* @injury_Timer, align 1
store i8 30, i8* @invincible, align 1
br label %if.end21
if.end21: ; preds = %if.then20, %if.else16
br label %if.end22
if.end22: ; preds = %if.end21, %if.end15
%6 = load i8, i8* @invincible, align 1
%conv23 = zext i8 %6 to i16
%cmp24 = icmp ne i16 %conv23, 0
br i1 %cmp24, label %if.then26, label %if.end27
if.then26: ; preds = %if.end22
%7 = load i8, i8* @invincible, align 1
%dec = add i8 %7, -1
store i8 %dec, i8* @invincible, align 1
br label %if.end27
if.end27: ; preds = %if.then26, %if.end22
%8 = load i8, i8* @Lives, align 1
%conv28 = zext i8 %8 to i16
%cmp29 = icmp eq i16 %conv28, 255
br i1 %cmp29, label %if.then31, label %if.end33
if.then31: ; preds = %if.end27
%9 = load i8, i8* @Death_Flag, align 1
%inc32 = add i8 %9, 1
store i8 %inc32, i8* @Death_Flag, align 1
store i8 0, i8* @Lives, align 1
br label %if.end33
if.end33: ; preds = %if.then31, %if.end27
ret void
}
; Function Attrs: nounwind
define void @move_logic() #0 {
entry:
%0 = load i8, i8* @joypad1, align 1
%conv = zext i8 %0 to i16
%and = and i16 %conv, 3
%cmp = icmp eq i16 %and, 0
br i1 %cmp, label %if.then, label %if.end15
if.then: ; preds = %entry
%1 = load i8, i8* @X_speed, align 1
%conv2 = sext i8 %1 to i16
%cmp3 = icmp sgt i16 %conv2, 7
br i1 %cmp3, label %if.then5, label %if.end
if.then5: ; preds = %if.then
%2 = load i8, i8* @X_speed, align 1
%conv6 = sext i8 %2 to i16
%sub = sub nsw i16 %conv6, 2
%conv7 = trunc i16 %sub to i8
store i8 %conv7, i8* @X_speed, align 1
br label %if.end
if.end: ; preds = %if.then5, %if.then
%3 = load i8, i8* @X_speed, align 1
%conv8 = sext i8 %3 to i16
%cmp9 = icmp slt i16 %conv8, 6
br i1 %cmp9, label %if.then11, label %if.end14
if.then11: ; preds = %if.end
%4 = load i8, i8* @X_speed, align 1
%conv12 = sext i8 %4 to i16
%add = add nsw i16 %conv12, 2
%conv13 = trunc i16 %add to i8
store i8 %conv13, i8* @X_speed, align 1
br label %if.end14
if.end14: ; preds = %if.then11, %if.end
br label %if.end15
if.end15: ; preds = %if.end14, %entry
%5 = load i8, i8* @joypad1, align 1
%conv16 = zext i8 %5 to i16
%and17 = and i16 %conv16, 1
%cmp18 = icmp ne i16 %and17, 0
br i1 %cmp18, label %if.then20, label %if.end32
if.then20: ; preds = %if.end15
%6 = load i8, i8* @X_speed, align 1
%conv21 = sext i8 %6 to i16
%cmp22 = icmp sge i16 %conv21, 7
br i1 %cmp22, label %if.then24, label %if.else
if.then24: ; preds = %if.then20
%7 = load i8, i8* @X_speed, align 1
%conv25 = sext i8 %7 to i16
%add26 = add nsw i16 %conv25, 2
%conv27 = trunc i16 %add26 to i8
store i8 %conv27, i8* @X_speed, align 1
br label %if.end31
if.else: ; preds = %if.then20
%8 = load i8, i8* @X_speed, align 1
%conv28 = sext i8 %8 to i16
%add29 = add nsw i16 %conv28, 4
%conv30 = trunc i16 %add29 to i8
store i8 %conv30, i8* @X_speed, align 1
br label %if.end31
if.end31: ; preds = %if.else, %if.then24
br label %if.end32
if.end32: ; preds = %if.end31, %if.end15
%9 = load i8, i8* @joypad1, align 1
%conv33 = zext i8 %9 to i16
%and34 = and i16 %conv33, 2
%cmp35 = icmp ne i16 %and34, 0
br i1 %cmp35, label %if.then37, label %if.end50
if.then37: ; preds = %if.end32
%10 = load i8, i8* @X_speed, align 1
%conv38 = sext i8 %10 to i16
%cmp39 = icmp sle i16 %conv38, 7
br i1 %cmp39, label %if.then41, label %if.else45
if.then41: ; preds = %if.then37
%11 = load i8, i8* @X_speed, align 1
%conv42 = sext i8 %11 to i16
%sub43 = sub nsw i16 %conv42, 2
%conv44 = trunc i16 %sub43 to i8
store i8 %conv44, i8* @X_speed, align 1
br label %if.end49
if.else45: ; preds = %if.then37
%12 = load i8, i8* @X_speed, align 1
%conv46 = sext i8 %12 to i16
%sub47 = sub nsw i16 %conv46, 4
%conv48 = trunc i16 %sub47 to i8
store i8 %conv48, i8* @X_speed, align 1
br label %if.end49
if.end49: ; preds = %if.else45, %if.then41
br label %if.end50
if.end50: ; preds = %if.end49, %if.end32
%13 = load i8, i8* @X_speed, align 1
%conv51 = sext i8 %13 to i16
%cmp52 = icmp sge i16 %conv51, 0
br i1 %cmp52, label %if.then54, label %if.else60
if.then54: ; preds = %if.end50
%14 = load i8, i8* @X_speed, align 1
%conv55 = sext i8 %14 to i16
%cmp56 = icmp sgt i16 %conv55, 52
br i1 %cmp56, label %if.then58, label %if.end59
if.then58: ; preds = %if.then54
store i8 52, i8* @X_speed, align 1
br label %if.end59
if.end59: ; preds = %if.then58, %if.then54
br label %if.end66
if.else60: ; preds = %if.end50
%15 = load i8, i8* @X_speed, align 1
%conv61 = sext i8 %15 to i16
%cmp62 = icmp slt i16 %conv61, -52
br i1 %cmp62, label %if.then64, label %if.end65
if.then64: ; preds = %if.else60
store i8 -52, i8* @X_speed, align 1
br label %if.end65
if.end65: ; preds = %if.then64, %if.else60
br label %if.end66
if.end66: ; preds = %if.end65, %if.end59
%16 = load i8, i8* @X_speed, align 1
%conv67 = sext i8 %16 to i16
%add68 = add nsw i16 %conv67, 8
%shr = ashr i16 %add68, 4
%17 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 3), align 1
%conv69 = zext i8 %17 to i16
%add70 = add nsw i16 %conv69, %shr
%conv71 = trunc i16 %add70 to i8
store i8 %conv71, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 3), align 1
%18 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 3), align 1
%conv72 = zext i8 %18 to i16
%cmp73 = icmp slt i16 %conv72, 8
br i1 %cmp73, label %if.then75, label %if.end76
if.then75: ; preds = %if.end66
store i8 8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 3), align 1
store i8 7, i8* @X_speed, align 1
br label %if.end76
if.end76: ; preds = %if.then75, %if.end66
%19 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 3), align 1
%conv77 = zext i8 %19 to i16
%cmp78 = icmp sgt i16 %conv77, 232
br i1 %cmp78, label %if.then80, label %if.end81
if.then80: ; preds = %if.end76
store i8 -24, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 3), align 1
store i8 7, i8* @X_speed, align 1
br label %if.end81
if.end81: ; preds = %if.then80, %if.end76
%20 = load i8, i8* @Vert_scroll, align 1
%dec = add i8 %20, -1
store i8 %dec, i8* @Vert_scroll, align 1
%21 = load i8, i8* @Vert_scroll, align 1
%conv82 = zext i8 %21 to i16
%cmp83 = icmp sgt i16 %conv82, 239
br i1 %cmp83, label %if.then85, label %if.end86
if.then85: ; preds = %if.end81
store i8 -17, i8* @Vert_scroll, align 1
br label %if.end86
if.end86: ; preds = %if.then85, %if.end81
ret void
}
; Function Attrs: nounwind
define void @collision_Test() #0 {
entry:
store i8 15, i8* @objectA_width, align 1
store i8 15, i8* @objectB_width, align 1
store i8 15, i8* @objectB_height, align 1
store i8 7, i8* @objectA_height, align 1
%0 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet1, i32 0, i32 0), align 1
%conv = zext i8 %0 to i16
%cmp = icmp ne i16 %conv, 0
br i1 %cmp, label %if.then, label %if.end6
if.then: ; preds = %entry
%1 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet1, i32 0, i32 0), align 1
store i8 %1, i8* @objectA_y, align 1
%2 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet1, i32 0, i32 4), align 1
store i8 %2, i8* @objectA_x, align 1
call void @All_Enemies()
%3 = load i8, i8* @collision, align 1
%conv2 = zext i8 %3 to i16
%cmp3 = icmp ne i16 %conv2, 0
br i1 %cmp3, label %if.then5, label %if.end
if.then5: ; preds = %if.then
store i8 0, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet1, i32 0, i32 0), align 1
br label %if.end
if.end: ; preds = %if.then5, %if.then
br label %if.end6
if.end6: ; preds = %if.end, %entry
%4 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet2, i32 0, i32 0), align 1
%conv7 = zext i8 %4 to i16
%cmp8 = icmp ne i16 %conv7, 0
br i1 %cmp8, label %if.then10, label %if.end16
if.then10: ; preds = %if.end6
%5 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet2, i32 0, i32 0), align 1
store i8 %5, i8* @objectA_y, align 1
%6 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet2, i32 0, i32 4), align 1
store i8 %6, i8* @objectA_x, align 1
call void @All_Enemies()
%7 = load i8, i8* @collision, align 1
%conv11 = zext i8 %7 to i16
%cmp12 = icmp ne i16 %conv11, 0
br i1 %cmp12, label %if.then14, label %if.end15
if.then14: ; preds = %if.then10
store i8 0, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet2, i32 0, i32 0), align 1
br label %if.end15
if.end15: ; preds = %if.then14, %if.then10
br label %if.end16
if.end16: ; preds = %if.end15, %if.end6
%8 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet3, i32 0, i32 0), align 1
%conv17 = zext i8 %8 to i16
%cmp18 = icmp ne i16 %conv17, 0
br i1 %cmp18, label %if.then20, label %if.end26
if.then20: ; preds = %if.end16
%9 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet3, i32 0, i32 0), align 1
store i8 %9, i8* @objectA_y, align 1
%10 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet3, i32 0, i32 4), align 1
store i8 %10, i8* @objectA_x, align 1
call void @All_Enemies()
%11 = load i8, i8* @collision, align 1
%conv21 = zext i8 %11 to i16
%cmp22 = icmp ne i16 %conv21, 0
br i1 %cmp22, label %if.then24, label %if.end25
if.then24: ; preds = %if.then20
store i8 0, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet3, i32 0, i32 0), align 1
br label %if.end25
if.end25: ; preds = %if.then24, %if.then20
br label %if.end26
if.end26: ; preds = %if.end25, %if.end16
%12 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet4, i32 0, i32 0), align 1
%conv27 = zext i8 %12 to i16
%cmp28 = icmp ne i16 %conv27, 0
br i1 %cmp28, label %if.then30, label %if.end36
if.then30: ; preds = %if.end26
%13 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet4, i32 0, i32 0), align 1
store i8 %13, i8* @objectA_y, align 1
%14 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet4, i32 0, i32 4), align 1
store i8 %14, i8* @objectA_x, align 1
call void @All_Enemies()
%15 = load i8, i8* @collision, align 1
%conv31 = zext i8 %15 to i16
%cmp32 = icmp ne i16 %conv31, 0
br i1 %cmp32, label %if.then34, label %if.end35
if.then34: ; preds = %if.then30
store i8 0, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet4, i32 0, i32 0), align 1
br label %if.end35
if.end35: ; preds = %if.then34, %if.then30
br label %if.end36
if.end36: ; preds = %if.end35, %if.end26
%16 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet5, i32 0, i32 0), align 1
%conv37 = zext i8 %16 to i16
%cmp38 = icmp ne i16 %conv37, 0
br i1 %cmp38, label %if.then40, label %if.end46
if.then40: ; preds = %if.end36
%17 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet5, i32 0, i32 0), align 1
store i8 %17, i8* @objectA_y, align 1
%18 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet5, i32 0, i32 4), align 1
store i8 %18, i8* @objectA_x, align 1
call void @All_Enemies()
%19 = load i8, i8* @collision, align 1
%conv41 = zext i8 %19 to i16
%cmp42 = icmp ne i16 %conv41, 0
br i1 %cmp42, label %if.then44, label %if.end45
if.then44: ; preds = %if.then40
store i8 0, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet5, i32 0, i32 0), align 1
br label %if.end45
if.end45: ; preds = %if.then44, %if.then40
br label %if.end46
if.end46: ; preds = %if.end45, %if.end36
%20 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet6, i32 0, i32 0), align 1
%conv47 = zext i8 %20 to i16
%cmp48 = icmp ne i16 %conv47, 0
br i1 %cmp48, label %if.then50, label %if.end56
if.then50: ; preds = %if.end46
%21 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet6, i32 0, i32 0), align 1
store i8 %21, i8* @objectA_y, align 1
%22 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet6, i32 0, i32 4), align 1
store i8 %22, i8* @objectA_x, align 1
call void @All_Enemies()
%23 = load i8, i8* @collision, align 1
%conv51 = zext i8 %23 to i16
%cmp52 = icmp ne i16 %conv51, 0
br i1 %cmp52, label %if.then54, label %if.end55
if.then54: ; preds = %if.then50
store i8 0, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet6, i32 0, i32 0), align 1
br label %if.end55
if.end55: ; preds = %if.then54, %if.then50
br label %if.end56
if.end56: ; preds = %if.end55, %if.end46
%24 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet7, i32 0, i32 0), align 1
%conv57 = zext i8 %24 to i16
%cmp58 = icmp ne i16 %conv57, 0
br i1 %cmp58, label %if.then60, label %if.end66
if.then60: ; preds = %if.end56
%25 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet7, i32 0, i32 0), align 1
store i8 %25, i8* @objectA_y, align 1
%26 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet7, i32 0, i32 4), align 1
store i8 %26, i8* @objectA_x, align 1
call void @All_Enemies()
%27 = load i8, i8* @collision, align 1
%conv61 = zext i8 %27 to i16
%cmp62 = icmp ne i16 %conv61, 0
br i1 %cmp62, label %if.then64, label %if.end65
if.then64: ; preds = %if.then60
store i8 0, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet7, i32 0, i32 0), align 1
br label %if.end65
if.end65: ; preds = %if.then64, %if.then60
br label %if.end66
if.end66: ; preds = %if.end65, %if.end56
%28 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet8, i32 0, i32 0), align 1
%conv67 = zext i8 %28 to i16
%cmp68 = icmp ne i16 %conv67, 0
br i1 %cmp68, label %if.then70, label %if.end76
if.then70: ; preds = %if.end66
%29 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet8, i32 0, i32 0), align 1
store i8 %29, i8* @objectA_y, align 1
%30 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet8, i32 0, i32 4), align 1
store i8 %30, i8* @objectA_x, align 1
call void @All_Enemies()
%31 = load i8, i8* @collision, align 1
%conv71 = zext i8 %31 to i16
%cmp72 = icmp ne i16 %conv71, 0
br i1 %cmp72, label %if.then74, label %if.end75
if.then74: ; preds = %if.then70
store i8 0, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet8, i32 0, i32 0), align 1
br label %if.end75
if.end75: ; preds = %if.then74, %if.then70
br label %if.end76
if.end76: ; preds = %if.end75, %if.end66
ret void
}
; Function Attrs: nounwind
define void @Randomly_Shoot() #0 {
entry:
%0 = load i8, i8* @Frame_Count2, align 1
%conv = zext i8 %0 to i16
%cmp = icmp eq i16 %conv, 0
br i1 %cmp, label %if.then, label %if.end72
if.then: ; preds = %entry
%1 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY1, i32 0, i32 2), align 1
%conv2 = zext i8 %1 to i16
%cmp3 = icmp ne i16 %conv2, 0
br i1 %cmp3, label %land.lhs.true, label %if.end
land.lhs.true: ; preds = %if.then
%2 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY1, i32 0, i32 2), align 1
%conv5 = zext i8 %2 to i16
%cmp6 = icmp slt i16 %conv5, 128
br i1 %cmp6, label %if.then8, label %if.end
if.then8: ; preds = %land.lhs.true
store %struct.ENEMY* @ENEMY1, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Spawn_Bullet_E()
br label %if.end72
if.end: ; preds = %land.lhs.true, %if.then
%3 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY2, i32 0, i32 2), align 1
%conv9 = zext i8 %3 to i16
%cmp10 = icmp ne i16 %conv9, 0
br i1 %cmp10, label %land.lhs.true12, label %if.end17
land.lhs.true12: ; preds = %if.end
%4 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY2, i32 0, i32 2), align 1
%conv13 = zext i8 %4 to i16
%cmp14 = icmp slt i16 %conv13, 128
br i1 %cmp14, label %if.then16, label %if.end17
if.then16: ; preds = %land.lhs.true12
store %struct.ENEMY* @ENEMY2, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Spawn_Bullet_E()
br label %if.end72
if.end17: ; preds = %land.lhs.true12, %if.end
%5 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY3, i32 0, i32 2), align 1
%conv18 = zext i8 %5 to i16
%cmp19 = icmp ne i16 %conv18, 0
br i1 %cmp19, label %land.lhs.true21, label %if.end26
land.lhs.true21: ; preds = %if.end17
%6 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY3, i32 0, i32 2), align 1
%conv22 = zext i8 %6 to i16
%cmp23 = icmp slt i16 %conv22, 128
br i1 %cmp23, label %if.then25, label %if.end26
if.then25: ; preds = %land.lhs.true21
store %struct.ENEMY* @ENEMY3, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Spawn_Bullet_E()
br label %if.end72
if.end26: ; preds = %land.lhs.true21, %if.end17
%7 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY4, i32 0, i32 2), align 1
%conv27 = zext i8 %7 to i16
%cmp28 = icmp ne i16 %conv27, 0
br i1 %cmp28, label %land.lhs.true30, label %if.end35
land.lhs.true30: ; preds = %if.end26
%8 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY4, i32 0, i32 2), align 1
%conv31 = zext i8 %8 to i16
%cmp32 = icmp slt i16 %conv31, 128
br i1 %cmp32, label %if.then34, label %if.end35
if.then34: ; preds = %land.lhs.true30
store %struct.ENEMY* @ENEMY4, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Spawn_Bullet_E()
br label %if.end72
if.end35: ; preds = %land.lhs.true30, %if.end26
%9 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY5, i32 0, i32 2), align 1
%conv36 = zext i8 %9 to i16
%cmp37 = icmp ne i16 %conv36, 0
br i1 %cmp37, label %land.lhs.true39, label %if.end44
land.lhs.true39: ; preds = %if.end35
%10 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY5, i32 0, i32 2), align 1
%conv40 = zext i8 %10 to i16
%cmp41 = icmp slt i16 %conv40, 128
br i1 %cmp41, label %if.then43, label %if.end44
if.then43: ; preds = %land.lhs.true39
store %struct.ENEMY* @ENEMY5, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Spawn_Bullet_E()
br label %if.end72
if.end44: ; preds = %land.lhs.true39, %if.end35
%11 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY6, i32 0, i32 2), align 1
%conv45 = zext i8 %11 to i16
%cmp46 = icmp ne i16 %conv45, 0
br i1 %cmp46, label %land.lhs.true48, label %if.end53
land.lhs.true48: ; preds = %if.end44
%12 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY6, i32 0, i32 2), align 1
%conv49 = zext i8 %12 to i16
%cmp50 = icmp slt i16 %conv49, 128
br i1 %cmp50, label %if.then52, label %if.end53
if.then52: ; preds = %land.lhs.true48
store %struct.ENEMY* @ENEMY6, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Spawn_Bullet_E()
br label %if.end72
if.end53: ; preds = %land.lhs.true48, %if.end44
%13 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY7, i32 0, i32 2), align 1
%conv54 = zext i8 %13 to i16
%cmp55 = icmp ne i16 %conv54, 0
br i1 %cmp55, label %land.lhs.true57, label %if.end62
land.lhs.true57: ; preds = %if.end53
%14 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY7, i32 0, i32 2), align 1
%conv58 = zext i8 %14 to i16
%cmp59 = icmp slt i16 %conv58, 128
br i1 %cmp59, label %if.then61, label %if.end62
if.then61: ; preds = %land.lhs.true57
store %struct.ENEMY* @ENEMY7, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Spawn_Bullet_E()
br label %if.end72
if.end62: ; preds = %land.lhs.true57, %if.end53
%15 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY8, i32 0, i32 2), align 1
%conv63 = zext i8 %15 to i16
%cmp64 = icmp ne i16 %conv63, 0
br i1 %cmp64, label %land.lhs.true66, label %if.end71
land.lhs.true66: ; preds = %if.end62
%16 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY8, i32 0, i32 2), align 1
%conv67 = zext i8 %16 to i16
%cmp68 = icmp slt i16 %conv67, 128
br i1 %cmp68, label %if.then70, label %if.end71
if.then70: ; preds = %land.lhs.true66
store %struct.ENEMY* @ENEMY8, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Spawn_Bullet_E()
br label %if.end72
if.end71: ; preds = %land.lhs.true66, %if.end62
br label %if.end72
if.end72: ; preds = %if.then8, %if.then16, %if.then25, %if.then34, %if.then43, %if.then52, %if.then61, %if.then70, %if.end71, %entry
ret void
}
; Function Attrs: nounwind
define void @Draw_Bullets() #0 {
entry:
%0 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet1, i32 0, i32 0), align 1
%conv = zext i8 %0 to i16
%cmp = icmp ne i16 %conv, 0
br i1 %cmp, label %if.then, label %if.end
if.then: ; preds = %entry
call void @move_bullets(%struct.BULLET* @hero_bullet1)
br label %if.end
if.end: ; preds = %if.then, %entry
%1 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet2, i32 0, i32 0), align 1
%conv2 = zext i8 %1 to i16
%cmp3 = icmp ne i16 %conv2, 0
br i1 %cmp3, label %if.then5, label %if.end6
if.then5: ; preds = %if.end
call void @move_bullets(%struct.BULLET* @hero_bullet2)
br label %if.end6
if.end6: ; preds = %if.then5, %if.end
%2 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet3, i32 0, i32 0), align 1
%conv7 = zext i8 %2 to i16
%cmp8 = icmp ne i16 %conv7, 0
br i1 %cmp8, label %if.then10, label %if.end11
if.then10: ; preds = %if.end6
call void @move_bullets(%struct.BULLET* @hero_bullet3)
br label %if.end11
if.end11: ; preds = %if.then10, %if.end6
%3 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet4, i32 0, i32 0), align 1
%conv12 = zext i8 %3 to i16
%cmp13 = icmp ne i16 %conv12, 0
br i1 %cmp13, label %if.then15, label %if.end16
if.then15: ; preds = %if.end11
call void @move_bullets(%struct.BULLET* @hero_bullet4)
br label %if.end16
if.end16: ; preds = %if.then15, %if.end11
%4 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet5, i32 0, i32 0), align 1
%conv17 = zext i8 %4 to i16
%cmp18 = icmp ne i16 %conv17, 0
br i1 %cmp18, label %if.then20, label %if.end21
if.then20: ; preds = %if.end16
call void @move_bullets(%struct.BULLET* @hero_bullet5)
br label %if.end21
if.end21: ; preds = %if.then20, %if.end16
%5 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet6, i32 0, i32 0), align 1
%conv22 = zext i8 %5 to i16
%cmp23 = icmp ne i16 %conv22, 0
br i1 %cmp23, label %if.then25, label %if.end26
if.then25: ; preds = %if.end21
call void @move_bullets(%struct.BULLET* @hero_bullet6)
br label %if.end26
if.end26: ; preds = %if.then25, %if.end21
%6 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet7, i32 0, i32 0), align 1
%conv27 = zext i8 %6 to i16
%cmp28 = icmp ne i16 %conv27, 0
br i1 %cmp28, label %if.then30, label %if.end31
if.then30: ; preds = %if.end26
call void @move_bullets(%struct.BULLET* @hero_bullet7)
br label %if.end31
if.end31: ; preds = %if.then30, %if.end26
%7 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet8, i32 0, i32 0), align 1
%conv32 = zext i8 %7 to i16
%cmp33 = icmp ne i16 %conv32, 0
br i1 %cmp33, label %if.then35, label %if.end36
if.then35: ; preds = %if.end31
call void @move_bullets(%struct.BULLET* @hero_bullet8)
br label %if.end36
if.end36: ; preds = %if.then35, %if.end31
%8 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet1, i32 0, i32 0), align 1
%conv37 = zext i8 %8 to i16
%cmp38 = icmp ne i16 %conv37, 0
br i1 %cmp38, label %if.then40, label %if.end41
if.then40: ; preds = %if.end36
call void @move_bullets2(%struct.BULLET* @enemy_bullet1)
br label %if.end41
if.end41: ; preds = %if.then40, %if.end36
%9 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet2, i32 0, i32 0), align 1
%conv42 = zext i8 %9 to i16
%cmp43 = icmp ne i16 %conv42, 0
br i1 %cmp43, label %if.then45, label %if.end46
if.then45: ; preds = %if.end41
call void @move_bullets2(%struct.BULLET* @enemy_bullet2)
br label %if.end46
if.end46: ; preds = %if.then45, %if.end41
%10 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet3, i32 0, i32 0), align 1
%conv47 = zext i8 %10 to i16
%cmp48 = icmp ne i16 %conv47, 0
br i1 %cmp48, label %if.then50, label %if.end51
if.then50: ; preds = %if.end46
call void @move_bullets2(%struct.BULLET* @enemy_bullet3)
br label %if.end51
if.end51: ; preds = %if.then50, %if.end46
%11 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet4, i32 0, i32 0), align 1
%conv52 = zext i8 %11 to i16
%cmp53 = icmp ne i16 %conv52, 0
br i1 %cmp53, label %if.then55, label %if.end56
if.then55: ; preds = %if.end51
call void @move_bullets2(%struct.BULLET* @enemy_bullet4)
br label %if.end56
if.end56: ; preds = %if.then55, %if.end51
%12 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet5, i32 0, i32 0), align 1
%conv57 = zext i8 %12 to i16
%cmp58 = icmp ne i16 %conv57, 0
br i1 %cmp58, label %if.then60, label %if.end61
if.then60: ; preds = %if.end56
call void @move_bullets2(%struct.BULLET* @enemy_bullet5)
br label %if.end61
if.end61: ; preds = %if.then60, %if.end56
%13 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet6, i32 0, i32 0), align 1
%conv62 = zext i8 %13 to i16
%cmp63 = icmp ne i16 %conv62, 0
br i1 %cmp63, label %if.then65, label %if.end66
if.then65: ; preds = %if.end61
call void @move_bullets2(%struct.BULLET* @enemy_bullet6)
br label %if.end66
if.end66: ; preds = %if.then65, %if.end61
%14 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet7, i32 0, i32 0), align 1
%conv67 = zext i8 %14 to i16
%cmp68 = icmp ne i16 %conv67, 0
br i1 %cmp68, label %if.then70, label %if.end71
if.then70: ; preds = %if.end66
call void @move_bullets2(%struct.BULLET* @enemy_bullet7)
br label %if.end71
if.end71: ; preds = %if.then70, %if.end66
%15 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet8, i32 0, i32 0), align 1
%conv72 = zext i8 %15 to i16
%cmp73 = icmp ne i16 %conv72, 0
br i1 %cmp73, label %if.then75, label %if.end76
if.then75: ; preds = %if.end71
call void @move_bullets2(%struct.BULLET* @enemy_bullet8)
br label %if.end76
if.end76: ; preds = %if.then75, %if.end71
ret void
}
; Function Attrs: nounwind
define void @Draw_Hero() #0 {
entry:
%0 = load i8, i8* @injury_Timer, align 1
%conv = zext i8 %0 to i16
%cmp = icmp eq i16 %conv, 0
br i1 %cmp, label %if.then, label %if.else
if.then: ; preds = %entry
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 0), align 1
%1 = load i8, i8* @joypad1, align 1
%conv2 = zext i8 %1 to i16
%and = and i16 %conv2, 2
%cmp3 = icmp ne i16 %and, 0
br i1 %cmp3, label %if.then5, label %if.end
if.then5: ; preds = %if.then
store i8 1, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 0), align 1
br label %if.end
if.end: ; preds = %if.then5, %if.then
%2 = load i8, i8* @joypad1, align 1
%conv6 = zext i8 %2 to i16
%and7 = and i16 %conv6, 1
%cmp8 = icmp ne i16 %and7, 0
br i1 %cmp8, label %if.then10, label %if.end11
if.then10: ; preds = %if.end
store i8 2, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 0), align 1
br label %if.end11
if.end11: ; preds = %if.then10, %if.end
br label %if.end30
if.else: ; preds = %entry
%3 = load i8, i8* @injury_Timer, align 1
%conv12 = zext i8 %3 to i16
%cmp13 = icmp slt i16 %conv12, 10
br i1 %cmp13, label %if.then15, label %if.else16
if.then15: ; preds = %if.else
store i8 3, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 0), align 1
br label %if.end29
if.else16: ; preds = %if.else
%4 = load i8, i8* @injury_Timer, align 1
%conv17 = zext i8 %4 to i16
%cmp18 = icmp slt i16 %conv17, 20
br i1 %cmp18, label %if.then20, label %if.else21
if.then20: ; preds = %if.else16
store i8 4, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 0), align 1
br label %if.end28
if.else21: ; preds = %if.else16
%5 = load i8, i8* @injury_Timer, align 1
%conv22 = zext i8 %5 to i16
%cmp23 = icmp slt i16 %conv22, 30
br i1 %cmp23, label %if.then25, label %if.else26
if.then25: ; preds = %if.else21
store i8 5, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 0), align 1
br label %if.end27
if.else26: ; preds = %if.else21
br label %return
if.end27: ; preds = %if.then25
br label %if.end28
if.end28: ; preds = %if.end27, %if.then20
br label %if.end29
if.end29: ; preds = %if.end28, %if.then15
br label %if.end30
if.end30: ; preds = %if.end29, %if.end11
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 1), align 1
call void @Draw_Sprites(%struct.ENEMY* @hero_ship)
br label %return
return: ; preds = %if.end30, %if.else26
ret void
}
; Function Attrs: nounwind
define void @Draw_Enemies2() #0 {
entry:
%0 = load i8, i8* @Frame_Count2, align 1
%inc = add i8 %0, 1
store i8 %inc, i8* @Frame_Count2, align 1
%1 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY1, i32 0, i32 4), align 1
%conv = zext i8 %1 to i16
%cmp = icmp ne i16 %conv, 0
br i1 %cmp, label %if.then, label %if.end
if.then: ; preds = %entry
%2 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY1, i32 0, i32 4), align 1
%dec = add i8 %2, -1
store i8 %dec, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY1, i32 0, i32 4), align 1
br label %if.end
if.end: ; preds = %if.then, %entry
%3 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY2, i32 0, i32 4), align 1
%conv2 = zext i8 %3 to i16
%cmp3 = icmp ne i16 %conv2, 0
br i1 %cmp3, label %if.then5, label %if.end7
if.then5: ; preds = %if.end
%4 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY2, i32 0, i32 4), align 1
%dec6 = add i8 %4, -1
store i8 %dec6, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY2, i32 0, i32 4), align 1
br label %if.end7
if.end7: ; preds = %if.then5, %if.end
%5 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY3, i32 0, i32 4), align 1
%conv8 = zext i8 %5 to i16
%cmp9 = icmp ne i16 %conv8, 0
br i1 %cmp9, label %if.then11, label %if.end13
if.then11: ; preds = %if.end7
%6 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY3, i32 0, i32 4), align 1
%dec12 = add i8 %6, -1
store i8 %dec12, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY3, i32 0, i32 4), align 1
br label %if.end13
if.end13: ; preds = %if.then11, %if.end7
%7 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY4, i32 0, i32 4), align 1
%conv14 = zext i8 %7 to i16
%cmp15 = icmp ne i16 %conv14, 0
br i1 %cmp15, label %if.then17, label %if.end19
if.then17: ; preds = %if.end13
%8 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY4, i32 0, i32 4), align 1
%dec18 = add i8 %8, -1
store i8 %dec18, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY4, i32 0, i32 4), align 1
br label %if.end19
if.end19: ; preds = %if.then17, %if.end13
%9 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY5, i32 0, i32 4), align 1
%conv20 = zext i8 %9 to i16
%cmp21 = icmp ne i16 %conv20, 0
br i1 %cmp21, label %if.then23, label %if.end25
if.then23: ; preds = %if.end19
%10 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY5, i32 0, i32 4), align 1
%dec24 = add i8 %10, -1
store i8 %dec24, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY5, i32 0, i32 4), align 1
br label %if.end25
if.end25: ; preds = %if.then23, %if.end19
%11 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY6, i32 0, i32 4), align 1
%conv26 = zext i8 %11 to i16
%cmp27 = icmp ne i16 %conv26, 0
br i1 %cmp27, label %if.then29, label %if.end31
if.then29: ; preds = %if.end25
%12 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY6, i32 0, i32 4), align 1
%dec30 = add i8 %12, -1
store i8 %dec30, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY6, i32 0, i32 4), align 1
br label %if.end31
if.end31: ; preds = %if.then29, %if.end25
%13 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY7, i32 0, i32 4), align 1
%conv32 = zext i8 %13 to i16
%cmp33 = icmp ne i16 %conv32, 0
br i1 %cmp33, label %if.then35, label %if.end37
if.then35: ; preds = %if.end31
%14 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY7, i32 0, i32 4), align 1
%dec36 = add i8 %14, -1
store i8 %dec36, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY7, i32 0, i32 4), align 1
br label %if.end37
if.end37: ; preds = %if.then35, %if.end31
%15 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY8, i32 0, i32 4), align 1
%conv38 = zext i8 %15 to i16
%cmp39 = icmp ne i16 %conv38, 0
br i1 %cmp39, label %if.then41, label %if.end43
if.then41: ; preds = %if.end37
%16 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY8, i32 0, i32 4), align 1
%dec42 = add i8 %16, -1
store i8 %dec42, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY8, i32 0, i32 4), align 1
br label %if.end43
if.end43: ; preds = %if.then41, %if.end37
%17 = load i8, i8* @Frame_Count2, align 1
%conv44 = zext i8 %17 to i16
%and = and i16 %conv44, 3
%cmp45 = icmp eq i16 %and, 0
br i1 %cmp45, label %if.then47, label %if.else
if.then47: ; preds = %if.end43
call void @Draw_Explosion()
%18 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY1, i32 0, i32 2), align 1
%conv48 = zext i8 %18 to i16
%cmp49 = icmp ne i16 %conv48, 0
br i1 %cmp49, label %land.lhs.true, label %if.end55
land.lhs.true: ; preds = %if.then47
%19 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY1, i32 0, i32 4), align 1
%conv51 = zext i8 %19 to i16
%cmp52 = icmp eq i16 %conv51, 0
br i1 %cmp52, label %if.then54, label %if.end55
if.then54: ; preds = %land.lhs.true
store %struct.ENEMY* @ENEMY1, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Move_Enemies()
call void @draw_enemies()
br label %if.end55
if.end55: ; preds = %if.then54, %land.lhs.true, %if.then47
%20 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY2, i32 0, i32 2), align 1
%conv56 = zext i8 %20 to i16
%cmp57 = icmp ne i16 %conv56, 0
br i1 %cmp57, label %land.lhs.true59, label %if.end64
land.lhs.true59: ; preds = %if.end55
%21 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY2, i32 0, i32 4), align 1
%conv60 = zext i8 %21 to i16
%cmp61 = icmp eq i16 %conv60, 0
br i1 %cmp61, label %if.then63, label %if.end64
if.then63: ; preds = %land.lhs.true59
store %struct.ENEMY* @ENEMY2, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Move_Enemies()
call void @draw_enemies()
br label %if.end64
if.end64: ; preds = %if.then63, %land.lhs.true59, %if.end55
%22 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY3, i32 0, i32 2), align 1
%conv65 = zext i8 %22 to i16
%cmp66 = icmp ne i16 %conv65, 0
br i1 %cmp66, label %land.lhs.true68, label %if.end73
land.lhs.true68: ; preds = %if.end64
%23 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY3, i32 0, i32 4), align 1
%conv69 = zext i8 %23 to i16
%cmp70 = icmp eq i16 %conv69, 0
br i1 %cmp70, label %if.then72, label %if.end73
if.then72: ; preds = %land.lhs.true68
store %struct.ENEMY* @ENEMY3, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Move_Enemies()
call void @draw_enemies()
br label %if.end73
if.end73: ; preds = %if.then72, %land.lhs.true68, %if.end64
%24 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY4, i32 0, i32 2), align 1
%conv74 = zext i8 %24 to i16
%cmp75 = icmp ne i16 %conv74, 0
br i1 %cmp75, label %land.lhs.true77, label %if.end82
land.lhs.true77: ; preds = %if.end73
%25 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY4, i32 0, i32 4), align 1
%conv78 = zext i8 %25 to i16
%cmp79 = icmp eq i16 %conv78, 0
br i1 %cmp79, label %if.then81, label %if.end82
if.then81: ; preds = %land.lhs.true77
store %struct.ENEMY* @ENEMY4, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Move_Enemies()
call void @draw_enemies()
br label %if.end82
if.end82: ; preds = %if.then81, %land.lhs.true77, %if.end73
%26 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY5, i32 0, i32 2), align 1
%conv83 = zext i8 %26 to i16
%cmp84 = icmp ne i16 %conv83, 0
br i1 %cmp84, label %land.lhs.true86, label %if.end91
land.lhs.true86: ; preds = %if.end82
%27 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY5, i32 0, i32 4), align 1
%conv87 = zext i8 %27 to i16
%cmp88 = icmp eq i16 %conv87, 0
br i1 %cmp88, label %if.then90, label %if.end91
if.then90: ; preds = %land.lhs.true86
store %struct.ENEMY* @ENEMY5, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Move_Enemies()
call void @draw_enemies()
br label %if.end91
if.end91: ; preds = %if.then90, %land.lhs.true86, %if.end82
%28 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY6, i32 0, i32 2), align 1
%conv92 = zext i8 %28 to i16
%cmp93 = icmp ne i16 %conv92, 0
br i1 %cmp93, label %land.lhs.true95, label %if.end100
land.lhs.true95: ; preds = %if.end91
%29 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY6, i32 0, i32 4), align 1
%conv96 = zext i8 %29 to i16
%cmp97 = icmp eq i16 %conv96, 0
br i1 %cmp97, label %if.then99, label %if.end100
if.then99: ; preds = %land.lhs.true95
store %struct.ENEMY* @ENEMY6, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Move_Enemies()
call void @draw_enemies()
br label %if.end100
if.end100: ; preds = %if.then99, %land.lhs.true95, %if.end91
%30 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY7, i32 0, i32 2), align 1
%conv101 = zext i8 %30 to i16
%cmp102 = icmp ne i16 %conv101, 0
br i1 %cmp102, label %land.lhs.true104, label %if.end109
land.lhs.true104: ; preds = %if.end100
%31 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY7, i32 0, i32 4), align 1
%conv105 = zext i8 %31 to i16
%cmp106 = icmp eq i16 %conv105, 0
br i1 %cmp106, label %if.then108, label %if.end109
if.then108: ; preds = %land.lhs.true104
store %struct.ENEMY* @ENEMY7, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Move_Enemies()
call void @draw_enemies()
br label %if.end109
if.end109: ; preds = %if.then108, %land.lhs.true104, %if.end100
%32 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY8, i32 0, i32 2), align 1
%conv110 = zext i8 %32 to i16
%cmp111 = icmp ne i16 %conv110, 0
br i1 %cmp111, label %land.lhs.true113, label %if.end118
land.lhs.true113: ; preds = %if.end109
%33 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY8, i32 0, i32 4), align 1
%conv114 = zext i8 %33 to i16
%cmp115 = icmp eq i16 %conv114, 0
br i1 %cmp115, label %if.then117, label %if.end118
if.then117: ; preds = %land.lhs.true113
store %struct.ENEMY* @ENEMY8, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Move_Enemies()
call void @draw_enemies()
br label %if.end118
if.end118: ; preds = %if.then117, %land.lhs.true113, %if.end109
br label %if.end349
if.else: ; preds = %if.end43
%34 = load i8, i8* @Frame_Count2, align 1
%conv119 = zext i8 %34 to i16
%and120 = and i16 %conv119, 3
%cmp121 = icmp eq i16 %and120, 1
br i1 %cmp121, label %if.then123, label %if.else196
if.then123: ; preds = %if.else
%35 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY1, i32 0, i32 2), align 1
%conv124 = zext i8 %35 to i16
%cmp125 = icmp ne i16 %conv124, 0
br i1 %cmp125, label %land.lhs.true127, label %if.end132
land.lhs.true127: ; preds = %if.then123
%36 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY1, i32 0, i32 4), align 1
%conv128 = zext i8 %36 to i16
%cmp129 = icmp eq i16 %conv128, 0
br i1 %cmp129, label %if.then131, label %if.end132
if.then131: ; preds = %land.lhs.true127
store %struct.ENEMY* @ENEMY1, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Move_Enemies()
call void @draw_enemies()
br label %if.end132
if.end132: ; preds = %if.then131, %land.lhs.true127, %if.then123
%37 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY3, i32 0, i32 2), align 1
%conv133 = zext i8 %37 to i16
%cmp134 = icmp ne i16 %conv133, 0
br i1 %cmp134, label %land.lhs.true136, label %if.end141
land.lhs.true136: ; preds = %if.end132
%38 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY3, i32 0, i32 4), align 1
%conv137 = zext i8 %38 to i16
%cmp138 = icmp eq i16 %conv137, 0
br i1 %cmp138, label %if.then140, label %if.end141
if.then140: ; preds = %land.lhs.true136
store %struct.ENEMY* @ENEMY3, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Move_Enemies()
call void @draw_enemies()
br label %if.end141
if.end141: ; preds = %if.then140, %land.lhs.true136, %if.end132
%39 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY5, i32 0, i32 2), align 1
%conv142 = zext i8 %39 to i16
%cmp143 = icmp ne i16 %conv142, 0
br i1 %cmp143, label %land.lhs.true145, label %if.end150
land.lhs.true145: ; preds = %if.end141
%40 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY5, i32 0, i32 4), align 1
%conv146 = zext i8 %40 to i16
%cmp147 = icmp eq i16 %conv146, 0
br i1 %cmp147, label %if.then149, label %if.end150
if.then149: ; preds = %land.lhs.true145
store %struct.ENEMY* @ENEMY5, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Move_Enemies()
call void @draw_enemies()
br label %if.end150
if.end150: ; preds = %if.then149, %land.lhs.true145, %if.end141
%41 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY7, i32 0, i32 2), align 1
%conv151 = zext i8 %41 to i16
%cmp152 = icmp ne i16 %conv151, 0
br i1 %cmp152, label %land.lhs.true154, label %if.end159
land.lhs.true154: ; preds = %if.end150
%42 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY7, i32 0, i32 4), align 1
%conv155 = zext i8 %42 to i16
%cmp156 = icmp eq i16 %conv155, 0
br i1 %cmp156, label %if.then158, label %if.end159
if.then158: ; preds = %land.lhs.true154
store %struct.ENEMY* @ENEMY7, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Move_Enemies()
call void @draw_enemies()
br label %if.end159
if.end159: ; preds = %if.then158, %land.lhs.true154, %if.end150
call void @Draw_Explosion()
%43 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY2, i32 0, i32 2), align 1
%conv160 = zext i8 %43 to i16
%cmp161 = icmp ne i16 %conv160, 0
br i1 %cmp161, label %land.lhs.true163, label %if.end168
land.lhs.true163: ; preds = %if.end159
%44 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY2, i32 0, i32 4), align 1
%conv164 = zext i8 %44 to i16
%cmp165 = icmp eq i16 %conv164, 0
br i1 %cmp165, label %if.then167, label %if.end168
if.then167: ; preds = %land.lhs.true163
store %struct.ENEMY* @ENEMY2, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Move_Enemies()
call void @draw_enemies()
br label %if.end168
if.end168: ; preds = %if.then167, %land.lhs.true163, %if.end159
%45 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY4, i32 0, i32 2), align 1
%conv169 = zext i8 %45 to i16
%cmp170 = icmp ne i16 %conv169, 0
br i1 %cmp170, label %land.lhs.true172, label %if.end177
land.lhs.true172: ; preds = %if.end168
%46 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY4, i32 0, i32 4), align 1
%conv173 = zext i8 %46 to i16
%cmp174 = icmp eq i16 %conv173, 0
br i1 %cmp174, label %if.then176, label %if.end177
if.then176: ; preds = %land.lhs.true172
store %struct.ENEMY* @ENEMY4, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Move_Enemies()
call void @draw_enemies()
br label %if.end177
if.end177: ; preds = %if.then176, %land.lhs.true172, %if.end168
%47 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY6, i32 0, i32 2), align 1
%conv178 = zext i8 %47 to i16
%cmp179 = icmp ne i16 %conv178, 0
br i1 %cmp179, label %land.lhs.true181, label %if.end186
land.lhs.true181: ; preds = %if.end177
%48 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY6, i32 0, i32 4), align 1
%conv182 = zext i8 %48 to i16
%cmp183 = icmp eq i16 %conv182, 0
br i1 %cmp183, label %if.then185, label %if.end186
if.then185: ; preds = %land.lhs.true181
store %struct.ENEMY* @ENEMY6, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Move_Enemies()
call void @draw_enemies()
br label %if.end186
if.end186: ; preds = %if.then185, %land.lhs.true181, %if.end177
%49 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY8, i32 0, i32 2), align 1
%conv187 = zext i8 %49 to i16
%cmp188 = icmp ne i16 %conv187, 0
br i1 %cmp188, label %land.lhs.true190, label %if.end195
land.lhs.true190: ; preds = %if.end186
%50 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY8, i32 0, i32 4), align 1
%conv191 = zext i8 %50 to i16
%cmp192 = icmp eq i16 %conv191, 0
br i1 %cmp192, label %if.then194, label %if.end195
if.then194: ; preds = %land.lhs.true190
store %struct.ENEMY* @ENEMY8, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Move_Enemies()
call void @draw_enemies()
br label %if.end195
if.end195: ; preds = %if.then194, %land.lhs.true190, %if.end186
br label %if.end348
if.else196: ; preds = %if.else
%51 = load i8, i8* @Frame_Count2, align 1
%conv197 = zext i8 %51 to i16
%and198 = and i16 %conv197, 3
%cmp199 = icmp eq i16 %and198, 2
br i1 %cmp199, label %if.then201, label %if.else274
if.then201: ; preds = %if.else196
%52 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY8, i32 0, i32 2), align 1
%conv202 = zext i8 %52 to i16
%cmp203 = icmp ne i16 %conv202, 0
br i1 %cmp203, label %land.lhs.true205, label %if.end210
land.lhs.true205: ; preds = %if.then201
%53 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY8, i32 0, i32 4), align 1
%conv206 = zext i8 %53 to i16
%cmp207 = icmp eq i16 %conv206, 0
br i1 %cmp207, label %if.then209, label %if.end210
if.then209: ; preds = %land.lhs.true205
store %struct.ENEMY* @ENEMY8, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Move_Enemies()
call void @draw_enemies()
br label %if.end210
if.end210: ; preds = %if.then209, %land.lhs.true205, %if.then201
%54 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY7, i32 0, i32 2), align 1
%conv211 = zext i8 %54 to i16
%cmp212 = icmp ne i16 %conv211, 0
br i1 %cmp212, label %land.lhs.true214, label %if.end219
land.lhs.true214: ; preds = %if.end210
%55 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY7, i32 0, i32 4), align 1
%conv215 = zext i8 %55 to i16
%cmp216 = icmp eq i16 %conv215, 0
br i1 %cmp216, label %if.then218, label %if.end219
if.then218: ; preds = %land.lhs.true214
store %struct.ENEMY* @ENEMY7, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Move_Enemies()
call void @draw_enemies()
br label %if.end219
if.end219: ; preds = %if.then218, %land.lhs.true214, %if.end210
%56 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY6, i32 0, i32 2), align 1
%conv220 = zext i8 %56 to i16
%cmp221 = icmp ne i16 %conv220, 0
br i1 %cmp221, label %land.lhs.true223, label %if.end228
land.lhs.true223: ; preds = %if.end219
%57 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY6, i32 0, i32 4), align 1
%conv224 = zext i8 %57 to i16
%cmp225 = icmp eq i16 %conv224, 0
br i1 %cmp225, label %if.then227, label %if.end228
if.then227: ; preds = %land.lhs.true223
store %struct.ENEMY* @ENEMY6, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Move_Enemies()
call void @draw_enemies()
br label %if.end228
if.end228: ; preds = %if.then227, %land.lhs.true223, %if.end219
%58 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY5, i32 0, i32 2), align 1
%conv229 = zext i8 %58 to i16
%cmp230 = icmp ne i16 %conv229, 0
br i1 %cmp230, label %land.lhs.true232, label %if.end237
land.lhs.true232: ; preds = %if.end228
%59 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY5, i32 0, i32 4), align 1
%conv233 = zext i8 %59 to i16
%cmp234 = icmp eq i16 %conv233, 0
br i1 %cmp234, label %if.then236, label %if.end237
if.then236: ; preds = %land.lhs.true232
store %struct.ENEMY* @ENEMY5, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Move_Enemies()
call void @draw_enemies()
br label %if.end237
if.end237: ; preds = %if.then236, %land.lhs.true232, %if.end228
%60 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY4, i32 0, i32 2), align 1
%conv238 = zext i8 %60 to i16
%cmp239 = icmp ne i16 %conv238, 0
br i1 %cmp239, label %land.lhs.true241, label %if.end246
land.lhs.true241: ; preds = %if.end237
%61 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY4, i32 0, i32 4), align 1
%conv242 = zext i8 %61 to i16
%cmp243 = icmp eq i16 %conv242, 0
br i1 %cmp243, label %if.then245, label %if.end246
if.then245: ; preds = %land.lhs.true241
store %struct.ENEMY* @ENEMY4, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Move_Enemies()
call void @draw_enemies()
br label %if.end246
if.end246: ; preds = %if.then245, %land.lhs.true241, %if.end237
%62 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY3, i32 0, i32 2), align 1
%conv247 = zext i8 %62 to i16
%cmp248 = icmp ne i16 %conv247, 0
br i1 %cmp248, label %land.lhs.true250, label %if.end255
land.lhs.true250: ; preds = %if.end246
%63 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY3, i32 0, i32 4), align 1
%conv251 = zext i8 %63 to i16
%cmp252 = icmp eq i16 %conv251, 0
br i1 %cmp252, label %if.then254, label %if.end255
if.then254: ; preds = %land.lhs.true250
store %struct.ENEMY* @ENEMY3, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Move_Enemies()
call void @draw_enemies()
br label %if.end255
if.end255: ; preds = %if.then254, %land.lhs.true250, %if.end246
%64 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY2, i32 0, i32 2), align 1
%conv256 = zext i8 %64 to i16
%cmp257 = icmp ne i16 %conv256, 0
br i1 %cmp257, label %land.lhs.true259, label %if.end264
land.lhs.true259: ; preds = %if.end255
%65 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY2, i32 0, i32 4), align 1
%conv260 = zext i8 %65 to i16
%cmp261 = icmp eq i16 %conv260, 0
br i1 %cmp261, label %if.then263, label %if.end264
if.then263: ; preds = %land.lhs.true259
store %struct.ENEMY* @ENEMY2, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Move_Enemies()
call void @draw_enemies()
br label %if.end264
if.end264: ; preds = %if.then263, %land.lhs.true259, %if.end255
%66 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY1, i32 0, i32 2), align 1
%conv265 = zext i8 %66 to i16
%cmp266 = icmp ne i16 %conv265, 0
br i1 %cmp266, label %land.lhs.true268, label %if.end273
land.lhs.true268: ; preds = %if.end264
%67 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY1, i32 0, i32 4), align 1
%conv269 = zext i8 %67 to i16
%cmp270 = icmp eq i16 %conv269, 0
br i1 %cmp270, label %if.then272, label %if.end273
if.then272: ; preds = %land.lhs.true268
store %struct.ENEMY* @ENEMY1, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Move_Enemies()
call void @draw_enemies()
br label %if.end273
if.end273: ; preds = %if.then272, %land.lhs.true268, %if.end264
call void @Draw_Explosion()
br label %if.end347
if.else274: ; preds = %if.else196
%68 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY8, i32 0, i32 2), align 1
%conv275 = zext i8 %68 to i16
%cmp276 = icmp ne i16 %conv275, 0
br i1 %cmp276, label %land.lhs.true278, label %if.end283
land.lhs.true278: ; preds = %if.else274
%69 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY8, i32 0, i32 4), align 1
%conv279 = zext i8 %69 to i16
%cmp280 = icmp eq i16 %conv279, 0
br i1 %cmp280, label %if.then282, label %if.end283
if.then282: ; preds = %land.lhs.true278
store %struct.ENEMY* @ENEMY8, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Move_Enemies()
call void @draw_enemies()
br label %if.end283
if.end283: ; preds = %if.then282, %land.lhs.true278, %if.else274
%70 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY6, i32 0, i32 2), align 1
%conv284 = zext i8 %70 to i16
%cmp285 = icmp ne i16 %conv284, 0
br i1 %cmp285, label %land.lhs.true287, label %if.end292
land.lhs.true287: ; preds = %if.end283
%71 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY6, i32 0, i32 4), align 1
%conv288 = zext i8 %71 to i16
%cmp289 = icmp eq i16 %conv288, 0
br i1 %cmp289, label %if.then291, label %if.end292
if.then291: ; preds = %land.lhs.true287
store %struct.ENEMY* @ENEMY6, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Move_Enemies()
call void @draw_enemies()
br label %if.end292
if.end292: ; preds = %if.then291, %land.lhs.true287, %if.end283
%72 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY4, i32 0, i32 2), align 1
%conv293 = zext i8 %72 to i16
%cmp294 = icmp ne i16 %conv293, 0
br i1 %cmp294, label %land.lhs.true296, label %if.end301
land.lhs.true296: ; preds = %if.end292
%73 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY4, i32 0, i32 4), align 1
%conv297 = zext i8 %73 to i16
%cmp298 = icmp eq i16 %conv297, 0
br i1 %cmp298, label %if.then300, label %if.end301
if.then300: ; preds = %land.lhs.true296
store %struct.ENEMY* @ENEMY4, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Move_Enemies()
call void @draw_enemies()
br label %if.end301
if.end301: ; preds = %if.then300, %land.lhs.true296, %if.end292
%74 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY2, i32 0, i32 2), align 1
%conv302 = zext i8 %74 to i16
%cmp303 = icmp ne i16 %conv302, 0
br i1 %cmp303, label %land.lhs.true305, label %if.end310
land.lhs.true305: ; preds = %if.end301
%75 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY2, i32 0, i32 4), align 1
%conv306 = zext i8 %75 to i16
%cmp307 = icmp eq i16 %conv306, 0
br i1 %cmp307, label %if.then309, label %if.end310
if.then309: ; preds = %land.lhs.true305
store %struct.ENEMY* @ENEMY2, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Move_Enemies()
call void @draw_enemies()
br label %if.end310
if.end310: ; preds = %if.then309, %land.lhs.true305, %if.end301
call void @Draw_Explosion()
%76 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY7, i32 0, i32 2), align 1
%conv311 = zext i8 %76 to i16
%cmp312 = icmp ne i16 %conv311, 0
br i1 %cmp312, label %land.lhs.true314, label %if.end319
land.lhs.true314: ; preds = %if.end310
%77 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY7, i32 0, i32 4), align 1
%conv315 = zext i8 %77 to i16
%cmp316 = icmp eq i16 %conv315, 0
br i1 %cmp316, label %if.then318, label %if.end319
if.then318: ; preds = %land.lhs.true314
store %struct.ENEMY* @ENEMY7, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Move_Enemies()
call void @draw_enemies()
br label %if.end319
if.end319: ; preds = %if.then318, %land.lhs.true314, %if.end310
%78 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY5, i32 0, i32 2), align 1
%conv320 = zext i8 %78 to i16
%cmp321 = icmp ne i16 %conv320, 0
br i1 %cmp321, label %land.lhs.true323, label %if.end328
land.lhs.true323: ; preds = %if.end319
%79 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY5, i32 0, i32 4), align 1
%conv324 = zext i8 %79 to i16
%cmp325 = icmp eq i16 %conv324, 0
br i1 %cmp325, label %if.then327, label %if.end328
if.then327: ; preds = %land.lhs.true323
store %struct.ENEMY* @ENEMY5, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Move_Enemies()
call void @draw_enemies()
br label %if.end328
if.end328: ; preds = %if.then327, %land.lhs.true323, %if.end319
%80 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY3, i32 0, i32 2), align 1
%conv329 = zext i8 %80 to i16
%cmp330 = icmp ne i16 %conv329, 0
br i1 %cmp330, label %land.lhs.true332, label %if.end337
land.lhs.true332: ; preds = %if.end328
%81 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY3, i32 0, i32 4), align 1
%conv333 = zext i8 %81 to i16
%cmp334 = icmp eq i16 %conv333, 0
br i1 %cmp334, label %if.then336, label %if.end337
if.then336: ; preds = %land.lhs.true332
store %struct.ENEMY* @ENEMY3, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Move_Enemies()
call void @draw_enemies()
br label %if.end337
if.end337: ; preds = %if.then336, %land.lhs.true332, %if.end328
%82 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY1, i32 0, i32 2), align 1
%conv338 = zext i8 %82 to i16
%cmp339 = icmp ne i16 %conv338, 0
br i1 %cmp339, label %land.lhs.true341, label %if.end346
land.lhs.true341: ; preds = %if.end337
%83 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY1, i32 0, i32 4), align 1
%conv342 = zext i8 %83 to i16
%cmp343 = icmp eq i16 %conv342, 0
br i1 %cmp343, label %if.then345, label %if.end346
if.then345: ; preds = %land.lhs.true341
store %struct.ENEMY* @ENEMY1, %struct.ENEMY** @Enemy_Pointer, align 1
call void @Move_Enemies()
call void @draw_enemies()
br label %if.end346
if.end346: ; preds = %if.then345, %land.lhs.true341, %if.end337
br label %if.end347
if.end347: ; preds = %if.end346, %if.end273
br label %if.end348
if.end348: ; preds = %if.end347, %if.end195
br label %if.end349
if.end349: ; preds = %if.end348, %if.end118
ret void
}
; Function Attrs: nounwind
define void @Adjust_Scoreboard() #0 {
entry:
br label %while.cond
while.cond: ; preds = %while.body, %entry
%0 = load i8, i8* @Score4, align 1
%conv = zext i8 %0 to i16
%cmp = icmp sgt i16 %conv, 9
br i1 %cmp, label %while.body, label %while.end
while.body: ; preds = %while.cond
%1 = load i8, i8* @Score3, align 1
%inc = add i8 %1, 1
store i8 %inc, i8* @Score3, align 1
%2 = load i8, i8* @Score4, align 1
%conv2 = zext i8 %2 to i16
%sub = sub nsw i16 %conv2, 10
%conv3 = trunc i16 %sub to i8
store i8 %conv3, i8* @Score4, align 1
br label %while.cond
while.end: ; preds = %while.cond
br label %while.cond4
while.cond4: ; preds = %while.body8, %while.end
%3 = load i8, i8* @Score3, align 1
%conv5 = zext i8 %3 to i16
%cmp6 = icmp sgt i16 %conv5, 9
br i1 %cmp6, label %while.body8, label %while.end13
while.body8: ; preds = %while.cond4
%4 = load i8, i8* @Score2, align 1
%inc9 = add i8 %4, 1
store i8 %inc9, i8* @Score2, align 1
%5 = load i8, i8* @Score3, align 1
%conv10 = zext i8 %5 to i16
%sub11 = sub nsw i16 %conv10, 10
%conv12 = trunc i16 %sub11 to i8
store i8 %conv12, i8* @Score3, align 1
br label %while.cond4
while.end13: ; preds = %while.cond4
%6 = load i8, i8* @Score2, align 1
%conv14 = zext i8 %6 to i16
%cmp15 = icmp sgt i16 %conv14, 9
br i1 %cmp15, label %if.then, label %if.end
if.then: ; preds = %while.end13
%7 = load i8, i8* @Score1, align 1
%inc17 = add i8 %7, 1
store i8 %inc17, i8* @Score1, align 1
%8 = load i8, i8* @Score2, align 1
%conv18 = zext i8 %8 to i16
%sub19 = sub nsw i16 %conv18, 10
%conv20 = trunc i16 %sub19 to i8
store i8 %conv20, i8* @Score2, align 1
br label %if.end
if.end: ; preds = %if.then, %while.end13
%9 = load i8, i8* @Score1, align 1
%conv21 = zext i8 %9 to i16
%cmp22 = icmp sgt i16 %conv21, 9
br i1 %cmp22, label %if.then24, label %if.end25
if.then24: ; preds = %if.end
store i8 9, i8* @Score4, align 1
store i8 9, i8* @Score3, align 1
store i8 9, i8* @Score2, align 1
store i8 9, i8* @Score1, align 1
br label %if.end25
if.end25: ; preds = %if.then24, %if.end
ret void
}
; Function Attrs: nounwind
define void @Turn_On_Pause_Sprites() #0 {
entry:
store i8 14, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @dummy, i32 0, i32 0), align 1
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @dummy, i32 0, i32 1), align 1
store i8 108, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @dummy, i32 0, i32 3), align 1
store i8 112, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @dummy, i32 0, i32 2), align 1
call void @Draw_Sprites(%struct.ENEMY* @dummy)
ret void
}
; Function Attrs: nounwind
define void @Turn_On_Game_Over_Sprites() #0 {
entry:
store i8 15, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @dummy, i32 0, i32 0), align 1
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @dummy, i32 0, i32 1), align 1
store i8 92, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @dummy, i32 0, i32 3), align 1
store i8 112, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @dummy, i32 0, i32 2), align 1
call void @Draw_Sprites(%struct.ENEMY* @dummy)
ret void
}
; Function Attrs: nounwind
define void @collision_Test4() #0 {
entry:
store i8 15, i8* @objectA_width, align 1
store i8 7, i8* @objectA_height, align 1
store i8 47, i8* @objectB_width, align 1
store i8 39, i8* @objectB_height, align 1
%0 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 2), align 1
store i8 %0, i8* @objectB_y, align 1
%1 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 3), align 1
store i8 %1, i8* @objectB_x, align 1
%2 = load i8, i8* @BOSS_health, align 1
store i8 %2, i8* @BOSS_health_test, align 1
%3 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet1, i32 0, i32 0), align 1
%conv = zext i8 %3 to i16
%cmp = icmp ne i16 %conv, 0
br i1 %cmp, label %if.then, label %if.end6
if.then: ; preds = %entry
%4 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet1, i32 0, i32 0), align 1
store i8 %4, i8* @objectA_y, align 1
%5 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet1, i32 0, i32 4), align 1
store i8 %5, i8* @objectA_x, align 1
call void @Hitbox()
%6 = load i8, i8* @collision, align 1
%conv2 = zext i8 %6 to i16
%cmp3 = icmp ne i16 %conv2, 0
br i1 %cmp3, label %if.then5, label %if.end
if.then5: ; preds = %if.then
store i8 0, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet1, i32 0, i32 0), align 1
%7 = load i8, i8* @BOSS_health, align 1
%dec = add i8 %7, -1
store i8 %dec, i8* @BOSS_health, align 1
br label %if.end
if.end: ; preds = %if.then5, %if.then
br label %if.end6
if.end6: ; preds = %if.end, %entry
%8 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet2, i32 0, i32 0), align 1
%conv7 = zext i8 %8 to i16
%cmp8 = icmp ne i16 %conv7, 0
br i1 %cmp8, label %if.then10, label %if.end17
if.then10: ; preds = %if.end6
%9 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet2, i32 0, i32 0), align 1
store i8 %9, i8* @objectA_y, align 1
%10 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet2, i32 0, i32 4), align 1
store i8 %10, i8* @objectA_x, align 1
call void @Hitbox()
%11 = load i8, i8* @collision, align 1
%conv11 = zext i8 %11 to i16
%cmp12 = icmp ne i16 %conv11, 0
br i1 %cmp12, label %if.then14, label %if.end16
if.then14: ; preds = %if.then10
store i8 0, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet2, i32 0, i32 0), align 1
%12 = load i8, i8* @BOSS_health, align 1
%dec15 = add i8 %12, -1
store i8 %dec15, i8* @BOSS_health, align 1
br label %if.end16
if.end16: ; preds = %if.then14, %if.then10
br label %if.end17
if.end17: ; preds = %if.end16, %if.end6
%13 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet3, i32 0, i32 0), align 1
%conv18 = zext i8 %13 to i16
%cmp19 = icmp ne i16 %conv18, 0
br i1 %cmp19, label %if.then21, label %if.end28
if.then21: ; preds = %if.end17
%14 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet3, i32 0, i32 0), align 1
store i8 %14, i8* @objectA_y, align 1
%15 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet3, i32 0, i32 4), align 1
store i8 %15, i8* @objectA_x, align 1
call void @Hitbox()
%16 = load i8, i8* @collision, align 1
%conv22 = zext i8 %16 to i16
%cmp23 = icmp ne i16 %conv22, 0
br i1 %cmp23, label %if.then25, label %if.end27
if.then25: ; preds = %if.then21
store i8 0, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet3, i32 0, i32 0), align 1
%17 = load i8, i8* @BOSS_health, align 1
%dec26 = add i8 %17, -1
store i8 %dec26, i8* @BOSS_health, align 1
br label %if.end27
if.end27: ; preds = %if.then25, %if.then21
br label %if.end28
if.end28: ; preds = %if.end27, %if.end17
%18 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet4, i32 0, i32 0), align 1
%conv29 = zext i8 %18 to i16
%cmp30 = icmp ne i16 %conv29, 0
br i1 %cmp30, label %if.then32, label %if.end39
if.then32: ; preds = %if.end28
%19 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet4, i32 0, i32 0), align 1
store i8 %19, i8* @objectA_y, align 1
%20 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet4, i32 0, i32 4), align 1
store i8 %20, i8* @objectA_x, align 1
call void @Hitbox()
%21 = load i8, i8* @collision, align 1
%conv33 = zext i8 %21 to i16
%cmp34 = icmp ne i16 %conv33, 0
br i1 %cmp34, label %if.then36, label %if.end38
if.then36: ; preds = %if.then32
store i8 0, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet4, i32 0, i32 0), align 1
%22 = load i8, i8* @BOSS_health, align 1
%dec37 = add i8 %22, -1
store i8 %dec37, i8* @BOSS_health, align 1
br label %if.end38
if.end38: ; preds = %if.then36, %if.then32
br label %if.end39
if.end39: ; preds = %if.end38, %if.end28
%23 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet5, i32 0, i32 0), align 1
%conv40 = zext i8 %23 to i16
%cmp41 = icmp ne i16 %conv40, 0
br i1 %cmp41, label %if.then43, label %if.end50
if.then43: ; preds = %if.end39
%24 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet5, i32 0, i32 0), align 1
store i8 %24, i8* @objectA_y, align 1
%25 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet5, i32 0, i32 4), align 1
store i8 %25, i8* @objectA_x, align 1
call void @Hitbox()
%26 = load i8, i8* @collision, align 1
%conv44 = zext i8 %26 to i16
%cmp45 = icmp ne i16 %conv44, 0
br i1 %cmp45, label %if.then47, label %if.end49
if.then47: ; preds = %if.then43
store i8 0, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet5, i32 0, i32 0), align 1
%27 = load i8, i8* @BOSS_health, align 1
%dec48 = add i8 %27, -1
store i8 %dec48, i8* @BOSS_health, align 1
br label %if.end49
if.end49: ; preds = %if.then47, %if.then43
br label %if.end50
if.end50: ; preds = %if.end49, %if.end39
%28 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet6, i32 0, i32 0), align 1
%conv51 = zext i8 %28 to i16
%cmp52 = icmp ne i16 %conv51, 0
br i1 %cmp52, label %if.then54, label %if.end61
if.then54: ; preds = %if.end50
%29 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet6, i32 0, i32 0), align 1
store i8 %29, i8* @objectA_y, align 1
%30 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet6, i32 0, i32 4), align 1
store i8 %30, i8* @objectA_x, align 1
call void @Hitbox()
%31 = load i8, i8* @collision, align 1
%conv55 = zext i8 %31 to i16
%cmp56 = icmp ne i16 %conv55, 0
br i1 %cmp56, label %if.then58, label %if.end60
if.then58: ; preds = %if.then54
store i8 0, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet6, i32 0, i32 0), align 1
%32 = load i8, i8* @BOSS_health, align 1
%dec59 = add i8 %32, -1
store i8 %dec59, i8* @BOSS_health, align 1
br label %if.end60
if.end60: ; preds = %if.then58, %if.then54
br label %if.end61
if.end61: ; preds = %if.end60, %if.end50
%33 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet7, i32 0, i32 0), align 1
%conv62 = zext i8 %33 to i16
%cmp63 = icmp ne i16 %conv62, 0
br i1 %cmp63, label %if.then65, label %if.end72
if.then65: ; preds = %if.end61
%34 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet7, i32 0, i32 0), align 1
store i8 %34, i8* @objectA_y, align 1
%35 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet7, i32 0, i32 4), align 1
store i8 %35, i8* @objectA_x, align 1
call void @Hitbox()
%36 = load i8, i8* @collision, align 1
%conv66 = zext i8 %36 to i16
%cmp67 = icmp ne i16 %conv66, 0
br i1 %cmp67, label %if.then69, label %if.end71
if.then69: ; preds = %if.then65
store i8 0, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet7, i32 0, i32 0), align 1
%37 = load i8, i8* @BOSS_health, align 1
%dec70 = add i8 %37, -1
store i8 %dec70, i8* @BOSS_health, align 1
br label %if.end71
if.end71: ; preds = %if.then69, %if.then65
br label %if.end72
if.end72: ; preds = %if.end71, %if.end61
%38 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet8, i32 0, i32 0), align 1
%conv73 = zext i8 %38 to i16
%cmp74 = icmp ne i16 %conv73, 0
br i1 %cmp74, label %if.then76, label %if.end83
if.then76: ; preds = %if.end72
%39 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet8, i32 0, i32 0), align 1
store i8 %39, i8* @objectA_y, align 1
%40 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet8, i32 0, i32 4), align 1
store i8 %40, i8* @objectA_x, align 1
call void @Hitbox()
%41 = load i8, i8* @collision, align 1
%conv77 = zext i8 %41 to i16
%cmp78 = icmp ne i16 %conv77, 0
br i1 %cmp78, label %if.then80, label %if.end82
if.then80: ; preds = %if.then76
store i8 0, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet8, i32 0, i32 0), align 1
%42 = load i8, i8* @BOSS_health, align 1
%dec81 = add i8 %42, -1
store i8 %dec81, i8* @BOSS_health, align 1
br label %if.end82
if.end82: ; preds = %if.then80, %if.then76
br label %if.end83
if.end83: ; preds = %if.end82, %if.end72
%43 = load i8, i8* @BOSS_health, align 1
%conv84 = zext i8 %43 to i16
%44 = load i8, i8* @BOSS_health_test, align 1
%conv85 = zext i8 %44 to i16
%cmp86 = icmp sgt i16 %conv84, %conv85
br i1 %cmp86, label %if.then88, label %if.end91
if.then88: ; preds = %if.end83
call void @Blank_sprite()
call void @Set_Sprite_Zero()
call void @SHAKE_AND_BLINK()
call void @Blank_sprite()
call void @Set_Sprite_Zero()
call void @Reset_Music()
store i8 31, i8* inttoptr (i16 16405 to i8*), align 1
call void @Play_Fx(i8 zeroext 4)
store i8 4, i8* @song, align 1
%45 = load i8, i8* @song, align 1
call void @Play_Music(i8 zeroext %45)
store i8 4, i8* @Game_Mode, align 1
%46 = load i8, i8* @Score2, align 1
%conv89 = zext i8 %46 to i16
%add = add nsw i16 %conv89, 2
%conv90 = trunc i16 %add to i8
store i8 %conv90, i8* @Score2, align 1
call void @Adjust_Scoreboard()
br label %if.end91
if.end91: ; preds = %if.then88, %if.end83
ret void
}
; Function Attrs: nounwind
define void @Move_Lasers() #0 {
entry:
%0 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER1, i32 0, i32 2), align 1
%conv = zext i8 %0 to i16
%cmp = icmp ne i16 %conv, 0
br i1 %cmp, label %if.then, label %if.end20
if.then: ; preds = %entry
%1 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER1, i32 0, i32 2), align 1
%conv2 = zext i8 %1 to i16
%add = add nsw i16 %conv2, 2
%conv3 = trunc i16 %add to i8
store i8 %conv3, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER1, i32 0, i32 2), align 1
%2 = load i8, i8* @Frame_Count, align 1
%conv4 = zext i8 %2 to i16
%and = and i16 %conv4, 3
%cmp5 = icmp eq i16 %and, 0
br i1 %cmp5, label %if.then7, label %if.end19
if.then7: ; preds = %if.then
%3 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER1, i32 0, i32 3), align 1
%conv8 = zext i8 %3 to i16
%4 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 3), align 1
%conv9 = zext i8 %4 to i16
%cmp10 = icmp sgt i16 %conv8, %conv9
br i1 %cmp10, label %if.then12, label %if.else
if.then12: ; preds = %if.then7
%5 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER1, i32 0, i32 3), align 1
%dec = add i8 %5, -1
store i8 %dec, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER1, i32 0, i32 3), align 1
br label %if.end18
if.else: ; preds = %if.then7
%6 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER1, i32 0, i32 3), align 1
%conv13 = zext i8 %6 to i16
%7 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 3), align 1
%conv14 = zext i8 %7 to i16
%cmp15 = icmp slt i16 %conv13, %conv14
br i1 %cmp15, label %if.then17, label %if.end
if.then17: ; preds = %if.else
%8 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER1, i32 0, i32 3), align 1
%inc = add i8 %8, 1
store i8 %inc, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER1, i32 0, i32 3), align 1
br label %if.end
if.end: ; preds = %if.then17, %if.else
br label %if.end18
if.end18: ; preds = %if.end, %if.then12
br label %if.end19
if.end19: ; preds = %if.end18, %if.then
call void @Draw_Sprites(%struct.ENEMY* @LASER1)
br label %if.end20
if.end20: ; preds = %if.end19, %entry
%9 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER1, i32 0, i32 2), align 1
%conv21 = zext i8 %9 to i16
%cmp22 = icmp sgt i16 %conv21, 240
br i1 %cmp22, label %if.then24, label %if.end25
if.then24: ; preds = %if.end20
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER1, i32 0, i32 2), align 1
br label %if.end25
if.end25: ; preds = %if.then24, %if.end20
%10 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER2, i32 0, i32 2), align 1
%conv26 = zext i8 %10 to i16
%cmp27 = icmp ne i16 %conv26, 0
br i1 %cmp27, label %if.then29, label %if.end54
if.then29: ; preds = %if.end25
%11 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER2, i32 0, i32 2), align 1
%conv30 = zext i8 %11 to i16
%add31 = add nsw i16 %conv30, 2
%conv32 = trunc i16 %add31 to i8
store i8 %conv32, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER2, i32 0, i32 2), align 1
%12 = load i8, i8* @Frame_Count, align 1
%conv33 = zext i8 %12 to i16
%and34 = and i16 %conv33, 3
%cmp35 = icmp eq i16 %and34, 0
br i1 %cmp35, label %if.then37, label %if.end53
if.then37: ; preds = %if.then29
%13 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER2, i32 0, i32 3), align 1
%conv38 = zext i8 %13 to i16
%14 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 3), align 1
%conv39 = zext i8 %14 to i16
%cmp40 = icmp sgt i16 %conv38, %conv39
br i1 %cmp40, label %if.then42, label %if.else44
if.then42: ; preds = %if.then37
%15 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER2, i32 0, i32 3), align 1
%dec43 = add i8 %15, -1
store i8 %dec43, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER2, i32 0, i32 3), align 1
br label %if.end52
if.else44: ; preds = %if.then37
%16 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER2, i32 0, i32 3), align 1
%conv45 = zext i8 %16 to i16
%17 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 3), align 1
%conv46 = zext i8 %17 to i16
%cmp47 = icmp slt i16 %conv45, %conv46
br i1 %cmp47, label %if.then49, label %if.end51
if.then49: ; preds = %if.else44
%18 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER2, i32 0, i32 3), align 1
%inc50 = add i8 %18, 1
store i8 %inc50, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER2, i32 0, i32 3), align 1
br label %if.end51
if.end51: ; preds = %if.then49, %if.else44
br label %if.end52
if.end52: ; preds = %if.end51, %if.then42
br label %if.end53
if.end53: ; preds = %if.end52, %if.then29
call void @Draw_Sprites(%struct.ENEMY* @LASER2)
br label %if.end54
if.end54: ; preds = %if.end53, %if.end25
%19 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER2, i32 0, i32 2), align 1
%conv55 = zext i8 %19 to i16
%cmp56 = icmp sgt i16 %conv55, 240
br i1 %cmp56, label %if.then58, label %if.end59
if.then58: ; preds = %if.end54
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER2, i32 0, i32 2), align 1
br label %if.end59
if.end59: ; preds = %if.then58, %if.end54
%20 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER3, i32 0, i32 2), align 1
%conv60 = zext i8 %20 to i16
%cmp61 = icmp ne i16 %conv60, 0
br i1 %cmp61, label %if.then63, label %if.end88
if.then63: ; preds = %if.end59
%21 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER3, i32 0, i32 2), align 1
%conv64 = zext i8 %21 to i16
%add65 = add nsw i16 %conv64, 2
%conv66 = trunc i16 %add65 to i8
store i8 %conv66, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER3, i32 0, i32 2), align 1
%22 = load i8, i8* @Frame_Count, align 1
%conv67 = zext i8 %22 to i16
%and68 = and i16 %conv67, 3
%cmp69 = icmp eq i16 %and68, 0
br i1 %cmp69, label %if.then71, label %if.end87
if.then71: ; preds = %if.then63
%23 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER3, i32 0, i32 3), align 1
%conv72 = zext i8 %23 to i16
%24 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 3), align 1
%conv73 = zext i8 %24 to i16
%cmp74 = icmp sgt i16 %conv72, %conv73
br i1 %cmp74, label %if.then76, label %if.else78
if.then76: ; preds = %if.then71
%25 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER3, i32 0, i32 3), align 1
%dec77 = add i8 %25, -1
store i8 %dec77, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER3, i32 0, i32 3), align 1
br label %if.end86
if.else78: ; preds = %if.then71
%26 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER3, i32 0, i32 3), align 1
%conv79 = zext i8 %26 to i16
%27 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 3), align 1
%conv80 = zext i8 %27 to i16
%cmp81 = icmp slt i16 %conv79, %conv80
br i1 %cmp81, label %if.then83, label %if.end85
if.then83: ; preds = %if.else78
%28 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER3, i32 0, i32 3), align 1
%inc84 = add i8 %28, 1
store i8 %inc84, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER3, i32 0, i32 3), align 1
br label %if.end85
if.end85: ; preds = %if.then83, %if.else78
br label %if.end86
if.end86: ; preds = %if.end85, %if.then76
br label %if.end87
if.end87: ; preds = %if.end86, %if.then63
call void @Draw_Sprites(%struct.ENEMY* @LASER3)
br label %if.end88
if.end88: ; preds = %if.end87, %if.end59
%29 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER3, i32 0, i32 2), align 1
%conv89 = zext i8 %29 to i16
%cmp90 = icmp sgt i16 %conv89, 240
br i1 %cmp90, label %if.then92, label %if.end93
if.then92: ; preds = %if.end88
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER3, i32 0, i32 2), align 1
br label %if.end93
if.end93: ; preds = %if.then92, %if.end88
%30 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER4, i32 0, i32 2), align 1
%conv94 = zext i8 %30 to i16
%cmp95 = icmp ne i16 %conv94, 0
br i1 %cmp95, label %if.then97, label %if.end122
if.then97: ; preds = %if.end93
%31 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER4, i32 0, i32 2), align 1
%conv98 = zext i8 %31 to i16
%add99 = add nsw i16 %conv98, 2
%conv100 = trunc i16 %add99 to i8
store i8 %conv100, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER4, i32 0, i32 2), align 1
%32 = load i8, i8* @Frame_Count, align 1
%conv101 = zext i8 %32 to i16
%and102 = and i16 %conv101, 3
%cmp103 = icmp eq i16 %and102, 0
br i1 %cmp103, label %if.then105, label %if.end121
if.then105: ; preds = %if.then97
%33 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER4, i32 0, i32 3), align 1
%conv106 = zext i8 %33 to i16
%34 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 3), align 1
%conv107 = zext i8 %34 to i16
%cmp108 = icmp sgt i16 %conv106, %conv107
br i1 %cmp108, label %if.then110, label %if.else112
if.then110: ; preds = %if.then105
%35 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER4, i32 0, i32 3), align 1
%dec111 = add i8 %35, -1
store i8 %dec111, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER4, i32 0, i32 3), align 1
br label %if.end120
if.else112: ; preds = %if.then105
%36 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER4, i32 0, i32 3), align 1
%conv113 = zext i8 %36 to i16
%37 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 3), align 1
%conv114 = zext i8 %37 to i16
%cmp115 = icmp slt i16 %conv113, %conv114
br i1 %cmp115, label %if.then117, label %if.end119
if.then117: ; preds = %if.else112
%38 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER4, i32 0, i32 3), align 1
%inc118 = add i8 %38, 1
store i8 %inc118, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER4, i32 0, i32 3), align 1
br label %if.end119
if.end119: ; preds = %if.then117, %if.else112
br label %if.end120
if.end120: ; preds = %if.end119, %if.then110
br label %if.end121
if.end121: ; preds = %if.end120, %if.then97
call void @Draw_Sprites(%struct.ENEMY* @LASER4)
br label %if.end122
if.end122: ; preds = %if.end121, %if.end93
%39 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER4, i32 0, i32 2), align 1
%conv123 = zext i8 %39 to i16
%cmp124 = icmp sgt i16 %conv123, 240
br i1 %cmp124, label %if.then126, label %if.end127
if.then126: ; preds = %if.end122
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER4, i32 0, i32 2), align 1
br label %if.end127
if.end127: ; preds = %if.then126, %if.end122
ret void
}
; Function Attrs: nounwind
define void @Move_Boss() #0 {
entry:
%0 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 7), align 1
%inc = add i8 %0, 1
store i8 %inc, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 7), align 1
%1 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 6), align 1
%conv = zext i8 %1 to i16
switch i16 %conv, label %sw.epilog [
i16 0, label %sw.bb
i16 1, label %sw.bb18
i16 2, label %sw.bb25
i16 3, label %sw.bb49
i16 4, label %sw.bb56
i16 5, label %sw.bb69
i16 6, label %sw.bb76
i16 7, label %sw.bb86
]
sw.bb: ; preds = %entry
%2 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 3), align 1
%dec = add i8 %2, -1
store i8 %dec, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 3), align 1
%3 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 7), align 1
%conv1 = zext i8 %3 to i16
%cmp = icmp eq i16 %conv1, 40
br i1 %cmp, label %if.then, label %lor.lhs.false
lor.lhs.false: ; preds = %sw.bb
%4 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 7), align 1
%conv3 = zext i8 %4 to i16
%cmp4 = icmp eq i16 %conv3, 150
br i1 %cmp4, label %if.then, label %if.end
if.then: ; preds = %lor.lhs.false, %sw.bb
call void @Spawn_Lasers()
store i8 8, i8* @BOSS_eyes, align 1
br label %if.end
if.end: ; preds = %if.then, %lor.lhs.false
%5 = load i8, i8* @BOSS_eyes, align 1
%conv6 = zext i8 %5 to i16
%cmp7 = icmp ne i16 %conv6, 0
br i1 %cmp7, label %if.then9, label %if.else
if.then9: ; preds = %if.end
%6 = load i8, i8* @BOSS_eyes, align 1
%dec10 = add i8 %6, -1
store i8 %dec10, i8* @BOSS_eyes, align 1
store i8 18, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 0), align 1
br label %if.end11
if.else: ; preds = %if.end
store i8 17, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 0), align 1
br label %if.end11
if.end11: ; preds = %if.else, %if.then9
%7 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 3), align 1
%conv12 = zext i8 %7 to i16
%cmp13 = icmp slt i16 %conv12, 8
br i1 %cmp13, label %if.then15, label %if.end17
if.then15: ; preds = %if.end11
%8 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 6), align 1
%inc16 = add i8 %8, 1
store i8 %inc16, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 6), align 1
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 7), align 1
br label %if.end17
if.end17: ; preds = %if.then15, %if.end11
br label %sw.epilog
sw.bb18: ; preds = %entry
store i8 18, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 0), align 1
%9 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 7), align 1
%conv19 = zext i8 %9 to i16
%cmp20 = icmp sgt i16 %conv19, 10
br i1 %cmp20, label %if.then22, label %if.end24
if.then22: ; preds = %sw.bb18
%10 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 6), align 1
%inc23 = add i8 %10, 1
store i8 %inc23, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 6), align 1
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 7), align 1
call void @Spawn_Lasers()
br label %if.end24
if.end24: ; preds = %if.then22, %sw.bb18
br label %sw.epilog
sw.bb25: ; preds = %entry
%11 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 3), align 1
%inc26 = add i8 %11, 1
store i8 %inc26, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 3), align 1
%12 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 7), align 1
%conv27 = zext i8 %12 to i16
%cmp28 = icmp eq i16 %conv27, 40
br i1 %cmp28, label %if.then34, label %lor.lhs.false30
lor.lhs.false30: ; preds = %sw.bb25
%13 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 7), align 1
%conv31 = zext i8 %13 to i16
%cmp32 = icmp eq i16 %conv31, 150
br i1 %cmp32, label %if.then34, label %if.end35
if.then34: ; preds = %lor.lhs.false30, %sw.bb25
call void @Spawn_Lasers()
store i8 8, i8* @BOSS_eyes, align 1
br label %if.end35
if.end35: ; preds = %if.then34, %lor.lhs.false30
%14 = load i8, i8* @BOSS_eyes, align 1
%conv36 = zext i8 %14 to i16
%cmp37 = icmp ne i16 %conv36, 0
br i1 %cmp37, label %if.then39, label %if.else41
if.then39: ; preds = %if.end35
%15 = load i8, i8* @BOSS_eyes, align 1
%dec40 = add i8 %15, -1
store i8 %dec40, i8* @BOSS_eyes, align 1
store i8 18, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 0), align 1
br label %if.end42
if.else41: ; preds = %if.end35
store i8 17, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 0), align 1
br label %if.end42
if.end42: ; preds = %if.else41, %if.then39
%16 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 3), align 1
%conv43 = zext i8 %16 to i16
%cmp44 = icmp sgt i16 %conv43, 200
br i1 %cmp44, label %if.then46, label %if.end48
if.then46: ; preds = %if.end42
%17 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 6), align 1
%inc47 = add i8 %17, 1
store i8 %inc47, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 6), align 1
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 7), align 1
br label %if.end48
if.end48: ; preds = %if.then46, %if.end42
br label %sw.epilog
sw.bb49: ; preds = %entry
store i8 18, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 0), align 1
%18 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 7), align 1
%conv50 = zext i8 %18 to i16
%cmp51 = icmp sgt i16 %conv50, 10
br i1 %cmp51, label %if.then53, label %if.end55
if.then53: ; preds = %sw.bb49
%19 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 6), align 1
%inc54 = add i8 %19, 1
store i8 %inc54, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 6), align 1
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 7), align 1
call void @Spawn_Lasers()
br label %if.end55
if.end55: ; preds = %if.then53, %sw.bb49
br label %sw.epilog
sw.bb56: ; preds = %entry
store i8 17, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 0), align 1
%20 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 3), align 1
%dec57 = add i8 %20, -1
store i8 %dec57, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 3), align 1
%21 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 3), align 1
%conv58 = zext i8 %21 to i16
%add = add nsw i16 %conv58, 16
%22 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 3), align 1
%conv59 = zext i8 %22 to i16
%cmp60 = icmp slt i16 %add, %conv59
br i1 %cmp60, label %if.then66, label %lor.lhs.false62
lor.lhs.false62: ; preds = %sw.bb56
%23 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 3), align 1
%conv63 = zext i8 %23 to i16
%cmp64 = icmp slt i16 %conv63, 10
br i1 %cmp64, label %if.then66, label %if.end68
if.then66: ; preds = %lor.lhs.false62, %sw.bb56
%24 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 6), align 1
%inc67 = add i8 %24, 1
store i8 %inc67, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 6), align 1
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 7), align 1
br label %if.end68
if.end68: ; preds = %if.then66, %lor.lhs.false62
br label %sw.epilog
sw.bb69: ; preds = %entry
store i8 18, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 0), align 1
%25 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 7), align 1
%conv70 = zext i8 %25 to i16
%cmp71 = icmp sgt i16 %conv70, 10
br i1 %cmp71, label %if.then73, label %if.end75
if.then73: ; preds = %sw.bb69
%26 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 6), align 1
%inc74 = add i8 %26, 1
store i8 %inc74, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 6), align 1
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 7), align 1
br label %if.end75
if.end75: ; preds = %if.then73, %sw.bb69
br label %sw.epilog
sw.bb76: ; preds = %entry
store i8 17, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 0), align 1
%27 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 2), align 1
%conv77 = zext i8 %27 to i16
%add78 = add nsw i16 %conv77, 2
%conv79 = trunc i16 %add78 to i8
store i8 %conv79, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 2), align 1
%28 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 2), align 1
%conv80 = zext i8 %28 to i16
%cmp81 = icmp sgt i16 %conv80, 190
br i1 %cmp81, label %if.then83, label %if.end85
if.then83: ; preds = %sw.bb76
%29 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 6), align 1
%inc84 = add i8 %29, 1
store i8 %inc84, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 6), align 1
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 7), align 1
br label %if.end85
if.end85: ; preds = %if.then83, %sw.bb76
br label %sw.epilog
sw.bb86: ; preds = %entry
%30 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 2), align 1
%dec87 = add i8 %30, -1
store i8 %dec87, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 2), align 1
%31 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 7), align 1
%conv88 = zext i8 %31 to i16
%cmp89 = icmp eq i16 %conv88, 60
br i1 %cmp89, label %if.then91, label %if.end92
if.then91: ; preds = %sw.bb86
call void @Spawn_Lasers()
store i8 8, i8* @BOSS_eyes, align 1
br label %if.end92
if.end92: ; preds = %if.then91, %sw.bb86
%32 = load i8, i8* @BOSS_eyes, align 1
%conv93 = zext i8 %32 to i16
%cmp94 = icmp ne i16 %conv93, 0
br i1 %cmp94, label %if.then96, label %if.else98
if.then96: ; preds = %if.end92
%33 = load i8, i8* @BOSS_eyes, align 1
%dec97 = add i8 %33, -1
store i8 %dec97, i8* @BOSS_eyes, align 1
store i8 18, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 0), align 1
br label %if.end99
if.else98: ; preds = %if.end92
store i8 17, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 0), align 1
br label %if.end99
if.end99: ; preds = %if.else98, %if.then96
%34 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 2), align 1
%conv100 = zext i8 %34 to i16
%cmp101 = icmp eq i16 %conv100, 80
br i1 %cmp101, label %if.then103, label %if.end104
if.then103: ; preds = %if.end99
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 6), align 1
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 7), align 1
br label %if.end104
if.end104: ; preds = %if.then103, %if.end99
br label %sw.epilog
sw.epilog: ; preds = %entry, %if.end104, %if.end85, %if.end75, %if.end68, %if.end55, %if.end48, %if.end24, %if.end17
call void @Draw_Sprites(%struct.ENEMY* @BOSS)
ret void
}
declare void @Reset() #1
; Function Attrs: nounwind
define void @Turn_On_Victory_Sprites() #0 {
entry:
store i8 16, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @dummy, i32 0, i32 0), align 1
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @dummy, i32 0, i32 1), align 1
store i8 96, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @dummy, i32 0, i32 3), align 1
store i8 112, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @dummy, i32 0, i32 2), align 1
call void @Draw_Sprites(%struct.ENEMY* @dummy)
ret void
}
declare void @UnRLE(i8*) #1
; Function Attrs: nounwind
define void @Keep_Loop() #0 {
entry:
br label %while.body
while.body: ; preds = %entry, %if.end39
br label %while.cond1
while.cond1: ; preds = %while.body3, %while.body
%0 = load i8, i8* @NMI_flag, align 1
%conv = zext i8 %0 to i16
%cmp = icmp eq i16 %conv, 0
br i1 %cmp, label %while.body3, label %while.end
while.body3: ; preds = %while.cond1
br label %while.cond1
while.end: ; preds = %while.cond1
%1 = load i8, i8* @Selection, align 1
%conv4 = zext i8 %1 to i16
%cmp5 = icmp eq i16 %conv4, 0
br i1 %cmp5, label %if.then, label %if.else
if.then: ; preds = %while.end
store i8 87, i8* getelementptr inbounds ([256 x i8], [256 x i8]* @SPRITES, i16 0, i16 0), align 1
br label %if.end
if.else: ; preds = %while.end
store i8 103, i8* getelementptr inbounds ([256 x i8], [256 x i8]* @SPRITES, i16 0, i16 0), align 1
br label %if.end
if.end: ; preds = %if.else, %if.then
store i8 13, i8* getelementptr inbounds ([256 x i8], [256 x i8]* @SPRITES, i16 0, i16 1), align 1
store i8 0, i8* getelementptr inbounds ([256 x i8], [256 x i8]* @SPRITES, i16 0, i16 2), align 1
store i8 80, i8* getelementptr inbounds ([256 x i8], [256 x i8]* @SPRITES, i16 0, i16 3), align 1
call void @Get_Input()
%2 = load i8, i8* @joypad1old, align 1
%conv7 = zext i8 %2 to i16
%and = and i16 %conv7, 8
%cmp8 = icmp ne i16 %and, 0
br i1 %cmp8, label %if.then10, label %if.end11
if.then10: ; preds = %if.end
store i8 0, i8* @Selection, align 1
br label %if.end11
if.end11: ; preds = %if.then10, %if.end
%3 = load i8, i8* @joypad1old, align 1
%conv12 = zext i8 %3 to i16
%and13 = and i16 %conv12, 4
%cmp14 = icmp ne i16 %and13, 0
br i1 %cmp14, label %if.then16, label %if.end17
if.then16: ; preds = %if.end11
store i8 1, i8* @Selection, align 1
br label %if.end17
if.end17: ; preds = %if.then16, %if.end11
%4 = load i8, i8* @joypad1old, align 1
%conv18 = zext i8 %4 to i16
%and19 = and i16 %conv18, 16
%cmp20 = icmp eq i16 %and19, 0
br i1 %cmp20, label %land.lhs.true, label %if.end39
land.lhs.true: ; preds = %if.end17
%5 = load i8, i8* @joypad1, align 1
%conv22 = zext i8 %5 to i16
%and23 = and i16 %conv22, 16
%cmp24 = icmp ne i16 %and23, 0
br i1 %cmp24, label %if.then26, label %if.end39
if.then26: ; preds = %land.lhs.true
store i8 0, i8* @NMI_flag, align 1
br label %while.cond27
while.cond27: ; preds = %while.body31, %if.then26
%6 = load i8, i8* @NMI_flag, align 1
%conv28 = zext i8 %6 to i16
%cmp29 = icmp eq i16 %conv28, 0
br i1 %cmp29, label %while.body31, label %while.end32
while.body31: ; preds = %while.cond27
br label %while.cond27
while.end32: ; preds = %while.cond27
%7 = load i8, i8* @Selection, align 1
%conv33 = zext i8 %7 to i16
%cmp34 = icmp eq i16 %conv33, 0
br i1 %cmp34, label %if.then36, label %if.else37
if.then36: ; preds = %while.end32
call void @Reset_Keep_Score()
br label %if.end38
if.else37: ; preds = %while.end32
call void @Reset()
br label %if.end38
if.end38: ; preds = %if.else37, %if.then36
br label %if.end39
if.end39: ; preds = %if.end38, %land.lhs.true, %if.end17
call void @Music_Update()
store i8 0, i8* @NMI_flag, align 1
br label %while.body
return: ; No predecessors!
ret void
}
declare void @Reset_Keep_Score() #1
; Function Attrs: nounwind
define void @collision_Test2() #0 {
entry:
%0 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 3), align 1
store i8 %0, i8* @objectA_x, align 1
%1 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 2), align 1
store i8 %1, i8* @objectA_y, align 1
store i8 15, i8* @objectA_width, align 1
store i8 15, i8* @objectA_height, align 1
store i8 15, i8* @objectB_width, align 1
store i8 15, i8* @objectB_height, align 1
%2 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY1, i32 0, i32 2), align 1
%conv = zext i8 %2 to i16
%cmp = icmp ne i16 %conv, 0
br i1 %cmp, label %if.then, label %if.end6
if.then: ; preds = %entry
%3 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY1, i32 0, i32 2), align 1
store i8 %3, i8* @objectB_y, align 1
%4 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY1, i32 0, i32 3), align 1
store i8 %4, i8* @objectB_x, align 1
call void @Hitbox()
%5 = load i8, i8* @collision, align 1
%conv2 = zext i8 %5 to i16
%cmp3 = icmp ne i16 %conv2, 0
br i1 %cmp3, label %if.then5, label %if.end
if.then5: ; preds = %if.then
%6 = load i8, i8* @injury_Timer, align 1
%inc = add i8 %6, 1
store i8 %inc, i8* @injury_Timer, align 1
%7 = load i8, i8* @Lives, align 1
%dec = add i8 %7, -1
store i8 %dec, i8* @Lives, align 1
call void @Play_Fx(i8 zeroext 2)
br label %if.end186
if.end: ; preds = %if.then
br label %if.end6
if.end6: ; preds = %if.end, %entry
%8 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY2, i32 0, i32 2), align 1
%conv7 = zext i8 %8 to i16
%cmp8 = icmp ne i16 %conv7, 0
br i1 %cmp8, label %if.then10, label %if.end18
if.then10: ; preds = %if.end6
%9 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY2, i32 0, i32 2), align 1
store i8 %9, i8* @objectB_y, align 1
%10 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY2, i32 0, i32 3), align 1
store i8 %10, i8* @objectB_x, align 1
call void @Hitbox()
%11 = load i8, i8* @collision, align 1
%conv11 = zext i8 %11 to i16
%cmp12 = icmp ne i16 %conv11, 0
br i1 %cmp12, label %if.then14, label %if.end17
if.then14: ; preds = %if.then10
%12 = load i8, i8* @injury_Timer, align 1
%inc15 = add i8 %12, 1
store i8 %inc15, i8* @injury_Timer, align 1
%13 = load i8, i8* @Lives, align 1
%dec16 = add i8 %13, -1
store i8 %dec16, i8* @Lives, align 1
call void @Play_Fx(i8 zeroext 2)
br label %if.end186
if.end17: ; preds = %if.then10
br label %if.end18
if.end18: ; preds = %if.end17, %if.end6
%14 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY3, i32 0, i32 2), align 1
%conv19 = zext i8 %14 to i16
%cmp20 = icmp ne i16 %conv19, 0
br i1 %cmp20, label %if.then22, label %if.end30
if.then22: ; preds = %if.end18
%15 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY3, i32 0, i32 2), align 1
store i8 %15, i8* @objectB_y, align 1
%16 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY3, i32 0, i32 3), align 1
store i8 %16, i8* @objectB_x, align 1
call void @Hitbox()
%17 = load i8, i8* @collision, align 1
%conv23 = zext i8 %17 to i16
%cmp24 = icmp ne i16 %conv23, 0
br i1 %cmp24, label %if.then26, label %if.end29
if.then26: ; preds = %if.then22
%18 = load i8, i8* @injury_Timer, align 1
%inc27 = add i8 %18, 1
store i8 %inc27, i8* @injury_Timer, align 1
%19 = load i8, i8* @Lives, align 1
%dec28 = add i8 %19, -1
store i8 %dec28, i8* @Lives, align 1
call void @Play_Fx(i8 zeroext 2)
br label %if.end186
if.end29: ; preds = %if.then22
br label %if.end30
if.end30: ; preds = %if.end29, %if.end18
%20 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY4, i32 0, i32 2), align 1
%conv31 = zext i8 %20 to i16
%cmp32 = icmp ne i16 %conv31, 0
br i1 %cmp32, label %if.then34, label %if.end42
if.then34: ; preds = %if.end30
%21 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY4, i32 0, i32 2), align 1
store i8 %21, i8* @objectB_y, align 1
%22 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY4, i32 0, i32 3), align 1
store i8 %22, i8* @objectB_x, align 1
call void @Hitbox()
%23 = load i8, i8* @collision, align 1
%conv35 = zext i8 %23 to i16
%cmp36 = icmp ne i16 %conv35, 0
br i1 %cmp36, label %if.then38, label %if.end41
if.then38: ; preds = %if.then34
%24 = load i8, i8* @injury_Timer, align 1
%inc39 = add i8 %24, 1
store i8 %inc39, i8* @injury_Timer, align 1
%25 = load i8, i8* @Lives, align 1
%dec40 = add i8 %25, -1
store i8 %dec40, i8* @Lives, align 1
call void @Play_Fx(i8 zeroext 2)
br label %if.end186
if.end41: ; preds = %if.then34
br label %if.end42
if.end42: ; preds = %if.end41, %if.end30
%26 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY5, i32 0, i32 2), align 1
%conv43 = zext i8 %26 to i16
%cmp44 = icmp ne i16 %conv43, 0
br i1 %cmp44, label %if.then46, label %if.end54
if.then46: ; preds = %if.end42
%27 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY5, i32 0, i32 2), align 1
store i8 %27, i8* @objectB_y, align 1
%28 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY5, i32 0, i32 3), align 1
store i8 %28, i8* @objectB_x, align 1
call void @Hitbox()
%29 = load i8, i8* @collision, align 1
%conv47 = zext i8 %29 to i16
%cmp48 = icmp ne i16 %conv47, 0
br i1 %cmp48, label %if.then50, label %if.end53
if.then50: ; preds = %if.then46
%30 = load i8, i8* @injury_Timer, align 1
%inc51 = add i8 %30, 1
store i8 %inc51, i8* @injury_Timer, align 1
%31 = load i8, i8* @Lives, align 1
%dec52 = add i8 %31, -1
store i8 %dec52, i8* @Lives, align 1
call void @Play_Fx(i8 zeroext 2)
br label %if.end186
if.end53: ; preds = %if.then46
br label %if.end54
if.end54: ; preds = %if.end53, %if.end42
%32 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY6, i32 0, i32 2), align 1
%conv55 = zext i8 %32 to i16
%cmp56 = icmp ne i16 %conv55, 0
br i1 %cmp56, label %if.then58, label %if.end66
if.then58: ; preds = %if.end54
%33 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY6, i32 0, i32 2), align 1
store i8 %33, i8* @objectB_y, align 1
%34 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY6, i32 0, i32 3), align 1
store i8 %34, i8* @objectB_x, align 1
call void @Hitbox()
%35 = load i8, i8* @collision, align 1
%conv59 = zext i8 %35 to i16
%cmp60 = icmp ne i16 %conv59, 0
br i1 %cmp60, label %if.then62, label %if.end65
if.then62: ; preds = %if.then58
%36 = load i8, i8* @injury_Timer, align 1
%inc63 = add i8 %36, 1
store i8 %inc63, i8* @injury_Timer, align 1
%37 = load i8, i8* @Lives, align 1
%dec64 = add i8 %37, -1
store i8 %dec64, i8* @Lives, align 1
call void @Play_Fx(i8 zeroext 2)
br label %if.end186
if.end65: ; preds = %if.then58
br label %if.end66
if.end66: ; preds = %if.end65, %if.end54
%38 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY7, i32 0, i32 2), align 1
%conv67 = zext i8 %38 to i16
%cmp68 = icmp ne i16 %conv67, 0
br i1 %cmp68, label %if.then70, label %if.end78
if.then70: ; preds = %if.end66
%39 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY7, i32 0, i32 2), align 1
store i8 %39, i8* @objectB_y, align 1
%40 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY7, i32 0, i32 3), align 1
store i8 %40, i8* @objectB_x, align 1
call void @Hitbox()
%41 = load i8, i8* @collision, align 1
%conv71 = zext i8 %41 to i16
%cmp72 = icmp ne i16 %conv71, 0
br i1 %cmp72, label %if.then74, label %if.end77
if.then74: ; preds = %if.then70
%42 = load i8, i8* @injury_Timer, align 1
%inc75 = add i8 %42, 1
store i8 %inc75, i8* @injury_Timer, align 1
%43 = load i8, i8* @Lives, align 1
%dec76 = add i8 %43, -1
store i8 %dec76, i8* @Lives, align 1
call void @Play_Fx(i8 zeroext 2)
br label %if.end186
if.end77: ; preds = %if.then70
br label %if.end78
if.end78: ; preds = %if.end77, %if.end66
%44 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY8, i32 0, i32 2), align 1
%conv79 = zext i8 %44 to i16
%cmp80 = icmp ne i16 %conv79, 0
br i1 %cmp80, label %if.then82, label %if.end90
if.then82: ; preds = %if.end78
%45 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY8, i32 0, i32 2), align 1
store i8 %45, i8* @objectB_y, align 1
%46 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY8, i32 0, i32 3), align 1
store i8 %46, i8* @objectB_x, align 1
call void @Hitbox()
%47 = load i8, i8* @collision, align 1
%conv83 = zext i8 %47 to i16
%cmp84 = icmp ne i16 %conv83, 0
br i1 %cmp84, label %if.then86, label %if.end89
if.then86: ; preds = %if.then82
%48 = load i8, i8* @injury_Timer, align 1
%inc87 = add i8 %48, 1
store i8 %inc87, i8* @injury_Timer, align 1
%49 = load i8, i8* @Lives, align 1
%dec88 = add i8 %49, -1
store i8 %dec88, i8* @Lives, align 1
call void @Play_Fx(i8 zeroext 2)
br label %if.end186
if.end89: ; preds = %if.then82
br label %if.end90
if.end90: ; preds = %if.end89, %if.end78
store i8 7, i8* @objectB_width, align 1
store i8 7, i8* @objectB_height, align 1
%50 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet1, i32 0, i32 0), align 1
%conv91 = zext i8 %50 to i16
%cmp92 = icmp ne i16 %conv91, 0
br i1 %cmp92, label %if.then94, label %if.end102
if.then94: ; preds = %if.end90
%51 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet1, i32 0, i32 0), align 1
store i8 %51, i8* @objectB_y, align 1
%52 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet1, i32 0, i32 4), align 1
store i8 %52, i8* @objectB_x, align 1
call void @Hitbox()
%53 = load i8, i8* @collision, align 1
%conv95 = zext i8 %53 to i16
%cmp96 = icmp ne i16 %conv95, 0
br i1 %cmp96, label %if.then98, label %if.end101
if.then98: ; preds = %if.then94
%54 = load i8, i8* @injury_Timer, align 1
%inc99 = add i8 %54, 1
store i8 %inc99, i8* @injury_Timer, align 1
%55 = load i8, i8* @Lives, align 1
%dec100 = add i8 %55, -1
store i8 %dec100, i8* @Lives, align 1
call void @Play_Fx(i8 zeroext 2)
br label %if.end186
if.end101: ; preds = %if.then94
br label %if.end102
if.end102: ; preds = %if.end101, %if.end90
%56 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet2, i32 0, i32 0), align 1
%conv103 = zext i8 %56 to i16
%cmp104 = icmp ne i16 %conv103, 0
br i1 %cmp104, label %if.then106, label %if.end114
if.then106: ; preds = %if.end102
%57 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet2, i32 0, i32 0), align 1
store i8 %57, i8* @objectB_y, align 1
%58 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet2, i32 0, i32 4), align 1
store i8 %58, i8* @objectB_x, align 1
call void @Hitbox()
%59 = load i8, i8* @collision, align 1
%conv107 = zext i8 %59 to i16
%cmp108 = icmp ne i16 %conv107, 0
br i1 %cmp108, label %if.then110, label %if.end113
if.then110: ; preds = %if.then106
%60 = load i8, i8* @injury_Timer, align 1
%inc111 = add i8 %60, 1
store i8 %inc111, i8* @injury_Timer, align 1
%61 = load i8, i8* @Lives, align 1
%dec112 = add i8 %61, -1
store i8 %dec112, i8* @Lives, align 1
call void @Play_Fx(i8 zeroext 2)
br label %if.end186
if.end113: ; preds = %if.then106
br label %if.end114
if.end114: ; preds = %if.end113, %if.end102
%62 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet3, i32 0, i32 0), align 1
%conv115 = zext i8 %62 to i16
%cmp116 = icmp ne i16 %conv115, 0
br i1 %cmp116, label %if.then118, label %if.end126
if.then118: ; preds = %if.end114
%63 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet3, i32 0, i32 0), align 1
store i8 %63, i8* @objectB_y, align 1
%64 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet3, i32 0, i32 4), align 1
store i8 %64, i8* @objectB_x, align 1
call void @Hitbox()
%65 = load i8, i8* @collision, align 1
%conv119 = zext i8 %65 to i16
%cmp120 = icmp ne i16 %conv119, 0
br i1 %cmp120, label %if.then122, label %if.end125
if.then122: ; preds = %if.then118
%66 = load i8, i8* @injury_Timer, align 1
%inc123 = add i8 %66, 1
store i8 %inc123, i8* @injury_Timer, align 1
%67 = load i8, i8* @Lives, align 1
%dec124 = add i8 %67, -1
store i8 %dec124, i8* @Lives, align 1
call void @Play_Fx(i8 zeroext 2)
br label %if.end186
if.end125: ; preds = %if.then118
br label %if.end126
if.end126: ; preds = %if.end125, %if.end114
%68 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet4, i32 0, i32 0), align 1
%conv127 = zext i8 %68 to i16
%cmp128 = icmp ne i16 %conv127, 0
br i1 %cmp128, label %if.then130, label %if.end138
if.then130: ; preds = %if.end126
%69 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet4, i32 0, i32 0), align 1
store i8 %69, i8* @objectB_y, align 1
%70 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet4, i32 0, i32 4), align 1
store i8 %70, i8* @objectB_x, align 1
call void @Hitbox()
%71 = load i8, i8* @collision, align 1
%conv131 = zext i8 %71 to i16
%cmp132 = icmp ne i16 %conv131, 0
br i1 %cmp132, label %if.then134, label %if.end137
if.then134: ; preds = %if.then130
%72 = load i8, i8* @injury_Timer, align 1
%inc135 = add i8 %72, 1
store i8 %inc135, i8* @injury_Timer, align 1
%73 = load i8, i8* @Lives, align 1
%dec136 = add i8 %73, -1
store i8 %dec136, i8* @Lives, align 1
call void @Play_Fx(i8 zeroext 2)
br label %if.end186
if.end137: ; preds = %if.then130
br label %if.end138
if.end138: ; preds = %if.end137, %if.end126
%74 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet5, i32 0, i32 0), align 1
%conv139 = zext i8 %74 to i16
%cmp140 = icmp ne i16 %conv139, 0
br i1 %cmp140, label %if.then142, label %if.end150
if.then142: ; preds = %if.end138
%75 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet5, i32 0, i32 0), align 1
store i8 %75, i8* @objectB_y, align 1
%76 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet5, i32 0, i32 4), align 1
store i8 %76, i8* @objectB_x, align 1
call void @Hitbox()
%77 = load i8, i8* @collision, align 1
%conv143 = zext i8 %77 to i16
%cmp144 = icmp ne i16 %conv143, 0
br i1 %cmp144, label %if.then146, label %if.end149
if.then146: ; preds = %if.then142
%78 = load i8, i8* @injury_Timer, align 1
%inc147 = add i8 %78, 1
store i8 %inc147, i8* @injury_Timer, align 1
%79 = load i8, i8* @Lives, align 1
%dec148 = add i8 %79, -1
store i8 %dec148, i8* @Lives, align 1
call void @Play_Fx(i8 zeroext 2)
br label %if.end186
if.end149: ; preds = %if.then142
br label %if.end150
if.end150: ; preds = %if.end149, %if.end138
%80 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet6, i32 0, i32 0), align 1
%conv151 = zext i8 %80 to i16
%cmp152 = icmp ne i16 %conv151, 0
br i1 %cmp152, label %if.then154, label %if.end162
if.then154: ; preds = %if.end150
%81 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet6, i32 0, i32 0), align 1
store i8 %81, i8* @objectB_y, align 1
%82 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet6, i32 0, i32 4), align 1
store i8 %82, i8* @objectB_x, align 1
call void @Hitbox()
%83 = load i8, i8* @collision, align 1
%conv155 = zext i8 %83 to i16
%cmp156 = icmp ne i16 %conv155, 0
br i1 %cmp156, label %if.then158, label %if.end161
if.then158: ; preds = %if.then154
%84 = load i8, i8* @injury_Timer, align 1
%inc159 = add i8 %84, 1
store i8 %inc159, i8* @injury_Timer, align 1
%85 = load i8, i8* @Lives, align 1
%dec160 = add i8 %85, -1
store i8 %dec160, i8* @Lives, align 1
call void @Play_Fx(i8 zeroext 2)
br label %if.end186
if.end161: ; preds = %if.then154
br label %if.end162
if.end162: ; preds = %if.end161, %if.end150
%86 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet7, i32 0, i32 0), align 1
%conv163 = zext i8 %86 to i16
%cmp164 = icmp ne i16 %conv163, 0
br i1 %cmp164, label %if.then166, label %if.end174
if.then166: ; preds = %if.end162
%87 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet7, i32 0, i32 0), align 1
store i8 %87, i8* @objectB_y, align 1
%88 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet7, i32 0, i32 4), align 1
store i8 %88, i8* @objectB_x, align 1
call void @Hitbox()
%89 = load i8, i8* @collision, align 1
%conv167 = zext i8 %89 to i16
%cmp168 = icmp ne i16 %conv167, 0
br i1 %cmp168, label %if.then170, label %if.end173
if.then170: ; preds = %if.then166
%90 = load i8, i8* @injury_Timer, align 1
%inc171 = add i8 %90, 1
store i8 %inc171, i8* @injury_Timer, align 1
%91 = load i8, i8* @Lives, align 1
%dec172 = add i8 %91, -1
store i8 %dec172, i8* @Lives, align 1
call void @Play_Fx(i8 zeroext 2)
br label %if.end186
if.end173: ; preds = %if.then166
br label %if.end174
if.end174: ; preds = %if.end173, %if.end162
%92 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet8, i32 0, i32 0), align 1
%conv175 = zext i8 %92 to i16
%cmp176 = icmp ne i16 %conv175, 0
br i1 %cmp176, label %if.then178, label %if.end186
if.then178: ; preds = %if.end174
%93 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet8, i32 0, i32 0), align 1
store i8 %93, i8* @objectB_y, align 1
%94 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet8, i32 0, i32 4), align 1
store i8 %94, i8* @objectB_x, align 1
call void @Hitbox()
%95 = load i8, i8* @collision, align 1
%conv179 = zext i8 %95 to i16
%cmp180 = icmp ne i16 %conv179, 0
br i1 %cmp180, label %if.then182, label %if.end185
if.then182: ; preds = %if.then178
%96 = load i8, i8* @injury_Timer, align 1
%inc183 = add i8 %96, 1
store i8 %inc183, i8* @injury_Timer, align 1
%97 = load i8, i8* @Lives, align 1
%dec184 = add i8 %97, -1
store i8 %dec184, i8* @Lives, align 1
call void @Play_Fx(i8 zeroext 2)
br label %if.end186
if.end185: ; preds = %if.then178
br label %if.end186
if.end186: ; preds = %if.then5, %if.then14, %if.then26, %if.then38, %if.then50, %if.then62, %if.then74, %if.then86, %if.then98, %if.then110, %if.then122, %if.then134, %if.then146, %if.then158, %if.then170, %if.then182, %if.end185, %if.end174
ret void
}
; Function Attrs: nounwind
define void @collision_Test3() #0 {
entry:
%0 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 3), align 1
store i8 %0, i8* @objectA_x, align 1
%1 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 2), align 1
store i8 %1, i8* @objectA_y, align 1
store i8 15, i8* @objectA_width, align 1
store i8 15, i8* @objectA_height, align 1
%2 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 2), align 1
store i8 %2, i8* @objectB_y, align 1
%3 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 3), align 1
store i8 %3, i8* @objectB_x, align 1
store i8 47, i8* @objectB_width, align 1
store i8 39, i8* @objectB_height, align 1
call void @Hitbox()
%4 = load i8, i8* @collision, align 1
%conv = zext i8 %4 to i16
%cmp = icmp ne i16 %conv, 0
br i1 %cmp, label %if.then, label %if.end
if.then: ; preds = %entry
%5 = load i8, i8* @injury_Timer, align 1
%inc = add i8 %5, 1
store i8 %inc, i8* @injury_Timer, align 1
%6 = load i8, i8* @Lives, align 1
%dec = add i8 %6, -1
store i8 %dec, i8* @Lives, align 1
call void @Play_Fx(i8 zeroext 2)
br label %if.end49
if.end: ; preds = %entry
store i8 7, i8* @objectB_width, align 1
store i8 15, i8* @objectB_height, align 1
%7 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER1, i32 0, i32 2), align 1
%conv2 = zext i8 %7 to i16
%cmp3 = icmp ne i16 %conv2, 0
br i1 %cmp3, label %if.then5, label %if.end13
if.then5: ; preds = %if.end
%8 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER1, i32 0, i32 2), align 1
store i8 %8, i8* @objectB_y, align 1
%9 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER1, i32 0, i32 3), align 1
store i8 %9, i8* @objectB_x, align 1
call void @Hitbox()
%10 = load i8, i8* @collision, align 1
%conv6 = zext i8 %10 to i16
%cmp7 = icmp ne i16 %conv6, 0
br i1 %cmp7, label %if.then9, label %if.end12
if.then9: ; preds = %if.then5
%11 = load i8, i8* @injury_Timer, align 1
%inc10 = add i8 %11, 1
store i8 %inc10, i8* @injury_Timer, align 1
%12 = load i8, i8* @Lives, align 1
%dec11 = add i8 %12, -1
store i8 %dec11, i8* @Lives, align 1
call void @Play_Fx(i8 zeroext 2)
br label %if.end49
if.end12: ; preds = %if.then5
br label %if.end13
if.end13: ; preds = %if.end12, %if.end
%13 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER2, i32 0, i32 2), align 1
%conv14 = zext i8 %13 to i16
%cmp15 = icmp ne i16 %conv14, 0
br i1 %cmp15, label %if.then17, label %if.end25
if.then17: ; preds = %if.end13
%14 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER2, i32 0, i32 2), align 1
store i8 %14, i8* @objectB_y, align 1
%15 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER2, i32 0, i32 3), align 1
store i8 %15, i8* @objectB_x, align 1
call void @Hitbox()
%16 = load i8, i8* @collision, align 1
%conv18 = zext i8 %16 to i16
%cmp19 = icmp ne i16 %conv18, 0
br i1 %cmp19, label %if.then21, label %if.end24
if.then21: ; preds = %if.then17
%17 = load i8, i8* @injury_Timer, align 1
%inc22 = add i8 %17, 1
store i8 %inc22, i8* @injury_Timer, align 1
%18 = load i8, i8* @Lives, align 1
%dec23 = add i8 %18, -1
store i8 %dec23, i8* @Lives, align 1
call void @Play_Fx(i8 zeroext 2)
br label %if.end49
if.end24: ; preds = %if.then17
br label %if.end25
if.end25: ; preds = %if.end24, %if.end13
%19 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER3, i32 0, i32 2), align 1
%conv26 = zext i8 %19 to i16
%cmp27 = icmp ne i16 %conv26, 0
br i1 %cmp27, label %if.then29, label %if.end37
if.then29: ; preds = %if.end25
%20 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER3, i32 0, i32 2), align 1
store i8 %20, i8* @objectB_y, align 1
%21 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER3, i32 0, i32 3), align 1
store i8 %21, i8* @objectB_x, align 1
call void @Hitbox()
%22 = load i8, i8* @collision, align 1
%conv30 = zext i8 %22 to i16
%cmp31 = icmp ne i16 %conv30, 0
br i1 %cmp31, label %if.then33, label %if.end36
if.then33: ; preds = %if.then29
%23 = load i8, i8* @injury_Timer, align 1
%inc34 = add i8 %23, 1
store i8 %inc34, i8* @injury_Timer, align 1
%24 = load i8, i8* @Lives, align 1
%dec35 = add i8 %24, -1
store i8 %dec35, i8* @Lives, align 1
call void @Play_Fx(i8 zeroext 2)
br label %if.end49
if.end36: ; preds = %if.then29
br label %if.end37
if.end37: ; preds = %if.end36, %if.end25
%25 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER4, i32 0, i32 2), align 1
%conv38 = zext i8 %25 to i16
%cmp39 = icmp ne i16 %conv38, 0
br i1 %cmp39, label %if.then41, label %if.end49
if.then41: ; preds = %if.end37
%26 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER4, i32 0, i32 2), align 1
store i8 %26, i8* @objectB_y, align 1
%27 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER4, i32 0, i32 3), align 1
store i8 %27, i8* @objectB_x, align 1
call void @Hitbox()
%28 = load i8, i8* @collision, align 1
%conv42 = zext i8 %28 to i16
%cmp43 = icmp ne i16 %conv42, 0
br i1 %cmp43, label %if.then45, label %if.end48
if.then45: ; preds = %if.then41
%29 = load i8, i8* @injury_Timer, align 1
%inc46 = add i8 %29, 1
store i8 %inc46, i8* @injury_Timer, align 1
%30 = load i8, i8* @Lives, align 1
%dec47 = add i8 %30, -1
store i8 %dec47, i8* @Lives, align 1
call void @Play_Fx(i8 zeroext 2)
br label %if.end49
if.end48: ; preds = %if.then41
br label %if.end49
if.end49: ; preds = %if.then, %if.then9, %if.then21, %if.then33, %if.then45, %if.end48, %if.end37
ret void
}
declare void @Draw_Sprites(%struct.ENEMY*) #1
; Function Attrs: nounwind
define void @spawn_bullets() #0 {
entry:
store i8 16, i8* @bullet_Wait, align 1
%0 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet1, i32 0, i32 0), align 1
%conv = zext i8 %0 to i16
%cmp = icmp eq i16 %conv, 0
br i1 %cmp, label %if.then, label %if.end
if.then: ; preds = %entry
%1 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 3), align 1
store i8 %1, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet1, i32 0, i32 4), align 1
%2 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 2), align 1
store i8 %2, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet1, i32 0, i32 0), align 1
store i8 -32, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet1, i32 0, i32 6), align 1
store i8 -32, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet1, i32 0, i32 2), align 1
call void @Play_Fx(i8 zeroext 0)
br label %return
if.end: ; preds = %entry
%3 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet2, i32 0, i32 0), align 1
%conv2 = zext i8 %3 to i16
%cmp3 = icmp eq i16 %conv2, 0
br i1 %cmp3, label %if.then5, label %if.end6
if.then5: ; preds = %if.end
%4 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 3), align 1
store i8 %4, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet2, i32 0, i32 4), align 1
%5 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 2), align 1
store i8 %5, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet2, i32 0, i32 0), align 1
store i8 -32, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet2, i32 0, i32 6), align 1
store i8 -32, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet2, i32 0, i32 2), align 1
call void @Play_Fx(i8 zeroext 0)
br label %return
if.end6: ; preds = %if.end
%6 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet3, i32 0, i32 0), align 1
%conv7 = zext i8 %6 to i16
%cmp8 = icmp eq i16 %conv7, 0
br i1 %cmp8, label %if.then10, label %if.end11
if.then10: ; preds = %if.end6
%7 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 3), align 1
store i8 %7, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet3, i32 0, i32 4), align 1
%8 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 2), align 1
store i8 %8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet3, i32 0, i32 0), align 1
store i8 -32, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet3, i32 0, i32 6), align 1
store i8 -32, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet3, i32 0, i32 2), align 1
call void @Play_Fx(i8 zeroext 0)
br label %return
if.end11: ; preds = %if.end6
%9 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet4, i32 0, i32 0), align 1
%conv12 = zext i8 %9 to i16
%cmp13 = icmp eq i16 %conv12, 0
br i1 %cmp13, label %if.then15, label %if.end16
if.then15: ; preds = %if.end11
%10 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 3), align 1
store i8 %10, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet4, i32 0, i32 4), align 1
%11 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 2), align 1
store i8 %11, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet4, i32 0, i32 0), align 1
store i8 -32, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet4, i32 0, i32 6), align 1
store i8 -32, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet4, i32 0, i32 2), align 1
call void @Play_Fx(i8 zeroext 0)
br label %return
if.end16: ; preds = %if.end11
%12 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet5, i32 0, i32 0), align 1
%conv17 = zext i8 %12 to i16
%cmp18 = icmp eq i16 %conv17, 0
br i1 %cmp18, label %if.then20, label %if.end21
if.then20: ; preds = %if.end16
%13 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 3), align 1
store i8 %13, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet5, i32 0, i32 4), align 1
%14 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 2), align 1
store i8 %14, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet5, i32 0, i32 0), align 1
store i8 -32, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet5, i32 0, i32 6), align 1
store i8 -32, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet5, i32 0, i32 2), align 1
call void @Play_Fx(i8 zeroext 0)
br label %return
if.end21: ; preds = %if.end16
%15 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet6, i32 0, i32 0), align 1
%conv22 = zext i8 %15 to i16
%cmp23 = icmp eq i16 %conv22, 0
br i1 %cmp23, label %if.then25, label %if.end26
if.then25: ; preds = %if.end21
%16 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 3), align 1
store i8 %16, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet6, i32 0, i32 4), align 1
%17 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 2), align 1
store i8 %17, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet6, i32 0, i32 0), align 1
store i8 -32, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet6, i32 0, i32 6), align 1
store i8 -32, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @hero_bullet6, i32 0, i32 2), align 1
call void @Play_Fx(i8 zeroext 0)
br label %return
if.end26: ; preds = %if.end21
store i8 32, i8* @bullet_Wait, align 1
br label %return
return: ; preds = %if.end26, %if.then25, %if.then20, %if.then15, %if.then10, %if.then5, %if.then
ret void
}
declare void @Play_Fx(i8 zeroext) #1
declare void @move_bullets(%struct.BULLET*) #1
declare void @move_bullets2(%struct.BULLET*) #1
; Function Attrs: nounwind
define void @Draw_Explosion() #0 {
entry:
%0 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode1, i32 0, i32 2), align 1
%conv = zext i8 %0 to i16
%cmp = icmp ne i16 %conv, 0
br i1 %cmp, label %if.then, label %if.end6
if.then: ; preds = %entry
call void @Draw_Sprites(%struct.ENEMY* @Explode1)
%1 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode1, i32 0, i32 7), align 1
%dec = add i8 %1, -1
store i8 %dec, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode1, i32 0, i32 7), align 1
%2 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode1, i32 0, i32 7), align 1
%conv2 = zext i8 %2 to i16
%cmp3 = icmp eq i16 %conv2, 0
br i1 %cmp3, label %if.then5, label %if.end
if.then5: ; preds = %if.then
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode1, i32 0, i32 2), align 1
br label %if.end
if.end: ; preds = %if.then5, %if.then
br label %if.end6
if.end6: ; preds = %if.end, %entry
%3 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode2, i32 0, i32 2), align 1
%conv7 = zext i8 %3 to i16
%cmp8 = icmp ne i16 %conv7, 0
br i1 %cmp8, label %if.then10, label %if.end17
if.then10: ; preds = %if.end6
call void @Draw_Sprites(%struct.ENEMY* @Explode2)
%4 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode2, i32 0, i32 7), align 1
%dec11 = add i8 %4, -1
store i8 %dec11, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode2, i32 0, i32 7), align 1
%5 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode2, i32 0, i32 7), align 1
%conv12 = zext i8 %5 to i16
%cmp13 = icmp eq i16 %conv12, 0
br i1 %cmp13, label %if.then15, label %if.end16
if.then15: ; preds = %if.then10
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode2, i32 0, i32 2), align 1
br label %if.end16
if.end16: ; preds = %if.then15, %if.then10
br label %if.end17
if.end17: ; preds = %if.end16, %if.end6
%6 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode3, i32 0, i32 2), align 1
%conv18 = zext i8 %6 to i16
%cmp19 = icmp ne i16 %conv18, 0
br i1 %cmp19, label %if.then21, label %if.end28
if.then21: ; preds = %if.end17
call void @Draw_Sprites(%struct.ENEMY* @Explode3)
%7 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode3, i32 0, i32 7), align 1
%dec22 = add i8 %7, -1
store i8 %dec22, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode3, i32 0, i32 7), align 1
%8 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode3, i32 0, i32 7), align 1
%conv23 = zext i8 %8 to i16
%cmp24 = icmp eq i16 %conv23, 0
br i1 %cmp24, label %if.then26, label %if.end27
if.then26: ; preds = %if.then21
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode3, i32 0, i32 2), align 1
br label %if.end27
if.end27: ; preds = %if.then26, %if.then21
br label %if.end28
if.end28: ; preds = %if.end27, %if.end17
%9 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode4, i32 0, i32 2), align 1
%conv29 = zext i8 %9 to i16
%cmp30 = icmp ne i16 %conv29, 0
br i1 %cmp30, label %if.then32, label %if.end39
if.then32: ; preds = %if.end28
call void @Draw_Sprites(%struct.ENEMY* @Explode4)
%10 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode4, i32 0, i32 7), align 1
%dec33 = add i8 %10, -1
store i8 %dec33, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode4, i32 0, i32 7), align 1
%11 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode4, i32 0, i32 7), align 1
%conv34 = zext i8 %11 to i16
%cmp35 = icmp eq i16 %conv34, 0
br i1 %cmp35, label %if.then37, label %if.end38
if.then37: ; preds = %if.then32
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode4, i32 0, i32 2), align 1
br label %if.end38
if.end38: ; preds = %if.then37, %if.then32
br label %if.end39
if.end39: ; preds = %if.end38, %if.end28
ret void
}
; Function Attrs: nounwind
define void @Move_Enemies() #0 {
entry:
%0 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%move = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %0, i32 0, i32 6
%1 = load i8, i8* %move, align 1
store i8 %1, i8* @Current_Move, align 1
%2 = load i8, i8* @Pattern, align 1
%conv = zext i8 %2 to i16
switch i16 %conv, label %sw.epilog363 [
i16 0, label %sw.bb
i16 1, label %sw.bb39
i16 2, label %sw.bb71
i16 3, label %sw.bb105
i16 4, label %sw.bb152
i16 5, label %sw.bb199
i16 6, label %sw.bb255
i16 7, label %sw.bb300
]
sw.bb: ; preds = %entry
%3 = load i8, i8* @Current_Move, align 1
%conv1 = zext i8 %3 to i16
switch i16 %conv1, label %sw.epilog [
i16 0, label %sw.bb2
i16 1, label %sw.bb9
i16 2, label %sw.bb18
i16 3, label %sw.bb30
]
sw.bb2: ; preds = %sw.bb
%4 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %4, i32 0, i32 3
%5 = load i8, i8* %X, align 1
%conv3 = zext i8 %5 to i16
%sub = sub nsw i16 %conv3, 2
%conv4 = trunc i16 %sub to i8
store i8 %conv4, i8* %X, align 1
%6 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X5 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %6, i32 0, i32 3
%7 = load i8, i8* %X5, align 1
%conv6 = zext i8 %7 to i16
%cmp = icmp slt i16 %conv6, 16
br i1 %cmp, label %if.then, label %if.end
if.then: ; preds = %sw.bb2
%8 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%move8 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %8, i32 0, i32 6
store i8 1, i8* %move8, align 1
%9 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%count = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %9, i32 0, i32 7
store i8 0, i8* %count, align 1
br label %if.end
if.end: ; preds = %if.then, %sw.bb2
br label %sw.epilog
sw.bb9: ; preds = %sw.bb
%10 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%count10 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %10, i32 0, i32 7
%11 = load i8, i8* %count10, align 1
%conv11 = zext i8 %11 to i16
%cmp12 = icmp sgt i16 %conv11, 128
br i1 %cmp12, label %if.then14, label %if.end17
if.then14: ; preds = %sw.bb9
%12 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%move15 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %12, i32 0, i32 6
store i8 2, i8* %move15, align 1
%13 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%count16 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %13, i32 0, i32 7
store i8 0, i8* %count16, align 1
br label %if.end17
if.end17: ; preds = %if.then14, %sw.bb9
br label %sw.epilog
sw.bb18: ; preds = %sw.bb
%14 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X19 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %14, i32 0, i32 3
%15 = load i8, i8* %X19, align 1
%conv20 = zext i8 %15 to i16
%add = add nsw i16 %conv20, 2
%conv21 = trunc i16 %add to i8
store i8 %conv21, i8* %X19, align 1
%16 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X22 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %16, i32 0, i32 3
%17 = load i8, i8* %X22, align 1
%conv23 = zext i8 %17 to i16
%cmp24 = icmp sgt i16 %conv23, 224
br i1 %cmp24, label %if.then26, label %if.end29
if.then26: ; preds = %sw.bb18
%18 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%move27 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %18, i32 0, i32 6
store i8 3, i8* %move27, align 1
%19 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%count28 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %19, i32 0, i32 7
store i8 0, i8* %count28, align 1
br label %if.end29
if.end29: ; preds = %if.then26, %sw.bb18
br label %sw.epilog
sw.bb30: ; preds = %sw.bb
%20 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%count31 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %20, i32 0, i32 7
%21 = load i8, i8* %count31, align 1
%conv32 = zext i8 %21 to i16
%cmp33 = icmp sgt i16 %conv32, 128
br i1 %cmp33, label %if.then35, label %if.end38
if.then35: ; preds = %sw.bb30
%22 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%move36 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %22, i32 0, i32 6
store i8 0, i8* %move36, align 1
%23 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%count37 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %23, i32 0, i32 7
store i8 0, i8* %count37, align 1
br label %if.end38
if.end38: ; preds = %if.then35, %sw.bb30
br label %sw.epilog
sw.epilog: ; preds = %sw.bb, %if.end38, %if.end29, %if.end17, %if.end
br label %sw.epilog363
sw.bb39: ; preds = %entry
%24 = load i8, i8* @Current_Move, align 1
%conv40 = zext i8 %24 to i16
switch i16 %conv40, label %sw.epilog70 [
i16 0, label %sw.bb41
i16 1, label %sw.bb53
]
sw.bb41: ; preds = %sw.bb39
%25 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%Y = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %25, i32 0, i32 2
%26 = load i8, i8* %Y, align 1
%conv42 = zext i8 %26 to i16
%add43 = add nsw i16 %conv42, 2
%conv44 = trunc i16 %add43 to i8
store i8 %conv44, i8* %Y, align 1
%27 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%anime = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %27, i32 0, i32 0
store i8 8, i8* %anime, align 1
%28 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%count45 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %28, i32 0, i32 7
%29 = load i8, i8* %count45, align 1
%conv46 = zext i8 %29 to i16
%cmp47 = icmp sgt i16 %conv46, 32
br i1 %cmp47, label %if.then49, label %if.end52
if.then49: ; preds = %sw.bb41
%30 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%move50 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %30, i32 0, i32 6
store i8 1, i8* %move50, align 1
%31 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%count51 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %31, i32 0, i32 7
store i8 0, i8* %count51, align 1
br label %if.end52
if.end52: ; preds = %if.then49, %sw.bb41
br label %sw.epilog70
sw.bb53: ; preds = %sw.bb39
%32 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%Y54 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %32, i32 0, i32 2
%33 = load i8, i8* %Y54, align 1
%conv55 = zext i8 %33 to i16
%add56 = add nsw i16 %conv55, 2
%conv57 = trunc i16 %add56 to i8
store i8 %conv57, i8* %Y54, align 1
%34 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X58 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %34, i32 0, i32 3
%35 = load i8, i8* %X58, align 1
%conv59 = zext i8 %35 to i16
%add60 = add nsw i16 %conv59, 2
%conv61 = trunc i16 %add60 to i8
store i8 %conv61, i8* %X58, align 1
%36 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%anime62 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %36, i32 0, i32 0
store i8 9, i8* %anime62, align 1
%37 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%count63 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %37, i32 0, i32 7
%38 = load i8, i8* %count63, align 1
%conv64 = zext i8 %38 to i16
%cmp65 = icmp sgt i16 %conv64, 21
br i1 %cmp65, label %if.then67, label %if.end69
if.then67: ; preds = %sw.bb53
%39 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%move68 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %39, i32 0, i32 6
store i8 0, i8* %move68, align 1
br label %if.end69
if.end69: ; preds = %if.then67, %sw.bb53
br label %sw.epilog70
sw.epilog70: ; preds = %sw.bb39, %if.end69, %if.end52
br label %sw.epilog363
sw.bb71: ; preds = %entry
%40 = load i8, i8* @Current_Move, align 1
%conv72 = zext i8 %40 to i16
switch i16 %conv72, label %sw.epilog104 [
i16 0, label %sw.bb73
i16 1, label %sw.bb87
]
sw.bb73: ; preds = %sw.bb71
%41 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%Y74 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %41, i32 0, i32 2
%42 = load i8, i8* %Y74, align 1
%conv75 = zext i8 %42 to i16
%add76 = add nsw i16 %conv75, 2
%conv77 = trunc i16 %add76 to i8
store i8 %conv77, i8* %Y74, align 1
%43 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%anime78 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %43, i32 0, i32 0
store i8 8, i8* %anime78, align 1
%44 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%count79 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %44, i32 0, i32 7
%45 = load i8, i8* %count79, align 1
%conv80 = zext i8 %45 to i16
%cmp81 = icmp sgt i16 %conv80, 32
br i1 %cmp81, label %if.then83, label %if.end86
if.then83: ; preds = %sw.bb73
%46 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%move84 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %46, i32 0, i32 6
store i8 1, i8* %move84, align 1
%47 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%count85 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %47, i32 0, i32 7
store i8 0, i8* %count85, align 1
br label %if.end86
if.end86: ; preds = %if.then83, %sw.bb73
br label %sw.epilog104
sw.bb87: ; preds = %sw.bb71
%48 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%Y88 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %48, i32 0, i32 2
%49 = load i8, i8* %Y88, align 1
%conv89 = zext i8 %49 to i16
%add90 = add nsw i16 %conv89, 2
%conv91 = trunc i16 %add90 to i8
store i8 %conv91, i8* %Y88, align 1
%50 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X92 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %50, i32 0, i32 3
%51 = load i8, i8* %X92, align 1
%conv93 = zext i8 %51 to i16
%sub94 = sub nsw i16 %conv93, 2
%conv95 = trunc i16 %sub94 to i8
store i8 %conv95, i8* %X92, align 1
%52 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%anime96 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %52, i32 0, i32 0
store i8 9, i8* %anime96, align 1
%53 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%count97 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %53, i32 0, i32 7
%54 = load i8, i8* %count97, align 1
%conv98 = zext i8 %54 to i16
%cmp99 = icmp sgt i16 %conv98, 21
br i1 %cmp99, label %if.then101, label %if.end103
if.then101: ; preds = %sw.bb87
%55 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%move102 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %55, i32 0, i32 6
store i8 0, i8* %move102, align 1
br label %if.end103
if.end103: ; preds = %if.then101, %sw.bb87
br label %sw.epilog104
sw.epilog104: ; preds = %sw.bb71, %if.end103, %if.end86
br label %sw.epilog363
sw.bb105: ; preds = %entry
%56 = load i8, i8* @Current_Move, align 1
%conv106 = zext i8 %56 to i16
switch i16 %conv106, label %sw.epilog151 [
i16 0, label %sw.bb107
i16 1, label %sw.bb120
i16 2, label %sw.bb133
i16 3, label %sw.bb146
]
sw.bb107: ; preds = %sw.bb105
%57 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X108 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %57, i32 0, i32 3
%58 = load i8, i8* %X108, align 1
%conv109 = zext i8 %58 to i16
%sub110 = sub nsw i16 %conv109, 2
%conv111 = trunc i16 %sub110 to i8
store i8 %conv111, i8* %X108, align 1
%59 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X112 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %59, i32 0, i32 3
%60 = load i8, i8* %X112, align 1
%conv113 = zext i8 %60 to i16
%cmp114 = icmp slt i16 %conv113, 208
br i1 %cmp114, label %if.then116, label %if.end119
if.then116: ; preds = %sw.bb107
%61 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%move117 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %61, i32 0, i32 6
store i8 1, i8* %move117, align 1
%62 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%anime118 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %62, i32 0, i32 0
store i8 12, i8* %anime118, align 1
br label %if.end119
if.end119: ; preds = %if.then116, %sw.bb107
br label %sw.epilog151
sw.bb120: ; preds = %sw.bb105
%63 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%Y121 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %63, i32 0, i32 2
%64 = load i8, i8* %Y121, align 1
%conv122 = zext i8 %64 to i16
%sub123 = sub nsw i16 %conv122, 2
%conv124 = trunc i16 %sub123 to i8
store i8 %conv124, i8* %Y121, align 1
%65 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%Y125 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %65, i32 0, i32 2
%66 = load i8, i8* %Y125, align 1
%conv126 = zext i8 %66 to i16
%cmp127 = icmp slt i16 %conv126, 48
br i1 %cmp127, label %if.then129, label %if.end132
if.then129: ; preds = %sw.bb120
%67 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%move130 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %67, i32 0, i32 6
store i8 2, i8* %move130, align 1
%68 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%anime131 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %68, i32 0, i32 0
store i8 10, i8* %anime131, align 1
br label %if.end132
if.end132: ; preds = %if.then129, %sw.bb120
br label %sw.epilog151
sw.bb133: ; preds = %sw.bb105
%69 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X134 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %69, i32 0, i32 3
%70 = load i8, i8* %X134, align 1
%conv135 = zext i8 %70 to i16
%sub136 = sub nsw i16 %conv135, 2
%conv137 = trunc i16 %sub136 to i8
store i8 %conv137, i8* %X134, align 1
%71 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X138 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %71, i32 0, i32 3
%72 = load i8, i8* %X138, align 1
%conv139 = zext i8 %72 to i16
%cmp140 = icmp slt i16 %conv139, 32
br i1 %cmp140, label %if.then142, label %if.end145
if.then142: ; preds = %sw.bb133
%73 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%move143 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %73, i32 0, i32 6
store i8 3, i8* %move143, align 1
%74 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%anime144 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %74, i32 0, i32 0
store i8 8, i8* %anime144, align 1
br label %if.end145
if.end145: ; preds = %if.then142, %sw.bb133
br label %sw.epilog151
sw.bb146: ; preds = %sw.bb105
%75 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%Y147 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %75, i32 0, i32 2
%76 = load i8, i8* %Y147, align 1
%conv148 = zext i8 %76 to i16
%add149 = add nsw i16 %conv148, 2
%conv150 = trunc i16 %add149 to i8
store i8 %conv150, i8* %Y147, align 1
br label %sw.epilog151
sw.epilog151: ; preds = %sw.bb105, %sw.bb146, %if.end145, %if.end132, %if.end119
br label %sw.epilog363
sw.bb152: ; preds = %entry
%77 = load i8, i8* @Current_Move, align 1
%conv153 = zext i8 %77 to i16
switch i16 %conv153, label %sw.epilog198 [
i16 0, label %sw.bb154
i16 1, label %sw.bb167
i16 2, label %sw.bb180
i16 3, label %sw.bb193
]
sw.bb154: ; preds = %sw.bb152
%78 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X155 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %78, i32 0, i32 3
%79 = load i8, i8* %X155, align 1
%conv156 = zext i8 %79 to i16
%add157 = add nsw i16 %conv156, 2
%conv158 = trunc i16 %add157 to i8
store i8 %conv158, i8* %X155, align 1
%80 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X159 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %80, i32 0, i32 3
%81 = load i8, i8* %X159, align 1
%conv160 = zext i8 %81 to i16
%cmp161 = icmp sgt i16 %conv160, 32
br i1 %cmp161, label %if.then163, label %if.end166
if.then163: ; preds = %sw.bb154
%82 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%move164 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %82, i32 0, i32 6
store i8 1, i8* %move164, align 1
%83 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%anime165 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %83, i32 0, i32 0
store i8 12, i8* %anime165, align 1
br label %if.end166
if.end166: ; preds = %if.then163, %sw.bb154
br label %sw.epilog198
sw.bb167: ; preds = %sw.bb152
%84 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%Y168 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %84, i32 0, i32 2
%85 = load i8, i8* %Y168, align 1
%conv169 = zext i8 %85 to i16
%sub170 = sub nsw i16 %conv169, 2
%conv171 = trunc i16 %sub170 to i8
store i8 %conv171, i8* %Y168, align 1
%86 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%Y172 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %86, i32 0, i32 2
%87 = load i8, i8* %Y172, align 1
%conv173 = zext i8 %87 to i16
%cmp174 = icmp slt i16 %conv173, 48
br i1 %cmp174, label %if.then176, label %if.end179
if.then176: ; preds = %sw.bb167
%88 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%move177 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %88, i32 0, i32 6
store i8 2, i8* %move177, align 1
%89 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%anime178 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %89, i32 0, i32 0
store i8 10, i8* %anime178, align 1
br label %if.end179
if.end179: ; preds = %if.then176, %sw.bb167
br label %sw.epilog198
sw.bb180: ; preds = %sw.bb152
%90 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X181 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %90, i32 0, i32 3
%91 = load i8, i8* %X181, align 1
%conv182 = zext i8 %91 to i16
%add183 = add nsw i16 %conv182, 2
%conv184 = trunc i16 %add183 to i8
store i8 %conv184, i8* %X181, align 1
%92 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X185 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %92, i32 0, i32 3
%93 = load i8, i8* %X185, align 1
%conv186 = zext i8 %93 to i16
%cmp187 = icmp sgt i16 %conv186, 224
br i1 %cmp187, label %if.then189, label %if.end192
if.then189: ; preds = %sw.bb180
%94 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%move190 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %94, i32 0, i32 6
store i8 3, i8* %move190, align 1
%95 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%anime191 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %95, i32 0, i32 0
store i8 8, i8* %anime191, align 1
br label %if.end192
if.end192: ; preds = %if.then189, %sw.bb180
br label %sw.epilog198
sw.bb193: ; preds = %sw.bb152
%96 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%Y194 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %96, i32 0, i32 2
%97 = load i8, i8* %Y194, align 1
%conv195 = zext i8 %97 to i16
%add196 = add nsw i16 %conv195, 2
%conv197 = trunc i16 %add196 to i8
store i8 %conv197, i8* %Y194, align 1
br label %sw.epilog198
sw.epilog198: ; preds = %sw.bb152, %sw.bb193, %if.end192, %if.end179, %if.end166
br label %sw.epilog363
sw.bb199: ; preds = %entry
%98 = load i8, i8* @Current_Move, align 1
%conv200 = zext i8 %98 to i16
switch i16 %conv200, label %sw.epilog254 [
i16 0, label %sw.bb201
i16 1, label %sw.bb218
i16 2, label %sw.bb227
i16 3, label %sw.bb245
]
sw.bb201: ; preds = %sw.bb199
%99 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X202 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %99, i32 0, i32 3
%100 = load i8, i8* %X202, align 1
%conv203 = zext i8 %100 to i16
%add204 = add nsw i16 %conv203, 2
%conv205 = trunc i16 %add204 to i8
store i8 %conv205, i8* %X202, align 1
%101 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%Y206 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %101, i32 0, i32 2
%102 = load i8, i8* %Y206, align 1
%conv207 = zext i8 %102 to i16
%add208 = add nsw i16 %conv207, 2
%conv209 = trunc i16 %add208 to i8
store i8 %conv209, i8* %Y206, align 1
%103 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%Y210 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %103, i32 0, i32 2
%104 = load i8, i8* %Y210, align 1
%conv211 = zext i8 %104 to i16
%cmp212 = icmp sgt i16 %conv211, 208
br i1 %cmp212, label %if.then214, label %if.end217
if.then214: ; preds = %sw.bb201
%105 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%move215 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %105, i32 0, i32 6
store i8 1, i8* %move215, align 1
%106 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%anime216 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %106, i32 0, i32 0
store i8 11, i8* %anime216, align 1
%107 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%dir = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %107, i32 0, i32 1
store i8 0, i8* %dir, align 1
br label %if.end217
if.end217: ; preds = %if.then214, %sw.bb201
br label %sw.epilog254
sw.bb218: ; preds = %sw.bb199
%108 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%Y219 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %108, i32 0, i32 2
%109 = load i8, i8* %Y219, align 1
%conv220 = zext i8 %109 to i16
%sub221 = sub nsw i16 %conv220, 2
%conv222 = trunc i16 %sub221 to i8
store i8 %conv222, i8* %Y219, align 1
%110 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X223 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %110, i32 0, i32 3
%111 = load i8, i8* %X223, align 1
%conv224 = zext i8 %111 to i16
%sub225 = sub nsw i16 %conv224, 2
%conv226 = trunc i16 %sub225 to i8
store i8 %conv226, i8* %X223, align 1
br label %sw.epilog254
sw.bb227: ; preds = %sw.bb199
%112 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X228 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %112, i32 0, i32 3
%113 = load i8, i8* %X228, align 1
%conv229 = zext i8 %113 to i16
%sub230 = sub nsw i16 %conv229, 2
%conv231 = trunc i16 %sub230 to i8
store i8 %conv231, i8* %X228, align 1
%114 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%Y232 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %114, i32 0, i32 2
%115 = load i8, i8* %Y232, align 1
%conv233 = zext i8 %115 to i16
%add234 = add nsw i16 %conv233, 2
%conv235 = trunc i16 %add234 to i8
store i8 %conv235, i8* %Y232, align 1
%116 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%Y236 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %116, i32 0, i32 2
%117 = load i8, i8* %Y236, align 1
%conv237 = zext i8 %117 to i16
%cmp238 = icmp sgt i16 %conv237, 208
br i1 %cmp238, label %if.then240, label %if.end244
if.then240: ; preds = %sw.bb227
%118 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%move241 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %118, i32 0, i32 6
store i8 3, i8* %move241, align 1
%119 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%anime242 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %119, i32 0, i32 0
store i8 11, i8* %anime242, align 1
%120 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%dir243 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %120, i32 0, i32 1
store i8 64, i8* %dir243, align 1
br label %if.end244
if.end244: ; preds = %if.then240, %sw.bb227
br label %sw.epilog254
sw.bb245: ; preds = %sw.bb199
%121 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%Y246 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %121, i32 0, i32 2
%122 = load i8, i8* %Y246, align 1
%conv247 = zext i8 %122 to i16
%sub248 = sub nsw i16 %conv247, 2
%conv249 = trunc i16 %sub248 to i8
store i8 %conv249, i8* %Y246, align 1
%123 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X250 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %123, i32 0, i32 3
%124 = load i8, i8* %X250, align 1
%conv251 = zext i8 %124 to i16
%add252 = add nsw i16 %conv251, 2
%conv253 = trunc i16 %add252 to i8
store i8 %conv253, i8* %X250, align 1
br label %sw.epilog254
sw.epilog254: ; preds = %sw.bb199, %sw.bb245, %if.end244, %sw.bb218, %if.end217
br label %sw.epilog363
sw.bb255: ; preds = %entry
%125 = load i8, i8* @Current_Move, align 1
%conv256 = zext i8 %125 to i16
switch i16 %conv256, label %sw.epilog299 [
i16 0, label %sw.bb257
i16 1, label %sw.bb270
]
sw.bb257: ; preds = %sw.bb255
%126 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X258 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %126, i32 0, i32 3
%127 = load i8, i8* %X258, align 1
%conv259 = zext i8 %127 to i16
%sub260 = sub nsw i16 %conv259, 2
%conv261 = trunc i16 %sub260 to i8
store i8 %conv261, i8* %X258, align 1
%128 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X262 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %128, i32 0, i32 3
%129 = load i8, i8* %X262, align 1
%conv263 = zext i8 %129 to i16
%cmp264 = icmp slt i16 %conv263, 129
br i1 %cmp264, label %if.then266, label %if.end269
if.then266: ; preds = %sw.bb257
%130 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%move267 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %130, i32 0, i32 6
store i8 1, i8* %move267, align 1
%131 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%count268 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %131, i32 0, i32 7
store i8 -1, i8* %count268, align 1
br label %if.end269
if.end269: ; preds = %if.then266, %sw.bb257
br label %sw.epilog299
sw.bb270: ; preds = %sw.bb255
%132 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%count271 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %132, i32 0, i32 7
%133 = load i8, i8* %count271, align 1
%conv272 = zext i8 %133 to i16
%shr = ashr i16 %conv272, 3
%conv273 = trunc i16 %shr to i8
store i8 %conv273, i8* @temp, align 1
%134 = load i8, i8* @temp, align 1
%idxprom = zext i8 %134 to i16
%arrayidx = getelementptr inbounds [32 x i8], [32 x i8]* @CIRCLE_Y, i16 0, i16 %idxprom
%135 = load i8, i8* %arrayidx, align 1
store i8 %135, i8* @temp2, align 1
call void @Circle_Math()
%136 = load i8, i8* @temp3, align 1
%conv274 = zext i8 %136 to i16
%137 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%Y275 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %137, i32 0, i32 2
%138 = load i8, i8* %Y275, align 1
%conv276 = zext i8 %138 to i16
%add277 = add nsw i16 %conv276, %conv274
%conv278 = trunc i16 %add277 to i8
store i8 %conv278, i8* %Y275, align 1
%139 = load i8, i8* @temp, align 1
%idxprom279 = zext i8 %139 to i16
%arrayidx280 = getelementptr inbounds [32 x i8], [32 x i8]* @CIRCLE_X, i16 0, i16 %idxprom279
%140 = load i8, i8* %arrayidx280, align 1
store i8 %140, i8* @temp2, align 1
call void @Circle_Math()
%141 = load i8, i8* @temp3, align 1
%conv281 = zext i8 %141 to i16
%142 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X282 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %142, i32 0, i32 3
%143 = load i8, i8* %X282, align 1
%conv283 = zext i8 %143 to i16
%add284 = add nsw i16 %conv283, %conv281
%conv285 = trunc i16 %add284 to i8
store i8 %conv285, i8* %X282, align 1
%144 = load i8, i8* @temp, align 1
%idxprom286 = zext i8 %144 to i16
%arrayidx287 = getelementptr inbounds [32 x i8], [32 x i8]* @CIRCLE_D, i16 0, i16 %idxprom286
%145 = load i8, i8* %arrayidx287, align 1
%146 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%dir288 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %146, i32 0, i32 1
store i8 %145, i8* %dir288, align 1
%147 = load i8, i8* @temp, align 1
%idxprom289 = zext i8 %147 to i16
%arrayidx290 = getelementptr inbounds [32 x i8], [32 x i8]* @CIRCLE_A, i16 0, i16 %idxprom289
%148 = load i8, i8* %arrayidx290, align 1
%149 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%anime291 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %149, i32 0, i32 0
store i8 %148, i8* %anime291, align 1
%150 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%count292 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %150, i32 0, i32 7
%151 = load i8, i8* %count292, align 1
%conv293 = zext i8 %151 to i16
%cmp294 = icmp eq i16 %conv293, 255
br i1 %cmp294, label %if.then296, label %if.end298
if.then296: ; preds = %sw.bb270
%152 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%move297 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %152, i32 0, i32 6
store i8 0, i8* %move297, align 1
br label %if.end298
if.end298: ; preds = %if.then296, %sw.bb270
br label %sw.epilog299
sw.epilog299: ; preds = %sw.bb255, %if.end298, %if.end269
br label %sw.epilog363
sw.bb300: ; preds = %entry
%153 = load i8, i8* @Current_Move, align 1
%conv301 = zext i8 %153 to i16
switch i16 %conv301, label %sw.epilog362 [
i16 0, label %sw.bb302
i16 1, label %sw.bb337
i16 2, label %sw.bb345
i16 3, label %sw.bb357
]
sw.bb302: ; preds = %sw.bb300
%154 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X303 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %154, i32 0, i32 3
%155 = load i8, i8* %X303, align 1
%conv304 = zext i8 %155 to i16
%156 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 3), align 1
%conv305 = zext i8 %156 to i16
%cmp306 = icmp sgt i16 %conv304, %conv305
br i1 %cmp306, label %if.then308, label %if.end313
if.then308: ; preds = %sw.bb302
%157 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X309 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %157, i32 0, i32 3
%158 = load i8, i8* %X309, align 1
%conv310 = zext i8 %158 to i16
%sub311 = sub nsw i16 %conv310, 1
%conv312 = trunc i16 %sub311 to i8
store i8 %conv312, i8* %X309, align 1
br label %if.end313
if.end313: ; preds = %if.then308, %sw.bb302
%159 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X314 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %159, i32 0, i32 3
%160 = load i8, i8* %X314, align 1
%conv315 = zext i8 %160 to i16
%161 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 3), align 1
%conv316 = zext i8 %161 to i16
%cmp317 = icmp slt i16 %conv315, %conv316
br i1 %cmp317, label %if.then319, label %if.end324
if.then319: ; preds = %if.end313
%162 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X320 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %162, i32 0, i32 3
%163 = load i8, i8* %X320, align 1
%conv321 = zext i8 %163 to i16
%add322 = add nsw i16 %conv321, 1
%conv323 = trunc i16 %add322 to i8
store i8 %conv323, i8* %X320, align 1
br label %if.end324
if.end324: ; preds = %if.then319, %if.end313
%164 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%Y325 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %164, i32 0, i32 2
%165 = load i8, i8* %Y325, align 1
%conv326 = zext i8 %165 to i16
%add327 = add nsw i16 %conv326, 1
%conv328 = trunc i16 %add327 to i8
store i8 %conv328, i8* %Y325, align 1
%166 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%Y329 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %166, i32 0, i32 2
%167 = load i8, i8* %Y329, align 1
%conv330 = zext i8 %167 to i16
%cmp331 = icmp sgt i16 %conv330, 144
br i1 %cmp331, label %if.then333, label %if.end336
if.then333: ; preds = %if.end324
%168 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%move334 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %168, i32 0, i32 6
store i8 1, i8* %move334, align 1
%169 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%count335 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %169, i32 0, i32 7
store i8 0, i8* %count335, align 1
br label %if.end336
if.end336: ; preds = %if.then333, %if.end324
br label %sw.epilog362
sw.bb337: ; preds = %sw.bb300
%170 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%count338 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %170, i32 0, i32 7
%171 = load i8, i8* %count338, align 1
%conv339 = zext i8 %171 to i16
%cmp340 = icmp eq i16 %conv339, 32
br i1 %cmp340, label %if.then342, label %if.end344
if.then342: ; preds = %sw.bb337
%172 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%move343 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %172, i32 0, i32 6
store i8 2, i8* %move343, align 1
call void @Spawn_Bullet_E()
br label %if.end344
if.end344: ; preds = %if.then342, %sw.bb337
br label %sw.epilog362
sw.bb345: ; preds = %sw.bb300
%173 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%Y346 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %173, i32 0, i32 2
%174 = load i8, i8* %Y346, align 1
%conv347 = zext i8 %174 to i16
%sub348 = sub nsw i16 %conv347, 1
%conv349 = trunc i16 %sub348 to i8
store i8 %conv349, i8* %Y346, align 1
%175 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%count350 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %175, i32 0, i32 7
%176 = load i8, i8* %count350, align 1
%conv351 = zext i8 %176 to i16
%cmp352 = icmp eq i16 %conv351, 64
br i1 %cmp352, label %if.then354, label %if.end356
if.then354: ; preds = %sw.bb345
%177 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%move355 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %177, i32 0, i32 6
store i8 3, i8* %move355, align 1
br label %if.end356
if.end356: ; preds = %if.then354, %sw.bb345
br label %sw.epilog362
sw.bb357: ; preds = %sw.bb300
%178 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%Y358 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %178, i32 0, i32 2
%179 = load i8, i8* %Y358, align 1
%conv359 = zext i8 %179 to i16
%sub360 = sub nsw i16 %conv359, 2
%conv361 = trunc i16 %sub360 to i8
store i8 %conv361, i8* %Y358, align 1
br label %sw.epilog362
sw.epilog362: ; preds = %sw.bb300, %sw.bb357, %if.end356, %if.end344, %if.end336
br label %sw.epilog363
sw.epilog363: ; preds = %sw.epilog362, %entry, %sw.epilog299, %sw.epilog254, %sw.epilog198, %sw.epilog151, %sw.epilog104, %sw.epilog70, %sw.epilog
%180 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%count364 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %180, i32 0, i32 7
%181 = load i8, i8* %count364, align 1
%inc = add i8 %181, 1
store i8 %inc, i8* %count364, align 1
%182 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%bullet_type = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %182, i32 0, i32 5
%183 = load i8, i8* %bullet_type, align 1
store i8 %183, i8* @Current_Type, align 1
%184 = load i8, i8* @Current_Type, align 1
%conv365 = zext i8 %184 to i16
switch i16 %conv365, label %sw.epilog422 [
i16 1, label %sw.bb366
i16 2, label %sw.bb377
i16 3, label %sw.bb389
i16 4, label %sw.bb401
i16 5, label %sw.bb408
i16 6, label %sw.bb415
]
sw.bb366: ; preds = %sw.epilog363
%185 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X367 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %185, i32 0, i32 3
%186 = load i8, i8* %X367, align 1
%conv368 = zext i8 %186 to i16
%cmp369 = icmp eq i16 %conv368, 128
br i1 %cmp369, label %if.then375, label %lor.lhs.false
lor.lhs.false: ; preds = %sw.bb366
%187 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X371 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %187, i32 0, i32 3
%188 = load i8, i8* %X371, align 1
%conv372 = zext i8 %188 to i16
%cmp373 = icmp eq i16 %conv372, 129
br i1 %cmp373, label %if.then375, label %if.end376
if.then375: ; preds = %lor.lhs.false, %sw.bb366
call void @Spawn_Bullet_E()
br label %if.end376
if.end376: ; preds = %if.then375, %lor.lhs.false
br label %sw.epilog422
sw.bb377: ; preds = %sw.epilog363
%189 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X378 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %189, i32 0, i32 3
%190 = load i8, i8* %X378, align 1
%conv379 = zext i8 %190 to i16
%cmp380 = icmp eq i16 %conv379, 64
br i1 %cmp380, label %if.then387, label %lor.lhs.false382
lor.lhs.false382: ; preds = %sw.bb377
%191 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X383 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %191, i32 0, i32 3
%192 = load i8, i8* %X383, align 1
%conv384 = zext i8 %192 to i16
%cmp385 = icmp eq i16 %conv384, 65
br i1 %cmp385, label %if.then387, label %if.end388
if.then387: ; preds = %lor.lhs.false382, %sw.bb377
call void @Spawn_Bullet_E()
br label %if.end388
if.end388: ; preds = %if.then387, %lor.lhs.false382
br label %sw.epilog422
sw.bb389: ; preds = %sw.epilog363
%193 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X390 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %193, i32 0, i32 3
%194 = load i8, i8* %X390, align 1
%conv391 = zext i8 %194 to i16
%cmp392 = icmp eq i16 %conv391, 192
br i1 %cmp392, label %if.then399, label %lor.lhs.false394
lor.lhs.false394: ; preds = %sw.bb389
%195 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X395 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %195, i32 0, i32 3
%196 = load i8, i8* %X395, align 1
%conv396 = zext i8 %196 to i16
%cmp397 = icmp eq i16 %conv396, 193
br i1 %cmp397, label %if.then399, label %if.end400
if.then399: ; preds = %lor.lhs.false394, %sw.bb389
call void @Spawn_Bullet_E()
br label %if.end400
if.end400: ; preds = %if.then399, %lor.lhs.false394
br label %sw.epilog422
sw.bb401: ; preds = %sw.epilog363
%197 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%Y402 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %197, i32 0, i32 2
%198 = load i8, i8* %Y402, align 1
%conv403 = zext i8 %198 to i16
%cmp404 = icmp eq i16 %conv403, 65
br i1 %cmp404, label %if.then406, label %if.end407
if.then406: ; preds = %sw.bb401
call void @Spawn_Bullet_E()
br label %if.end407
if.end407: ; preds = %if.then406, %sw.bb401
br label %sw.epilog422
sw.bb408: ; preds = %sw.epilog363
%199 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%count409 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %199, i32 0, i32 7
%200 = load i8, i8* %count409, align 1
%conv410 = zext i8 %200 to i16
%cmp411 = icmp eq i16 %conv410, 64
br i1 %cmp411, label %if.then413, label %if.end414
if.then413: ; preds = %sw.bb408
call void @Spawn_Bullet_E()
br label %if.end414
if.end414: ; preds = %if.then413, %sw.bb408
br label %sw.epilog422
sw.bb415: ; preds = %sw.epilog363
%201 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%count416 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %201, i32 0, i32 7
%202 = load i8, i8* %count416, align 1
%conv417 = zext i8 %202 to i16
%cmp418 = icmp eq i16 %conv417, 192
br i1 %cmp418, label %if.then420, label %if.end421
if.then420: ; preds = %sw.bb415
call void @Spawn_Bullet_E()
br label %if.end421
if.end421: ; preds = %if.then420, %sw.bb415
br label %sw.epilog422
sw.epilog422: ; preds = %sw.epilog363, %if.end421, %if.end414, %if.end407, %if.end400, %if.end388, %if.end376
ret void
}
declare void @draw_enemies() #1
; Function Attrs: nounwind
define void @Spawn_Explosion() #0 {
entry:
%0 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode1, i32 0, i32 2), align 1
%conv = zext i8 %0 to i16
%cmp = icmp eq i16 %conv, 0
br i1 %cmp, label %if.then, label %if.else
if.then: ; preds = %entry
%1 = load i8, i8* @objectB_y, align 1
store i8 %1, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode1, i32 0, i32 2), align 1
%2 = load i8, i8* @objectB_x, align 1
store i8 %2, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode1, i32 0, i32 3), align 1
store i8 13, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode1, i32 0, i32 0), align 1
store i8 10, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode1, i32 0, i32 7), align 1
br label %if.end18
if.else: ; preds = %entry
%3 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode2, i32 0, i32 2), align 1
%conv2 = zext i8 %3 to i16
%cmp3 = icmp eq i16 %conv2, 0
br i1 %cmp3, label %if.then5, label %if.else6
if.then5: ; preds = %if.else
%4 = load i8, i8* @objectB_y, align 1
store i8 %4, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode2, i32 0, i32 2), align 1
%5 = load i8, i8* @objectB_x, align 1
store i8 %5, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode2, i32 0, i32 3), align 1
store i8 13, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode2, i32 0, i32 0), align 1
store i8 10, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode2, i32 0, i32 7), align 1
br label %if.end17
if.else6: ; preds = %if.else
%6 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode3, i32 0, i32 2), align 1
%conv7 = zext i8 %6 to i16
%cmp8 = icmp eq i16 %conv7, 0
br i1 %cmp8, label %if.then10, label %if.else11
if.then10: ; preds = %if.else6
%7 = load i8, i8* @objectB_y, align 1
store i8 %7, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode3, i32 0, i32 2), align 1
%8 = load i8, i8* @objectB_x, align 1
store i8 %8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode3, i32 0, i32 3), align 1
store i8 13, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode3, i32 0, i32 0), align 1
store i8 10, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode3, i32 0, i32 7), align 1
br label %if.end16
if.else11: ; preds = %if.else6
%9 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode4, i32 0, i32 2), align 1
%conv12 = zext i8 %9 to i16
%cmp13 = icmp eq i16 %conv12, 0
br i1 %cmp13, label %if.then15, label %if.end
if.then15: ; preds = %if.else11
%10 = load i8, i8* @objectB_y, align 1
store i8 %10, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode4, i32 0, i32 2), align 1
%11 = load i8, i8* @objectB_x, align 1
store i8 %11, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode4, i32 0, i32 3), align 1
store i8 13, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode4, i32 0, i32 0), align 1
store i8 10, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @Explode4, i32 0, i32 7), align 1
br label %if.end
if.end: ; preds = %if.then15, %if.else11
br label %if.end16
if.end16: ; preds = %if.end, %if.then10
br label %if.end17
if.end17: ; preds = %if.end16, %if.then5
br label %if.end18
if.end18: ; preds = %if.end17, %if.then
ret void
}
; Function Attrs: nounwind
define void @All_Enemies() #0 {
entry:
store i8 0, i8* @collision, align 1
%0 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY1, i32 0, i32 2), align 1
%conv = zext i8 %0 to i16
%cmp = icmp ne i16 %conv, 0
br i1 %cmp, label %land.lhs.true, label %if.end11
land.lhs.true: ; preds = %entry
%1 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY1, i32 0, i32 4), align 1
%conv2 = zext i8 %1 to i16
%cmp3 = icmp eq i16 %conv2, 0
br i1 %cmp3, label %if.then, label %if.end11
if.then: ; preds = %land.lhs.true
%2 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY1, i32 0, i32 2), align 1
store i8 %2, i8* @objectB_y, align 1
%3 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY1, i32 0, i32 3), align 1
store i8 %3, i8* @objectB_x, align 1
call void @Hitbox()
%4 = load i8, i8* @collision, align 1
%conv5 = zext i8 %4 to i16
%cmp6 = icmp ne i16 %conv5, 0
br i1 %cmp6, label %if.then8, label %if.end
if.then8: ; preds = %if.then
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY1, i32 0, i32 2), align 1
call void @Spawn_Explosion()
%5 = load i8, i8* @Score4, align 1
%conv9 = zext i8 %5 to i16
%add = add nsw i16 %conv9, 5
%conv10 = trunc i16 %add to i8
store i8 %conv10, i8* @Score4, align 1
br label %if.end130
if.end: ; preds = %if.then
br label %if.end11
if.end11: ; preds = %if.end, %land.lhs.true, %entry
%6 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY2, i32 0, i32 2), align 1
%conv12 = zext i8 %6 to i16
%cmp13 = icmp ne i16 %conv12, 0
br i1 %cmp13, label %land.lhs.true15, label %if.end28
land.lhs.true15: ; preds = %if.end11
%7 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY2, i32 0, i32 4), align 1
%conv16 = zext i8 %7 to i16
%cmp17 = icmp eq i16 %conv16, 0
br i1 %cmp17, label %if.then19, label %if.end28
if.then19: ; preds = %land.lhs.true15
%8 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY2, i32 0, i32 2), align 1
store i8 %8, i8* @objectB_y, align 1
%9 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY2, i32 0, i32 3), align 1
store i8 %9, i8* @objectB_x, align 1
call void @Hitbox()
%10 = load i8, i8* @collision, align 1
%conv20 = zext i8 %10 to i16
%cmp21 = icmp ne i16 %conv20, 0
br i1 %cmp21, label %if.then23, label %if.end27
if.then23: ; preds = %if.then19
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY2, i32 0, i32 2), align 1
call void @Spawn_Explosion()
%11 = load i8, i8* @Score4, align 1
%conv24 = zext i8 %11 to i16
%add25 = add nsw i16 %conv24, 5
%conv26 = trunc i16 %add25 to i8
store i8 %conv26, i8* @Score4, align 1
br label %if.end130
if.end27: ; preds = %if.then19
br label %if.end28
if.end28: ; preds = %if.end27, %land.lhs.true15, %if.end11
%12 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY3, i32 0, i32 2), align 1
%conv29 = zext i8 %12 to i16
%cmp30 = icmp ne i16 %conv29, 0
br i1 %cmp30, label %land.lhs.true32, label %if.end45
land.lhs.true32: ; preds = %if.end28
%13 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY3, i32 0, i32 4), align 1
%conv33 = zext i8 %13 to i16
%cmp34 = icmp eq i16 %conv33, 0
br i1 %cmp34, label %if.then36, label %if.end45
if.then36: ; preds = %land.lhs.true32
%14 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY3, i32 0, i32 2), align 1
store i8 %14, i8* @objectB_y, align 1
%15 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY3, i32 0, i32 3), align 1
store i8 %15, i8* @objectB_x, align 1
call void @Hitbox()
%16 = load i8, i8* @collision, align 1
%conv37 = zext i8 %16 to i16
%cmp38 = icmp ne i16 %conv37, 0
br i1 %cmp38, label %if.then40, label %if.end44
if.then40: ; preds = %if.then36
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY3, i32 0, i32 2), align 1
call void @Spawn_Explosion()
%17 = load i8, i8* @Score4, align 1
%conv41 = zext i8 %17 to i16
%add42 = add nsw i16 %conv41, 5
%conv43 = trunc i16 %add42 to i8
store i8 %conv43, i8* @Score4, align 1
br label %if.end130
if.end44: ; preds = %if.then36
br label %if.end45
if.end45: ; preds = %if.end44, %land.lhs.true32, %if.end28
%18 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY4, i32 0, i32 2), align 1
%conv46 = zext i8 %18 to i16
%cmp47 = icmp ne i16 %conv46, 0
br i1 %cmp47, label %land.lhs.true49, label %if.end62
land.lhs.true49: ; preds = %if.end45
%19 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY4, i32 0, i32 4), align 1
%conv50 = zext i8 %19 to i16
%cmp51 = icmp eq i16 %conv50, 0
br i1 %cmp51, label %if.then53, label %if.end62
if.then53: ; preds = %land.lhs.true49
%20 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY4, i32 0, i32 2), align 1
store i8 %20, i8* @objectB_y, align 1
%21 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY4, i32 0, i32 3), align 1
store i8 %21, i8* @objectB_x, align 1
call void @Hitbox()
%22 = load i8, i8* @collision, align 1
%conv54 = zext i8 %22 to i16
%cmp55 = icmp ne i16 %conv54, 0
br i1 %cmp55, label %if.then57, label %if.end61
if.then57: ; preds = %if.then53
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY4, i32 0, i32 2), align 1
call void @Spawn_Explosion()
%23 = load i8, i8* @Score4, align 1
%conv58 = zext i8 %23 to i16
%add59 = add nsw i16 %conv58, 5
%conv60 = trunc i16 %add59 to i8
store i8 %conv60, i8* @Score4, align 1
br label %if.end130
if.end61: ; preds = %if.then53
br label %if.end62
if.end62: ; preds = %if.end61, %land.lhs.true49, %if.end45
%24 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY5, i32 0, i32 2), align 1
%conv63 = zext i8 %24 to i16
%cmp64 = icmp ne i16 %conv63, 0
br i1 %cmp64, label %land.lhs.true66, label %if.end79
land.lhs.true66: ; preds = %if.end62
%25 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY5, i32 0, i32 4), align 1
%conv67 = zext i8 %25 to i16
%cmp68 = icmp eq i16 %conv67, 0
br i1 %cmp68, label %if.then70, label %if.end79
if.then70: ; preds = %land.lhs.true66
%26 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY5, i32 0, i32 2), align 1
store i8 %26, i8* @objectB_y, align 1
%27 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY5, i32 0, i32 3), align 1
store i8 %27, i8* @objectB_x, align 1
call void @Hitbox()
%28 = load i8, i8* @collision, align 1
%conv71 = zext i8 %28 to i16
%cmp72 = icmp ne i16 %conv71, 0
br i1 %cmp72, label %if.then74, label %if.end78
if.then74: ; preds = %if.then70
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY5, i32 0, i32 2), align 1
call void @Spawn_Explosion()
%29 = load i8, i8* @Score4, align 1
%conv75 = zext i8 %29 to i16
%add76 = add nsw i16 %conv75, 5
%conv77 = trunc i16 %add76 to i8
store i8 %conv77, i8* @Score4, align 1
br label %if.end130
if.end78: ; preds = %if.then70
br label %if.end79
if.end79: ; preds = %if.end78, %land.lhs.true66, %if.end62
%30 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY6, i32 0, i32 2), align 1
%conv80 = zext i8 %30 to i16
%cmp81 = icmp ne i16 %conv80, 0
br i1 %cmp81, label %land.lhs.true83, label %if.end96
land.lhs.true83: ; preds = %if.end79
%31 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY6, i32 0, i32 4), align 1
%conv84 = zext i8 %31 to i16
%cmp85 = icmp eq i16 %conv84, 0
br i1 %cmp85, label %if.then87, label %if.end96
if.then87: ; preds = %land.lhs.true83
%32 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY6, i32 0, i32 2), align 1
store i8 %32, i8* @objectB_y, align 1
%33 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY6, i32 0, i32 3), align 1
store i8 %33, i8* @objectB_x, align 1
call void @Hitbox()
%34 = load i8, i8* @collision, align 1
%conv88 = zext i8 %34 to i16
%cmp89 = icmp ne i16 %conv88, 0
br i1 %cmp89, label %if.then91, label %if.end95
if.then91: ; preds = %if.then87
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY6, i32 0, i32 2), align 1
call void @Spawn_Explosion()
%35 = load i8, i8* @Score4, align 1
%conv92 = zext i8 %35 to i16
%add93 = add nsw i16 %conv92, 5
%conv94 = trunc i16 %add93 to i8
store i8 %conv94, i8* @Score4, align 1
br label %if.end130
if.end95: ; preds = %if.then87
br label %if.end96
if.end96: ; preds = %if.end95, %land.lhs.true83, %if.end79
%36 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY7, i32 0, i32 2), align 1
%conv97 = zext i8 %36 to i16
%cmp98 = icmp ne i16 %conv97, 0
br i1 %cmp98, label %land.lhs.true100, label %if.end113
land.lhs.true100: ; preds = %if.end96
%37 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY7, i32 0, i32 4), align 1
%conv101 = zext i8 %37 to i16
%cmp102 = icmp eq i16 %conv101, 0
br i1 %cmp102, label %if.then104, label %if.end113
if.then104: ; preds = %land.lhs.true100
%38 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY7, i32 0, i32 2), align 1
store i8 %38, i8* @objectB_y, align 1
%39 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY7, i32 0, i32 3), align 1
store i8 %39, i8* @objectB_x, align 1
call void @Hitbox()
%40 = load i8, i8* @collision, align 1
%conv105 = zext i8 %40 to i16
%cmp106 = icmp ne i16 %conv105, 0
br i1 %cmp106, label %if.then108, label %if.end112
if.then108: ; preds = %if.then104
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY7, i32 0, i32 2), align 1
call void @Spawn_Explosion()
%41 = load i8, i8* @Score4, align 1
%conv109 = zext i8 %41 to i16
%add110 = add nsw i16 %conv109, 5
%conv111 = trunc i16 %add110 to i8
store i8 %conv111, i8* @Score4, align 1
br label %if.end130
if.end112: ; preds = %if.then104
br label %if.end113
if.end113: ; preds = %if.end112, %land.lhs.true100, %if.end96
%42 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY8, i32 0, i32 2), align 1
%conv114 = zext i8 %42 to i16
%cmp115 = icmp ne i16 %conv114, 0
br i1 %cmp115, label %land.lhs.true117, label %if.end130
land.lhs.true117: ; preds = %if.end113
%43 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY8, i32 0, i32 4), align 1
%conv118 = zext i8 %43 to i16
%cmp119 = icmp eq i16 %conv118, 0
br i1 %cmp119, label %if.then121, label %if.end130
if.then121: ; preds = %land.lhs.true117
%44 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY8, i32 0, i32 2), align 1
store i8 %44, i8* @objectB_y, align 1
%45 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY8, i32 0, i32 3), align 1
store i8 %45, i8* @objectB_x, align 1
call void @Hitbox()
%46 = load i8, i8* @collision, align 1
%conv122 = zext i8 %46 to i16
%cmp123 = icmp ne i16 %conv122, 0
br i1 %cmp123, label %if.then125, label %if.end129
if.then125: ; preds = %if.then121
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @ENEMY8, i32 0, i32 2), align 1
call void @Spawn_Explosion()
%47 = load i8, i8* @Score4, align 1
%conv126 = zext i8 %47 to i16
%add127 = add nsw i16 %conv126, 5
%conv128 = trunc i16 %add127 to i8
store i8 %conv128, i8* @Score4, align 1
br label %if.end130
if.end129: ; preds = %if.then121
br label %if.end130
if.end130: ; preds = %if.then8, %if.then23, %if.then40, %if.then57, %if.then74, %if.then91, %if.then108, %if.then125, %if.end129, %land.lhs.true117, %if.end113
ret void
}
declare void @Hitbox() #1
; Function Attrs: nounwind
define void @Init_Boss_Level() #0 {
entry:
store i8 5, i8* @Game_Mode, align 1
call void @Clear_Enemies()
store i8 17, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 0), align 1
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 1), align 1
store i8 96, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 3), align 1
store i8 80, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 2), align 1
store i8 100, i8* @BOSS_health, align 1
ret void
}
declare void @memcpy(i8*, i8*, i16) #1
declare void @Circle_Math() #1
; Function Attrs: nounwind
define void @Spawn_Bullet_E() #0 {
entry:
%0 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %0, i32 0, i32 3
%1 = load i8, i8* %X, align 1
%conv = zext i8 %1 to i16
%2 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 3), align 1
%conv1 = zext i8 %2 to i16
%cmp = icmp sgt i16 %conv, %conv1
br i1 %cmp, label %if.then, label %if.else
if.then: ; preds = %entry
%3 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X3 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %3, i32 0, i32 3
%4 = load i8, i8* %X3, align 1
%conv4 = zext i8 %4 to i16
%5 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 3), align 1
%conv5 = zext i8 %5 to i16
%sub = sub nsw i16 %conv4, %conv5
%conv6 = trunc i16 %sub to i8
store i8 %conv6, i8* @X_compare, align 1
%6 = load i8, i8* @X_compare, align 1
%conv7 = zext i8 %6 to i16
%shr = ashr i16 %conv7, 3
%conv8 = trunc i16 %shr to i8
store i8 %conv8, i8* @X_compare, align 1
%7 = load i8, i8* @X_compare, align 1
%conv9 = zext i8 %7 to i16
%sub10 = sub nsw i16 0, %conv9
%conv11 = trunc i16 %sub10 to i8
store i8 %conv11, i8* @X_compare, align 1
br label %if.end
if.else: ; preds = %entry
%8 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @hero_ship, i32 0, i32 3), align 1
%conv12 = zext i8 %8 to i16
%9 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X13 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %9, i32 0, i32 3
%10 = load i8, i8* %X13, align 1
%conv14 = zext i8 %10 to i16
%sub15 = sub nsw i16 %conv12, %conv14
%conv16 = trunc i16 %sub15 to i8
store i8 %conv16, i8* @X_compare, align 1
%11 = load i8, i8* @X_compare, align 1
%conv17 = zext i8 %11 to i16
%shr18 = ashr i16 %conv17, 3
%conv19 = trunc i16 %shr18 to i8
store i8 %conv19, i8* @X_compare, align 1
br label %if.end
if.end: ; preds = %if.else, %if.then
%12 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet1, i32 0, i32 0), align 1
%conv20 = zext i8 %12 to i16
%cmp21 = icmp eq i16 %conv20, 0
br i1 %cmp21, label %if.then23, label %if.end30
if.then23: ; preds = %if.end
%13 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%Y = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %13, i32 0, i32 2
%14 = load i8, i8* %Y, align 1
%conv24 = zext i8 %14 to i16
%add = add nsw i16 %conv24, 15
%conv25 = trunc i16 %add to i8
store i8 %conv25, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet1, i32 0, i32 0), align 1
%15 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X26 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %15, i32 0, i32 3
%16 = load i8, i8* %X26, align 1
%conv27 = zext i8 %16 to i16
%add28 = add nsw i16 %conv27, 7
%conv29 = trunc i16 %add28 to i8
store i8 %conv29, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet1, i32 0, i32 4), align 1
store i8 -30, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet1, i32 0, i32 2), align 1
store i8 1, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet1, i32 0, i32 3), align 1
store i8 32, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet1, i32 0, i32 6), align 1
%17 = load i8, i8* @X_compare, align 1
store i8 %17, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet1, i32 0, i32 7), align 1
br label %if.end121
if.end30: ; preds = %if.end
%18 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet2, i32 0, i32 0), align 1
%conv31 = zext i8 %18 to i16
%cmp32 = icmp eq i16 %conv31, 0
br i1 %cmp32, label %if.then34, label %if.end43
if.then34: ; preds = %if.end30
%19 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%Y35 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %19, i32 0, i32 2
%20 = load i8, i8* %Y35, align 1
%conv36 = zext i8 %20 to i16
%add37 = add nsw i16 %conv36, 15
%conv38 = trunc i16 %add37 to i8
store i8 %conv38, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet2, i32 0, i32 0), align 1
%21 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X39 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %21, i32 0, i32 3
%22 = load i8, i8* %X39, align 1
%conv40 = zext i8 %22 to i16
%add41 = add nsw i16 %conv40, 7
%conv42 = trunc i16 %add41 to i8
store i8 %conv42, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet2, i32 0, i32 4), align 1
store i8 -30, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet2, i32 0, i32 2), align 1
store i8 1, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet2, i32 0, i32 3), align 1
store i8 32, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet2, i32 0, i32 6), align 1
%23 = load i8, i8* @X_compare, align 1
store i8 %23, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet2, i32 0, i32 7), align 1
br label %if.end121
if.end43: ; preds = %if.end30
%24 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet3, i32 0, i32 0), align 1
%conv44 = zext i8 %24 to i16
%cmp45 = icmp eq i16 %conv44, 0
br i1 %cmp45, label %if.then47, label %if.end56
if.then47: ; preds = %if.end43
%25 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%Y48 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %25, i32 0, i32 2
%26 = load i8, i8* %Y48, align 1
%conv49 = zext i8 %26 to i16
%add50 = add nsw i16 %conv49, 15
%conv51 = trunc i16 %add50 to i8
store i8 %conv51, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet3, i32 0, i32 0), align 1
%27 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X52 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %27, i32 0, i32 3
%28 = load i8, i8* %X52, align 1
%conv53 = zext i8 %28 to i16
%add54 = add nsw i16 %conv53, 7
%conv55 = trunc i16 %add54 to i8
store i8 %conv55, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet3, i32 0, i32 4), align 1
store i8 -30, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet3, i32 0, i32 2), align 1
store i8 1, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet3, i32 0, i32 3), align 1
store i8 32, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet3, i32 0, i32 6), align 1
%29 = load i8, i8* @X_compare, align 1
store i8 %29, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet3, i32 0, i32 7), align 1
br label %if.end121
if.end56: ; preds = %if.end43
%30 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet4, i32 0, i32 0), align 1
%conv57 = zext i8 %30 to i16
%cmp58 = icmp eq i16 %conv57, 0
br i1 %cmp58, label %if.then60, label %if.end69
if.then60: ; preds = %if.end56
%31 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%Y61 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %31, i32 0, i32 2
%32 = load i8, i8* %Y61, align 1
%conv62 = zext i8 %32 to i16
%add63 = add nsw i16 %conv62, 15
%conv64 = trunc i16 %add63 to i8
store i8 %conv64, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet4, i32 0, i32 0), align 1
%33 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X65 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %33, i32 0, i32 3
%34 = load i8, i8* %X65, align 1
%conv66 = zext i8 %34 to i16
%add67 = add nsw i16 %conv66, 7
%conv68 = trunc i16 %add67 to i8
store i8 %conv68, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet4, i32 0, i32 4), align 1
store i8 -30, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet4, i32 0, i32 2), align 1
store i8 1, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet4, i32 0, i32 3), align 1
store i8 32, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet4, i32 0, i32 6), align 1
%35 = load i8, i8* @X_compare, align 1
store i8 %35, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet4, i32 0, i32 7), align 1
br label %if.end121
if.end69: ; preds = %if.end56
%36 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet5, i32 0, i32 0), align 1
%conv70 = zext i8 %36 to i16
%cmp71 = icmp eq i16 %conv70, 0
br i1 %cmp71, label %if.then73, label %if.end82
if.then73: ; preds = %if.end69
%37 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%Y74 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %37, i32 0, i32 2
%38 = load i8, i8* %Y74, align 1
%conv75 = zext i8 %38 to i16
%add76 = add nsw i16 %conv75, 15
%conv77 = trunc i16 %add76 to i8
store i8 %conv77, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet5, i32 0, i32 0), align 1
%39 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X78 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %39, i32 0, i32 3
%40 = load i8, i8* %X78, align 1
%conv79 = zext i8 %40 to i16
%add80 = add nsw i16 %conv79, 7
%conv81 = trunc i16 %add80 to i8
store i8 %conv81, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet5, i32 0, i32 4), align 1
store i8 -30, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet5, i32 0, i32 2), align 1
store i8 1, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet5, i32 0, i32 3), align 1
store i8 32, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet5, i32 0, i32 6), align 1
%41 = load i8, i8* @X_compare, align 1
store i8 %41, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet5, i32 0, i32 7), align 1
br label %if.end121
if.end82: ; preds = %if.end69
%42 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet6, i32 0, i32 0), align 1
%conv83 = zext i8 %42 to i16
%cmp84 = icmp eq i16 %conv83, 0
br i1 %cmp84, label %if.then86, label %if.end95
if.then86: ; preds = %if.end82
%43 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%Y87 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %43, i32 0, i32 2
%44 = load i8, i8* %Y87, align 1
%conv88 = zext i8 %44 to i16
%add89 = add nsw i16 %conv88, 15
%conv90 = trunc i16 %add89 to i8
store i8 %conv90, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet6, i32 0, i32 0), align 1
%45 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X91 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %45, i32 0, i32 3
%46 = load i8, i8* %X91, align 1
%conv92 = zext i8 %46 to i16
%add93 = add nsw i16 %conv92, 7
%conv94 = trunc i16 %add93 to i8
store i8 %conv94, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet6, i32 0, i32 4), align 1
store i8 -30, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet6, i32 0, i32 2), align 1
store i8 1, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet6, i32 0, i32 3), align 1
store i8 32, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet6, i32 0, i32 6), align 1
%47 = load i8, i8* @X_compare, align 1
store i8 %47, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet6, i32 0, i32 7), align 1
br label %if.end121
if.end95: ; preds = %if.end82
%48 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet7, i32 0, i32 0), align 1
%conv96 = zext i8 %48 to i16
%cmp97 = icmp eq i16 %conv96, 0
br i1 %cmp97, label %if.then99, label %if.end108
if.then99: ; preds = %if.end95
%49 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%Y100 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %49, i32 0, i32 2
%50 = load i8, i8* %Y100, align 1
%conv101 = zext i8 %50 to i16
%add102 = add nsw i16 %conv101, 15
%conv103 = trunc i16 %add102 to i8
store i8 %conv103, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet7, i32 0, i32 0), align 1
%51 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X104 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %51, i32 0, i32 3
%52 = load i8, i8* %X104, align 1
%conv105 = zext i8 %52 to i16
%add106 = add nsw i16 %conv105, 7
%conv107 = trunc i16 %add106 to i8
store i8 %conv107, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet7, i32 0, i32 4), align 1
store i8 -30, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet7, i32 0, i32 2), align 1
store i8 1, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet7, i32 0, i32 3), align 1
store i8 32, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet7, i32 0, i32 6), align 1
%53 = load i8, i8* @X_compare, align 1
store i8 %53, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet7, i32 0, i32 7), align 1
br label %if.end121
if.end108: ; preds = %if.end95
%54 = load i8, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet8, i32 0, i32 0), align 1
%conv109 = zext i8 %54 to i16
%cmp110 = icmp eq i16 %conv109, 0
br i1 %cmp110, label %if.then112, label %if.end121
if.then112: ; preds = %if.end108
%55 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%Y113 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %55, i32 0, i32 2
%56 = load i8, i8* %Y113, align 1
%conv114 = zext i8 %56 to i16
%add115 = add nsw i16 %conv114, 15
%conv116 = trunc i16 %add115 to i8
store i8 %conv116, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet8, i32 0, i32 0), align 1
%57 = load %struct.ENEMY*, %struct.ENEMY** @Enemy_Pointer, align 1
%X117 = getelementptr inbounds %struct.ENEMY, %struct.ENEMY* %57, i32 0, i32 3
%58 = load i8, i8* %X117, align 1
%conv118 = zext i8 %58 to i16
%add119 = add nsw i16 %conv118, 7
%conv120 = trunc i16 %add119 to i8
store i8 %conv120, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet8, i32 0, i32 4), align 1
store i8 -30, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet8, i32 0, i32 2), align 1
store i8 1, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet8, i32 0, i32 3), align 1
store i8 32, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet8, i32 0, i32 6), align 1
%59 = load i8, i8* @X_compare, align 1
store i8 %59, i8* getelementptr inbounds (%struct.BULLET, %struct.BULLET* @enemy_bullet8, i32 0, i32 7), align 1
br label %if.end121
if.end121: ; preds = %if.then23, %if.then34, %if.then47, %if.then60, %if.then73, %if.then86, %if.then99, %if.then112, %if.end108
ret void
}
; Function Attrs: nounwind
define void @SHAKE_AND_BLINK() #0 {
entry:
store i8 0, i8* @Shake_Timer_1, align 1
store i8 0, i8* @Shake_Timer_2, align 1
call void @Play_Fx(i8 zeroext 3)
store i8 8, i8* inttoptr (i16 16405 to i8*), align 1
store i8 0, i8* @NMI_flag, align 1
br label %while.cond
while.cond: ; preds = %if.end33, %entry
%0 = load i8, i8* @Shake_Timer_2, align 1
%conv = zext i8 %0 to i16
%cmp = icmp eq i16 %conv, 0
br i1 %cmp, label %while.body, label %while.end36
while.body: ; preds = %while.cond
br label %while.cond2
while.cond2: ; preds = %while.body6, %while.body
%1 = load i8, i8* @NMI_flag, align 1
%conv3 = zext i8 %1 to i16
%cmp4 = icmp eq i16 %conv3, 0
br i1 %cmp4, label %while.body6, label %while.end
while.body6: ; preds = %while.cond2
br label %while.cond2
while.end: ; preds = %while.cond2
store i8 1, i8* @Flag_Blink_Boss, align 1
call void @Reset_Scroll()
call void @Blank_sprite()
call void @Set_Sprite_Zero()
call void @Draw_Hero()
call void @Draw_Sprites(%struct.ENEMY* @BOSS)
call void @Music_Update()
call void @Adjust_Scoreboard()
%2 = load i8, i8* @Shake_Timer_1, align 1
%inc = add i8 %2, 1
store i8 %inc, i8* @Shake_Timer_1, align 1
%3 = load i8, i8* @Shake_Timer_1, align 1
%conv7 = zext i8 %3 to i16
%cmp8 = icmp eq i16 %conv7, 0
br i1 %cmp8, label %if.then, label %if.end
if.then: ; preds = %while.end
%4 = load i8, i8* @Shake_Timer_2, align 1
%inc10 = add i8 %4, 1
store i8 %inc10, i8* @Shake_Timer_2, align 1
br label %if.end
if.end: ; preds = %if.then, %while.end
%5 = load i8, i8* @Shake_Timer_1, align 1
%conv11 = zext i8 %5 to i16
%and = and i16 %conv11, 63
%cmp12 = icmp eq i16 %and, 0
br i1 %cmp12, label %if.then14, label %if.end20
if.then14: ; preds = %if.end
%6 = load i8, i8* @Shake_Timer_1, align 1
%conv15 = zext i8 %6 to i16
%cmp16 = icmp slt i16 %conv15, 176
br i1 %cmp16, label %if.then18, label %if.end19
if.then18: ; preds = %if.then14
call void @Play_Fx(i8 zeroext 3)
br label %if.end19
if.end19: ; preds = %if.then18, %if.then14
br label %if.end20
if.end20: ; preds = %if.end19, %if.end
%7 = load i8, i8* @Shake_Timer_1, align 1
%conv21 = zext i8 %7 to i16
%and22 = and i16 %conv21, 5
%cmp23 = icmp eq i16 %and22, 0
br i1 %cmp23, label %if.then25, label %if.else
if.then25: ; preds = %if.end20
%8 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 3), align 1
%inc26 = add i8 %8, 1
store i8 %inc26, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 3), align 1
br label %if.end33
if.else: ; preds = %if.end20
%9 = load i8, i8* @Shake_Timer_1, align 1
%conv27 = zext i8 %9 to i16
%and28 = and i16 %conv27, 5
%cmp29 = icmp eq i16 %and28, 4
br i1 %cmp29, label %if.then31, label %if.end32
if.then31: ; preds = %if.else
%10 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 3), align 1
%dec = add i8 %10, -1
store i8 %dec, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 3), align 1
br label %if.end32
if.end32: ; preds = %if.then31, %if.else
br label %if.end33
if.end33: ; preds = %if.end32, %if.then25
store i8 0, i8* @NMI_flag, align 1
%11 = load i8, i8* @Shake_Timer_1, align 1
%conv34 = zext i8 %11 to i16
%and35 = and i16 %conv34, 12
%shr = ashr i16 %and35, 2
%arrayidx = getelementptr inbounds [4 x i8], [4 x i8]* @BOSS_BLINK, i16 0, i16 %shr
%12 = load i8, i8* %arrayidx, align 1
store i8 %12, i8* @temp, align 1
br label %while.cond
while.end36: ; preds = %while.cond
store i8 0, i8* @Flag_Blink_Boss, align 1
ret void
}
; Function Attrs: nounwind
define void @Spawn_Lasers() #0 {
entry:
%0 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER1, i32 0, i32 2), align 1
%conv = zext i8 %0 to i16
%cmp = icmp eq i16 %conv, 0
br i1 %cmp, label %if.then, label %if.end
if.then: ; preds = %entry
store i8 19, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER1, i32 0, i32 0), align 1
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER1, i32 0, i32 1), align 1
%1 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 3), align 1
%conv2 = zext i8 %1 to i16
%add = add nsw i16 %conv2, 15
%conv3 = trunc i16 %add to i8
store i8 %conv3, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER1, i32 0, i32 3), align 1
%2 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 2), align 1
%conv4 = zext i8 %2 to i16
%add5 = add nsw i16 %conv4, 16
%conv6 = trunc i16 %add5 to i8
store i8 %conv6, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER1, i32 0, i32 2), align 1
store i8 19, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER2, i32 0, i32 0), align 1
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER2, i32 0, i32 1), align 1
%3 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 3), align 1
%conv7 = zext i8 %3 to i16
%add8 = add nsw i16 %conv7, 38
%conv9 = trunc i16 %add8 to i8
store i8 %conv9, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER2, i32 0, i32 3), align 1
%4 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 2), align 1
%conv10 = zext i8 %4 to i16
%add11 = add nsw i16 %conv10, 16
%conv12 = trunc i16 %add11 to i8
store i8 %conv12, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER2, i32 0, i32 2), align 1
call void @Play_Fx(i8 zeroext 1)
br label %if.end29
if.end: ; preds = %entry
%5 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER3, i32 0, i32 2), align 1
%conv13 = zext i8 %5 to i16
%cmp14 = icmp eq i16 %conv13, 0
br i1 %cmp14, label %if.then16, label %if.end29
if.then16: ; preds = %if.end
store i8 19, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER3, i32 0, i32 0), align 1
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER3, i32 0, i32 1), align 1
%6 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 3), align 1
%conv17 = zext i8 %6 to i16
%add18 = add nsw i16 %conv17, 15
%conv19 = trunc i16 %add18 to i8
store i8 %conv19, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER3, i32 0, i32 3), align 1
%7 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 2), align 1
%conv20 = zext i8 %7 to i16
%add21 = add nsw i16 %conv20, 16
%conv22 = trunc i16 %add21 to i8
store i8 %conv22, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER3, i32 0, i32 2), align 1
store i8 19, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER4, i32 0, i32 0), align 1
store i8 0, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER4, i32 0, i32 1), align 1
%8 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 3), align 1
%conv23 = zext i8 %8 to i16
%add24 = add nsw i16 %conv23, 38
%conv25 = trunc i16 %add24 to i8
store i8 %conv25, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER4, i32 0, i32 3), align 1
%9 = load i8, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @BOSS, i32 0, i32 2), align 1
%conv26 = zext i8 %9 to i16
%add27 = add nsw i16 %conv26, 16
%conv28 = trunc i16 %add27 to i8
store i8 %conv28, i8* getelementptr inbounds (%struct.ENEMY, %struct.ENEMY* @LASER4, i32 0, i32 2), align 1
call void @Play_Fx(i8 zeroext 1)
br label %if.end29
if.end29: ; preds = %if.then, %if.then16, %if.end
ret void
}
attributes #0 = { nounwind "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
!llvm.ident = !{!0}
!0 = !{!"clang version 3.9.1 (https://github.com/beholdnec/clang-m6502.git 04e492b2d0506c48866d33f4f4c221873ded9050) (https://github.com/beholdnec/llvm-m6502.git 64aa8f61885091ddfa2210bbf76ea79345c0c54e)"}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment