; LLVM IR from BrunoLevy/learn-fpga :: LiteX/software/Doom/mc1-doom/src (wi_stuff)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.memblock_s = type { i32, i32, ptr, i32, i32, ptr, ptr, i32 }
%struct.wbstartstruct_t = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [4 x %struct.wbplayerstruct_t] }
%struct.wbplayerstruct_t = type { i32, i32, i32, i32, i32, [4 x i32], i32 }
%struct.anim_t = type { i32, i32, i32, %struct.point_t, i32, i32, [3 x ptr], i32, i32, i32, i32 }
%struct.point_t = type { i32, i32 }

@lnames = external hidden global ptr, align 8
@wbs = external hidden global ptr, align 8
@finished = external hidden global ptr, align 8
@entering = external hidden global ptr, align 8
@gamemode = external global i32, align 4
@NUMANIMS = external hidden global [4 x i32], align 16
@anims = external hidden global [4 x ptr], align 16
@num = external hidden global [10 x ptr], align 16
@wiminus = external hidden global ptr, align 8
@percent = external hidden global ptr, align 8
@colon = external hidden global ptr, align 8
@sucks = external hidden global ptr, align 8
@splat = external hidden global ptr, align 8
@yah = external hidden global [2 x ptr], align 16
@total = external hidden global ptr, align 8
@killers = external hidden global ptr, align 8
@victims = external hidden global ptr, align 8
@p = external hidden global [4 x ptr], align 16
@kills = external hidden global ptr, align 8
@items = external hidden global ptr, align 8
@secret = external hidden global ptr, align 8
@frags = external hidden global ptr, align 8
@sp_secret = external hidden global ptr, align 8
@time = external hidden global ptr, align 8
@par = external hidden global ptr, align 8
@NUMCMAPS = external hidden global i32, align 4
@bp = external hidden global [4 x ptr], align 16
@.str.33 = external hidden unnamed_addr constant [109 x i8], align 1

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: nounwind uwtable
define dso_local void @WI_unloadData() #1 {
  %1 = alloca i32, align 4
  %2 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr %1) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %2) #4
  %3 = load ptr, ptr @wiminus, align 8, !tbaa !5
  %4 = getelementptr inbounds i8, ptr %3, i64 -48
  %5 = getelementptr inbounds %struct.memblock_s, ptr %4, i32 0, i32 4
  %6 = load i32, ptr %5, align 4, !tbaa !9
  %7 = icmp ne i32 %6, 1919505
  br i1 %7, label %8, label %9

8:                                                ; preds = %0
  call void (ptr, ...) @I_Error(ptr noundef @.str.33, i32 noundef 1681) #5
  unreachable

9:                                                ; preds = %0
  %10 = load ptr, ptr @wiminus, align 8, !tbaa !5
  call void @Z_ChangeTag2(ptr noundef %10, i32 noundef 101)
  store i32 0, ptr %1, align 4, !tbaa !12
  br label %11

11:                                               ; preds = %29, %9
  %12 = load i32, ptr %1, align 4, !tbaa !12
  %13 = icmp slt i32 %12, 10
  br i1 %13, label %14, label %32

14:                                               ; preds = %11
  %15 = load i32, ptr %1, align 4, !tbaa !12
  %16 = sext i32 %15 to i64
  %17 = getelementptr inbounds [10 x ptr], ptr @num, i64 0, i64 %16
  %18 = load ptr, ptr %17, align 8, !tbaa !5
  %19 = getelementptr inbounds i8, ptr %18, i64 -48
  %20 = getelementptr inbounds %struct.memblock_s, ptr %19, i32 0, i32 4
  %21 = load i32, ptr %20, align 4, !tbaa !9
  %22 = icmp ne i32 %21, 1919505
  br i1 %22, label %23, label %24

23:                                               ; preds = %14
  call void (ptr, ...) @I_Error(ptr noundef @.str.33, i32 noundef 1684) #5
  unreachable

24:                                               ; preds = %14
  %25 = load i32, ptr %1, align 4, !tbaa !12
  %26 = sext i32 %25 to i64
  %27 = getelementptr inbounds [10 x ptr], ptr @num, i64 0, i64 %26
  %28 = load ptr, ptr %27, align 8, !tbaa !5
  call void @Z_ChangeTag2(ptr noundef %28, i32 noundef 101)
  br label %29

29:                                               ; preds = %24
  %30 = load i32, ptr %1, align 4, !tbaa !12
  %31 = add nsw i32 %30, 1
  store i32 %31, ptr %1, align 4, !tbaa !12
  br label %11, !llvm.loop !13

32:                                               ; preds = %11
  %33 = load i32, ptr @gamemode, align 4, !tbaa !12
  %34 = icmp eq i32 %33, 2
  br i1 %34, label %35, label %61

35:                                               ; preds = %32
  store i32 0, ptr %1, align 4, !tbaa !12
  br label %36

36:                                               ; preds = %57, %35
  %37 = load i32, ptr %1, align 4, !tbaa !12
  %38 = load i32, ptr @NUMCMAPS, align 4, !tbaa !12
  %39 = icmp slt i32 %37, %38
  br i1 %39, label %40, label %60

40:                                               ; preds = %36
  %41 = load ptr, ptr @lnames, align 8, !tbaa !5
  %42 = load i32, ptr %1, align 4, !tbaa !12
  %43 = sext i32 %42 to i64
  %44 = getelementptr inbounds ptr, ptr %41, i64 %43
  %45 = load ptr, ptr %44, align 8, !tbaa !5
  %46 = getelementptr inbounds i8, ptr %45, i64 -48
  %47 = getelementptr inbounds %struct.memblock_s, ptr %46, i32 0, i32 4
  %48 = load i32, ptr %47, align 4, !tbaa !9
  %49 = icmp ne i32 %48, 1919505
  br i1 %49, label %50, label %51

50:                                               ; preds = %40
  call void (ptr, ...) @I_Error(ptr noundef @.str.33, i32 noundef 1689) #5
  unreachable

51:                                               ; preds = %40
  %52 = load ptr, ptr @lnames, align 8, !tbaa !5
  %53 = load i32, ptr %1, align 4, !tbaa !12
  %54 = sext i32 %53 to i64
  %55 = getelementptr inbounds ptr, ptr %52, i64 %54
  %56 = load ptr, ptr %55, align 8, !tbaa !5
  call void @Z_ChangeTag2(ptr noundef %56, i32 noundef 101)
  br label %57

57:                                               ; preds = %51
  %58 = load i32, ptr %1, align 4, !tbaa !12
  %59 = add nsw i32 %58, 1
  store i32 %59, ptr %1, align 4, !tbaa !12
  br label %36, !llvm.loop !15

60:                                               ; preds = %36
  br label %192

61:                                               ; preds = %32
  %62 = load ptr, ptr @yah, align 16, !tbaa !5
  %63 = getelementptr inbounds i8, ptr %62, i64 -48
  %64 = getelementptr inbounds %struct.memblock_s, ptr %63, i32 0, i32 4
  %65 = load i32, ptr %64, align 4, !tbaa !9
  %66 = icmp ne i32 %65, 1919505
  br i1 %66, label %67, label %68

67:                                               ; preds = %61
  call void (ptr, ...) @I_Error(ptr noundef @.str.33, i32 noundef 1693) #5
  unreachable

68:                                               ; preds = %61
  %69 = load ptr, ptr @yah, align 16, !tbaa !5
  call void @Z_ChangeTag2(ptr noundef %69, i32 noundef 101)
  %70 = load ptr, ptr getelementptr inbounds ([2 x ptr], ptr @yah, i64 0, i64 1), align 8, !tbaa !5
  %71 = getelementptr inbounds i8, ptr %70, i64 -48
  %72 = getelementptr inbounds %struct.memblock_s, ptr %71, i32 0, i32 4
  %73 = load i32, ptr %72, align 4, !tbaa !9
  %74 = icmp ne i32 %73, 1919505
  br i1 %74, label %75, label %76

75:                                               ; preds = %68
  call void (ptr, ...) @I_Error(ptr noundef @.str.33, i32 noundef 1694) #5
  unreachable

76:                                               ; preds = %68
  %77 = load ptr, ptr getelementptr inbounds ([2 x ptr], ptr @yah, i64 0, i64 1), align 8, !tbaa !5
  call void @Z_ChangeTag2(ptr noundef %77, i32 noundef 101)
  %78 = load ptr, ptr @splat, align 8, !tbaa !5
  %79 = getelementptr inbounds i8, ptr %78, i64 -48
  %80 = getelementptr inbounds %struct.memblock_s, ptr %79, i32 0, i32 4
  %81 = load i32, ptr %80, align 4, !tbaa !9
  %82 = icmp ne i32 %81, 1919505
  br i1 %82, label %83, label %84

