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

; 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.line_s = type { ptr, ptr, i32, i32, i16, i16, i16, [2 x i16], [4 x i32], i32, ptr, ptr, i32, ptr }
%struct.mobj_s = type { %struct.thinker_s, i32, i32, i32, ptr, ptr, i32, i32, i32, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, i32, ptr, i32, i32, i32, i32, ptr, i32, i32, ptr, i32, %struct.mapthing_t, ptr }
%struct.thinker_s = type { ptr, ptr, %union.actionf_t }
%union.actionf_t = type { ptr }
%struct.mapthing_t = type { i16, i16, i16, i16, i16 }

; Function Attrs: nounwind uwtable
declare dso_local void @P_ChangeSwitchTexture(ptr noundef, i32 noundef) #0

; Function Attrs: nounwind uwtable
define dso_local i32 @P_UseSpecialLine(ptr noundef %0, ptr noundef %1, i32 noundef %2) #0 {
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store i32 %2, ptr %7, align 4, !tbaa !9
  %8 = load i32, ptr %7, align 4, !tbaa !9
  %9 = icmp ne i32 %8, 0
  br i1 %9, label %10, label %17

10:                                               ; preds = %3
  %11 = load ptr, ptr %6, align 8, !tbaa !5
  %12 = getelementptr inbounds %struct.line_s, ptr %11, i32 0, i32 5
  %13 = load i16, ptr %12, align 2, !tbaa !11
  %14 = sext i16 %13 to i32
  switch i32 %14, label %15 [
    i32 124, label %16
  ]

15:                                               ; preds = %10
  store i32 0, ptr %4, align 4
  br label %374

16:                                               ; preds = %10
  br label %17

17:                                               ; preds = %16, %3
  %18 = load ptr, ptr %5, align 8, !tbaa !5
  %19 = getelementptr inbounds %struct.mobj_s, ptr %18, i32 0, i32 31
  %20 = load ptr, ptr %19, align 8, !tbaa !14
  %21 = icmp ne ptr %20, null
  br i1 %21, label %38, label %22

22:                                               ; preds = %17
  %23 = load ptr, ptr %6, align 8, !tbaa !5
  %24 = getelementptr inbounds %struct.line_s, ptr %23, i32 0, i32 4
  %25 = load i16, ptr %24, align 8, !tbaa !18
  %26 = sext i16 %25 to i32
  %27 = and i32 %26, 32
  %28 = icmp ne i32 %27, 0
  br i1 %28, label %29, label %30

29:                                               ; preds = %22
  store i32 0, ptr %4, align 4
  br label %374

30:                                               ; preds = %22
  %31 = load ptr, ptr %6, align 8, !tbaa !5
  %32 = getelementptr inbounds %struct.line_s, ptr %31, i32 0, i32 5
  %33 = load i16, ptr %32, align 2, !tbaa !11
  %34 = sext i16 %33 to i32
  switch i32 %34, label %36 [
    i32 1, label %35
    i32 32, label %35
    i32 33, label %35
    i32 34, label %35
  ]

35:                                               ; preds = %30, %30, %30, %30
  br label %37

36:                                               ; preds = %30
  store i32 0, ptr %4, align 4
  br label %374

37:                                               ; preds = %35
  br label %38

38:                                               ; preds = %37, %17
  %39 = load ptr, ptr %6, align 8, !tbaa !5
  %40 = getelementptr inbounds %struct.line_s, ptr %39, i32 0, i32 5
  %41 = load i16, ptr %40, align 2, !tbaa !11
  %42 = sext i16 %41 to i32
  switch i32 %42, label %373 [
    i32 1, label %43
    i32 26, label %43
    i32 27, label %43
    i32 28, label %43
    i32 31, label %43
    i32 32, label %43
    i32 33, label %43
    i32 34, label %43
    i32 117, label %43
    i32 118, label %43
    i32 7, label %46
    i32 9, label %53
    i32 11, label %60
    i32 14, label %62
    i32 15, label %69
    i32 18, label %76
    i32 20, label %83
    i32 21, label %90
    i32 23, label %97
    i32 29, label %104
    i32 41, label %111
    i32 71, label %118
    i32 49, label %125
    i32 50, label %132
    i32 51, label %139
    i32 55, label %141
    i32 101, label %148
    i32 102, label %155
    i32 103, label %162
    i32 111, label %169
    i32 112, label %176
    i32 113, label %183
    i32 122, label %190
    i32 127, label %197
    i32 131, label %204
    i32 133, label %211
    i32 135, label %211
    i32 137, label %211
    i32 140, label %219
    i32 42, label %226
    i32 43, label %233
    i32 45, label %240
    i32 60, label %247
    i32 61, label %254
    i32 62, label %261
    i32 63, label %268
    i32 64, label %275
    i32 66, label %282
    i32 67, label %289
    i32 65, label %296
    i32 68, label %303
    i32 69, label %310
    i32 70, label %317
    i32 114, label %324
    i32 115, label %331
    i32 116, label %338
    i32 123, label %345
    i32 132, label %352
    i32 99, label %359
    i32 134, label %359
    i32 136, label %359
    i32 138, label %367
    i32 139, label %370
  ]

43:                                               ; preds = %38, %38, %38, %38, %38, %38, %38, %38, %38, %38
  %44 = load ptr, ptr %6, align 8, !tbaa !5
  %45 = load ptr, ptr %5, align 8, !tbaa !5
  call void @EV_VerticalDoor(ptr noundef %44, ptr noundef %45)
  br label %373

46:                                               ; preds = %38
  %47 = load ptr, ptr %6, align 8, !tbaa !5
  %48 = call i32 @EV_BuildStairs(ptr noundef %47, i32 noundef 0)
  %49 = icmp ne i32 %48, 0
  br i1 %49, label %50, label %52

50:                                               ; preds = %46
  %51 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %51, i32 noundef 0)
  br label %52

52:                                               ; preds = %50, %46
  br label %373

53:                                               ; preds = %38
  %54 = load ptr, ptr %6, align 8, !tbaa !5
  %55 = call i32 @EV_DoDonut(ptr noundef %54)
  %56 = icmp ne i32 %55, 0
  br i1 %56, label %57, label %59

57:                                               ; preds = %53
  %58 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %58, i32 noundef 0)
  br label %59

59:                                               ; preds = %57, %53
  br label %373

60:                                               ; preds = %38
  %61 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %61, i32 noundef 0)
  call void @G_ExitLevel()
  br label %373