83:                                               ; preds = %76
  call void (ptr, ...) @I_Error(ptr noundef @.str.33, i32 noundef 1696) #5
  unreachable

84:                                               ; preds = %76
  %85 = load ptr, ptr @splat, align 8, !tbaa !5
  call void @Z_ChangeTag2(ptr noundef %85, i32 noundef 101)
  store i32 0, ptr %1, align 4, !tbaa !12
  br label %86

86:                                               ; preds = %106, %84
  %87 = load i32, ptr %1, align 4, !tbaa !12
  %88 = icmp slt i32 %87, 9
  br i1 %88, label %89, label %109

89:                                               ; preds = %86
  %90 = load ptr, ptr @lnames, align 8, !tbaa !5
  %91 = load i32, ptr %1, align 4, !tbaa !12
  %92 = sext i32 %91 to i64
  %93 = getelementptr inbounds ptr, ptr %90, i64 %92
  %94 = load ptr, ptr %93, align 8, !tbaa !5
  %95 = getelementptr inbounds i8, ptr %94, i64 -48
  %96 = getelementptr inbounds %struct.memblock_s, ptr %95, i32 0, i32 4
  %97 = load i32, ptr %96, align 4, !tbaa !9
  %98 = icmp ne i32 %97, 1919505
  br i1 %98, label %99, label %100

99:                                               ; preds = %89
  call void (ptr, ...) @I_Error(ptr noundef @.str.33, i32 noundef 1699) #5
  unreachable

100:                                              ; preds = %89
  %101 = load ptr, ptr @lnames, align 8, !tbaa !5
  %102 = load i32, ptr %1, align 4, !tbaa !12
  %103 = sext i32 %102 to i64
  %104 = getelementptr inbounds ptr, ptr %101, i64 %103
  %105 = load ptr, ptr %104, align 8, !tbaa !5
  call void @Z_ChangeTag2(ptr noundef %105, i32 noundef 101)
  br label %106

106:                                              ; preds = %100
  %107 = load i32, ptr %1, align 4, !tbaa !12
  %108 = add nsw i32 %107, 1
  store i32 %108, ptr %1, align 4, !tbaa !12
  br label %86, !llvm.loop !16

109:                                              ; preds = %86
  %110 = load ptr, ptr @wbs, align 8, !tbaa !5
  %111 = getelementptr inbounds %struct.wbstartstruct_t, ptr %110, i32 0, i32 0
  %112 = load i32, ptr %111, align 4, !tbaa !17
  %113 = icmp slt i32 %112, 3
  br i1 %113, label %114, label %191

114:                                              ; preds = %109
  store i32 0, ptr %2, align 4, !tbaa !12
  br label %115

115:                                              ; preds = %187, %114
  %116 = load i32, ptr %2, align 4, !tbaa !12
  %117 = load ptr, ptr @wbs, align 8, !tbaa !5
  %118 = getelementptr inbounds %struct.wbstartstruct_t, ptr %117, i32 0, i32 0
  %119 = load i32, ptr %118, align 4, !tbaa !17
  %120 = sext i32 %119 to i64
  %121 = getelementptr inbounds [4 x i32], ptr @NUMANIMS, i64 0, i64 %120
  %122 = load i32, ptr %121, align 4, !tbaa !12
  %123 = icmp slt i32 %116, %122
  br i1 %123, label %124, label %190

124:                                              ; preds = %115
  %125 = load ptr, ptr @wbs, align 8, !tbaa !5
  %126 = getelementptr inbounds %struct.wbstartstruct_t, ptr %125, i32 0, i32 0
  %127 = load i32, ptr %126, align 4, !tbaa !17
  %128 = icmp ne i32 %127, 1
  br i1 %128, label %132, label %129

129:                                              ; preds = %124
  %130 = load i32, ptr %2, align 4, !tbaa !12
  %131 = icmp ne i32 %130, 8
  br i1 %131, label %132, label %186

132:                                              ; preds = %129, %124
  store i32 0, ptr %1, align 4, !tbaa !12
  br label %133

133:                                              ; preds = %182, %132
  %134 = load i32, ptr %1, align 4, !tbaa !12
  %135 = load ptr, ptr @wbs, align 8, !tbaa !5
  %136 = getelementptr inbounds %struct.wbstartstruct_t, ptr %135, i32 0, i32 0
  %137 = load i32, ptr %136, align 4, !tbaa !17
  %138 = sext i32 %137 to i64
  %139 = getelementptr inbounds [4 x ptr], ptr @anims, i64 0, i64 %138
  %140 = load ptr, ptr %139, align 8, !tbaa !5
  %141 = load i32, ptr %2, align 4, !tbaa !12
  %142 = sext i32 %141 to i64
  %143 = getelementptr inbounds %struct.anim_t, ptr %140, i64 %142
  %144 = getelementptr inbounds %struct.anim_t, ptr %143, i32 0, i32 2
  %145 = load i32, ptr %144, align 8, !tbaa !19
  %146 = icmp slt i32 %134, %145
  br i1 %146, label %147, label %185

147:                                              ; preds = %133
  %148 = load ptr, ptr @wbs, align 8, !tbaa !5
  %149 = getelementptr inbounds %struct.wbstartstruct_t, ptr %148, i32 0, i32 0
  %150 = load i32, ptr %149, align 4, !tbaa !17
  %151 = sext i32 %150 to i64
  %152 = getelementptr inbounds [4 x ptr], ptr @anims, i64 0, i64 %151
  %153 = load ptr, ptr %152, align 8, !tbaa !5
  %154 = load i32, ptr %2, align 4, !tbaa !12
  %155 = sext i32 %154 to i64
  %156 = getelementptr inbounds %struct.anim_t, ptr %153, i64 %155
  %157 = getelementptr inbounds %struct.anim_t, ptr %156, i32 0, i32 6
  %158 = load i32, ptr %1, align 4, !tbaa !12
  %159 = sext i32 %158 to i64
  %160 = getelementptr inbounds [3 x ptr], ptr %157, i64 0, i64 %159
  %161 = load ptr, ptr %160, align 8, !tbaa !5
  %162 = getelementptr inbounds i8, ptr %161, i64 -48
  %163 = getelementptr inbounds %struct.memblock_s, ptr %162, i32 0, i32 4
  %164 = load i32, ptr %163, align 4, !tbaa !9
  %165 = icmp ne i32 %164, 1919505
  br i1 %165, label %166, label %167

166:                                              ; preds = %147
  call void (ptr, ...) @I_Error(ptr noundef @.str.33, i32 noundef 1707) #5
  unreachable

167:                                              ; preds = %147
  %168 = load ptr, ptr @wbs, align 8, !tbaa !5
  %169 = getelementptr inbounds %struct.wbstartstruct_t, ptr %168, i32 0, i32 0
  %170 = load i32, ptr %169, align 4, !tbaa !17
  %171 = sext i32 %170 to i64
  %172 = getelementptr inbounds [4 x ptr], ptr @anims, i64 0, i64 %171
  %173 = load ptr, ptr %172, align 8, !tbaa !5
  %174 = load i32, ptr %2, align 4, !tbaa !12
  %175 = sext i32 %174 to i64
  %176 = getelementptr inbounds %struct.anim_t, ptr %173, i64 %175
  %177 = getelementptr inbounds %struct.anim_t, ptr %176, i32 0, i32 6
  %178 = load i32, ptr %1, align 4, !tbaa !12
  %179 = sext i32 %178 to i64
  %180 = getelementptr inbounds [3 x ptr], ptr %177, i64 0, i64 %179
  %181 = load ptr, ptr %180, align 8, !tbaa !5
  call void @Z_ChangeTag2(ptr noundef %181, i32 noundef 101)
  br label %182

182:                                              ; preds = %167
  %183 = load i32, ptr %1, align 4, !tbaa !12
  %184 = add nsw i32 %183, 1
  store i32 %184, ptr %1, align 4, !tbaa !12
  br label %133, !llvm.loop !22

185:                                              ; preds = %133
  br label %186

186:                                              ; preds = %185, %129
  br label %187

187:                                              ; preds = %186
  %188 = load i32, ptr %2, align 4, !tbaa !12
  %189 = add nsw i32 %188, 1
  store i32 %189, ptr %2, align 4, !tbaa !12
  br label %115, !llvm.loop !23

190:                                              ; preds = %115
  br label %191

191:                                              ; preds = %190, %109
  br label %192

192:                                              ; preds = %191, %60
  %193 = load ptr, ptr @lnames, align 8, !tbaa !5
  call void @Z_Free(ptr noundef %193)
  %194 = load ptr, ptr @percent, align 8, !tbaa !5
  %195 = getelementptr inbounds i8, ptr %194, i64 -48
  %196 = getelementptr inbounds %struct.memblock_s, ptr %195, i32 0, i32 4
  %197 = load i32, ptr %196, align 4, !tbaa !9
  %198 = icmp ne i32 %197, 1919505
  br i1 %198, label %199, label %200

199:                                              ; preds = %192
  call void (ptr, ...) @I_Error(ptr noundef @.str.33, i32 noundef 1714) #5
  unreachable

200:                                              ; preds = %192
  %201 = load ptr, ptr @percent, align 8, !tbaa !5
  call void @Z_ChangeTag2(ptr noundef %201, i32 noundef 101)
  %202 = load ptr, ptr @colon, align 8, !tbaa !5
  %203 = getelementptr inbounds i8, ptr %202, i64 -48
  %204 = getelementptr inbounds %struct.memblock_s, ptr %203, i32 0, i32 4
  %205 = load i32, ptr %204, align 4, !tbaa !9
  %206 = icmp ne i32 %205, 1919505
  br i1 %206, label %207, label %208

207:                                              ; preds = %200
  call void (ptr, ...) @I_Error(ptr noundef @.str.33, i32 noundef 1715) #5
  unreachable

208:                                              ; preds = %200
  %209 = load ptr, ptr @colon, align 8, !tbaa !5
  call void @Z_ChangeTag2(ptr noundef %209, i32 noundef 101)
  %210 = load ptr, ptr @finished, align 8, !tbaa !5
  %211 = getelementptr inbounds i8, ptr %210, i64 -48
  %212 = getelementptr inbounds %struct.memblock_s, ptr %211, i32 0, i32 4
  %213 = load i32, ptr %212, align 4, !tbaa !9
  %214 = icmp ne i32 %213, 1919505
  br i1 %214, label %215, label %216

215:                                              ; preds = %208
  call void (ptr, ...) @I_Error(ptr noundef @.str.33, i32 noundef 1716) #5
  unreachable

216:                                              ; preds = %208
  %217 = load ptr, ptr @finished, align 8, !tbaa !5
  call void @Z_ChangeTag2(ptr noundef %217, i32 noundef 101)
  %218 = load ptr, ptr @entering, align 8, !tbaa !5
  %219 = getelementptr inbounds i8, ptr %218, i64 -48
  %220 = getelementptr inbounds %struct.memblock_s, ptr %219, i32 0, i32 4
  %221 = load i32, ptr %220, align 4, !tbaa !9
  %222 = icmp ne i32 %221, 1919505
  br i1 %222, label %223, label %224

223:                                              ; preds = %216
  call void (ptr, ...) @I_Error(ptr noundef @.str.33, i32 noundef 1717) #5
  unreachable

224:                                              ; preds = %216
  %225 = load ptr, ptr @entering, align 8, !tbaa !5
  call void @Z_ChangeTag2(ptr noundef %225, i32 noundef 101)
  %226 = load ptr, ptr @kills, align 8, !tbaa !5
  %227 = getelementptr inbounds i8, ptr %226, i64 -48
  %228 = getelementptr inbounds %struct.memblock_s, ptr %227, i32 0, i32 4
  %229 = load i32, ptr %228, align 4, !tbaa !9
  %230 = icmp ne i32 %229, 1919505
  br i1 %230, label %231, label %232

231:                                              ; preds = %224
  call void (ptr, ...) @I_Error(ptr noundef @.str.33, i32 noundef 1718) #5
  unreachable

232:                                              ; preds = %224
  %233 = load ptr, ptr @kills, align 8, !tbaa !5
  call void @Z_ChangeTag2(ptr noundef %233, i32 noundef 101)
  %234 = load ptr, ptr @secret, align 8, !tbaa !5
  %235 = getelementptr inbounds i8, ptr %234, i64 -48
  %236 = getelementptr inbounds %struct.memblock_s, ptr %235, i32 0, i32 4
  %237 = load i32, ptr %236, align 4, !tbaa !9
  %238 = icmp ne i32 %237, 1919505
  br i1 %238, label %239, label %240

239:                                              ; preds = %232
  call void (ptr, ...) @I_Error(ptr noundef @.str.33, i32 noundef 1719) #5
  unreachable

240:                                              ; preds = %232
  %241 = load ptr, ptr @secret, align 8, !tbaa !5
  call void @Z_ChangeTag2(ptr noundef %241, i32 noundef 101)
  %242 = load ptr, ptr @sp_secret, align 8, !tbaa !5
  %243 = getelementptr inbounds i8, ptr %242, i64 -48
  %244 = getelementptr inbounds %struct.memblock_s, ptr %243, i32 0, i32 4
  %245 = load i32, ptr %244, align 4, !tbaa !9
  %246 = icmp ne i32 %245, 1919505
  br i1 %246, label %247, label %248

247:                                              ; preds = %240
  call void (ptr, ...) @I_Error(ptr noundef @.str.33, i32 noundef 1720) #5
  unreachable

248:                                              ; preds = %240
  %249 = load ptr, ptr @sp_secret, align 8, !tbaa !5
  call void @Z_ChangeTag2(ptr noundef %249, i32 noundef 101)
  %250 = load ptr, ptr @items, align 8, !tbaa !5
  %251 = getelementptr inbounds i8, ptr %250, i64 -48
  %252 = getelementptr inbounds %struct.memblock_s, ptr %251, i32 0, i32 4
  %253 = load i32, ptr %252, align 4, !tbaa !9
  %254 = icmp ne i32 %253, 1919505
  br i1 %254, label %255, label %256

255:                                              ; preds = %248
  call void (ptr, ...) @I_Error(ptr noundef @.str.33, i32 noundef 1721) #5
  unreachable

256:                                              ; preds = %248
  %257 = load ptr, ptr @items, align 8, !tbaa !5
  call void @Z_ChangeTag2(ptr noundef %257, i32 noundef 101)
  %258 = load ptr, ptr @frags, align 8, !tbaa !5
  %259 = getelementptr inbounds i8, ptr %258, i64 -48
  %260 = getelementptr inbounds %struct.memblock_s, ptr %259, i32 0, i32 4
  %261 = load i32, ptr %260, align 4, !tbaa !9
  %262 = icmp ne i32 %261, 1919505
  br i1 %262, label %263, label %264

263:                                              ; preds = %256
  call void (ptr, ...) @I_Error(ptr noundef @.str.33, i32 noundef 1722) #5
  unreachable

264:                                              ; preds = %256
  %265 = load ptr, ptr @frags, align 8, !tbaa !5
  call void @Z_ChangeTag2(ptr noundef %265, i32 noundef 101)
  %266 = load ptr, ptr @time, align 8, !tbaa !5
  %267 = getelementptr inbounds i8, ptr %266, i64 -48
  %268 = getelementptr inbounds %struct.memblock_s, ptr %267, i32 0, i32 4
  %269 = load i32, ptr %268, align 4, !tbaa !9
  %270 = icmp ne i32 %269, 1919505
  br i1 %270, label %271, label %272

271:                                              ; preds = %264
  call void (ptr, ...) @I_Error(ptr noundef @.str.33, i32 noundef 1723) #5
  unreachable

272:                                              ; preds = %264
  %273 = load ptr, ptr @time, align 8, !tbaa !5
  call void @Z_ChangeTag2(ptr noundef %273, i32 noundef 101)
  %274 = load ptr, ptr @sucks, align 8, !tbaa !5
  %275 = getelementptr inbounds i8, ptr %274, i64 -48
  %276 = getelementptr inbounds %struct.memblock_s, ptr %275, i32 0, i32 4
  %277 = load i32, ptr %276, align 4, !tbaa !9
  %278 = icmp ne i32 %277, 1919505
  br i1 %278, label %279, label %280

279:                                              ; preds = %272
  call void (ptr, ...) @I_Error(ptr noundef @.str.33, i32 noundef 1724) #5
  unreachable

280:                                              ; preds = %272
  %281 = load ptr, ptr @sucks, align 8, !tbaa !5
  call void @Z_ChangeTag2(ptr noundef %281, i32 noundef 101)
  %282 = load ptr, ptr @par, align 8, !tbaa !5
  %283 = getelementptr inbounds i8, ptr %282, i64 -48
  %284 = getelementptr inbounds %struct.memblock_s, ptr %283, i32 0, i32 4
  %285 = load i32, ptr %284, align 4, !tbaa !9
  %286 = icmp ne i32 %285, 1919505
  br i1 %286, label %287, label %288

287:                                              ; preds = %280
  call void (ptr, ...) @I_Error(ptr noundef @.str.33, i32 noundef 1725) #5
  unreachable