62:                                               ; preds = %38
  %63 = load ptr, ptr %6, align 8, !tbaa !5
  %64 = call i32 @EV_DoPlat(ptr noundef %63, i32 noundef 2, i32 noundef 32)
  %65 = icmp ne i32 %64, 0
  br i1 %65, label %66, label %68

66:                                               ; preds = %62
  %67 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %67, i32 noundef 0)
  br label %68

68:                                               ; preds = %66, %62
  br label %373

69:                                               ; preds = %38
  %70 = load ptr, ptr %6, align 8, !tbaa !5
  %71 = call i32 @EV_DoPlat(ptr noundef %70, i32 noundef 2, i32 noundef 24)
  %72 = icmp ne i32 %71, 0
  br i1 %72, label %73, label %75

73:                                               ; preds = %69
  %74 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %74, i32 noundef 0)
  br label %75

75:                                               ; preds = %73, %69
  br label %373

76:                                               ; preds = %38
  %77 = load ptr, ptr %6, align 8, !tbaa !5
  %78 = call i32 @EV_DoFloor(ptr noundef %77, i32 noundef 4)
  %79 = icmp ne i32 %78, 0
  br i1 %79, label %80, label %82

80:                                               ; preds = %76
  %81 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %81, i32 noundef 0)
  br label %82

82:                                               ; preds = %80, %76
  br label %373

83:                                               ; preds = %38
  %84 = load ptr, ptr %6, align 8, !tbaa !5
  %85 = call i32 @EV_DoPlat(ptr noundef %84, i32 noundef 3, i32 noundef 0)
  %86 = icmp ne i32 %85, 0
  br i1 %86, label %87, label %89

87:                                               ; preds = %83
  %88 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %88, i32 noundef 0)
  br label %89

89:                                               ; preds = %87, %83
  br label %373

90:                                               ; preds = %38
  %91 = load ptr, ptr %6, align 8, !tbaa !5
  %92 = call i32 @EV_DoPlat(ptr noundef %91, i32 noundef 1, i32 noundef 0)
  %93 = icmp ne i32 %92, 0
  br i1 %93, label %94, label %96

94:                                               ; preds = %90
  %95 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %95, i32 noundef 0)
  br label %96

96:                                               ; preds = %94, %90
  br label %373

97:                                               ; preds = %38
  %98 = load ptr, ptr %6, align 8, !tbaa !5
  %99 = call i32 @EV_DoFloor(ptr noundef %98, i32 noundef 1)
  %100 = icmp ne i32 %99, 0
  br i1 %100, label %101, label %103

101:                                              ; preds = %97
  %102 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %102, i32 noundef 0)
  br label %103

103:                                              ; preds = %101, %97
  br label %373

104:                                              ; preds = %38
  %105 = load ptr, ptr %6, align 8, !tbaa !5
  %106 = call i32 @EV_DoDoor(ptr noundef %105, i32 noundef 0)
  %107 = icmp ne i32 %106, 0
  br i1 %107, label %108, label %110

108:                                              ; preds = %104
  %109 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %109, i32 noundef 0)
  br label %110

110:                                              ; preds = %108, %104
  br label %373

111:                                              ; preds = %38
  %112 = load ptr, ptr %6, align 8, !tbaa !5
  %113 = call i32 @EV_DoCeiling(ptr noundef %112, i32 noundef 0)
  %114 = icmp ne i32 %113, 0
  br i1 %114, label %115, label %117

115:                                              ; preds = %111
  %116 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %116, i32 noundef 0)
  br label %117

117:                                              ; preds = %115, %111
  br label %373

118:                                              ; preds = %38
  %119 = load ptr, ptr %6, align 8, !tbaa !5
  %120 = call i32 @EV_DoFloor(ptr noundef %119, i32 noundef 2)
  %121 = icmp ne i32 %120, 0
  br i1 %121, label %122, label %124

122:                                              ; preds = %118
  %123 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %123, i32 noundef 0)
  br label %124

124:                                              ; preds = %122, %118
  br label %373

125:                                              ; preds = %38
  %126 = load ptr, ptr %6, align 8, !tbaa !5
  %127 = call i32 @EV_DoCeiling(ptr noundef %126, i32 noundef 3)
  %128 = icmp ne i32 %127, 0
  br i1 %128, label %129, label %131

129:                                              ; preds = %125
  %130 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %130, i32 noundef 0)
  br label %131

131:                                              ; preds = %129, %125
  br label %373

132:                                              ; preds = %38
  %133 = load ptr, ptr %6, align 8, !tbaa !5
  %134 = call i32 @EV_DoDoor(ptr noundef %133, i32 noundef 2)
  %135 = icmp ne i32 %134, 0
  br i1 %135, label %136, label %138

136:                                              ; preds = %132
  %137 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %137, i32 noundef 0)
  br label %138

138:                                              ; preds = %136, %132
  br label %373

139:                                              ; preds = %38
  %140 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %140, i32 noundef 0)
  call void @G_SecretExitLevel()
  br label %373

141:                                              ; preds = %38
  %142 = load ptr, ptr %6, align 8, !tbaa !5
  %143 = call i32 @EV_DoFloor(ptr noundef %142, i32 noundef 9)
  %144 = icmp ne i32 %143, 0
  br i1 %144, label %145, label %147

145:                                              ; preds = %141
  %146 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %146, i32 noundef 0)
  br label %147

147:                                              ; preds = %145, %141
  br label %373

148:                                              ; preds = %38
  %149 = load ptr, ptr %6, align 8, !tbaa !5
  %150 = call i32 @EV_DoFloor(ptr noundef %149, i32 noundef 3)
  %151 = icmp ne i32 %150, 0
  br i1 %151, label %152, label %154

152:                                              ; preds = %148
  %153 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %153, i32 noundef 0)
  br label %154

154:                                              ; preds = %152, %148
  br label %373

155:                                              ; preds = %38
  %156 = load ptr, ptr %6, align 8, !tbaa !5
  %157 = call i32 @EV_DoFloor(ptr noundef %156, i32 noundef 0)
  %158 = icmp ne i32 %157, 0
  br i1 %158, label %159, label %161

159:                                              ; preds = %155
  %160 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %160, i32 noundef 0)
  br label %161

161:                                              ; preds = %159, %155
  br label %373

162:                                              ; preds = %38
  %163 = load ptr, ptr %6, align 8, !tbaa !5
  %164 = call i32 @EV_DoDoor(ptr noundef %163, i32 noundef 3)
  %165 = icmp ne i32 %164, 0
  br i1 %165, label %166, label %168

166:                                              ; preds = %162
  %167 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %167, i32 noundef 0)
  br label %168

168:                                              ; preds = %166, %162
  br label %373

169:                                              ; preds = %38
  %170 = load ptr, ptr %6, align 8, !tbaa !5
  %171 = call i32 @EV_DoDoor(ptr noundef %170, i32 noundef 5)
  %172 = icmp ne i32 %171, 0
  br i1 %172, label %173, label %175

173:                                              ; preds = %169
  %174 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %174, i32 noundef 0)
  br label %175

175:                                              ; preds = %173, %169
  br label %373

176:                                              ; preds = %38
  %177 = load ptr, ptr %6, align 8, !tbaa !5
  %178 = call i32 @EV_DoDoor(ptr noundef %177, i32 noundef 6)
  %179 = icmp ne i32 %178, 0
  br i1 %179, label %180, label %182

180:                                              ; preds = %176
  %181 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %181, i32 noundef 0)
  br label %182

182:                                              ; preds = %180, %176
  br label %373

183:                                              ; preds = %38
  %184 = load ptr, ptr %6, align 8, !tbaa !5
  %185 = call i32 @EV_DoDoor(ptr noundef %184, i32 noundef 7)
  %186 = icmp ne i32 %185, 0
  br i1 %186, label %187, label %189

187:                                              ; preds = %183
  %188 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %188, i32 noundef 0)
  br label %189

189:                                              ; preds = %187, %183
  br label %373

190:                                              ; preds = %38
  %191 = load ptr, ptr %6, align 8, !tbaa !5
  %192 = call i32 @EV_DoPlat(ptr noundef %191, i32 noundef 4, i32 noundef 0)
  %193 = icmp ne i32 %192, 0
  br i1 %193, label %194, label %196

194:                                              ; preds = %190
  %195 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %195, i32 noundef 0)
  br label %196

196:                                              ; preds = %194, %190
  br label %373

197:                                              ; preds = %38
  %198 = load ptr, ptr %6, align 8, !tbaa !5
  %199 = call i32 @EV_BuildStairs(ptr noundef %198, i32 noundef 1)
  %200 = icmp ne i32 %199, 0
  br i1 %200, label %201, label %203

201:                                              ; preds = %197
  %202 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %202, i32 noundef 0)
  br label %203

203:                                              ; preds = %201, %197
  br label %373

204:                                              ; preds = %38
  %205 = load ptr, ptr %6, align 8, !tbaa !5
  %206 = call i32 @EV_DoFloor(ptr noundef %205, i32 noundef 10)
  %207 = icmp ne i32 %206, 0
  br i1 %207, label %208, label %210

208:                                              ; preds = %204
  %209 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %209, i32 noundef 0)
  br label %210

210:                                              ; preds = %208, %204
  br label %373

211:                                              ; preds = %38, %38, %38
  %212 = load ptr, ptr %6, align 8, !tbaa !5
  %213 = load ptr, ptr %5, align 8, !tbaa !5
  %214 = call i32 @EV_DoLockedDoor(ptr noundef %212, i32 noundef 6, ptr noundef %213)
  %215 = icmp ne i32 %214, 0
  br i1 %215, label %216, label %218

216:                                              ; preds = %211
  %217 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %217, i32 noundef 0)
  br label %218

218:                                              ; preds = %216, %211
  br label %373

219:                                              ; preds = %38
  %220 = load ptr, ptr %6, align 8, !tbaa !5
  %221 = call i32 @EV_DoFloor(ptr noundef %220, i32 noundef 12)
  %222 = icmp ne i32 %221, 0
  br i1 %222, label %223, label %225

223:                                              ; preds = %219
  %224 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %224, i32 noundef 0)
  br label %225

225:                                              ; preds = %223, %219
  br label %373

226:                                              ; preds = %38
  %227 = load ptr, ptr %6, align 8, !tbaa !5
  %228 = call i32 @EV_DoDoor(ptr noundef %227, i32 noundef 2)
  %229 = icmp ne i32 %228, 0
  br i1 %229, label %230, label %232

230:                                              ; preds = %226
  %231 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %231, i32 noundef 1)
  br label %232

232:                                              ; preds = %230, %226
  br label %373

233:                                              ; preds = %38
  %234 = load ptr, ptr %6, align 8, !tbaa !5
  %235 = call i32 @EV_DoCeiling(ptr noundef %234, i32 noundef 0)
  %236 = icmp ne i32 %235, 0
  br i1 %236, label %237, label %239

237:                                              ; preds = %233
  %238 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %238, i32 noundef 1)
  br label %239

239:                                              ; preds = %237, %233
  br label %373

240:                                              ; preds = %38
  %241 = load ptr, ptr %6, align 8, !tbaa !5
  %242 = call i32 @EV_DoFloor(ptr noundef %241, i32 noundef 0)
  %243 = icmp ne i32 %242, 0
  br i1 %243, label %244, label %246

244:                                              ; preds = %240
  %245 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %245, i32 noundef 1)
  br label %246

246:                                              ; preds = %244, %240
  br label %373

247:                                              ; preds = %38
  %248 = load ptr, ptr %6, align 8, !tbaa !5
  %249 = call i32 @EV_DoFloor(ptr noundef %248, i32 noundef 1)
  %250 = icmp ne i32 %249, 0
  br i1 %250, label %251, label %253

251:                                              ; preds = %247
  %252 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %252, i32 noundef 1)
  br label %253

253:                                              ; preds = %251, %247
  br label %373

254:                                              ; preds = %38
  %255 = load ptr, ptr %6, align 8, !tbaa !5
  %256 = call i32 @EV_DoDoor(ptr noundef %255, i32 noundef 3)
  %257 = icmp ne i32 %256, 0
  br i1 %257, label %258, label %260

258:                                              ; preds = %254
  %259 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %259, i32 noundef 1)
  br label %260

260:                                              ; preds = %258, %254
  br label %373

261:                                              ; preds = %38
  %262 = load ptr, ptr %6, align 8, !tbaa !5
  %263 = call i32 @EV_DoPlat(ptr noundef %262, i32 noundef 1, i32 noundef 1)
  %264 = icmp ne i32 %263, 0
  br i1 %264, label %265, label %267

265:                                              ; preds = %261
  %266 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %266, i32 noundef 1)
  br label %267

267:                                              ; preds = %265, %261
  br label %373

268:                                              ; preds = %38
  %269 = load ptr, ptr %6, align 8, !tbaa !5
  %270 = call i32 @EV_DoDoor(ptr noundef %269, i32 noundef 0)
  %271 = icmp ne i32 %270, 0
  br i1 %271, label %272, label %274

272:                                              ; preds = %268
  %273 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %273, i32 noundef 1)
  br label %274

274:                                              ; preds = %272, %268
  br label %373

275:                                              ; preds = %38
  %276 = load ptr, ptr %6, align 8, !tbaa !5
  %277 = call i32 @EV_DoFloor(ptr noundef %276, i32 noundef 3)
  %278 = icmp ne i32 %277, 0
  br i1 %278, label %279, label %281

279:                                              ; preds = %275
  %280 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %280, i32 noundef 1)
  br label %281

281:                                              ; preds = %279, %275
  br label %373

282:                                              ; preds = %38
  %283 = load ptr, ptr %6, align 8, !tbaa !5
  %284 = call i32 @EV_DoPlat(ptr noundef %283, i32 noundef 2, i32 noundef 24)
  %285 = icmp ne i32 %284, 0
  br i1 %285, label %286, label %288

286:                                              ; preds = %282
  %287 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %287, i32 noundef 1)
  br label %288

288:                                              ; preds = %286, %282
  br label %373

289:                                              ; preds = %38
  %290 = load ptr, ptr %6, align 8, !tbaa !5
  %291 = call i32 @EV_DoPlat(ptr noundef %290, i32 noundef 2, i32 noundef 32)
  %292 = icmp ne i32 %291, 0
  br i1 %292, label %293, label %295

293:                                              ; preds = %289
  %294 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %294, i32 noundef 1)
  br label %295

295:                                              ; preds = %293, %289
  br label %373

296:                                              ; preds = %38
  %297 = load ptr, ptr %6, align 8, !tbaa !5
  %298 = call i32 @EV_DoFloor(ptr noundef %297, i32 noundef 9)
  %299 = icmp ne i32 %298, 0
  br i1 %299, label %300, label %302

300:                                              ; preds = %296
  %301 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %301, i32 noundef 1)
  br label %302

302:                                              ; preds = %300, %296
  br label %373

303:                                              ; preds = %38
  %304 = load ptr, ptr %6, align 8, !tbaa !5
  %305 = call i32 @EV_DoPlat(ptr noundef %304, i32 noundef 3, i32 noundef 0)
  %306 = icmp ne i32 %305, 0
  br i1 %306, label %307, label %309

307:                                              ; preds = %303
  %308 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %308, i32 noundef 1)
  br label %309

309:                                              ; preds = %307, %303
  br label %373

310:                                              ; preds = %38
  %311 = load ptr, ptr %6, align 8, !tbaa !5
  %312 = call i32 @EV_DoFloor(ptr noundef %311, i32 noundef 4)
  %313 = icmp ne i32 %312, 0
  br i1 %313, label %314, label %316

314:                                              ; preds = %310
  %315 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %315, i32 noundef 1)
  br label %316

316:                                              ; preds = %314, %310
  br label %373

317:                                              ; preds = %38
  %318 = load ptr, ptr %6, align 8, !tbaa !5
  %319 = call i32 @EV_DoFloor(ptr noundef %318, i32 noundef 2)
  %320 = icmp ne i32 %319, 0
  br i1 %320, label %321, label %323

321:                                              ; preds = %317
  %322 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %322, i32 noundef 1)
  br label %323

323:                                              ; preds = %321, %317
  br label %373

324:                                              ; preds = %38
  %325 = load ptr, ptr %6, align 8, !tbaa !5
  %326 = call i32 @EV_DoDoor(ptr noundef %325, i32 noundef 5)
  %327 = icmp ne i32 %326, 0
  br i1 %327, label %328, label %330

328:                                              ; preds = %324
  %329 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %329, i32 noundef 1)
  br label %330

330:                                              ; preds = %328, %324
  br label %373

331:                                              ; preds = %38
  %332 = load ptr, ptr %6, align 8, !tbaa !5
  %333 = call i32 @EV_DoDoor(ptr noundef %332, i32 noundef 6)
  %334 = icmp ne i32 %333, 0
  br i1 %334, label %335, label %337

335:                                              ; preds = %331
  %336 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %336, i32 noundef 1)
  br label %337

337:                                              ; preds = %335, %331
  br label %373

338:                                              ; preds = %38
  %339 = load ptr, ptr %6, align 8, !tbaa !5
  %340 = call i32 @EV_DoDoor(ptr noundef %339, i32 noundef 7)
  %341 = icmp ne i32 %340, 0
  br i1 %341, label %342, label %344

342:                                              ; preds = %338
  %343 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %343, i32 noundef 1)
  br label %344

344:                                              ; preds = %342, %338
  br label %373

345:                                              ; preds = %38
  %346 = load ptr, ptr %6, align 8, !tbaa !5
  %347 = call i32 @EV_DoPlat(ptr noundef %346, i32 noundef 4, i32 noundef 0)
  %348 = icmp ne i32 %347, 0
  br i1 %348, label %349, label %351

349:                                              ; preds = %345
  %350 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %350, i32 noundef 1)
  br label %351

351:                                              ; preds = %349, %345
  br label %373

352:                                              ; preds = %38
  %353 = load ptr, ptr %6, align 8, !tbaa !5
  %354 = call i32 @EV_DoFloor(ptr noundef %353, i32 noundef 10)
  %355 = icmp ne i32 %354, 0
  br i1 %355, label %356, label %358

356:                                              ; preds = %352
  %357 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %357, i32 noundef 1)
  br label %358

358:                                              ; preds = %356, %352
  br label %373

359:                                              ; preds = %38, %38, %38
  %360 = load ptr, ptr %6, align 8, !tbaa !5
  %361 = load ptr, ptr %5, align 8, !tbaa !5
  %362 = call i32 @EV_DoLockedDoor(ptr noundef %360, i32 noundef 6, ptr noundef %361)
  %363 = icmp ne i32 %362, 0
  br i1 %363, label %364, label %366

364:                                              ; preds = %359
  %365 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %365, i32 noundef 1)
  br label %366

366:                                              ; preds = %364, %359
  br label %373

367:                                              ; preds = %38
  %368 = load ptr, ptr %6, align 8, !tbaa !5
  call void @EV_LightTurnOn(ptr noundef %368, i32 noundef 255)
  %369 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %369, i32 noundef 1)
  br label %373

370:                                              ; preds = %38
  %371 = load ptr, ptr %6, align 8, !tbaa !5
  call void @EV_LightTurnOn(ptr noundef %371, i32 noundef 35)
  %372 = load ptr, ptr %6, align 8, !tbaa !5
  call void @P_ChangeSwitchTexture(ptr noundef %372, i32 noundef 1)
  br label %373

373:                                              ; preds = %370, %367, %366, %358, %351, %344, %337, %330, %323, %316, %309, %302, %295, %288, %281, %274, %267, %260, %253, %246, %239, %232, %225, %218, %210, %203, %196, %189, %182, %175, %168, %161, %154, %147, %139, %138, %131, %124, %117, %110, %103, %96, %89, %82, %75, %68, %60, %59, %52, %43, %38
  store i32 1, ptr %4, align 4
  br label %374

374:                                              ; preds = %373, %36, %29, %15
  %375 = load i32, ptr %4, align 4
  ret i32 %375
}

declare void @EV_VerticalDoor(ptr noundef, ptr noundef) #1

declare i32 @EV_BuildStairs(ptr noundef, i32 noundef) #1

declare i32 @EV_DoDonut(ptr noundef) #1

declare void @G_ExitLevel() #1

declare i32 @EV_DoPlat(ptr noundef, i32 noundef, i32 noundef) #1

declare i32 @EV_DoFloor(ptr noundef, i32 noundef) #1

declare i32 @EV_DoDoor(ptr noundef, i32 noundef) #1

declare i32 @EV_DoCeiling(ptr noundef, i32 noundef) #1

declare void @G_SecretExitLevel() #1

declare i32 @EV_DoLockedDoor(ptr noundef, i32 noundef, ptr noundef) #1

declare void @EV_LightTurnOn(ptr noundef, i32 noundef) #1

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 = { "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" }

!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, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !13, i64 26}
!12 = !{!"line_s", !6, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !13, i64 24, !13, i64 26, !13, i64 28, !7, i64 30, !7, i64 36, !10, i64 52, !6, i64 56, !6, i64 64, !10, i64 72, !6, i64 80}
!13 = !{!"short", !7, i64 0}
!14 = !{!15, !6, i64 192}
!15 = !{!"mobj_s", !16, i64 0, !10, i64 24, !10, i64 28, !10, i64 32, !6, i64 40, !6, i64 48, !10, i64 56, !10, i64 60, !10, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !6, i64 136, !10, i64 144, !6, i64 152, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !6, i64 176, !10, i64 184, !10, i64 188, !6, i64 192, !10, i64 200, !17, i64 204, !6, i64 216}
!16 = !{!"thinker_s", !6, i64 0, !6, i64 8, !7, i64 16}
!17 = !{!"", !13, i64 0, !13, i64 2, !13, i64 4, !13, i64 6, !13, i64 8}
!18 = !{!12, !13, i64 24}


; 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"

; Function Attrs: nounwind uwtable
declare dso_local void @P_ChangeSwitchTexture(ptr noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
define dso_local range(i32 0, 2) i32 @P_UseSpecialLine(ptr noundef %0, ptr noundef %1, i32 noundef %2) local_unnamed_addr #0 {
  %.not = icmp eq i32 %2, 0
  br i1 %.not, label %7, label %4

4:                                                ; preds = %3
  %5 = getelementptr inbounds i8, ptr %1, i64 26
  %6 = load i16, ptr %5, align 2, !tbaa !5
  %cond = icmp eq i16 %6, 124
  br i1 %cond, label %7, label %159

7:                                                ; preds = %4, %3
  %8 = getelementptr inbounds i8, ptr %0, i64 192
  %9 = load ptr, ptr %8, align 8, !tbaa !12
  %.not106 = icmp eq ptr %9, null
  br i1 %.not106, label %10, label %._crit_edge

._crit_edge:                                      ; preds = %7
  %.phi.trans.insert = getelementptr inbounds i8, ptr %1, i64 26
  %.pre = load i16, ptr %.phi.trans.insert, align 2, !tbaa !5
  br label %17

10:                                               ; preds = %7
  %11 = getelementptr inbounds i8, ptr %1, i64 24
  %12 = load i16, ptr %11, align 8, !tbaa !16
  %13 = and i16 %12, 32
  %.not107 = icmp eq i16 %13, 0
  br i1 %.not107, label %14, label %159

14:                                               ; preds = %10
  %15 = getelementptr inbounds i8, ptr %1, i64 26
  %16 = load i16, ptr %15, align 2, !tbaa !5
  switch i16 %16, label %159 [
    i16 1, label %17
    i16 32, label %17
    i16 33, label %17
    i16 34, label %17
  ]

17:                                               ; preds = %._crit_edge, %14, %14, %14, %14
  %18 = phi i16 [ %.pre, %._crit_edge ], [ %16, %14 ], [ %16, %14 ], [ %16, %14 ], [ %16, %14 ]
  switch i16 %18, label %159 [
    i16 1, label %19
    i16 26, label %19
    i16 27, label %19
    i16 28, label %19
    i16 31, label %19
    i16 32, label %19
    i16 33, label %19
    i16 34, label %19
    i16 117, label %19
    i16 118, label %19
    i16 7, label %20
    i16 9, label %23
    i16 11, label %26
    i16 14, label %27
    i16 15, label %30
    i16 18, label %33
    i16 20, label %36
    i16 21, label %39
    i16 23, label %42
    i16 29, label %45
    i16 41, label %48
    i16 71, label %51
    i16 49, label %54
    i16 50, label %57
    i16 51, label %60
    i16 55, label %61
    i16 101, label %64
    i16 102, label %67
    i16 103, label %70
    i16 111, label %73
    i16 112, label %76
    i16 113, label %79
    i16 122, label %82
    i16 127, label %85
    i16 131, label %88
    i16 133, label %91
    i16 135, label %91
    i16 137, label %91
    i16 140, label %94
    i16 42, label %97
    i16 43, label %100
    i16 45, label %103
    i16 60, label %106
    i16 61, label %109
    i16 62, label %112
    i16 63, label %115
    i16 64, label %118
    i16 66, label %121
    i16 67, label %124
    i16 65, label %127
    i16 68, label %130
    i16 69, label %133
    i16 70, label %136
    i16 114, label %139
    i16 115, label %142
    i16 116, label %145
    i16 123, label %148
    i16 132, label %151
    i16 99, label %154
    i16 134, label %154
    i16 136, label %154
    i16 138, label %157
    i16 139, label %158
  ]

19:                                               ; preds = %17, %17, %17, %17, %17, %17, %17, %17, %17, %17
  tail call void @EV_VerticalDoor(ptr noundef nonnull %1, ptr noundef nonnull %0) #2
  br label %159

20:                                               ; preds = %17
  %21 = tail call i32 @EV_BuildStairs(ptr noundef nonnull %1, i32 noundef 0) #2
  %.not152 = icmp eq i32 %21, 0
  br i1 %.not152, label %159, label %22

22:                                               ; preds = %20
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 0)
  br label %159

23:                                               ; preds = %17
  %24 = tail call i32 @EV_DoDonut(ptr noundef nonnull %1) #2
  %.not151 = icmp eq i32 %24, 0
  br i1 %.not151, label %159, label %25

25:                                               ; preds = %23
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 0)
  br label %159

26:                                               ; preds = %17
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 0)
  tail call void @G_ExitLevel() #2
  br label %159

27:                                               ; preds = %17
  %28 = tail call i32 @EV_DoPlat(ptr noundef nonnull %1, i32 noundef 2, i32 noundef 32) #2
  %.not150 = icmp eq i32 %28, 0
  br i1 %.not150, label %159, label %29

29:                                               ; preds = %27
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 0)
  br label %159

30:                                               ; preds = %17
  %31 = tail call i32 @EV_DoPlat(ptr noundef nonnull %1, i32 noundef 2, i32 noundef 24) #2
  %.not149 = icmp eq i32 %31, 0
  br i1 %.not149, label %159, label %32

32:                                               ; preds = %30
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 0)
  br label %159

33:                                               ; preds = %17
  %34 = tail call i32 @EV_DoFloor(ptr noundef nonnull %1, i32 noundef 4) #2
  %.not148 = icmp eq i32 %34, 0
  br i1 %.not148, label %159, label %35

35:                                               ; preds = %33
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 0)
  br label %159

36:                                               ; preds = %17
  %37 = tail call i32 @EV_DoPlat(ptr noundef nonnull %1, i32 noundef 3, i32 noundef 0) #2
  %.not147 = icmp eq i32 %37, 0
  br i1 %.not147, label %159, label %38

38:                                               ; preds = %36
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 0)
  br label %159

39:                                               ; preds = %17
  %40 = tail call i32 @EV_DoPlat(ptr noundef nonnull %1, i32 noundef 1, i32 noundef 0) #2
  %.not146 = icmp eq i32 %40, 0
  br i1 %.not146, label %159, label %41

41:                                               ; preds = %39
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 0)
  br label %159

42:                                               ; preds = %17
  %43 = tail call i32 @EV_DoFloor(ptr noundef nonnull %1, i32 noundef 1) #2
  %.not145 = icmp eq i32 %43, 0
  br i1 %.not145, label %159, label %44

44:                                               ; preds = %42
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 0)
  br label %159

45:                                               ; preds = %17
  %46 = tail call i32 @EV_DoDoor(ptr noundef nonnull %1, i32 noundef 0) #2
  %.not144 = icmp eq i32 %46, 0
  br i1 %.not144, label %159, label %47

47:                                               ; preds = %45
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 0)
  br label %159

48:                                               ; preds = %17
  %49 = tail call i32 @EV_DoCeiling(ptr noundef nonnull %1, i32 noundef 0) #2
  %.not143 = icmp eq i32 %49, 0
  br i1 %.not143, label %159, label %50

50:                                               ; preds = %48
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 0)
  br label %159

51:                                               ; preds = %17
  %52 = tail call i32 @EV_DoFloor(ptr noundef nonnull %1, i32 noundef 2) #2
  %.not142 = icmp eq i32 %52, 0
  br i1 %.not142, label %159, label %53

53:                                               ; preds = %51
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 0)
  br label %159

54:                                               ; preds = %17
  %55 = tail call i32 @EV_DoCeiling(ptr noundef nonnull %1, i32 noundef 3) #2
  %.not141 = icmp eq i32 %55, 0
  br i1 %.not141, label %159, label %56

56:                                               ; preds = %54
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 0)
  br label %159

57:                                               ; preds = %17
  %58 = tail call i32 @EV_DoDoor(ptr noundef nonnull %1, i32 noundef 2) #2
  %.not140 = icmp eq i32 %58, 0
  br i1 %.not140, label %159, label %59

59:                                               ; preds = %57
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 0)
  br label %159

60:                                               ; preds = %17
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 0)
  tail call void @G_SecretExitLevel() #2
  br label %159

61:                                               ; preds = %17
  %62 = tail call i32 @EV_DoFloor(ptr noundef nonnull %1, i32 noundef 9) #2
  %.not139 = icmp eq i32 %62, 0
  br i1 %.not139, label %159, label %63

63:                                               ; preds = %61
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 0)
  br label %159

64:                                               ; preds = %17
  %65 = tail call i32 @EV_DoFloor(ptr noundef nonnull %1, i32 noundef 3) #2
  %.not138 = icmp eq i32 %65, 0
  br i1 %.not138, label %159, label %66

66:                                               ; preds = %64
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 0)
  br label %159

67:                                               ; preds = %17
  %68 = tail call i32 @EV_DoFloor(ptr noundef nonnull %1, i32 noundef 0) #2
  %.not137 = icmp eq i32 %68, 0
  br i1 %.not137, label %159, label %69

69:                                               ; preds = %67
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 0)
  br label %159

70:                                               ; preds = %17
  %71 = tail call i32 @EV_DoDoor(ptr noundef nonnull %1, i32 noundef 3) #2
  %.not136 = icmp eq i32 %71, 0
  br i1 %.not136, label %159, label %72

72:                                               ; preds = %70
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 0)
  br label %159

73:                                               ; preds = %17
  %74 = tail call i32 @EV_DoDoor(ptr noundef nonnull %1, i32 noundef 5) #2
  %.not135 = icmp eq i32 %74, 0
  br i1 %.not135, label %159, label %75

75:                                               ; preds = %73
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 0)
  br label %159

76:                                               ; preds = %17
  %77 = tail call i32 @EV_DoDoor(ptr noundef nonnull %1, i32 noundef 6) #2
  %.not134 = icmp eq i32 %77, 0
  br i1 %.not134, label %159, label %78

78:                                               ; preds = %76
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 0)
  br label %159

79:                                               ; preds = %17
  %80 = tail call i32 @EV_DoDoor(ptr noundef nonnull %1, i32 noundef 7) #2
  %.not133 = icmp eq i32 %80, 0
  br i1 %.not133, label %159, label %81

81:                                               ; preds = %79
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 0)
  br label %159

82:                                               ; preds = %17
  %83 = tail call i32 @EV_DoPlat(ptr noundef nonnull %1, i32 noundef 4, i32 noundef 0) #2
  %.not132 = icmp eq i32 %83, 0
  br i1 %.not132, label %159, label %84

84:                                               ; preds = %82
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 0)
  br label %159

85:                                               ; preds = %17
  %86 = tail call i32 @EV_BuildStairs(ptr noundef nonnull %1, i32 noundef 1) #2
  %.not131 = icmp eq i32 %86, 0
  br i1 %.not131, label %159, label %87

87:                                               ; preds = %85
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 0)
  br label %159

88:                                               ; preds = %17
  %89 = tail call i32 @EV_DoFloor(ptr noundef nonnull %1, i32 noundef 10) #2
  %.not130 = icmp eq i32 %89, 0
  br i1 %.not130, label %159, label %90

90:                                               ; preds = %88
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 0)
  br label %159

91:                                               ; preds = %17, %17, %17
  %92 = tail call i32 @EV_DoLockedDoor(ptr noundef nonnull %1, i32 noundef 6, ptr noundef nonnull %0) #2
  %.not129 = icmp eq i32 %92, 0
  br i1 %.not129, label %159, label %93

93:                                               ; preds = %91
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 0)
  br label %159

94:                                               ; preds = %17
  %95 = tail call i32 @EV_DoFloor(ptr noundef nonnull %1, i32 noundef 12) #2
  %.not128 = icmp eq i32 %95, 0
  br i1 %.not128, label %159, label %96

96:                                               ; preds = %94
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 0)
  br label %159

97:                                               ; preds = %17
  %98 = tail call i32 @EV_DoDoor(ptr noundef nonnull %1, i32 noundef 2) #2
  %.not127 = icmp eq i32 %98, 0
  br i1 %.not127, label %159, label %99

99:                                               ; preds = %97
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 1)
  br label %159

100:                                              ; preds = %17
  %101 = tail call i32 @EV_DoCeiling(ptr noundef nonnull %1, i32 noundef 0) #2
  %.not126 = icmp eq i32 %101, 0
  br i1 %.not126, label %159, label %102

102:                                              ; preds = %100
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 1)
  br label %159

103:                                              ; preds = %17
  %104 = tail call i32 @EV_DoFloor(ptr noundef nonnull %1, i32 noundef 0) #2
  %.not125 = icmp eq i32 %104, 0
  br i1 %.not125, label %159, label %105

105:                                              ; preds = %103
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 1)
  br label %159

106:                                              ; preds = %17
  %107 = tail call i32 @EV_DoFloor(ptr noundef nonnull %1, i32 noundef 1) #2
  %.not124 = icmp eq i32 %107, 0
  br i1 %.not124, label %159, label %108

108:                                              ; preds = %106
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 1)
  br label %159

109:                                              ; preds = %17
  %110 = tail call i32 @EV_DoDoor(ptr noundef nonnull %1, i32 noundef 3) #2
  %.not123 = icmp eq i32 %110, 0
  br i1 %.not123, label %159, label %111

111:                                              ; preds = %109
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 1)
  br label %159

112:                                              ; preds = %17
  %113 = tail call i32 @EV_DoPlat(ptr noundef nonnull %1, i32 noundef 1, i32 noundef 1) #2
  %.not122 = icmp eq i32 %113, 0
  br i1 %.not122, label %159, label %114

114:                                              ; preds = %112
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 1)
  br label %159

115:                                              ; preds = %17
  %116 = tail call i32 @EV_DoDoor(ptr noundef nonnull %1, i32 noundef 0) #2
  %.not121 = icmp eq i32 %116, 0
  br i1 %.not121, label %159, label %117

117:                                              ; preds = %115
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 1)
  br label %159

118:                                              ; preds = %17
  %119 = tail call i32 @EV_DoFloor(ptr noundef nonnull %1, i32 noundef 3) #2
  %.not120 = icmp eq i32 %119, 0
  br i1 %.not120, label %159, label %120

120:                                              ; preds = %118
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 1)
  br label %159

121:                                              ; preds = %17
  %122 = tail call i32 @EV_DoPlat(ptr noundef nonnull %1, i32 noundef 2, i32 noundef 24) #2
  %.not119 = icmp eq i32 %122, 0
  br i1 %.not119, label %159, label %123

123:                                              ; preds = %121
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 1)
  br label %159

124:                                              ; preds = %17
  %125 = tail call i32 @EV_DoPlat(ptr noundef nonnull %1, i32 noundef 2, i32 noundef 32) #2
  %.not118 = icmp eq i32 %125, 0
  br i1 %.not118, label %159, label %126

126:                                              ; preds = %124
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 1)
  br label %159

127:                                              ; preds = %17
  %128 = tail call i32 @EV_DoFloor(ptr noundef nonnull %1, i32 noundef 9) #2
  %.not117 = icmp eq i32 %128, 0
  br i1 %.not117, label %159, label %129

129:                                              ; preds = %127
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 1)
  br label %159

130:                                              ; preds = %17
  %131 = tail call i32 @EV_DoPlat(ptr noundef nonnull %1, i32 noundef 3, i32 noundef 0) #2
  %.not116 = icmp eq i32 %131, 0
  br i1 %.not116, label %159, label %132

132:                                              ; preds = %130
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 1)
  br label %159

133:                                              ; preds = %17
  %134 = tail call i32 @EV_DoFloor(ptr noundef nonnull %1, i32 noundef 4) #2
  %.not115 = icmp eq i32 %134, 0
  br i1 %.not115, label %159, label %135

135:                                              ; preds = %133
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 1)
  br label %159

136:                                              ; preds = %17
  %137 = tail call i32 @EV_DoFloor(ptr noundef nonnull %1, i32 noundef 2) #2
  %.not114 = icmp eq i32 %137, 0
  br i1 %.not114, label %159, label %138

138:                                              ; preds = %136
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 1)
  br label %159

139:                                              ; preds = %17
  %140 = tail call i32 @EV_DoDoor(ptr noundef nonnull %1, i32 noundef 5) #2
  %.not113 = icmp eq i32 %140, 0
  br i1 %.not113, label %159, label %141

141:                                              ; preds = %139
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 1)
  br label %159

142:                                              ; preds = %17
  %143 = tail call i32 @EV_DoDoor(ptr noundef nonnull %1, i32 noundef 6) #2
  %.not112 = icmp eq i32 %143, 0
  br i1 %.not112, label %159, label %144

144:                                              ; preds = %142
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 1)
  br label %159

145:                                              ; preds = %17
  %146 = tail call i32 @EV_DoDoor(ptr noundef nonnull %1, i32 noundef 7) #2
  %.not111 = icmp eq i32 %146, 0
  br i1 %.not111, label %159, label %147

147:                                              ; preds = %145
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 1)
  br label %159

148:                                              ; preds = %17
  %149 = tail call i32 @EV_DoPlat(ptr noundef nonnull %1, i32 noundef 4, i32 noundef 0) #2
  %.not110 = icmp eq i32 %149, 0
  br i1 %.not110, label %159, label %150

150:                                              ; preds = %148
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 1)
  br label %159

151:                                              ; preds = %17
  %152 = tail call i32 @EV_DoFloor(ptr noundef nonnull %1, i32 noundef 10) #2
  %.not109 = icmp eq i32 %152, 0
  br i1 %.not109, label %159, label %153

153:                                              ; preds = %151
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 1)
  br label %159

154:                                              ; preds = %17, %17, %17
  %155 = tail call i32 @EV_DoLockedDoor(ptr noundef nonnull %1, i32 noundef 6, ptr noundef nonnull %0) #2
  %.not108 = icmp eq i32 %155, 0
  br i1 %.not108, label %159, label %156

156:                                              ; preds = %154
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 1)
  br label %159

157:                                              ; preds = %17
  tail call void @EV_LightTurnOn(ptr noundef nonnull %1, i32 noundef 255) #2
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 1)
  br label %159

158:                                              ; preds = %17
  tail call void @EV_LightTurnOn(ptr noundef nonnull %1, i32 noundef 35) #2
  tail call void @P_ChangeSwitchTexture(ptr noundef nonnull %1, i32 noundef 1)
  br label %159

159:                                              ; preds = %17, %19, %26, %60, %157, %158, %22, %20, %25, %23, %29, %27, %32, %30, %35, %33, %38, %36, %41, %39, %44, %42, %47, %45, %50, %48, %53, %51, %56, %54, %59, %57, %63, %61, %66, %64, %69, %67, %72, %70, %75, %73, %78, %76, %81, %79, %84, %82, %87, %85, %90, %88, %93, %91, %96, %94, %99, %97, %102, %100, %105, %103, %108, %106, %111, %109, %114, %112, %117, %115, %120, %118, %123, %121, %126, %124, %129, %127, %132, %130, %135, %133, %138, %136, %141, %139, %144, %142, %147, %145, %150, %148, %153, %151, %156, %154, %14, %10, %4
  %.0 = phi i32 [ 0, %4 ], [ 0, %10 ], [ 0, %14 ], [ 1, %154 ], [ 1, %156 ], [ 1, %151 ], [ 1, %153 ], [ 1, %148 ], [ 1, %150 ], [ 1, %145 ], [ 1, %147 ], [ 1, %142 ], [ 1, %144 ], [ 1, %139 ], [ 1, %141 ], [ 1, %136 ], [ 1, %138 ], [ 1, %133 ], [ 1, %135 ], [ 1, %130 ], [ 1, %132 ], [ 1, %127 ], [ 1, %129 ], [ 1, %124 ], [ 1, %126 ], [ 1, %121 ], [ 1, %123 ], [ 1, %118 ], [ 1, %120 ], [ 1, %115 ], [ 1, %117 ], [ 1, %112 ], [ 1, %114 ], [ 1, %109 ], [ 1, %111 ], [ 1, %106 ], [ 1, %108 ], [ 1, %103 ], [ 1, %105 ], [ 1, %100 ], [ 1, %102 ], [ 1, %97 ], [ 1, %99 ], [ 1, %94 ], [ 1, %96 ], [ 1, %91 ], [ 1, %93 ], [ 1, %88 ], [ 1, %90 ], [ 1, %85 ], [ 1, %87 ], [ 1, %82 ], [ 1, %84 ], [ 1, %79 ], [ 1, %81 ], [ 1, %76 ], [ 1, %78 ], [ 1, %73 ], [ 1, %75 ], [ 1, %70 ], [ 1, %72 ], [ 1, %67 ], [ 1, %69 ], [ 1, %64 ], [ 1, %66 ], [ 1, %61 ], [ 1, %63 ], [ 1, %57 ], [ 1, %59 ], [ 1, %54 ], [ 1, %56 ], [ 1, %51 ], [ 1, %53 ], [ 1, %48 ], [ 1, %50 ], [ 1, %45 ], [ 1, %47 ], [ 1, %42 ], [ 1, %44 ], [ 1, %39 ], [ 1, %41 ], [ 1, %36 ], [ 1, %38 ], [ 1, %33 ], [ 1, %35 ], [ 1, %30 ], [ 1, %32 ], [ 1, %27 ], [ 1, %29 ], [ 1, %23 ], [ 1, %25 ], [ 1, %20 ], [ 1, %22 ], [ 1, %158 ], [ 1, %157 ], [ 1, %60 ], [ 1, %26 ], [ 1, %19 ], [ 1, %17 ]
  ret i32 %.0
}

declare void @EV_VerticalDoor(ptr noundef, ptr noundef) local_unnamed_addr #1

declare i32 @EV_BuildStairs(ptr noundef, i32 noundef) local_unnamed_addr #1

declare i32 @EV_DoDonut(ptr noundef) local_unnamed_addr #1

declare void @G_ExitLevel() local_unnamed_addr #1

declare i32 @EV_DoPlat(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare i32 @EV_DoFloor(ptr noundef, i32 noundef) local_unnamed_addr #1

declare i32 @EV_DoDoor(ptr noundef, i32 noundef) local_unnamed_addr #1

declare i32 @EV_DoCeiling(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @G_SecretExitLevel() local_unnamed_addr #1

declare i32 @EV_DoLockedDoor(ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #1

declare void @EV_LightTurnOn(ptr noundef, i32 noundef) local_unnamed_addr #1

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 = { "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 = { 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, !11, i64 26}
!6 = !{!"line_s", !7, i64 0, !7, i64 8, !10, i64 16, !10, i64 20, !11, i64 24, !11, i64 26, !11, i64 28, !8, i64 30, !8, i64 36, !10, i64 52, !7, i64 56, !7, i64 64, !10, i64 72, !7, i64 80}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"short", !8, i64 0}
!12 = !{!13, !7, i64 192}
!13 = !{!"mobj_s", !14, i64 0, !10, i64 24, !10, i64 28, !10, i64 32, !7, i64 40, !7, i64 48, !10, i64 56, !10, i64 60, !10, i64 64, !7, i64 72, !7, i64 80, !7, i64 88, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !7, i64 136, !10, i64 144, !7, i64 152, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !7, i64 176, !10, i64 184, !10, i64 188, !7, i64 192, !10, i64 200, !15, i64 204, !7, i64 216}
!14 = !{!"thinker_s", !7, i64 0, !7, i64 8, !8, i64 16}
!15 = !{!"", !11, i64 0, !11, i64 2, !11, i64 4, !11, i64 6, !11, i64 8}
!16 = !{!6, !11, i64 24}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,GVNPass,GlobalOptPass,IPSCCPPass,InstCombinePass,SROAPass,SimplifyCFGPass,TailCallElimPass