288:                                              ; preds = %280
  %289 = load ptr, ptr @par, align 8, !tbaa !5
  call void @Z_ChangeTag2(ptr noundef %289, i32 noundef 101)
  %290 = load ptr, ptr @victims, align 8, !tbaa !5
  %291 = getelementptr inbounds i8, ptr %290, i64 -48
  %292 = getelementptr inbounds %struct.memblock_s, ptr %291, i32 0, i32 4
  %293 = load i32, ptr %292, align 4, !tbaa !9
  %294 = icmp ne i32 %293, 1919505
  br i1 %294, label %295, label %296

295:                                              ; preds = %288
  call void (ptr, ...) @I_Error(ptr noundef @.str.33, i32 noundef 1727) #5
  unreachable

296:                                              ; preds = %288
  %297 = load ptr, ptr @victims, align 8, !tbaa !5
  call void @Z_ChangeTag2(ptr noundef %297, i32 noundef 101)
  %298 = load ptr, ptr @killers, align 8, !tbaa !5
  %299 = getelementptr inbounds i8, ptr %298, i64 -48
  %300 = getelementptr inbounds %struct.memblock_s, ptr %299, i32 0, i32 4
  %301 = load i32, ptr %300, align 4, !tbaa !9
  %302 = icmp ne i32 %301, 1919505
  br i1 %302, label %303, label %304

303:                                              ; preds = %296
  call void (ptr, ...) @I_Error(ptr noundef @.str.33, i32 noundef 1728) #5
  unreachable

304:                                              ; preds = %296
  %305 = load ptr, ptr @killers, align 8, !tbaa !5
  call void @Z_ChangeTag2(ptr noundef %305, i32 noundef 101)
  %306 = load ptr, ptr @total, align 8, !tbaa !5
  %307 = getelementptr inbounds i8, ptr %306, i64 -48
  %308 = getelementptr inbounds %struct.memblock_s, ptr %307, i32 0, i32 4
  %309 = load i32, ptr %308, align 4, !tbaa !9
  %310 = icmp ne i32 %309, 1919505
  br i1 %310, label %311, label %312

311:                                              ; preds = %304
  call void (ptr, ...) @I_Error(ptr noundef @.str.33, i32 noundef 1729) #5
  unreachable

312:                                              ; preds = %304
  %313 = load ptr, ptr @total, align 8, !tbaa !5
  call void @Z_ChangeTag2(ptr noundef %313, i32 noundef 101)
  store i32 0, ptr %1, align 4, !tbaa !12
  br label %314

314:                                              ; preds = %332, %312
  %315 = load i32, ptr %1, align 4, !tbaa !12
  %316 = icmp slt i32 %315, 4
  br i1 %316, label %317, label %335

317:                                              ; preds = %314
  %318 = load i32, ptr %1, align 4, !tbaa !12
  %319 = sext i32 %318 to i64
  %320 = getelementptr inbounds [4 x ptr], ptr @p, i64 0, i64 %319
  %321 = load ptr, ptr %320, align 8, !tbaa !5
  %322 = getelementptr inbounds i8, ptr %321, i64 -48
  %323 = getelementptr inbounds %struct.memblock_s, ptr %322, i32 0, i32 4
  %324 = load i32, ptr %323, align 4, !tbaa !9
  %325 = icmp ne i32 %324, 1919505
  br i1 %325, label %326, label %327

326:                                              ; preds = %317
  call void (ptr, ...) @I_Error(ptr noundef @.str.33, i32 noundef 1734) #5
  unreachable

327:                                              ; preds = %317
  %328 = load i32, ptr %1, align 4, !tbaa !12
  %329 = sext i32 %328 to i64
  %330 = getelementptr inbounds [4 x ptr], ptr @p, i64 0, i64 %329
  %331 = load ptr, ptr %330, align 8, !tbaa !5
  call void @Z_ChangeTag2(ptr noundef %331, i32 noundef 101)
  br label %332

332:                                              ; preds = %327
  %333 = load i32, ptr %1, align 4, !tbaa !12
  %334 = add nsw i32 %333, 1
  store i32 %334, ptr %1, align 4, !tbaa !12
  br label %314, !llvm.loop !24

335:                                              ; preds = %314
  store i32 0, ptr %1, align 4, !tbaa !12
  br label %336

336:                                              ; preds = %354, %335
  %337 = load i32, ptr %1, align 4, !tbaa !12
  %338 = icmp slt i32 %337, 4
  br i1 %338, label %339, label %357

339:                                              ; preds = %336
  %340 = load i32, ptr %1, align 4, !tbaa !12
  %341 = sext i32 %340 to i64
  %342 = getelementptr inbounds [4 x ptr], ptr @bp, i64 0, i64 %341
  %343 = load ptr, ptr %342, align 8, !tbaa !5
  %344 = getelementptr inbounds i8, ptr %343, i64 -48
  %345 = getelementptr inbounds %struct.memblock_s, ptr %344, i32 0, i32 4
  %346 = load i32, ptr %345, align 4, !tbaa !9
  %347 = icmp ne i32 %346, 1919505
  br i1 %347, label %348, label %349

348:                                              ; preds = %339
  call void (ptr, ...) @I_Error(ptr noundef @.str.33, i32 noundef 1737) #5
  unreachable

349:                                              ; preds = %339
  %350 = load i32, ptr %1, align 4, !tbaa !12
  %351 = sext i32 %350 to i64
  %352 = getelementptr inbounds [4 x ptr], ptr @bp, i64 0, i64 %351
  %353 = load ptr, ptr %352, align 8, !tbaa !5
  call void @Z_ChangeTag2(ptr noundef %353, i32 noundef 101)
  br label %354

354:                                              ; preds = %349
  %355 = load i32, ptr %1, align 4, !tbaa !12
  %356 = add nsw i32 %355, 1
  store i32 %356, ptr %1, align 4, !tbaa !12
  br label %336, !llvm.loop !25

357:                                              ; preds = %336
  call void @llvm.lifetime.end.p0(i64 4, ptr %2) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %1) #4
  ret void
}

; Function Attrs: noreturn
declare void @I_Error(ptr noundef, ...) #2

declare void @Z_ChangeTag2(ptr noundef, i32 noundef) #3

declare void @Z_Free(ptr noundef) #3

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { noreturn "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind }
attributes #5 = { noreturn }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !11, i64 20}
!10 = !{!"memblock_s", !11, i64 0, !11, i64 4, !6, i64 8, !11, i64 16, !11, i64 20, !6, i64 24, !6, i64 32, !11, i64 40}
!11 = !{!"int", !7, i64 0}
!12 = !{!11, !11, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = !{!18, !11, i64 0}
!18 = !{!"", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !7, i64 40}
!19 = !{!20, !11, i64 8}
!20 = !{!"", !11, i64 0, !11, i64 4, !11, i64 8, !21, i64 12, !11, i64 20, !11, i64 24, !7, i64 32, !11, i64 56, !11, i64 60, !11, i64 64, !11, i64 68}
!21 = !{!"", !11, i64 0, !11, i64 4}
!22 = distinct !{!22, !14}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.anim_t = type { i32, i32, i32, %struct.point_t, i32, i32, [3 x ptr], i32, i32, i32, i32 }
%struct.point_t = type { i32, i32 }

@lnames = external hidden local_unnamed_addr global ptr, align 8
@wbs = external hidden local_unnamed_addr global ptr, align 8
@finished = external hidden local_unnamed_addr global ptr, align 8
@entering = external hidden local_unnamed_addr global ptr, align 8
@gamemode = external local_unnamed_addr global i32, align 4
@NUMANIMS = external hidden local_unnamed_addr global [4 x i32], align 16
@anims = external hidden local_unnamed_addr global [4 x ptr], align 16
@num = external hidden local_unnamed_addr global [10 x ptr], align 16
@wiminus = external hidden local_unnamed_addr global ptr, align 8
@percent = external hidden local_unnamed_addr global ptr, align 8
@colon = external hidden local_unnamed_addr global ptr, align 8
@sucks = external hidden local_unnamed_addr global ptr, align 8
@splat = external hidden local_unnamed_addr global ptr, align 8
@yah = external hidden local_unnamed_addr global [2 x ptr], align 16
@total = external hidden local_unnamed_addr global ptr, align 8
@killers = external hidden local_unnamed_addr global ptr, align 8
@victims = external hidden local_unnamed_addr global ptr, align 8
@p = external hidden local_unnamed_addr global [4 x ptr], align 16
@kills = external hidden local_unnamed_addr global ptr, align 8
@items = external hidden local_unnamed_addr global ptr, align 8
@secret = external hidden local_unnamed_addr global ptr, align 8
@frags = external hidden local_unnamed_addr global ptr, align 8
@sp_secret = external hidden local_unnamed_addr global ptr, align 8
@time = external hidden local_unnamed_addr global ptr, align 8
@par = external hidden local_unnamed_addr global ptr, align 8
@NUMCMAPS = external hidden local_unnamed_addr global i32, align 4
@bp = external hidden local_unnamed_addr global [4 x ptr], align 16
@.str.33 = external hidden unnamed_addr constant [109 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @WI_unloadData() local_unnamed_addr #0 {
  %1 = load ptr, ptr @wiminus, align 8, !tbaa !5
  %2 = getelementptr inbounds i8, ptr %1, i64 -28
  %3 = load i32, ptr %2, align 4, !tbaa !9
  %.not = icmp eq i32 %3, 1919505
  br i1 %.not, label %5, label %4

4:                                                ; preds = %0
  tail call void (ptr, ...) @I_Error(ptr noundef nonnull @.str.33, i32 noundef 1681) #3
  unreachable

5:                                                ; preds = %0
  tail call void @Z_ChangeTag2(ptr noundef nonnull %1, i32 noundef 101) #4
  %6 = load ptr, ptr @num, align 16, !tbaa !5
  %7 = getelementptr inbounds i8, ptr %6, i64 -28
  %8 = load i32, ptr %7, align 4, !tbaa !9
  %.not55 = icmp eq i32 %8, 1919505
  br i1 %.not55, label %10, label %9

9:                                                ; preds = %42, %38, %34, %30, %26, %22, %18, %14, %10, %5
  tail call void (ptr, ...) @I_Error(ptr noundef nonnull @.str.33, i32 noundef 1684) #3
  unreachable

10:                                               ; preds = %5
  tail call void @Z_ChangeTag2(ptr noundef nonnull %6, i32 noundef 101) #4
  %11 = load ptr, ptr getelementptr inbounds (i8, ptr @num, i64 8), align 8, !tbaa !5
  %12 = getelementptr inbounds i8, ptr %11, i64 -28
  %13 = load i32, ptr %12, align 4, !tbaa !9
  %.not55.1 = icmp eq i32 %13, 1919505
  br i1 %.not55.1, label %14, label %9

14:                                               ; preds = %10
  tail call void @Z_ChangeTag2(ptr noundef nonnull %11, i32 noundef 101) #4
  %15 = load ptr, ptr getelementptr inbounds (i8, ptr @num, i64 16), align 16, !tbaa !5
  %16 = getelementptr inbounds i8, ptr %15, i64 -28
  %17 = load i32, ptr %16, align 4, !tbaa !9
  %.not55.2 = icmp eq i32 %17, 1919505
  br i1 %.not55.2, label %18, label %9

18:                                               ; preds = %14
  tail call void @Z_ChangeTag2(ptr noundef nonnull %15, i32 noundef 101) #4
  %19 = load ptr, ptr getelementptr inbounds (i8, ptr @num, i64 24), align 8, !tbaa !5
  %20 = getelementptr inbounds i8, ptr %19, i64 -28
  %21 = load i32, ptr %20, align 4, !tbaa !9
  %.not55.3 = icmp eq i32 %21, 1919505
  br i1 %.not55.3, label %22, label %9

22:                                               ; preds = %18
  tail call void @Z_ChangeTag2(ptr noundef nonnull %19, i32 noundef 101) #4
  %23 = load ptr, ptr getelementptr inbounds (i8, ptr @num, i64 32), align 16, !tbaa !5
  %24 = getelementptr inbounds i8, ptr %23, i64 -28
  %25 = load i32, ptr %24, align 4, !tbaa !9
  %.not55.4 = icmp eq i32 %25, 1919505
  br i1 %.not55.4, label %26, label %9

26:                                               ; preds = %22
  tail call void @Z_ChangeTag2(ptr noundef nonnull %23, i32 noundef 101) #4
  %27 = load ptr, ptr getelementptr inbounds (i8, ptr @num, i64 40), align 8, !tbaa !5
  %28 = getelementptr inbounds i8, ptr %27, i64 -28
  %29 = load i32, ptr %28, align 4, !tbaa !9
  %.not55.5 = icmp eq i32 %29, 1919505
  br i1 %.not55.5, label %30, label %9

30:                                               ; preds = %26
  tail call void @Z_ChangeTag2(ptr noundef nonnull %27, i32 noundef 101) #4
  %31 = load ptr, ptr getelementptr inbounds (i8, ptr @num, i64 48), align 16, !tbaa !5
  %32 = getelementptr inbounds i8, ptr %31, i64 -28
  %33 = load i32, ptr %32, align 4, !tbaa !9
  %.not55.6 = icmp eq i32 %33, 1919505
  br i1 %.not55.6, label %34, label %9

34:                                               ; preds = %30
  tail call void @Z_ChangeTag2(ptr noundef nonnull %31, i32 noundef 101) #4
  %35 = load ptr, ptr getelementptr inbounds (i8, ptr @num, i64 56), align 8, !tbaa !5
  %36 = getelementptr inbounds i8, ptr %35, i64 -28
  %37 = load i32, ptr %36, align 4, !tbaa !9
  %.not55.7 = icmp eq i32 %37, 1919505
  br i1 %.not55.7, label %38, label %9

38:                                               ; preds = %34
  tail call void @Z_ChangeTag2(ptr noundef nonnull %35, i32 noundef 101) #4
  %39 = load ptr, ptr getelementptr inbounds (i8, ptr @num, i64 64), align 16, !tbaa !5
  %40 = getelementptr inbounds i8, ptr %39, i64 -28
  %41 = load i32, ptr %40, align 4, !tbaa !9
  %.not55.8 = icmp eq i32 %41, 1919505
  br i1 %.not55.8, label %42, label %9

42:                                               ; preds = %38
  tail call void @Z_ChangeTag2(ptr noundef nonnull %39, i32 noundef 101) #4
  %43 = load ptr, ptr getelementptr inbounds (i8, ptr @num, i64 72), align 8, !tbaa !5
  %44 = getelementptr inbounds i8, ptr %43, i64 -28
  %45 = load i32, ptr %44, align 4, !tbaa !9
  %.not55.9 = icmp eq i32 %45, 1919505
  br i1 %.not55.9, label %46, label %9

46:                                               ; preds = %42
  tail call void @Z_ChangeTag2(ptr noundef nonnull %43, i32 noundef 101) #4
  %47 = load i32, ptr @gamemode, align 4, !tbaa !12
  %48 = icmp eq i32 %47, 2
  br i1 %48, label %.preheader56, label %61

.preheader56:                                     ; preds = %46
  %49 = load i32, ptr @NUMCMAPS, align 4, !tbaa !12
  %50 = icmp sgt i32 %49, 0
  br i1 %50, label %.lr.ph67, label %.loopexit

.lr.ph67:                                         ; preds = %.preheader56, %57
  %indvars.iv77 = phi i64 [ %indvars.iv.next78, %57 ], [ 0, %.preheader56 ]
  %51 = load ptr, ptr @lnames, align 8, !tbaa !5
  %52 = getelementptr inbounds ptr, ptr %51, i64 %indvars.iv77
  %53 = load ptr, ptr %52, align 8, !tbaa !5
  %54 = getelementptr inbounds i8, ptr %53, i64 -28
  %55 = load i32, ptr %54, align 4, !tbaa !9
  %.not54 = icmp eq i32 %55, 1919505
  br i1 %.not54, label %57, label %56

56:                                               ; preds = %.lr.ph67
  tail call void (ptr, ...) @I_Error(ptr noundef nonnull @.str.33, i32 noundef 1689) #3
  unreachable

57:                                               ; preds = %.lr.ph67
  tail call void @Z_ChangeTag2(ptr noundef nonnull %53, i32 noundef 101) #4
  %indvars.iv.next78 = add nuw nsw i64 %indvars.iv77, 1
  %58 = load i32, ptr @NUMCMAPS, align 4, !tbaa !12
  %59 = sext i32 %58 to i64
  %60 = icmp slt i64 %indvars.iv.next78, %59
  br i1 %60, label %.lr.ph67, label %.loopexit, !llvm.loop !13

61:                                               ; preds = %46
  %62 = load ptr, ptr @yah, align 16, !tbaa !5
  %63 = getelementptr inbounds i8, ptr %62, i64 -28
  %64 = load i32, ptr %63, align 4, !tbaa !9
  %.not32 = icmp eq i32 %64, 1919505
  br i1 %.not32, label %66, label %65

65:                                               ; preds = %61
  tail call void (ptr, ...) @I_Error(ptr noundef nonnull @.str.33, i32 noundef 1693) #3
  unreachable

66:                                               ; preds = %61
  tail call void @Z_ChangeTag2(ptr noundef nonnull %62, i32 noundef 101) #4
  %67 = load ptr, ptr getelementptr inbounds (i8, ptr @yah, i64 8), align 8, !tbaa !5
  %68 = getelementptr inbounds i8, ptr %67, i64 -28
  %69 = load i32, ptr %68, align 4, !tbaa !9
  %.not33 = icmp eq i32 %69, 1919505
  br i1 %.not33, label %71, label %70

70:                                               ; preds = %66
  tail call void (ptr, ...) @I_Error(ptr noundef nonnull @.str.33, i32 noundef 1694) #3
  unreachable

71:                                               ; preds = %66
  tail call void @Z_ChangeTag2(ptr noundef nonnull %67, i32 noundef 101) #4
  %72 = load ptr, ptr @splat, align 8, !tbaa !5
  %73 = getelementptr inbounds i8, ptr %72, i64 -28
  %74 = load i32, ptr %73, align 4, !tbaa !9
  %.not34 = icmp eq i32 %74, 1919505
  br i1 %.not34, label %76, label %75

75:                                               ; preds = %71
  tail call void (ptr, ...) @I_Error(ptr noundef nonnull @.str.33, i32 noundef 1696) #3
  unreachable

76:                                               ; preds = %71
  tail call void @Z_ChangeTag2(ptr noundef nonnull %72, i32 noundef 101) #4
  %77 = load ptr, ptr @lnames, align 8, !tbaa !5
  %78 = load ptr, ptr %77, align 8, !tbaa !5
  %79 = getelementptr inbounds i8, ptr %78, i64 -28
  %80 = load i32, ptr %79, align 4, !tbaa !9
  %.not36 = icmp eq i32 %80, 1919505
  br i1 %.not36, label %82, label %81

81:                                               ; preds = %124, %118, %112, %106, %100, %94, %88, %82, %76
  tail call void (ptr, ...) @I_Error(ptr noundef nonnull @.str.33, i32 noundef 1699) #3
  unreachable

82:                                               ; preds = %76
  tail call void @Z_ChangeTag2(ptr noundef nonnull %78, i32 noundef 101) #4
  %83 = load ptr, ptr @lnames, align 8, !tbaa !5
  %84 = getelementptr inbounds i8, ptr %83, i64 8
  %85 = load ptr, ptr %84, align 8, !tbaa !5
  %86 = getelementptr inbounds i8, ptr %85, i64 -28
  %87 = load i32, ptr %86, align 4, !tbaa !9
  %.not36.1 = icmp eq i32 %87, 1919505
  br i1 %.not36.1, label %88, label %81

88:                                               ; preds = %82
  tail call void @Z_ChangeTag2(ptr noundef nonnull %85, i32 noundef 101) #4
  %89 = load ptr, ptr @lnames, align 8, !tbaa !5
  %90 = getelementptr inbounds i8, ptr %89, i64 16
  %91 = load ptr, ptr %90, align 8, !tbaa !5
  %92 = getelementptr inbounds i8, ptr %91, i64 -28
  %93 = load i32, ptr %92, align 4, !tbaa !9
  %.not36.2 = icmp eq i32 %93, 1919505
  br i1 %.not36.2, label %94, label %81

94:                                               ; preds = %88
  tail call void @Z_ChangeTag2(ptr noundef nonnull %91, i32 noundef 101) #4
  %95 = load ptr, ptr @lnames, align 8, !tbaa !5
  %96 = getelementptr inbounds i8, ptr %95, i64 24
  %97 = load ptr, ptr %96, align 8, !tbaa !5
  %98 = getelementptr inbounds i8, ptr %97, i64 -28
  %99 = load i32, ptr %98, align 4, !tbaa !9
  %.not36.3 = icmp eq i32 %99, 1919505
  br i1 %.not36.3, label %100, label %81

100:                                              ; preds = %94
  tail call void @Z_ChangeTag2(ptr noundef nonnull %97, i32 noundef 101) #4
  %101 = load ptr, ptr @lnames, align 8, !tbaa !5
  %102 = getelementptr inbounds i8, ptr %101, i64 32
  %103 = load ptr, ptr %102, align 8, !tbaa !5
  %104 = getelementptr inbounds i8, ptr %103, i64 -28
  %105 = load i32, ptr %104, align 4, !tbaa !9
  %.not36.4 = icmp eq i32 %105, 1919505
  br i1 %.not36.4, label %106, label %81

106:                                              ; preds = %100
  tail call void @Z_ChangeTag2(ptr noundef nonnull %103, i32 noundef 101) #4
  %107 = load ptr, ptr @lnames, align 8, !tbaa !5
  %108 = getelementptr inbounds i8, ptr %107, i64 40
  %109 = load ptr, ptr %108, align 8, !tbaa !5
  %110 = getelementptr inbounds i8, ptr %109, i64 -28
  %111 = load i32, ptr %110, align 4, !tbaa !9
  %.not36.5 = icmp eq i32 %111, 1919505
  br i1 %.not36.5, label %112, label %81

112:                                              ; preds = %106
  tail call void @Z_ChangeTag2(ptr noundef nonnull %109, i32 noundef 101) #4
  %113 = load ptr, ptr @lnames, align 8, !tbaa !5
  %114 = getelementptr inbounds i8, ptr %113, i64 48
  %115 = load ptr, ptr %114, align 8, !tbaa !5
  %116 = getelementptr inbounds i8, ptr %115, i64 -28
  %117 = load i32, ptr %116, align 4, !tbaa !9
  %.not36.6 = icmp eq i32 %117, 1919505
  br i1 %.not36.6, label %118, label %81

118:                                              ; preds = %112
  tail call void @Z_ChangeTag2(ptr noundef nonnull %115, i32 noundef 101) #4
  %119 = load ptr, ptr @lnames, align 8, !tbaa !5
  %120 = getelementptr inbounds i8, ptr %119, i64 56
  %121 = load ptr, ptr %120, align 8, !tbaa !5
  %122 = getelementptr inbounds i8, ptr %121, i64 -28
  %123 = load i32, ptr %122, align 4, !tbaa !9
  %.not36.7 = icmp eq i32 %123, 1919505
  br i1 %.not36.7, label %124, label %81

124:                                              ; preds = %118
  tail call void @Z_ChangeTag2(ptr noundef nonnull %121, i32 noundef 101) #4
  %125 = load ptr, ptr @lnames, align 8, !tbaa !5
  %126 = getelementptr inbounds i8, ptr %125, i64 64
  %127 = load ptr, ptr %126, align 8, !tbaa !5
  %128 = getelementptr inbounds i8, ptr %127, i64 -28
  %129 = load i32, ptr %128, align 4, !tbaa !9
  %.not36.8 = icmp eq i32 %129, 1919505
  br i1 %.not36.8, label %130, label %81

130:                                              ; preds = %124
  tail call void @Z_ChangeTag2(ptr noundef nonnull %127, i32 noundef 101) #4
  %131 = load ptr, ptr @wbs, align 8, !tbaa !5
  %132 = load i32, ptr %131, align 4, !tbaa !15
  %133 = icmp slt i32 %132, 3
  br i1 %133, label %.preheader59, label %.loopexit

.preheader59:                                     ; preds = %130
  %134 = sext i32 %132 to i64
  %135 = getelementptr inbounds [4 x i32], ptr @NUMANIMS, i64 0, i64 %134
  %136 = load i32, ptr %135, align 4, !tbaa !12
  %137 = icmp sgt i32 %136, 0
  br i1 %137, label %.lr.ph65, label %.loopexit

.lr.ph65:                                         ; preds = %.preheader59, %.loopexit58
  %138 = phi i32 [ %163, %.loopexit58 ], [ %132, %.preheader59 ]
  %indvars.iv74 = phi i64 [ %indvars.iv.next75, %.loopexit58 ], [ 0, %.preheader59 ]
  %139 = icmp ne i32 %138, 1
  %140 = icmp ne i64 %indvars.iv74, 8
  %or.cond = or i1 %140, %139
  br i1 %or.cond, label %.preheader57, label %.loopexit58

.preheader57:                                     ; preds = %.lr.ph65
  %141 = sext i32 %138 to i64
  %142 = getelementptr inbounds [4 x ptr], ptr @anims, i64 0, i64 %141
  %143 = load ptr, ptr %142, align 8, !tbaa !5
  %144 = getelementptr inbounds %struct.anim_t, ptr %143, i64 %indvars.iv74, i32 2
  %145 = load i32, ptr %144, align 8, !tbaa !17
  %146 = icmp sgt i32 %145, 0
  br i1 %146, label %.lr.ph, label %.loopexit58

.lr.ph:                                           ; preds = %.preheader57, %153
  %indvars.iv = phi i64 [ %indvars.iv.next, %153 ], [ 0, %.preheader57 ]
  %147 = phi ptr [ %158, %153 ], [ %143, %.preheader57 ]
  %148 = getelementptr inbounds %struct.anim_t, ptr %147, i64 %indvars.iv74, i32 6, i64 %indvars.iv
  %149 = load ptr, ptr %148, align 8, !tbaa !5
  %150 = getelementptr inbounds i8, ptr %149, i64 -28
  %151 = load i32, ptr %150, align 4, !tbaa !9
  %.not35 = icmp eq i32 %151, 1919505
  br i1 %.not35, label %153, label %152

152:                                              ; preds = %.lr.ph
  tail call void (ptr, ...) @I_Error(ptr noundef nonnull @.str.33, i32 noundef 1707) #3
  unreachable

153:                                              ; preds = %.lr.ph
  tail call void @Z_ChangeTag2(ptr noundef nonnull %149, i32 noundef 101) #4
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %154 = load ptr, ptr @wbs, align 8, !tbaa !5
  %155 = load i32, ptr %154, align 4, !tbaa !15
  %156 = sext i32 %155 to i64
  %157 = getelementptr inbounds [4 x ptr], ptr @anims, i64 0, i64 %156
  %158 = load ptr, ptr %157, align 8, !tbaa !5
  %159 = getelementptr inbounds %struct.anim_t, ptr %158, i64 %indvars.iv74, i32 2
  %160 = load i32, ptr %159, align 8, !tbaa !17
  %161 = sext i32 %160 to i64
  %162 = icmp slt i64 %indvars.iv.next, %161
  br i1 %162, label %.lr.ph, label %.loopexit58, !llvm.loop !20

.loopexit58:                                      ; preds = %153, %.preheader57, %.lr.ph65
  %163 = phi i32 [ %138, %.preheader57 ], [ 1, %.lr.ph65 ], [ %155, %153 ]
  %indvars.iv.next75 = add nuw nsw i64 %indvars.iv74, 1
  %164 = sext i32 %163 to i64
  %165 = getelementptr inbounds [4 x i32], ptr @NUMANIMS, i64 0, i64 %164
  %166 = load i32, ptr %165, align 4, !tbaa !12
  %167 = sext i32 %166 to i64
  %168 = icmp slt i64 %indvars.iv.next75, %167
  br i1 %168, label %.lr.ph65, label %.loopexit, !llvm.loop !21

.loopexit:                                        ; preds = %.loopexit58, %57, %.preheader59, %.preheader56, %130
  %169 = load ptr, ptr @lnames, align 8, !tbaa !5
  tail call void @Z_Free(ptr noundef %169) #4
  %170 = load ptr, ptr @percent, align 8, !tbaa !5
  %171 = getelementptr inbounds i8, ptr %170, i64 -28
  %172 = load i32, ptr %171, align 4, !tbaa !9
  %.not37 = icmp eq i32 %172, 1919505
  br i1 %.not37, label %174, label %173

173:                                              ; preds = %.loopexit
  tail call void (ptr, ...) @I_Error(ptr noundef nonnull @.str.33, i32 noundef 1714) #3
  unreachable

174:                                              ; preds = %.loopexit
  tail call void @Z_ChangeTag2(ptr noundef nonnull %170, i32 noundef 101) #4
  %175 = load ptr, ptr @colon, align 8, !tbaa !5
  %176 = getelementptr inbounds i8, ptr %175, i64 -28
  %177 = load i32, ptr %176, align 4, !tbaa !9
  %.not38 = icmp eq i32 %177, 1919505
  br i1 %.not38, label %179, label %178

178:                                              ; preds = %174
  tail call void (ptr, ...) @I_Error(ptr noundef nonnull @.str.33, i32 noundef 1715) #3
  unreachable

179:                                              ; preds = %174
  tail call void @Z_ChangeTag2(ptr noundef nonnull %175, i32 noundef 101) #4
  %180 = load ptr, ptr @finished, align 8, !tbaa !5
  %181 = getelementptr inbounds i8, ptr %180, i64 -28
  %182 = load i32, ptr %181, align 4, !tbaa !9
  %.not39 = icmp eq i32 %182, 1919505
  br i1 %.not39, label %184, label %183

183:                                              ; preds = %179
  tail call void (ptr, ...) @I_Error(ptr noundef nonnull @.str.33, i32 noundef 1716) #3
  unreachable

184:                                              ; preds = %179
  tail call void @Z_ChangeTag2(ptr noundef nonnull %180, i32 noundef 101) #4
  %185 = load ptr, ptr @entering, align 8, !tbaa !5
  %186 = getelementptr inbounds i8, ptr %185, i64 -28
  %187 = load i32, ptr %186, align 4, !tbaa !9
  %.not40 = icmp eq i32 %187, 1919505
  br i1 %.not40, label %189, label %188

188:                                              ; preds = %184
  tail call void (ptr, ...) @I_Error(ptr noundef nonnull @.str.33, i32 noundef 1717) #3
  unreachable

189:                                              ; preds = %184
  tail call void @Z_ChangeTag2(ptr noundef nonnull %185, i32 noundef 101) #4
  %190 = load ptr, ptr @kills, align 8, !tbaa !5
  %191 = getelementptr inbounds i8, ptr %190, i64 -28
  %192 = load i32, ptr %191, align 4, !tbaa !9
  %.not41 = icmp eq i32 %192, 1919505
  br i1 %.not41, label %194, label %193

193:                                              ; preds = %189
  tail call void (ptr, ...) @I_Error(ptr noundef nonnull @.str.33, i32 noundef 1718) #3
  unreachable

194:                                              ; preds = %189
  tail call void @Z_ChangeTag2(ptr noundef nonnull %190, i32 noundef 101) #4
  %195 = load ptr, ptr @secret, align 8, !tbaa !5
  %196 = getelementptr inbounds i8, ptr %195, i64 -28
  %197 = load i32, ptr %196, align 4, !tbaa !9
  %.not42 = icmp eq i32 %197, 1919505
  br i1 %.not42, label %199, label %198

198:                                              ; preds = %194
  tail call void (ptr, ...) @I_Error(ptr noundef nonnull @.str.33, i32 noundef 1719) #3
  unreachable

199:                                              ; preds = %194
  tail call void @Z_ChangeTag2(ptr noundef nonnull %195, i32 noundef 101) #4
  %200 = load ptr, ptr @sp_secret, align 8, !tbaa !5
  %201 = getelementptr inbounds i8, ptr %200, i64 -28
  %202 = load i32, ptr %201, align 4, !tbaa !9
  %.not43 = icmp eq i32 %202, 1919505
  br i1 %.not43, label %204, label %203

203:                                              ; preds = %199
  tail call void (ptr, ...) @I_Error(ptr noundef nonnull @.str.33, i32 noundef 1720) #3
  unreachable

204:                                              ; preds = %199
  tail call void @Z_ChangeTag2(ptr noundef nonnull %200, i32 noundef 101) #4
  %205 = load ptr, ptr @items, align 8, !tbaa !5
  %206 = getelementptr inbounds i8, ptr %205, i64 -28
  %207 = load i32, ptr %206, align 4, !tbaa !9
  %.not44 = icmp eq i32 %207, 1919505
  br i1 %.not44, label %209, label %208

208:                                              ; preds = %204
  tail call void (ptr, ...) @I_Error(ptr noundef nonnull @.str.33, i32 noundef 1721) #3
  unreachable

209:                                              ; preds = %204
  tail call void @Z_ChangeTag2(ptr noundef nonnull %205, i32 noundef 101) #4
  %210 = load ptr, ptr @frags, align 8, !tbaa !5
  %211 = getelementptr inbounds i8, ptr %210, i64 -28
  %212 = load i32, ptr %211, align 4, !tbaa !9
  %.not45 = icmp eq i32 %212, 1919505
  br i1 %.not45, label %214, label %213

213:                                              ; preds = %209
  tail call void (ptr, ...) @I_Error(ptr noundef nonnull @.str.33, i32 noundef 1722) #3
  unreachable

214:                                              ; preds = %209
  tail call void @Z_ChangeTag2(ptr noundef nonnull %210, i32 noundef 101) #4
  %215 = load ptr, ptr @time, align 8, !tbaa !5
  %216 = getelementptr inbounds i8, ptr %215, i64 -28
  %217 = load i32, ptr %216, align 4, !tbaa !9
  %.not46 = icmp eq i32 %217, 1919505
  br i1 %.not46, label %219, label %218

218:                                              ; preds = %214
  tail call void (ptr, ...) @I_Error(ptr noundef nonnull @.str.33, i32 noundef 1723) #3
  unreachable

219:                                              ; preds = %214
  tail call void @Z_ChangeTag2(ptr noundef nonnull %215, i32 noundef 101) #4
  %220 = load ptr, ptr @sucks, align 8, !tbaa !5
  %221 = getelementptr inbounds i8, ptr %220, i64 -28
  %222 = load i32, ptr %221, align 4, !tbaa !9
  %.not47 = icmp eq i32 %222, 1919505
  br i1 %.not47, label %224, label %223

223:                                              ; preds = %219
  tail call void (ptr, ...) @I_Error(ptr noundef nonnull @.str.33, i32 noundef 1724) #3
  unreachable

224:                                              ; preds = %219
  tail call void @Z_ChangeTag2(ptr noundef nonnull %220, i32 noundef 101) #4
  %225 = load ptr, ptr @par, align 8, !tbaa !5
  %226 = getelementptr inbounds i8, ptr %225, i64 -28
  %227 = load i32, ptr %226, align 4, !tbaa !9
  %.not48 = icmp eq i32 %227, 1919505
  br i1 %.not48, label %229, label %228

228:                                              ; preds = %224
  tail call void (ptr, ...) @I_Error(ptr noundef nonnull @.str.33, i32 noundef 1725) #3
  unreachable

229:                                              ; preds = %224
  tail call void @Z_ChangeTag2(ptr noundef nonnull %225, i32 noundef 101) #4
  %230 = load ptr, ptr @victims, align 8, !tbaa !5
  %231 = getelementptr inbounds i8, ptr %230, i64 -28
  %232 = load i32, ptr %231, align 4, !tbaa !9
  %.not49 = icmp eq i32 %232, 1919505
  br i1 %.not49, label %234, label %233

233:                                              ; preds = %229
  tail call void (ptr, ...) @I_Error(ptr noundef nonnull @.str.33, i32 noundef 1727) #3
  unreachable

234:                                              ; preds = %229
  tail call void @Z_ChangeTag2(ptr noundef nonnull %230, i32 noundef 101) #4
  %235 = load ptr, ptr @killers, align 8, !tbaa !5
  %236 = getelementptr inbounds i8, ptr %235, i64 -28
  %237 = load i32, ptr %236, align 4, !tbaa !9
  %.not50 = icmp eq i32 %237, 1919505
  br i1 %.not50, label %239, label %238

238:                                              ; preds = %234
  tail call void (ptr, ...) @I_Error(ptr noundef nonnull @.str.33, i32 noundef 1728) #3
  unreachable

239:                                              ; preds = %234
  tail call void @Z_ChangeTag2(ptr noundef nonnull %235, i32 noundef 101) #4
  %240 = load ptr, ptr @total, align 8, !tbaa !5
  %241 = getelementptr inbounds i8, ptr %240, i64 -28
  %242 = load i32, ptr %241, align 4, !tbaa !9
  %.not51 = icmp eq i32 %242, 1919505
  br i1 %.not51, label %244, label %243

243:                                              ; preds = %239
  tail call void (ptr, ...) @I_Error(ptr noundef nonnull @.str.33, i32 noundef 1729) #3
  unreachable

244:                                              ; preds = %239
  tail call void @Z_ChangeTag2(ptr noundef nonnull %240, i32 noundef 101) #4
  %245 = load ptr, ptr @p, align 16, !tbaa !5
  %246 = getelementptr inbounds i8, ptr %245, i64 -28
  %247 = load i32, ptr %246, align 4, !tbaa !9
  %.not53 = icmp eq i32 %247, 1919505
  br i1 %.not53, label %249, label %248

248:                                              ; preds = %257, %253, %249, %244
  tail call void (ptr, ...) @I_Error(ptr noundef nonnull @.str.33, i32 noundef 1734) #3
  unreachable

249:                                              ; preds = %244
  tail call void @Z_ChangeTag2(ptr noundef nonnull %245, i32 noundef 101) #4
  %250 = load ptr, ptr getelementptr inbounds (i8, ptr @p, i64 8), align 8, !tbaa !5
  %251 = getelementptr inbounds i8, ptr %250, i64 -28
  %252 = load i32, ptr %251, align 4, !tbaa !9
  %.not53.1 = icmp eq i32 %252, 1919505
  br i1 %.not53.1, label %253, label %248

253:                                              ; preds = %249
  tail call void @Z_ChangeTag2(ptr noundef nonnull %250, i32 noundef 101) #4
  %254 = load ptr, ptr getelementptr inbounds (i8, ptr @p, i64 16), align 16, !tbaa !5
  %255 = getelementptr inbounds i8, ptr %254, i64 -28
  %256 = load i32, ptr %255, align 4, !tbaa !9
  %.not53.2 = icmp eq i32 %256, 1919505
  br i1 %.not53.2, label %257, label %248

257:                                              ; preds = %253
  tail call void @Z_ChangeTag2(ptr noundef nonnull %254, i32 noundef 101) #4
  %258 = load ptr, ptr getelementptr inbounds (i8, ptr @p, i64 24), align 8, !tbaa !5
  %259 = getelementptr inbounds i8, ptr %258, i64 -28
  %260 = load i32, ptr %259, align 4, !tbaa !9
  %.not53.3 = icmp eq i32 %260, 1919505
  br i1 %.not53.3, label %.preheader.preheader, label %248

.preheader.preheader:                             ; preds = %257
  tail call void @Z_ChangeTag2(ptr noundef nonnull %258, i32 noundef 101) #4
  %261 = load ptr, ptr @bp, align 16, !tbaa !5
  %262 = getelementptr inbounds i8, ptr %261, i64 -28
  %263 = load i32, ptr %262, align 4, !tbaa !9
  %.not52 = icmp eq i32 %263, 1919505
  br i1 %.not52, label %.preheader.1, label %264

264:                                              ; preds = %.preheader.3, %.preheader.2, %.preheader.1, %.preheader.preheader
  tail call void (ptr, ...) @I_Error(ptr noundef nonnull @.str.33, i32 noundef 1737) #3
  unreachable

.preheader.1:                                     ; preds = %.preheader.preheader
  tail call void @Z_ChangeTag2(ptr noundef nonnull %261, i32 noundef 101) #4
  %265 = load ptr, ptr getelementptr inbounds (i8, ptr @bp, i64 8), align 8, !tbaa !5
  %266 = getelementptr inbounds i8, ptr %265, i64 -28
  %267 = load i32, ptr %266, align 4, !tbaa !9
  %.not52.1 = icmp eq i32 %267, 1919505
  br i1 %.not52.1, label %.preheader.2, label %264

.preheader.2:                                     ; preds = %.preheader.1
  tail call void @Z_ChangeTag2(ptr noundef nonnull %265, i32 noundef 101) #4
  %268 = load ptr, ptr getelementptr inbounds (i8, ptr @bp, i64 16), align 16, !tbaa !5
  %269 = getelementptr inbounds i8, ptr %268, i64 -28
  %270 = load i32, ptr %269, align 4, !tbaa !9
  %.not52.2 = icmp eq i32 %270, 1919505
  br i1 %.not52.2, label %.preheader.3, label %264

.preheader.3:                                     ; preds = %.preheader.2
  tail call void @Z_ChangeTag2(ptr noundef nonnull %268, i32 noundef 101) #4
  %271 = load ptr, ptr getelementptr inbounds (i8, ptr @bp, i64 24), align 8, !tbaa !5
  %272 = getelementptr inbounds i8, ptr %271, i64 -28
  %273 = load i32, ptr %272, align 4, !tbaa !9
  %.not52.3 = icmp eq i32 %273, 1919505
  br i1 %.not52.3, label %274, label %264

274:                                              ; preds = %.preheader.3
  tail call void @Z_ChangeTag2(ptr noundef nonnull %271, i32 noundef 101) #4
  ret void
}

; Function Attrs: noreturn
declare void @I_Error(ptr noundef, ...) local_unnamed_addr #1

declare void @Z_ChangeTag2(ptr noundef, i32 noundef) local_unnamed_addr #2

declare void @Z_Free(ptr noundef) local_unnamed_addr #2

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { noreturn "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { noreturn nounwind }
attributes #4 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !11, i64 20}
!10 = !{!"memblock_s", !11, i64 0, !11, i64 4, !6, i64 8, !11, i64 16, !11, i64 20, !6, i64 24, !6, i64 32, !11, i64 40}
!11 = !{!"int", !7, i64 0}
!12 = !{!11, !11, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = !{!16, !11, i64 0}
!16 = !{!"", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !7, i64 40}
!17 = !{!18, !11, i64 8}
!18 = !{!"", !11, i64 0, !11, i64 4, !11, i64 8, !19, i64 12, !11, i64 20, !11, i64 24, !7, i64 32, !11, i64 56, !11, i64 60, !11, i64 64, !11, i64 68}
!19 = !{!"", !11, i64 0, !11, i64 4}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass