; LLVM IR from aap/librw :: src/ps2 (ps2)

; 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.rw::ps2::PipeAttribute" = type { ptr, i32 }
%"struct.rw::SkinGlobals" = type { i32, i32, [13 x ptr], ptr }
%"struct.rw::ps2::Vertex" = type { %"struct.rw::V3d", %"struct.rw::TexCoords", %"struct.rw::TexCoords", %"struct.rw::RGBA", %"struct.rw::V3d", [4 x float], [4 x i8] }
%"struct.rw::TexCoords" = type { float, float }
%"struct.rw::RGBA" = type { i8, i8, i8, i8 }
%"struct.rw::V3d" = type { float, float, float }
%"class.rw::ps2::MatPipeline" = type { %"class.rw::Pipeline", i32, i32, i32, i32, [10 x ptr], ptr, ptr, ptr, ptr }
%"class.rw::Pipeline" = type { i32, i32, i32 }
%"struct.rw::Geometry" = type { %"struct.rw::Object", i32, i16, i32, i32, i32, i32, ptr, ptr, [8 x ptr], ptr, %"struct.rw::MaterialList", ptr, ptr, i32 }
%"struct.rw::Object" = type { i8, i8, i8, i8, ptr }
%"struct.rw::MaterialList" = type { ptr, i32, i32 }
%"struct.rw::Mesh" = type { ptr, i32, ptr }

@_ZN2rw3ps29attribXYZE = external dso_local global %"struct.rw::ps2::PipeAttribute", align 8
@_ZN2rw3ps210attribXYZWE = external dso_local global %"struct.rw::ps2::PipeAttribute", align 8
@_ZN2rw3ps28attribUVE = external dso_local global %"struct.rw::ps2::PipeAttribute", align 8
@_ZN2rw3ps29attribUV2E = external dso_local global %"struct.rw::ps2::PipeAttribute", align 8
@_ZN2rw3ps210attribRGBAE = external dso_local global %"struct.rw::ps2::PipeAttribute", align 8
@_ZN2rw3ps212attribNormalE = external dso_local global %"struct.rw::ps2::PipeAttribute", align 8
@_ZN2rw3ps213attribWeightsE = external dso_local global %"struct.rw::ps2::PipeAttribute", align 8
@_ZN2rw11skinGlobalsE = external global %"struct.rw::SkinGlobals", align 8

; 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: mustprogress uwtable
declare dso_local noundef ptr @_ZN2rw3ps217getADCbitsForMeshEPNS_8GeometryEPNS_4MeshE(ptr noundef, ptr noundef) #1

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN2rw3ps219genericUninstanceCBEPNS0_11MatPipelineEPNS_8GeometryEPjPNS_4MeshEPPh(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4) #1 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca %"struct.rw::ps2::Vertex", align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !5
  store ptr %4, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #5
  store ptr null, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #5
  store ptr null, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #5
  store ptr null, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #5
  store ptr null, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #5
  store ptr null, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #5
  store ptr null, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #5
  store ptr null, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #5
  store ptr null, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #5
  store ptr null, ptr %19, align 8, !tbaa !5
  %28 = load i32, ptr @_ZN2rw11skinGlobalsE, align 8, !tbaa !9
  %29 = icmp ne i32 %28, 0
  br i1 %29, label %30, label %33

30:                                               ; preds = %5
  %31 = load ptr, ptr %7, align 8, !tbaa !5
  %32 = call noundef ptr @_ZN2rw4Skin3getEPKNS_8GeometryE(ptr noundef %31)
  store ptr %32, ptr %19, align 8, !tbaa !5
  br label %33

33:                                               ; preds = %30, %5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #5
  store i32 0, ptr %21, align 4, !tbaa !12
  br label %34

34:                                               ; preds = %117, %33
  %35 = load i32, ptr %21, align 4, !tbaa !12
  %36 = icmp slt i32 %35, 10
  br i1 %36, label %38, label %37

37:                                               ; preds = %34
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  br label %120

38:                                               ; preds = %34
  %39 = load ptr, ptr %6, align 8, !tbaa !5
  %40 = getelementptr inbounds %"class.rw::ps2::MatPipeline", ptr %39, i32 0, i32 5
  %41 = load i32, ptr %21, align 4, !tbaa !12
  %42 = sext i32 %41 to i64
  %43 = getelementptr inbounds [10 x ptr], ptr %40, i64 0, i64 %42
  %44 = load ptr, ptr %43, align 8, !tbaa !5
  store ptr %44, ptr %20, align 8, !tbaa !5
  %45 = icmp ne ptr %44, null
  br i1 %45, label %46, label %116

46:                                               ; preds = %38
  %47 = load ptr, ptr %20, align 8, !tbaa !5
  %48 = icmp eq ptr %47, @_ZN2rw3ps29attribXYZE
  br i1 %48, label %49, label %55

49:                                               ; preds = %46
  %50 = load ptr, ptr %10, align 8, !tbaa !5
  %51 = load i32, ptr %21, align 4, !tbaa !12
  %52 = sext i32 %51 to i64
  %53 = getelementptr inbounds ptr, ptr %50, i64 %52
  %54 = load ptr, ptr %53, align 8, !tbaa !5
  store ptr %54, ptr %11, align 8, !tbaa !5
  br label %115

55:                                               ; preds = %46
  %56 = load ptr, ptr %20, align 8, !tbaa !5
  %57 = icmp eq ptr %56, @_ZN2rw3ps210attribXYZWE
  br i1 %57, label %58, label %64

58:                                               ; preds = %55
  %59 = load ptr, ptr %10, align 8, !tbaa !5
  %60 = load i32, ptr %21, align 4, !tbaa !12
  %61 = sext i32 %60 to i64
  %62 = getelementptr inbounds ptr, ptr %59, i64 %61
  %63 = load ptr, ptr %62, align 8, !tbaa !5
  store ptr %63, ptr %12, align 8, !tbaa !5
  br label %114

64:                                               ; preds = %55
  %65 = load ptr, ptr %20, align 8, !tbaa !5
  %66 = icmp eq ptr %65, @_ZN2rw3ps28attribUVE
  br i1 %66, label %67, label %73

67:                                               ; preds = %64
  %68 = load ptr, ptr %10, align 8, !tbaa !5
  %69 = load i32, ptr %21, align 4, !tbaa !12
  %70 = sext i32 %69 to i64
  %71 = getelementptr inbounds ptr, ptr %68, i64 %70
  %72 = load ptr, ptr %71, align 8, !tbaa !5
  store ptr %72, ptr %13, align 8, !tbaa !5
  br label %113

73:                                               ; preds = %64
  %74 = load ptr, ptr %20, align 8, !tbaa !5
  %75 = icmp eq ptr %74, @_ZN2rw3ps29attribUV2E
  br i1 %75, label %76, label %82

76:                                               ; preds = %73
  %77 = load ptr, ptr %10, align 8, !tbaa !5
  %78 = load i32, ptr %21, align 4, !tbaa !12
  %79 = sext i32 %78 to i64
  %80 = getelementptr inbounds ptr, ptr %77, i64 %79
  %81 = load ptr, ptr %80, align 8, !tbaa !5
  store ptr %81, ptr %14, align 8, !tbaa !5
  br label %112

82:                                               ; preds = %73
  %83 = load ptr, ptr %20, align 8, !tbaa !5
  %84 = icmp eq ptr %83, @_ZN2rw3ps210attribRGBAE
  br i1 %84, label %85, label %91

85:                                               ; preds = %82
  %86 = load ptr, ptr %10, align 8, !tbaa !5
  %87 = load i32, ptr %21, align 4, !tbaa !12
  %88 = sext i32 %87 to i64
  %89 = getelementptr inbounds ptr, ptr %86, i64 %88
  %90 = load ptr, ptr %89, align 8, !tbaa !5
  store ptr %90, ptr %15, align 8, !tbaa !5
  br label %111

91:                                               ; preds = %82
  %92 = load ptr, ptr %20, align 8, !tbaa !5
  %93 = icmp eq ptr %92, @_ZN2rw3ps212attribNormalE
  br i1 %93, label %94, label %100

94:                                               ; preds = %91
  %95 = load ptr, ptr %10, align 8, !tbaa !5
  %96 = load i32, ptr %21, align 4, !tbaa !12
  %97 = sext i32 %96 to i64
  %98 = getelementptr inbounds ptr, ptr %95, i64 %97
  %99 = load ptr, ptr %98, align 8, !tbaa !5
  store ptr %99, ptr %16, align 8, !tbaa !5
  br label %110

100:                                              ; preds = %91
  %101 = load ptr, ptr %20, align 8, !tbaa !5
  %102 = icmp eq ptr %101, @_ZN2rw3ps213attribWeightsE
  br i1 %102, label %103, label %109

103:                                              ; preds = %100
  %104 = load ptr, ptr %10, align 8, !tbaa !5
  %105 = load i32, ptr %21, align 4, !tbaa !12
  %106 = sext i32 %105 to i64
  %107 = getelementptr inbounds ptr, ptr %104, i64 %106
  %108 = load ptr, ptr %107, align 8, !tbaa !5
  store ptr %108, ptr %17, align 8, !tbaa !5
  br label %109

109:                                              ; preds = %103, %100
  br label %110

110:                                              ; preds = %109, %94
  br label %111

111:                                              ; preds = %110, %85
  br label %112

112:                                              ; preds = %111, %76
  br label %113

113:                                              ; preds = %112, %67
  br label %114

114:                                              ; preds = %113, %58
  br label %115

115:                                              ; preds = %114, %49
  br label %116

116:                                              ; preds = %115, %38
  br label %117

117:                                              ; preds = %116
  %118 = load i32, ptr %21, align 4, !tbaa !12
  %119 = add nsw i32 %118, 1
  store i32 %119, ptr %21, align 4, !tbaa !12
  br label %34, !llvm.loop !13

120:                                              ; preds = %37
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #5
  store i32 1, ptr %22, align 4, !tbaa !12
  %121 = load ptr, ptr %16, align 8, !tbaa !5
  %122 = icmp ne ptr %121, null
  br i1 %122, label %123, label %132

123:                                              ; preds = %120
  %124 = load ptr, ptr %7, align 8, !tbaa !5
  %125 = getelementptr inbounds %"struct.rw::Geometry", ptr %124, i32 0, i32 1
  %126 = load i32, ptr %125, align 8, !tbaa !15
  %127 = and i32 %126, 16
  %128 = icmp ne i32 %127, 0
  br i1 %128, label %129, label %132

129:                                              ; preds = %123
  %130 = load i32, ptr %22, align 4, !tbaa !12
  %131 = or i32 %130, 16
  store i32 %131, ptr %22, align 4, !tbaa !12
  br label %132

132:                                              ; preds = %129, %123, %120
  %133 = load ptr, ptr %15, align 8, !tbaa !5
  %134 = icmp ne ptr %133, null
  br i1 %134, label %135, label %144

135:                                              ; preds = %132
  %136 = load ptr, ptr %7, align 8, !tbaa !5
  %137 = getelementptr inbounds %"struct.rw::Geometry", ptr %136, i32 0, i32 1
  %138 = load i32, ptr %137, align 8, !tbaa !15
  %139 = and i32 %138, 8
  %140 = icmp ne i32 %139, 0
  br i1 %140, label %141, label %144

141:                                              ; preds = %135
  %142 = load i32, ptr %22, align 4, !tbaa !12
  %143 = or i32 %142, 256
  store i32 %143, ptr %22, align 4, !tbaa !12
  br label %144

144:                                              ; preds = %141, %135, %132
  %145 = load ptr, ptr %13, align 8, !tbaa !5
  %146 = icmp ne ptr %145, null
  br i1 %146, label %150, label %147

147:                                              ; preds = %144
  %148 = load ptr, ptr %14, align 8, !tbaa !5
  %149 = icmp ne ptr %148, null
  br i1 %149, label %150, label %158

150:                                              ; preds = %147, %144
  %151 = load ptr, ptr %7, align 8, !tbaa !5
  %152 = getelementptr inbounds %"struct.rw::Geometry", ptr %151, i32 0, i32 6
  %153 = load i32, ptr %152, align 4, !tbaa !20
  %154 = icmp sgt i32 %153, 0
  br i1 %154, label %155, label %158

155:                                              ; preds = %150
  %156 = load i32, ptr %22, align 4, !tbaa !12
  %157 = or i32 %156, 4096
  store i32 %157, ptr %22, align 4, !tbaa !12
  br label %158

158:                                              ; preds = %155, %150, %147
  %159 = load ptr, ptr %14, align 8, !tbaa !5
  %160 = icmp ne ptr %159, null
  br i1 %160, label %161, label %169

161:                                              ; preds = %158
  %162 = load ptr, ptr %7, align 8, !tbaa !5
  %163 = getelementptr inbounds %"struct.rw::Geometry", ptr %162, i32 0, i32 6
  %164 = load i32, ptr %163, align 4, !tbaa !20
  %165 = icmp sgt i32 %164, 1
  br i1 %165, label %166, label %169

166:                                              ; preds = %161
  %167 = load i32, ptr %22, align 4, !tbaa !12
  %168 = or i32 %167, 8192
  store i32 %168, ptr %22, align 4, !tbaa !12
  br label %169

169:                                              ; preds = %166, %161, %158
  %170 = load ptr, ptr %17, align 8, !tbaa !5
  %171 = icmp ne ptr %170, null
  br i1 %171, label %172, label %178

172:                                              ; preds = %169
  %173 = load ptr, ptr %19, align 8, !tbaa !5
  %174 = icmp ne ptr %173, null
  br i1 %174, label %175, label %178

175:                                              ; preds = %172
  %176 = load i32, ptr %22, align 4, !tbaa !12
  %177 = or i32 %176, 65536
  store i32 %177, ptr %22, align 4, !tbaa !12
  br label %178

178:                                              ; preds = %175, %172, %169
  %179 = load ptr, ptr %12, align 8, !tbaa !5
  %180 = icmp ne ptr %179, null
  br i1 %180, label %181, label %185

181:                                              ; preds = %178
  %182 = load ptr, ptr %7, align 8, !tbaa !5
  %183 = load ptr, ptr %9, align 8, !tbaa !5
  %184 = call noundef ptr @_ZN2rw3ps217getADCbitsForMeshEPNS_8GeometryEPNS_4MeshE(ptr noundef %182, ptr noundef %183)
  store ptr %184, ptr %18, align 8, !tbaa !5
  br label %185

185:                                              ; preds = %181, %178
  call void @llvm.lifetime.start.p0(i64 64, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #5
  store i32 0, ptr %24, align 4, !tbaa !12
  br label %186

186:                                              ; preds = %400, %185
  %187 = load i32, ptr %24, align 4, !tbaa !12
  %188 = load ptr, ptr %9, align 8, !tbaa !5
  %189 = getelementptr inbounds %"struct.rw::Mesh", ptr %188, i32 0, i32 1
  %190 = load i32, ptr %189, align 8, !tbaa !21
  %191 = icmp ult i32 %187, %190
  br i1 %191, label %193, label %192

192:                                              ; preds = %186
  store i32 5, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #5
  br label %403

193:                                              ; preds = %186
  %194 = load i32, ptr %22, align 4, !tbaa !12
  %195 = and i32 %194, 1
  %196 = icmp ne i32 %195, 0
  br i1 %196, label %197, label %207

197:                                              ; preds = %193
  %198 = getelementptr inbounds %"struct.rw::ps2::Vertex", ptr %23, i32 0, i32 0
  %199 = load ptr, ptr %11, align 8, !tbaa !5
  %200 = icmp ne ptr %199, null
  br i1 %200, label %201, label %203

201:                                              ; preds = %197
  %202 = load ptr, ptr %11, align 8, !tbaa !5
  br label %205

203:                                              ; preds = %197
  %204 = load ptr, ptr %12, align 8, !tbaa !5
  br label %205

205:                                              ; preds = %203, %201
  %206 = phi ptr [ %202, %201 ], [ %204, %203 ]
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %198, ptr align 4 %206, i64 12, i1 false)
  br label %207

207:                                              ; preds = %205, %193
  %208 = load i32, ptr %22, align 4, !tbaa !12
  %209 = and i32 %208, 16
  %210 = icmp ne i32 %209, 0
  br i1 %210, label %211, label %236

211:                                              ; preds = %207
  %212 = load ptr, ptr %16, align 8, !tbaa !5
  %213 = getelementptr inbounds i8, ptr %212, i64 0
  %214 = load i8, ptr %213, align 1, !tbaa !23
  %215 = sext i8 %214 to i32
  %216 = sitofp i32 %215 to float
  %217 = fdiv float %216, 1.280000e+02
  %218 = getelementptr inbounds %"struct.rw::ps2::Vertex", ptr %23, i32 0, i32 4
  %219 = getelementptr inbounds %"struct.rw::V3d", ptr %218, i32 0, i32 0
  store float %217, ptr %219, align 4, !tbaa !24
  %220 = load ptr, ptr %16, align 8, !tbaa !5
  %221 = getelementptr inbounds i8, ptr %220, i64 1
  %222 = load i8, ptr %221, align 1, !tbaa !23
  %223 = sext i8 %222 to i32
  %224 = sitofp i32 %223 to float
  %225 = fdiv float %224, 1.280000e+02
  %226 = getelementptr inbounds %"struct.rw::ps2::Vertex", ptr %23, i32 0, i32 4
  %227 = getelementptr inbounds %"struct.rw::V3d", ptr %226, i32 0, i32 1
  store float %225, ptr %227, align 4, !tbaa !30
  %228 = load ptr, ptr %16, align 8, !tbaa !5
  %229 = getelementptr inbounds i8, ptr %228, i64 2
  %230 = load i8, ptr %229, align 1, !tbaa !23
  %231 = sext i8 %230 to i32
  %232 = sitofp i32 %231 to float
  %233 = fdiv float %232, 1.280000e+02
  %234 = getelementptr inbounds %"struct.rw::ps2::Vertex", ptr %23, i32 0, i32 4
  %235 = getelementptr inbounds %"struct.rw::V3d", ptr %234, i32 0, i32 2
  store float %233, ptr %235, align 4, !tbaa !31
  br label %236

236:                                              ; preds = %211, %207
  %237 = load i32, ptr %22, align 4, !tbaa !12
  %238 = and i32 %237, 256
  %239 = icmp ne i32 %238, 0
  br i1 %239, label %240, label %243

240:                                              ; preds = %236
  %241 = getelementptr inbounds %"struct.rw::ps2::Vertex", ptr %23, i32 0, i32 3
  %242 = load ptr, ptr %15, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %241, ptr align 1 %242, i64 4, i1 false)
  br label %243

243:                                              ; preds = %240, %236
  %244 = load i32, ptr %22, align 4, !tbaa !12
  %245 = and i32 %244, 4096
  %246 = icmp ne i32 %245, 0
  br i1 %246, label %247, label %257

247:                                              ; preds = %243
  %248 = getelementptr inbounds %"struct.rw::ps2::Vertex", ptr %23, i32 0, i32 1
  %249 = load ptr, ptr %13, align 8, !tbaa !5
  %250 = icmp ne ptr %249, null
  br i1 %250, label %251, label %253

251:                                              ; preds = %247
  %252 = load ptr, ptr %13, align 8, !tbaa !5
  br label %255

253:                                              ; preds = %247
  %254 = load ptr, ptr %14, align 8, !tbaa !5
  br label %255

255:                                              ; preds = %253, %251
  %256 = phi ptr [ %252, %251 ], [ %254, %253 ]
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %248, ptr align 4 %256, i64 8, i1 false)
  br label %257

257:                                              ; preds = %255, %243
  %258 = load i32, ptr %22, align 4, !tbaa !12
  %259 = and i32 %258, 8192
  %260 = icmp ne i32 %259, 0
  br i1 %260, label %261, label %265

261:                                              ; preds = %257
  %262 = getelementptr inbounds %"struct.rw::ps2::Vertex", ptr %23, i32 0, i32 2
  %263 = load ptr, ptr %14, align 8, !tbaa !5
  %264 = getelementptr inbounds float, ptr %263, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %262, ptr align 4 %264, i64 8, i1 false)
  br label %265

265:                                              ; preds = %261, %257
  %266 = load i32, ptr %22, align 4, !tbaa !12
  %267 = and i32 %266, 65536
  %268 = icmp ne i32 %267, 0
  br i1 %268, label %269, label %328

269:                                              ; preds = %265
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #5
  store i32 0, ptr %26, align 4, !tbaa !12
  br label %270

270:                                              ; preds = %324, %269
  %271 = load i32, ptr %26, align 4, !tbaa !12
  %272 = icmp slt i32 %271, 4
  br i1 %272, label %274, label %273

273:                                              ; preds = %270
  store i32 8, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #5
  br label %327

274:                                              ; preds = %270
  %275 = load ptr, ptr %17, align 8, !tbaa !5
  %276 = load i32, ptr %26, align 4, !tbaa !12
  %277 = sext i32 %276 to i64
  %278 = getelementptr inbounds i32, ptr %275, i64 %277
  %279 = load i32, ptr %278, align 4, !tbaa !12
  %280 = and i32 %279, -1024
  %281 = getelementptr inbounds %"struct.rw::ps2::Vertex", ptr %23, i32 0, i32 5
  %282 = getelementptr inbounds [4 x float], ptr %281, i64 0, i64 0
  %283 = load i32, ptr %26, align 4, !tbaa !12
  %284 = sext i32 %283 to i64
  %285 = getelementptr inbounds i32, ptr %282, i64 %284
  store i32 %280, ptr %285, align 4, !tbaa !12
  %286 = load ptr, ptr %17, align 8, !tbaa !5
  %287 = load i32, ptr %26, align 4, !tbaa !12
  %288 = sext i32 %287 to i64
  %289 = getelementptr inbounds i32, ptr %286, i64 %288
  %290 = load i32, ptr %289, align 4, !tbaa !12
  %291 = and i32 %290, 1023
  %292 = lshr i32 %291, 2
  %293 = trunc i32 %292 to i8
  %294 = getelementptr inbounds %"struct.rw::ps2::Vertex", ptr %23, i32 0, i32 6
  %295 = load i32, ptr %26, align 4, !tbaa !12
  %296 = sext i32 %295 to i64
  %297 = getelementptr inbounds [4 x i8], ptr %294, i64 0, i64 %296
  store i8 %293, ptr %297, align 1, !tbaa !23
  %298 = getelementptr inbounds %"struct.rw::ps2::Vertex", ptr %23, i32 0, i32 6
  %299 = load i32, ptr %26, align 4, !tbaa !12
  %300 = sext i32 %299 to i64
  %301 = getelementptr inbounds [4 x i8], ptr %298, i64 0, i64 %300
  %302 = load i8, ptr %301, align 1, !tbaa !23
  %303 = icmp ne i8 %302, 0
  br i1 %303, label %304, label %311

304:                                              ; preds = %274
  %305 = getelementptr inbounds %"struct.rw::ps2::Vertex", ptr %23, i32 0, i32 6
  %306 = load i32, ptr %26, align 4, !tbaa !12
  %307 = sext i32 %306 to i64
  %308 = getelementptr inbounds [4 x i8], ptr %305, i64 0, i64 %307
  %309 = load i8, ptr %308, align 1, !tbaa !23
  %310 = add i8 %309, -1
  store i8 %310, ptr %308, align 1, !tbaa !23
  br label %311

311:                                              ; preds = %304, %274
  %312 = getelementptr inbounds %"struct.rw::ps2::Vertex", ptr %23, i32 0, i32 5
  %313 = load i32, ptr %26, align 4, !tbaa !12
  %314 = sext i32 %313 to i64
  %315 = getelementptr inbounds [4 x float], ptr %312, i64 0, i64 %314
  %316 = load float, ptr %315, align 4, !tbaa !32
  %317 = fcmp oeq float %316, 0.000000e+00
  br i1 %317, label %318, label %323

318:                                              ; preds = %311
  %319 = getelementptr inbounds %"struct.rw::ps2::Vertex", ptr %23, i32 0, i32 6
  %320 = load i32, ptr %26, align 4, !tbaa !12
  %321 = sext i32 %320 to i64
  %322 = getelementptr inbounds [4 x i8], ptr %319, i64 0, i64 %321
  store i8 0, ptr %322, align 1, !tbaa !23
  br label %323

323:                                              ; preds = %318, %311
  br label %324

324:                                              ; preds = %323
  %325 = load i32, ptr %26, align 4, !tbaa !12
  %326 = add nsw i32 %325, 1
  store i32 %326, ptr %26, align 4, !tbaa !12
  br label %270, !llvm.loop !33

327:                                              ; preds = %273
  br label %328

328:                                              ; preds = %327, %265
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #5
  %329 = load ptr, ptr %7, align 8, !tbaa !5
  %330 = load ptr, ptr %8, align 8, !tbaa !5
  %331 = load i32, ptr %22, align 4, !tbaa !12
  %332 = call noundef i32 @_ZN2rw3ps214findVertexSkinEPNS_8GeometryEPjjPNS0_6VertexE(ptr noundef %329, ptr noundef %330, i32 noundef %331, ptr noundef %23)
  store i32 %332, ptr %27, align 4, !tbaa !12
  %333 = load i32, ptr %27, align 4, !tbaa !12
  %334 = icmp slt i32 %333, 0
  br i1 %334, label %335, label %340

335:                                              ; preds = %328
  %336 = load ptr, ptr %7, align 8, !tbaa !5
  %337 = getelementptr inbounds %"struct.rw::Geometry", ptr %336, i32 0, i32 4
  %338 = load i32, ptr %337, align 4, !tbaa !34
  %339 = add nsw i32 %338, 1
  store i32 %339, ptr %337, align 4, !tbaa !34
  store i32 %338, ptr %27, align 4, !tbaa !12
  br label %340

340:                                              ; preds = %335, %328
  %341 = load i32, ptr %27, align 4, !tbaa !12
  %342 = trunc i32 %341 to i16
  %343 = load ptr, ptr %9, align 8, !tbaa !5
  %344 = getelementptr inbounds %"struct.rw::Mesh", ptr %343, i32 0, i32 0
  %345 = load ptr, ptr %344, align 8, !tbaa !35
  %346 = load i32, ptr %24, align 4, !tbaa !12
  %347 = zext i32 %346 to i64
  %348 = getelementptr inbounds i16, ptr %345, i64 %347
  store i16 %342, ptr %348, align 2, !tbaa !36
  %349 = load ptr, ptr %18, align 8, !tbaa !5
  %350 = icmp ne ptr %349, null
  br i1 %350, label %351, label %361

351:                                              ; preds = %340
  %352 = load ptr, ptr %12, align 8, !tbaa !5
  %353 = getelementptr inbounds float, ptr %352, i64 3
  %354 = load float, ptr %353, align 4, !tbaa !32
  %355 = fcmp une float %354, 0.000000e+00
  %356 = zext i1 %355 to i8
  %357 = load ptr, ptr %18, align 8, !tbaa !5
  %358 = load i32, ptr %24, align 4, !tbaa !12
  %359 = zext i32 %358 to i64
  %360 = getelementptr inbounds i8, ptr %357, i64 %359
  store i8 %356, ptr %360, align 1, !tbaa !23
  br label %361

361:                                              ; preds = %351, %340
  %362 = load i32, ptr %22, align 4, !tbaa !12
  %363 = load ptr, ptr %8, align 8, !tbaa !5
  %364 = load i32, ptr %27, align 4, !tbaa !12
  %365 = sext i32 %364 to i64
  %366 = getelementptr inbounds i32, ptr %363, i64 %365
  store i32 %362, ptr %366, align 4, !tbaa !12
  %367 = load ptr, ptr %7, align 8, !tbaa !5
  %368 = load i32, ptr %27, align 4, !tbaa !12
  %369 = load i32, ptr %22, align 4, !tbaa !12
  call void @_ZN2rw3ps216insertVertexSkinEPNS_8GeometryEijPNS0_6VertexE(ptr noundef %367, i32 noundef %368, i32 noundef %369, ptr noundef %23)
  %370 = load ptr, ptr %11, align 8, !tbaa !5
  %371 = icmp ne ptr %370, null
  br i1 %371, label %372, label %375

372:                                              ; preds = %361
  %373 = load ptr, ptr %11, align 8, !tbaa !5
  %374 = getelementptr inbounds float, ptr %373, i64 3
  store ptr %374, ptr %11, align 8, !tbaa !5
  br label %375

375:                                              ; preds = %372, %361
  %376 = load ptr, ptr %12, align 8, !tbaa !5
  %377 = icmp ne ptr %376, null
  br i1 %377, label %378, label %381

378:                                              ; preds = %375
  %379 = load ptr, ptr %12, align 8, !tbaa !5
  %380 = getelementptr inbounds float, ptr %379, i64 4
  store ptr %380, ptr %12, align 8, !tbaa !5
  br label %381

381:                                              ; preds = %378, %375
  %382 = load ptr, ptr %13, align 8, !tbaa !5
  %383 = icmp ne ptr %382, null
  br i1 %383, label %384, label %387

384:                                              ; preds = %381
  %385 = load ptr, ptr %13, align 8, !tbaa !5
  %386 = getelementptr inbounds float, ptr %385, i64 2
  store ptr %386, ptr %13, align 8, !tbaa !5
  br label %387

387:                                              ; preds = %384, %381
  %388 = load ptr, ptr %14, align 8, !tbaa !5
  %389 = icmp ne ptr %388, null
  br i1 %389, label %390, label %393

390:                                              ; preds = %387
  %391 = load ptr, ptr %14, align 8, !tbaa !5
  %392 = getelementptr inbounds float, ptr %391, i64 4
  store ptr %392, ptr %14, align 8, !tbaa !5
  br label %393

393:                                              ; preds = %390, %387
  %394 = load ptr, ptr %15, align 8, !tbaa !5
  %395 = getelementptr inbounds i8, ptr %394, i64 4
  store ptr %395, ptr %15, align 8, !tbaa !5
  %396 = load ptr, ptr %16, align 8, !tbaa !5
  %397 = getelementptr inbounds i8, ptr %396, i64 3
  store ptr %397, ptr %16, align 8, !tbaa !5
  %398 = load ptr, ptr %17, align 8, !tbaa !5
  %399 = getelementptr inbounds i32, ptr %398, i64 4
  store ptr %399, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #5
  br label %400

400:                                              ; preds = %393
  %401 = load i32, ptr %24, align 4, !tbaa !12
  %402 = add i32 %401, 1
  store i32 %402, ptr %24, align 4, !tbaa !12
  br label %186, !llvm.loop !37

403:                                              ; preds = %192
  call void @llvm.lifetime.end.p0(i64 64, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #5
  ret void
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN2rw4Skin3getEPKNS_8GeometryE(ptr noundef) #3 align 2

declare noundef i32 @_ZN2rw3ps214findVertexSkinEPNS_8GeometryEPjjPNS0_6VertexE(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #4

declare void @_ZN2rw3ps216insertVertexSkinEPNS_8GeometryEijPNS0_6VertexE(ptr noundef, i32 noundef, i32 noundef, ptr noundef) #4

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress 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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { mustprogress 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 #4 = { "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 #5 = { 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++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"_ZTSN2rw11SkinGlobalsE", !11, i64 0, !11, i64 4, !7, i64 8, !6, i64 112}
!11 = !{!"int", !7, i64 0}
!12 = !{!11, !11, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = !{!16, !11, i64 16}
!16 = !{!"_ZTSN2rw8GeometryE", !17, i64 0, !11, i64 16, !18, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !6, i64 40, !6, i64 48, !7, i64 56, !6, i64 120, !19, i64 128, !6, i64 144, !6, i64 152, !11, i64 160}
!17 = !{!"_ZTSN2rw6ObjectE", !7, i64 0, !7, i64 1, !7, i64 2, !7, i64 3, !6, i64 8}
!18 = !{!"short", !7, i64 0}
!19 = !{!"_ZTSN2rw12MaterialListE", !6, i64 0, !11, i64 8, !11, i64 12}
!20 = !{!16, !11, i64 36}
!21 = !{!22, !11, i64 8}
!22 = !{!"_ZTSN2rw4MeshE", !6, i64 0, !11, i64 8, !6, i64 16}
!23 = !{!7, !7, i64 0}
!24 = !{!25, !27, i64 32}
!25 = !{!"_ZTSN2rw3ps26VertexE", !26, i64 0, !28, i64 12, !28, i64 20, !29, i64 28, !26, i64 32, !7, i64 44, !7, i64 60}
!26 = !{!"_ZTSN2rw3V3dE", !27, i64 0, !27, i64 4, !27, i64 8}
!27 = !{!"float", !7, i64 0}
!28 = !{!"_ZTSN2rw9TexCoordsE", !27, i64 0, !27, i64 4}
!29 = !{!"_ZTSN2rw4RGBAE", !7, i64 0, !7, i64 1, !7, i64 2, !7, i64 3}
!30 = !{!25, !27, i64 36}
!31 = !{!25, !27, i64 40}
!32 = !{!27, !27, i64 0}
!33 = distinct !{!33, !14}
!34 = !{!16, !11, i64 28}
!35 = !{!22, !6, i64 0}
!36 = !{!18, !18, i64 0}
!37 = distinct !{!37, !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.rw::ps2::PipeAttribute" = type { ptr, i32 }
%"struct.rw::SkinGlobals" = type { i32, i32, [13 x ptr], ptr }
%"struct.rw::ps2::Vertex" = type { %"struct.rw::V3d", %"struct.rw::TexCoords", %"struct.rw::TexCoords", %"struct.rw::RGBA", %"struct.rw::V3d", [4 x float], [4 x i8] }
%"struct.rw::TexCoords" = type { float, float }
%"struct.rw::RGBA" = type { i8, i8, i8, i8 }
%"struct.rw::V3d" = type { float, float, float }

@_ZN2rw3ps29attribXYZE = external dso_local global %"struct.rw::ps2::PipeAttribute", align 8
@_ZN2rw3ps210attribXYZWE = external dso_local global %"struct.rw::ps2::PipeAttribute", align 8
@_ZN2rw3ps28attribUVE = external dso_local global %"struct.rw::ps2::PipeAttribute", align 8
@_ZN2rw3ps29attribUV2E = external dso_local global %"struct.rw::ps2::PipeAttribute", align 8
@_ZN2rw3ps210attribRGBAE = external dso_local global %"struct.rw::ps2::PipeAttribute", align 8
@_ZN2rw3ps212attribNormalE = external dso_local global %"struct.rw::ps2::PipeAttribute", align 8
@_ZN2rw3ps213attribWeightsE = external dso_local global %"struct.rw::ps2::PipeAttribute", align 8
@_ZN2rw11skinGlobalsE = external local_unnamed_addr global %"struct.rw::SkinGlobals", align 8

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN2rw3ps217getADCbitsForMeshEPNS_8GeometryEPNS_4MeshE(ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN2rw3ps219genericUninstanceCBEPNS0_11MatPipelineEPNS_8GeometryEPjPNS_4MeshEPPh(ptr nocapture noundef readonly %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr nocapture noundef readonly %4) local_unnamed_addr #1 {
  %6 = alloca %"struct.rw::ps2::Vertex", align 4
  %7 = load i32, ptr @_ZN2rw11skinGlobalsE, align 8, !tbaa !5
  %.not = icmp eq i32 %7, 0
  br i1 %.not, label %10, label %8

8:                                                ; preds = %5
  %9 = tail call noundef ptr @_ZN2rw4Skin3getEPKNS_8GeometryE(ptr noundef %1)
  br label %10

10:                                               ; preds = %8, %5
  %.0116 = phi ptr [ %9, %8 ], [ null, %5 ]
  %11 = getelementptr inbounds i8, ptr %0, i64 32
  %12 = load ptr, ptr %11, align 8, !tbaa !11
  %.not161 = icmp eq ptr %12, null
  br i1 %.not161, label %41, label %13

13:                                               ; preds = %10
  %14 = icmp eq ptr %12, @_ZN2rw3ps29attribXYZE
  br i1 %14, label %15, label %17

15:                                               ; preds = %13
  %16 = load ptr, ptr %4, align 8, !tbaa !11
  br label %41

17:                                               ; preds = %13
  %18 = icmp eq ptr %12, @_ZN2rw3ps210attribXYZWE
  br i1 %18, label %19, label %21

19:                                               ; preds = %17
  %20 = load ptr, ptr %4, align 8, !tbaa !11
  br label %41

21:                                               ; preds = %17
  %22 = icmp eq ptr %12, @_ZN2rw3ps28attribUVE
  br i1 %22, label %23, label %25

23:                                               ; preds = %21
  %24 = load ptr, ptr %4, align 8, !tbaa !11
  br label %41

25:                                               ; preds = %21
  %26 = icmp eq ptr %12, @_ZN2rw3ps29attribUV2E
  br i1 %26, label %27, label %29

27:                                               ; preds = %25
  %28 = load ptr, ptr %4, align 8, !tbaa !11
  br label %41

29:                                               ; preds = %25
  %30 = icmp eq ptr %12, @_ZN2rw3ps210attribRGBAE
  br i1 %30, label %31, label %33

31:                                               ; preds = %29
  %32 = load ptr, ptr %4, align 8, !tbaa !11
  br label %41

33:                                               ; preds = %29
  %34 = icmp eq ptr %12, @_ZN2rw3ps212attribNormalE
  br i1 %34, label %35, label %37

35:                                               ; preds = %33
  %36 = load ptr, ptr %4, align 8, !tbaa !11
  br label %41

37:                                               ; preds = %33
  %38 = icmp eq ptr %12, @_ZN2rw3ps213attribWeightsE
  br i1 %38, label %39, label %41

39:                                               ; preds = %37
  %40 = load ptr, ptr %4, align 8, !tbaa !11
  br label %41

41:                                               ; preds = %10, %19, %27, %35, %39, %37, %31, %23, %15
  %.1136 = phi ptr [ null, %15 ], [ %20, %19 ], [ null, %23 ], [ null, %27 ], [ null, %31 ], [ null, %35 ], [ null, %39 ], [ null, %37 ], [ null, %10 ]
  %.1132 = phi ptr [ null, %15 ], [ null, %19 ], [ %24, %23 ], [ null, %27 ], [ null, %31 ], [ null, %35 ], [ null, %39 ], [ null, %37 ], [ null, %10 ]
  %.1128 = phi ptr [ null, %15 ], [ null, %19 ], [ null, %23 ], [ %28, %27 ], [ null, %31 ], [ null, %35 ], [ null, %39 ], [ null, %37 ], [ null, %10 ]
  %.1125 = phi ptr [ null, %15 ], [ null, %19 ], [ null, %23 ], [ null, %27 ], [ %32, %31 ], [ null, %35 ], [ null, %39 ], [ null, %37 ], [ null, %10 ]
  %.1122 = phi ptr [ null, %15 ], [ null, %19 ], [ null, %23 ], [ null, %27 ], [ null, %31 ], [ %36, %35 ], [ null, %39 ], [ null, %37 ], [ null, %10 ]
  %.1119 = phi ptr [ null, %15 ], [ null, %19 ], [ null, %23 ], [ null, %27 ], [ null, %31 ], [ null, %35 ], [ %40, %39 ], [ null, %37 ], [ null, %10 ]
  %.1113 = phi ptr [ %16, %15 ], [ null, %19 ], [ null, %23 ], [ null, %27 ], [ null, %31 ], [ null, %35 ], [ null, %39 ], [ null, %37 ], [ null, %10 ]
  %42 = getelementptr inbounds i8, ptr %0, i64 40
  %43 = load ptr, ptr %42, align 8, !tbaa !11
  %.not161.1 = icmp eq ptr %43, null
  br i1 %.not161.1, label %79, label %44

44:                                               ; preds = %41
  %45 = icmp eq ptr %43, @_ZN2rw3ps29attribXYZE
  br i1 %45, label %76, label %46

46:                                               ; preds = %44
  %47 = icmp eq ptr %43, @_ZN2rw3ps210attribXYZWE
  br i1 %47, label %73, label %48

48:                                               ; preds = %46
  %49 = icmp eq ptr %43, @_ZN2rw3ps28attribUVE
  br i1 %49, label %70, label %50

50:                                               ; preds = %48
  %51 = icmp eq ptr %43, @_ZN2rw3ps29attribUV2E
  br i1 %51, label %67, label %52

52:                                               ; preds = %50
  %53 = icmp eq ptr %43, @_ZN2rw3ps210attribRGBAE
  br i1 %53, label %64, label %54

54:                                               ; preds = %52
  %55 = icmp eq ptr %43, @_ZN2rw3ps212attribNormalE
  br i1 %55, label %61, label %56

56:                                               ; preds = %54
  %57 = icmp eq ptr %43, @_ZN2rw3ps213attribWeightsE
  br i1 %57, label %58, label %79

58:                                               ; preds = %56
  %59 = getelementptr inbounds i8, ptr %4, i64 8
  %60 = load ptr, ptr %59, align 8, !tbaa !11
  br label %79

61:                                               ; preds = %54
  %62 = getelementptr inbounds i8, ptr %4, i64 8
  %63 = load ptr, ptr %62, align 8, !tbaa !11
  br label %79

64:                                               ; preds = %52
  %65 = getelementptr inbounds i8, ptr %4, i64 8
  %66 = load ptr, ptr %65, align 8, !tbaa !11
  br label %79

67:                                               ; preds = %50
  %68 = getelementptr inbounds i8, ptr %4, i64 8
  %69 = load ptr, ptr %68, align 8, !tbaa !11
  br label %79

70:                                               ; preds = %48
  %71 = getelementptr inbounds i8, ptr %4, i64 8
  %72 = load ptr, ptr %71, align 8, !tbaa !11
  br label %79

73:                                               ; preds = %46
  %74 = getelementptr inbounds i8, ptr %4, i64 8
  %75 = load ptr, ptr %74, align 8, !tbaa !11
  br label %79

76:                                               ; preds = %44
  %77 = getelementptr inbounds i8, ptr %4, i64 8
  %78 = load ptr, ptr %77, align 8, !tbaa !11
  br label %79

79:                                               ; preds = %76, %73, %70, %67, %64, %61, %58, %56, %41
  %.1136.1 = phi ptr [ %.1136, %76 ], [ %75, %73 ], [ %.1136, %70 ], [ %.1136, %67 ], [ %.1136, %64 ], [ %.1136, %61 ], [ %.1136, %58 ], [ %.1136, %56 ], [ %.1136, %41 ]
  %.1132.1 = phi ptr [ %.1132, %76 ], [ %.1132, %73 ], [ %72, %70 ], [ %.1132, %67 ], [ %.1132, %64 ], [ %.1132, %61 ], [ %.1132, %58 ], [ %.1132, %56 ], [ %.1132, %41 ]
  %.1128.1 = phi ptr [ %.1128, %76 ], [ %.1128, %73 ], [ %.1128, %70 ], [ %69, %67 ], [ %.1128, %64 ], [ %.1128, %61 ], [ %.1128, %58 ], [ %.1128, %56 ], [ %.1128, %41 ]
  %.1125.1 = phi ptr [ %.1125, %76 ], [ %.1125, %73 ], [ %.1125, %70 ], [ %.1125, %67 ], [ %66, %64 ], [ %.1125, %61 ], [ %.1125, %58 ], [ %.1125, %56 ], [ %.1125, %41 ]
  %.1122.1 = phi ptr [ %.1122, %76 ], [ %.1122, %73 ], [ %.1122, %70 ], [ %.1122, %67 ], [ %.1122, %64 ], [ %63, %61 ], [ %.1122, %58 ], [ %.1122, %56 ], [ %.1122, %41 ]
  %.1119.1 = phi ptr [ %.1119, %76 ], [ %.1119, %73 ], [ %.1119, %70 ], [ %.1119, %67 ], [ %.1119, %64 ], [ %.1119, %61 ], [ %60, %58 ], [ %.1119, %56 ], [ %.1119, %41 ]
  %.1113.1 = phi ptr [ %78, %76 ], [ %.1113, %73 ], [ %.1113, %70 ], [ %.1113, %67 ], [ %.1113, %64 ], [ %.1113, %61 ], [ %.1113, %58 ], [ %.1113, %56 ], [ %.1113, %41 ]
  %80 = getelementptr inbounds i8, ptr %0, i64 48
  %81 = load ptr, ptr %80, align 8, !tbaa !11
  %.not161.2 = icmp eq ptr %81, null
  br i1 %.not161.2, label %117, label %82

82:                                               ; preds = %79
  %83 = icmp eq ptr %81, @_ZN2rw3ps29attribXYZE
  br i1 %83, label %114, label %84

84:                                               ; preds = %82
  %85 = icmp eq ptr %81, @_ZN2rw3ps210attribXYZWE
  br i1 %85, label %111, label %86

86:                                               ; preds = %84
  %87 = icmp eq ptr %81, @_ZN2rw3ps28attribUVE
  br i1 %87, label %108, label %88

88:                                               ; preds = %86
  %89 = icmp eq ptr %81, @_ZN2rw3ps29attribUV2E
  br i1 %89, label %105, label %90

90:                                               ; preds = %88
  %91 = icmp eq ptr %81, @_ZN2rw3ps210attribRGBAE
  br i1 %91, label %102, label %92

92:                                               ; preds = %90
  %93 = icmp eq ptr %81, @_ZN2rw3ps212attribNormalE
  br i1 %93, label %99, label %94

94:                                               ; preds = %92
  %95 = icmp eq ptr %81, @_ZN2rw3ps213attribWeightsE
  br i1 %95, label %96, label %117

96:                                               ; preds = %94
  %97 = getelementptr inbounds i8, ptr %4, i64 16
  %98 = load ptr, ptr %97, align 8, !tbaa !11
  br label %117

99:                                               ; preds = %92
  %100 = getelementptr inbounds i8, ptr %4, i64 16
  %101 = load ptr, ptr %100, align 8, !tbaa !11
  br label %117

102:                                              ; preds = %90
  %103 = getelementptr inbounds i8, ptr %4, i64 16
  %104 = load ptr, ptr %103, align 8, !tbaa !11
  br label %117

105:                                              ; preds = %88
  %106 = getelementptr inbounds i8, ptr %4, i64 16
  %107 = load ptr, ptr %106, align 8, !tbaa !11
  br label %117

108:                                              ; preds = %86
  %109 = getelementptr inbounds i8, ptr %4, i64 16
  %110 = load ptr, ptr %109, align 8, !tbaa !11
  br label %117

111:                                              ; preds = %84
  %112 = getelementptr inbounds i8, ptr %4, i64 16
  %113 = load ptr, ptr %112, align 8, !tbaa !11
  br label %117

114:                                              ; preds = %82
  %115 = getelementptr inbounds i8, ptr %4, i64 16
  %116 = load ptr, ptr %115, align 8, !tbaa !11
  br label %117

117:                                              ; preds = %114, %111, %108, %105, %102, %99, %96, %94, %79
  %.1136.2 = phi ptr [ %.1136.1, %114 ], [ %113, %111 ], [ %.1136.1, %108 ], [ %.1136.1, %105 ], [ %.1136.1, %102 ], [ %.1136.1, %99 ], [ %.1136.1, %96 ], [ %.1136.1, %94 ], [ %.1136.1, %79 ]
  %.1132.2 = phi ptr [ %.1132.1, %114 ], [ %.1132.1, %111 ], [ %110, %108 ], [ %.1132.1, %105 ], [ %.1132.1, %102 ], [ %.1132.1, %99 ], [ %.1132.1, %96 ], [ %.1132.1, %94 ], [ %.1132.1, %79 ]
  %.1128.2 = phi ptr [ %.1128.1, %114 ], [ %.1128.1, %111 ], [ %.1128.1, %108 ], [ %107, %105 ], [ %.1128.1, %102 ], [ %.1128.1, %99 ], [ %.1128.1, %96 ], [ %.1128.1, %94 ], [ %.1128.1, %79 ]
  %.1125.2 = phi ptr [ %.1125.1, %114 ], [ %.1125.1, %111 ], [ %.1125.1, %108 ], [ %.1125.1, %105 ], [ %104, %102 ], [ %.1125.1, %99 ], [ %.1125.1, %96 ], [ %.1125.1, %94 ], [ %.1125.1, %79 ]
  %.1122.2 = phi ptr [ %.1122.1, %114 ], [ %.1122.1, %111 ], [ %.1122.1, %108 ], [ %.1122.1, %105 ], [ %.1122.1, %102 ], [ %101, %99 ], [ %.1122.1, %96 ], [ %.1122.1, %94 ], [ %.1122.1, %79 ]
  %.1119.2 = phi ptr [ %.1119.1, %114 ], [ %.1119.1, %111 ], [ %.1119.1, %108 ], [ %.1119.1, %105 ], [ %.1119.1, %102 ], [ %.1119.1, %99 ], [ %98, %96 ], [ %.1119.1, %94 ], [ %.1119.1, %79 ]
  %.1113.2 = phi ptr [ %116, %114 ], [ %.1113.1, %111 ], [ %.1113.1, %108 ], [ %.1113.1, %105 ], [ %.1113.1, %102 ], [ %.1113.1, %99 ], [ %.1113.1, %96 ], [ %.1113.1, %94 ], [ %.1113.1, %79 ]
  %118 = getelementptr inbounds i8, ptr %0, i64 56
  %119 = load ptr, ptr %118, align 8, !tbaa !11
  %.not161.3 = icmp eq ptr %119, null
  br i1 %.not161.3, label %155, label %120

120:                                              ; preds = %117
  %121 = icmp eq ptr %119, @_ZN2rw3ps29attribXYZE
  br i1 %121, label %152, label %122

122:                                              ; preds = %120
  %123 = icmp eq ptr %119, @_ZN2rw3ps210attribXYZWE
  br i1 %123, label %149, label %124

124:                                              ; preds = %122
  %125 = icmp eq ptr %119, @_ZN2rw3ps28attribUVE
  br i1 %125, label %146, label %126

126:                                              ; preds = %124
  %127 = icmp eq ptr %119, @_ZN2rw3ps29attribUV2E
  br i1 %127, label %143, label %128

128:                                              ; preds = %126
  %129 = icmp eq ptr %119, @_ZN2rw3ps210attribRGBAE
  br i1 %129, label %140, label %130

130:                                              ; preds = %128
  %131 = icmp eq ptr %119, @_ZN2rw3ps212attribNormalE
  br i1 %131, label %137, label %132

132:                                              ; preds = %130
  %133 = icmp eq ptr %119, @_ZN2rw3ps213attribWeightsE
  br i1 %133, label %134, label %155

134:                                              ; preds = %132
  %135 = getelementptr inbounds i8, ptr %4, i64 24
  %136 = load ptr, ptr %135, align 8, !tbaa !11
  br label %155

137:                                              ; preds = %130
  %138 = getelementptr inbounds i8, ptr %4, i64 24
  %139 = load ptr, ptr %138, align 8, !tbaa !11
  br label %155

140:                                              ; preds = %128
  %141 = getelementptr inbounds i8, ptr %4, i64 24
  %142 = load ptr, ptr %141, align 8, !tbaa !11
  br label %155

143:                                              ; preds = %126
  %144 = getelementptr inbounds i8, ptr %4, i64 24
  %145 = load ptr, ptr %144, align 8, !tbaa !11
  br label %155

146:                                              ; preds = %124
  %147 = getelementptr inbounds i8, ptr %4, i64 24
  %148 = load ptr, ptr %147, align 8, !tbaa !11
  br label %155

149:                                              ; preds = %122
  %150 = getelementptr inbounds i8, ptr %4, i64 24
  %151 = load ptr, ptr %150, align 8, !tbaa !11
  br label %155

152:                                              ; preds = %120
  %153 = getelementptr inbounds i8, ptr %4, i64 24
  %154 = load ptr, ptr %153, align 8, !tbaa !11
  br label %155

155:                                              ; preds = %152, %149, %146, %143, %140, %137, %134, %132, %117
  %.1136.3 = phi ptr [ %.1136.2, %152 ], [ %151, %149 ], [ %.1136.2, %146 ], [ %.1136.2, %143 ], [ %.1136.2, %140 ], [ %.1136.2, %137 ], [ %.1136.2, %134 ], [ %.1136.2, %132 ], [ %.1136.2, %117 ]
  %.1132.3 = phi ptr [ %.1132.2, %152 ], [ %.1132.2, %149 ], [ %148, %146 ], [ %.1132.2, %143 ], [ %.1132.2, %140 ], [ %.1132.2, %137 ], [ %.1132.2, %134 ], [ %.1132.2, %132 ], [ %.1132.2, %117 ]
  %.1128.3 = phi ptr [ %.1128.2, %152 ], [ %.1128.2, %149 ], [ %.1128.2, %146 ], [ %145, %143 ], [ %.1128.2, %140 ], [ %.1128.2, %137 ], [ %.1128.2, %134 ], [ %.1128.2, %132 ], [ %.1128.2, %117 ]
  %.1125.3 = phi ptr [ %.1125.2, %152 ], [ %.1125.2, %149 ], [ %.1125.2, %146 ], [ %.1125.2, %143 ], [ %142, %140 ], [ %.1125.2, %137 ], [ %.1125.2, %134 ], [ %.1125.2, %132 ], [ %.1125.2, %117 ]
  %.1122.3 = phi ptr [ %.1122.2, %152 ], [ %.1122.2, %149 ], [ %.1122.2, %146 ], [ %.1122.2, %143 ], [ %.1122.2, %140 ], [ %139, %137 ], [ %.1122.2, %134 ], [ %.1122.2, %132 ], [ %.1122.2, %117 ]
  %.1119.3 = phi ptr [ %.1119.2, %152 ], [ %.1119.2, %149 ], [ %.1119.2, %146 ], [ %.1119.2, %143 ], [ %.1119.2, %140 ], [ %.1119.2, %137 ], [ %136, %134 ], [ %.1119.2, %132 ], [ %.1119.2, %117 ]
  %.1113.3 = phi ptr [ %154, %152 ], [ %.1113.2, %149 ], [ %.1113.2, %146 ], [ %.1113.2, %143 ], [ %.1113.2, %140 ], [ %.1113.2, %137 ], [ %.1113.2, %134 ], [ %.1113.2, %132 ], [ %.1113.2, %117 ]
  %156 = getelementptr inbounds i8, ptr %0, i64 64
  %157 = load ptr, ptr %156, align 8, !tbaa !11
  %.not161.4 = icmp eq ptr %157, null
  br i1 %.not161.4, label %193, label %158

158:                                              ; preds = %155
  %159 = icmp eq ptr %157, @_ZN2rw3ps29attribXYZE
  br i1 %159, label %190, label %160

160:                                              ; preds = %158
  %161 = icmp eq ptr %157, @_ZN2rw3ps210attribXYZWE
  br i1 %161, label %187, label %162

162:                                              ; preds = %160
  %163 = icmp eq ptr %157, @_ZN2rw3ps28attribUVE
  br i1 %163, label %184, label %164

164:                                              ; preds = %162
  %165 = icmp eq ptr %157, @_ZN2rw3ps29attribUV2E
  br i1 %165, label %181, label %166

166:                                              ; preds = %164
  %167 = icmp eq ptr %157, @_ZN2rw3ps210attribRGBAE
  br i1 %167, label %178, label %168

168:                                              ; preds = %166
  %169 = icmp eq ptr %157, @_ZN2rw3ps212attribNormalE
  br i1 %169, label %175, label %170

170:                                              ; preds = %168
  %171 = icmp eq ptr %157, @_ZN2rw3ps213attribWeightsE
  br i1 %171, label %172, label %193

172:                                              ; preds = %170
  %173 = getelementptr inbounds i8, ptr %4, i64 32
  %174 = load ptr, ptr %173, align 8, !tbaa !11
  br label %193

175:                                              ; preds = %168
  %176 = getelementptr inbounds i8, ptr %4, i64 32
  %177 = load ptr, ptr %176, align 8, !tbaa !11
  br label %193

178:                                              ; preds = %166
  %179 = getelementptr inbounds i8, ptr %4, i64 32
  %180 = load ptr, ptr %179, align 8, !tbaa !11
  br label %193

181:                                              ; preds = %164
  %182 = getelementptr inbounds i8, ptr %4, i64 32
  %183 = load ptr, ptr %182, align 8, !tbaa !11
  br label %193

184:                                              ; preds = %162
  %185 = getelementptr inbounds i8, ptr %4, i64 32
  %186 = load ptr, ptr %185, align 8, !tbaa !11
  br label %193

187:                                              ; preds = %160
  %188 = getelementptr inbounds i8, ptr %4, i64 32
  %189 = load ptr, ptr %188, align 8, !tbaa !11
  br label %193

190:                                              ; preds = %158
  %191 = getelementptr inbounds i8, ptr %4, i64 32
  %192 = load ptr, ptr %191, align 8, !tbaa !11
  br label %193

193:                                              ; preds = %190, %187, %184, %181, %178, %175, %172, %170, %155
  %.1136.4 = phi ptr [ %.1136.3, %190 ], [ %189, %187 ], [ %.1136.3, %184 ], [ %.1136.3, %181 ], [ %.1136.3, %178 ], [ %.1136.3, %175 ], [ %.1136.3, %172 ], [ %.1136.3, %170 ], [ %.1136.3, %155 ]
  %.1132.4 = phi ptr [ %.1132.3, %190 ], [ %.1132.3, %187 ], [ %186, %184 ], [ %.1132.3, %181 ], [ %.1132.3, %178 ], [ %.1132.3, %175 ], [ %.1132.3, %172 ], [ %.1132.3, %170 ], [ %.1132.3, %155 ]
  %.1128.4 = phi ptr [ %.1128.3, %190 ], [ %.1128.3, %187 ], [ %.1128.3, %184 ], [ %183, %181 ], [ %.1128.3, %178 ], [ %.1128.3, %175 ], [ %.1128.3, %172 ], [ %.1128.3, %170 ], [ %.1128.3, %155 ]
  %.1125.4 = phi ptr [ %.1125.3, %190 ], [ %.1125.3, %187 ], [ %.1125.3, %184 ], [ %.1125.3, %181 ], [ %180, %178 ], [ %.1125.3, %175 ], [ %.1125.3, %172 ], [ %.1125.3, %170 ], [ %.1125.3, %155 ]
  %.1122.4 = phi ptr [ %.1122.3, %190 ], [ %.1122.3, %187 ], [ %.1122.3, %184 ], [ %.1122.3, %181 ], [ %.1122.3, %178 ], [ %177, %175 ], [ %.1122.3, %172 ], [ %.1122.3, %170 ], [ %.1122.3, %155 ]
  %.1119.4 = phi ptr [ %.1119.3, %190 ], [ %.1119.3, %187 ], [ %.1119.3, %184 ], [ %.1119.3, %181 ], [ %.1119.3, %178 ], [ %.1119.3, %175 ], [ %174, %172 ], [ %.1119.3, %170 ], [ %.1119.3, %155 ]
  %.1113.4 = phi ptr [ %192, %190 ], [ %.1113.3, %187 ], [ %.1113.3, %184 ], [ %.1113.3, %181 ], [ %.1113.3, %178 ], [ %.1113.3, %175 ], [ %.1113.3, %172 ], [ %.1113.3, %170 ], [ %.1113.3, %155 ]
  %194 = getelementptr inbounds i8, ptr %0, i64 72
  %195 = load ptr, ptr %194, align 8, !tbaa !11
  %.not161.5 = icmp eq ptr %195, null
  br i1 %.not161.5, label %231, label %196

196:                                              ; preds = %193
  %197 = icmp eq ptr %195, @_ZN2rw3ps29attribXYZE
  br i1 %197, label %228, label %198

198:                                              ; preds = %196
  %199 = icmp eq ptr %195, @_ZN2rw3ps210attribXYZWE
  br i1 %199, label %225, label %200

200:                                              ; preds = %198
  %201 = icmp eq ptr %195, @_ZN2rw3ps28attribUVE
  br i1 %201, label %222, label %202

202:                                              ; preds = %200
  %203 = icmp eq ptr %195, @_ZN2rw3ps29attribUV2E
  br i1 %203, label %219, label %204

204:                                              ; preds = %202
  %205 = icmp eq ptr %195, @_ZN2rw3ps210attribRGBAE
  br i1 %205, label %216, label %206

206:                                              ; preds = %204
  %207 = icmp eq ptr %195, @_ZN2rw3ps212attribNormalE
  br i1 %207, label %213, label %208

208:                                              ; preds = %206
  %209 = icmp eq ptr %195, @_ZN2rw3ps213attribWeightsE
  br i1 %209, label %210, label %231

210:                                              ; preds = %208
  %211 = getelementptr inbounds i8, ptr %4, i64 40
  %212 = load ptr, ptr %211, align 8, !tbaa !11
  br label %231

213:                                              ; preds = %206
  %214 = getelementptr inbounds i8, ptr %4, i64 40
  %215 = load ptr, ptr %214, align 8, !tbaa !11
  br label %231

216:                                              ; preds = %204
  %217 = getelementptr inbounds i8, ptr %4, i64 40
  %218 = load ptr, ptr %217, align 8, !tbaa !11
  br label %231

219:                                              ; preds = %202
  %220 = getelementptr inbounds i8, ptr %4, i64 40
  %221 = load ptr, ptr %220, align 8, !tbaa !11
  br label %231

222:                                              ; preds = %200
  %223 = getelementptr inbounds i8, ptr %4, i64 40
  %224 = load ptr, ptr %223, align 8, !tbaa !11
  br label %231

225:                                              ; preds = %198
  %226 = getelementptr inbounds i8, ptr %4, i64 40
  %227 = load ptr, ptr %226, align 8, !tbaa !11
  br label %231

228:                                              ; preds = %196
  %229 = getelementptr inbounds i8, ptr %4, i64 40
  %230 = load ptr, ptr %229, align 8, !tbaa !11
  br label %231

231:                                              ; preds = %228, %225, %222, %219, %216, %213, %210, %208, %193
  %.1136.5 = phi ptr [ %.1136.4, %228 ], [ %227, %225 ], [ %.1136.4, %222 ], [ %.1136.4, %219 ], [ %.1136.4, %216 ], [ %.1136.4, %213 ], [ %.1136.4, %210 ], [ %.1136.4, %208 ], [ %.1136.4, %193 ]
  %.1132.5 = phi ptr [ %.1132.4, %228 ], [ %.1132.4, %225 ], [ %224, %222 ], [ %.1132.4, %219 ], [ %.1132.4, %216 ], [ %.1132.4, %213 ], [ %.1132.4, %210 ], [ %.1132.4, %208 ], [ %.1132.4, %193 ]
  %.1128.5 = phi ptr [ %.1128.4, %228 ], [ %.1128.4, %225 ], [ %.1128.4, %222 ], [ %221, %219 ], [ %.1128.4, %216 ], [ %.1128.4, %213 ], [ %.1128.4, %210 ], [ %.1128.4, %208 ], [ %.1128.4, %193 ]
  %.1125.5 = phi ptr [ %.1125.4, %228 ], [ %.1125.4, %225 ], [ %.1125.4, %222 ], [ %.1125.4, %219 ], [ %218, %216 ], [ %.1125.4, %213 ], [ %.1125.4, %210 ], [ %.1125.4, %208 ], [ %.1125.4, %193 ]
  %.1122.5 = phi ptr [ %.1122.4, %228 ], [ %.1122.4, %225 ], [ %.1122.4, %222 ], [ %.1122.4, %219 ], [ %.1122.4, %216 ], [ %215, %213 ], [ %.1122.4, %210 ], [ %.1122.4, %208 ], [ %.1122.4, %193 ]
  %.1119.5 = phi ptr [ %.1119.4, %228 ], [ %.1119.4, %225 ], [ %.1119.4, %222 ], [ %.1119.4, %219 ], [ %.1119.4, %216 ], [ %.1119.4, %213 ], [ %212, %210 ], [ %.1119.4, %208 ], [ %.1119.4, %193 ]
  %.1113.5 = phi ptr [ %230, %228 ], [ %.1113.4, %225 ], [ %.1113.4, %222 ], [ %.1113.4, %219 ], [ %.1113.4, %216 ], [ %.1113.4, %213 ], [ %.1113.4, %210 ], [ %.1113.4, %208 ], [ %.1113.4, %193 ]
  %232 = getelementptr inbounds i8, ptr %0, i64 80
  %233 = load ptr, ptr %232, align 8, !tbaa !11
  %.not161.6 = icmp eq ptr %233, null
  br i1 %.not161.6, label %269, label %234

234:                                              ; preds = %231
  %235 = icmp eq ptr %233, @_ZN2rw3ps29attribXYZE
  br i1 %235, label %266, label %236

236:                                              ; preds = %234
  %237 = icmp eq ptr %233, @_ZN2rw3ps210attribXYZWE
  br i1 %237, label %263, label %238

238:                                              ; preds = %236
  %239 = icmp eq ptr %233, @_ZN2rw3ps28attribUVE
  br i1 %239, label %260, label %240

240:                                              ; preds = %238
  %241 = icmp eq ptr %233, @_ZN2rw3ps29attribUV2E
  br i1 %241, label %257, label %242

242:                                              ; preds = %240
  %243 = icmp eq ptr %233, @_ZN2rw3ps210attribRGBAE
  br i1 %243, label %254, label %244

244:                                              ; preds = %242
  %245 = icmp eq ptr %233, @_ZN2rw3ps212attribNormalE
  br i1 %245, label %251, label %246

246:                                              ; preds = %244
  %247 = icmp eq ptr %233, @_ZN2rw3ps213attribWeightsE
  br i1 %247, label %248, label %269

248:                                              ; preds = %246
  %249 = getelementptr inbounds i8, ptr %4, i64 48
  %250 = load ptr, ptr %249, align 8, !tbaa !11
  br label %269

251:                                              ; preds = %244
  %252 = getelementptr inbounds i8, ptr %4, i64 48
  %253 = load ptr, ptr %252, align 8, !tbaa !11
  br label %269

254:                                              ; preds = %242
  %255 = getelementptr inbounds i8, ptr %4, i64 48
  %256 = load ptr, ptr %255, align 8, !tbaa !11
  br label %269

257:                                              ; preds = %240
  %258 = getelementptr inbounds i8, ptr %4, i64 48
  %259 = load ptr, ptr %258, align 8, !tbaa !11
  br label %269

260:                                              ; preds = %238
  %261 = getelementptr inbounds i8, ptr %4, i64 48
  %262 = load ptr, ptr %261, align 8, !tbaa !11
  br label %269

263:                                              ; preds = %236
  %264 = getelementptr inbounds i8, ptr %4, i64 48
  %265 = load ptr, ptr %264, align 8, !tbaa !11
  br label %269

266:                                              ; preds = %234
  %267 = getelementptr inbounds i8, ptr %4, i64 48
  %268 = load ptr, ptr %267, align 8, !tbaa !11
  br label %269

269:                                              ; preds = %266, %263, %260, %257, %254, %251, %248, %246, %231
  %.1136.6 = phi ptr [ %.1136.5, %266 ], [ %265, %263 ], [ %.1136.5, %260 ], [ %.1136.5, %257 ], [ %.1136.5, %254 ], [ %.1136.5, %251 ], [ %.1136.5, %248 ], [ %.1136.5, %246 ], [ %.1136.5, %231 ]
  %.1132.6 = phi ptr [ %.1132.5, %266 ], [ %.1132.5, %263 ], [ %262, %260 ], [ %.1132.5, %257 ], [ %.1132.5, %254 ], [ %.1132.5, %251 ], [ %.1132.5, %248 ], [ %.1132.5, %246 ], [ %.1132.5, %231 ]
  %.1128.6 = phi ptr [ %.1128.5, %266 ], [ %.1128.5, %263 ], [ %.1128.5, %260 ], [ %259, %257 ], [ %.1128.5, %254 ], [ %.1128.5, %251 ], [ %.1128.5, %248 ], [ %.1128.5, %246 ], [ %.1128.5, %231 ]
  %.1125.6 = phi ptr [ %.1125.5, %266 ], [ %.1125.5, %263 ], [ %.1125.5, %260 ], [ %.1125.5, %257 ], [ %256, %254 ], [ %.1125.5, %251 ], [ %.1125.5, %248 ], [ %.1125.5, %246 ], [ %.1125.5, %231 ]
  %.1122.6 = phi ptr [ %.1122.5, %266 ], [ %.1122.5, %263 ], [ %.1122.5, %260 ], [ %.1122.5, %257 ], [ %.1122.5, %254 ], [ %253, %251 ], [ %.1122.5, %248 ], [ %.1122.5, %246 ], [ %.1122.5, %231 ]
  %.1119.6 = phi ptr [ %.1119.5, %266 ], [ %.1119.5, %263 ], [ %.1119.5, %260 ], [ %.1119.5, %257 ], [ %.1119.5, %254 ], [ %.1119.5, %251 ], [ %250, %248 ], [ %.1119.5, %246 ], [ %.1119.5, %231 ]
  %.1113.6 = phi ptr [ %268, %266 ], [ %.1113.5, %263 ], [ %.1113.5, %260 ], [ %.1113.5, %257 ], [ %.1113.5, %254 ], [ %.1113.5, %251 ], [ %.1113.5, %248 ], [ %.1113.5, %246 ], [ %.1113.5, %231 ]
  %270 = getelementptr inbounds i8, ptr %0, i64 88
  %271 = load ptr, ptr %270, align 8, !tbaa !11
  %.not161.7 = icmp eq ptr %271, null
  br i1 %.not161.7, label %307, label %272

272:                                              ; preds = %269
  %273 = icmp eq ptr %271, @_ZN2rw3ps29attribXYZE
  br i1 %273, label %304, label %274

274:                                              ; preds = %272
  %275 = icmp eq ptr %271, @_ZN2rw3ps210attribXYZWE
  br i1 %275, label %301, label %276

276:                                              ; preds = %274
  %277 = icmp eq ptr %271, @_ZN2rw3ps28attribUVE
  br i1 %277, label %298, label %278

278:                                              ; preds = %276
  %279 = icmp eq ptr %271, @_ZN2rw3ps29attribUV2E
  br i1 %279, label %295, label %280

280:                                              ; preds = %278
  %281 = icmp eq ptr %271, @_ZN2rw3ps210attribRGBAE
  br i1 %281, label %292, label %282

282:                                              ; preds = %280
  %283 = icmp eq ptr %271, @_ZN2rw3ps212attribNormalE
  br i1 %283, label %289, label %284

284:                                              ; preds = %282
  %285 = icmp eq ptr %271, @_ZN2rw3ps213attribWeightsE
  br i1 %285, label %286, label %307

286:                                              ; preds = %284
  %287 = getelementptr inbounds i8, ptr %4, i64 56
  %288 = load ptr, ptr %287, align 8, !tbaa !11
  br label %307

289:                                              ; preds = %282
  %290 = getelementptr inbounds i8, ptr %4, i64 56
  %291 = load ptr, ptr %290, align 8, !tbaa !11
  br label %307

292:                                              ; preds = %280
  %293 = getelementptr inbounds i8, ptr %4, i64 56
  %294 = load ptr, ptr %293, align 8, !tbaa !11
  br label %307

295:                                              ; preds = %278
  %296 = getelementptr inbounds i8, ptr %4, i64 56
  %297 = load ptr, ptr %296, align 8, !tbaa !11
  br label %307

298:                                              ; preds = %276
  %299 = getelementptr inbounds i8, ptr %4, i64 56
  %300 = load ptr, ptr %299, align 8, !tbaa !11
  br label %307

301:                                              ; preds = %274
  %302 = getelementptr inbounds i8, ptr %4, i64 56
  %303 = load ptr, ptr %302, align 8, !tbaa !11
  br label %307

304:                                              ; preds = %272
  %305 = getelementptr inbounds i8, ptr %4, i64 56
  %306 = load ptr, ptr %305, align 8, !tbaa !11
  br label %307

307:                                              ; preds = %304, %301, %298, %295, %292, %289, %286, %284, %269
  %.1136.7 = phi ptr [ %.1136.6, %304 ], [ %303, %301 ], [ %.1136.6, %298 ], [ %.1136.6, %295 ], [ %.1136.6, %292 ], [ %.1136.6, %289 ], [ %.1136.6, %286 ], [ %.1136.6, %284 ], [ %.1136.6, %269 ]
  %.1132.7 = phi ptr [ %.1132.6, %304 ], [ %.1132.6, %301 ], [ %300, %298 ], [ %.1132.6, %295 ], [ %.1132.6, %292 ], [ %.1132.6, %289 ], [ %.1132.6, %286 ], [ %.1132.6, %284 ], [ %.1132.6, %269 ]
  %.1128.7 = phi ptr [ %.1128.6, %304 ], [ %.1128.6, %301 ], [ %.1128.6, %298 ], [ %297, %295 ], [ %.1128.6, %292 ], [ %.1128.6, %289 ], [ %.1128.6, %286 ], [ %.1128.6, %284 ], [ %.1128.6, %269 ]
  %.1125.7 = phi ptr [ %.1125.6, %304 ], [ %.1125.6, %301 ], [ %.1125.6, %298 ], [ %.1125.6, %295 ], [ %294, %292 ], [ %.1125.6, %289 ], [ %.1125.6, %286 ], [ %.1125.6, %284 ], [ %.1125.6, %269 ]
  %.1122.7 = phi ptr [ %.1122.6, %304 ], [ %.1122.6, %301 ], [ %.1122.6, %298 ], [ %.1122.6, %295 ], [ %.1122.6, %292 ], [ %291, %289 ], [ %.1122.6, %286 ], [ %.1122.6, %284 ], [ %.1122.6, %269 ]
  %.1119.7 = phi ptr [ %.1119.6, %304 ], [ %.1119.6, %301 ], [ %.1119.6, %298 ], [ %.1119.6, %295 ], [ %.1119.6, %292 ], [ %.1119.6, %289 ], [ %288, %286 ], [ %.1119.6, %284 ], [ %.1119.6, %269 ]
  %.1113.7 = phi ptr [ %306, %304 ], [ %.1113.6, %301 ], [ %.1113.6, %298 ], [ %.1113.6, %295 ], [ %.1113.6, %292 ], [ %.1113.6, %289 ], [ %.1113.6, %286 ], [ %.1113.6, %284 ], [ %.1113.6, %269 ]
  %308 = getelementptr inbounds i8, ptr %0, i64 96
  %309 = load ptr, ptr %308, align 8, !tbaa !11
  %.not161.8 = icmp eq ptr %309, null
  br i1 %.not161.8, label %345, label %310

310:                                              ; preds = %307
  %311 = icmp eq ptr %309, @_ZN2rw3ps29attribXYZE
  br i1 %311, label %342, label %312

312:                                              ; preds = %310
  %313 = icmp eq ptr %309, @_ZN2rw3ps210attribXYZWE
  br i1 %313, label %339, label %314

314:                                              ; preds = %312
  %315 = icmp eq ptr %309, @_ZN2rw3ps28attribUVE
  br i1 %315, label %336, label %316

316:                                              ; preds = %314
  %317 = icmp eq ptr %309, @_ZN2rw3ps29attribUV2E
  br i1 %317, label %333, label %318

318:                                              ; preds = %316
  %319 = icmp eq ptr %309, @_ZN2rw3ps210attribRGBAE
  br i1 %319, label %330, label %320

320:                                              ; preds = %318
  %321 = icmp eq ptr %309, @_ZN2rw3ps212attribNormalE
  br i1 %321, label %327, label %322

322:                                              ; preds = %320
  %323 = icmp eq ptr %309, @_ZN2rw3ps213attribWeightsE
  br i1 %323, label %324, label %345

324:                                              ; preds = %322
  %325 = getelementptr inbounds i8, ptr %4, i64 64
  %326 = load ptr, ptr %325, align 8, !tbaa !11
  br label %345

327:                                              ; preds = %320
  %328 = getelementptr inbounds i8, ptr %4, i64 64
  %329 = load ptr, ptr %328, align 8, !tbaa !11
  br label %345

330:                                              ; preds = %318
  %331 = getelementptr inbounds i8, ptr %4, i64 64
  %332 = load ptr, ptr %331, align 8, !tbaa !11
  br label %345

333:                                              ; preds = %316
  %334 = getelementptr inbounds i8, ptr %4, i64 64
  %335 = load ptr, ptr %334, align 8, !tbaa !11
  br label %345

336:                                              ; preds = %314
  %337 = getelementptr inbounds i8, ptr %4, i64 64
  %338 = load ptr, ptr %337, align 8, !tbaa !11
  br label %345

339:                                              ; preds = %312
  %340 = getelementptr inbounds i8, ptr %4, i64 64
  %341 = load ptr, ptr %340, align 8, !tbaa !11
  br label %345

342:                                              ; preds = %310
  %343 = getelementptr inbounds i8, ptr %4, i64 64
  %344 = load ptr, ptr %343, align 8, !tbaa !11
  br label %345

345:                                              ; preds = %342, %339, %336, %333, %330, %327, %324, %322, %307
  %.1136.8 = phi ptr [ %.1136.7, %342 ], [ %341, %339 ], [ %.1136.7, %336 ], [ %.1136.7, %333 ], [ %.1136.7, %330 ], [ %.1136.7, %327 ], [ %.1136.7, %324 ], [ %.1136.7, %322 ], [ %.1136.7, %307 ]
  %.1132.8 = phi ptr [ %.1132.7, %342 ], [ %.1132.7, %339 ], [ %338, %336 ], [ %.1132.7, %333 ], [ %.1132.7, %330 ], [ %.1132.7, %327 ], [ %.1132.7, %324 ], [ %.1132.7, %322 ], [ %.1132.7, %307 ]
  %.1128.8 = phi ptr [ %.1128.7, %342 ], [ %.1128.7, %339 ], [ %.1128.7, %336 ], [ %335, %333 ], [ %.1128.7, %330 ], [ %.1128.7, %327 ], [ %.1128.7, %324 ], [ %.1128.7, %322 ], [ %.1128.7, %307 ]
  %.1125.8 = phi ptr [ %.1125.7, %342 ], [ %.1125.7, %339 ], [ %.1125.7, %336 ], [ %.1125.7, %333 ], [ %332, %330 ], [ %.1125.7, %327 ], [ %.1125.7, %324 ], [ %.1125.7, %322 ], [ %.1125.7, %307 ]
  %.1122.8 = phi ptr [ %.1122.7, %342 ], [ %.1122.7, %339 ], [ %.1122.7, %336 ], [ %.1122.7, %333 ], [ %.1122.7, %330 ], [ %329, %327 ], [ %.1122.7, %324 ], [ %.1122.7, %322 ], [ %.1122.7, %307 ]
  %.1119.8 = phi ptr [ %.1119.7, %342 ], [ %.1119.7, %339 ], [ %.1119.7, %336 ], [ %.1119.7, %333 ], [ %.1119.7, %330 ], [ %.1119.7, %327 ], [ %326, %324 ], [ %.1119.7, %322 ], [ %.1119.7, %307 ]
  %.1113.8 = phi ptr [ %344, %342 ], [ %.1113.7, %339 ], [ %.1113.7, %336 ], [ %.1113.7, %333 ], [ %.1113.7, %330 ], [ %.1113.7, %327 ], [ %.1113.7, %324 ], [ %.1113.7, %322 ], [ %.1113.7, %307 ]
  %346 = getelementptr inbounds i8, ptr %0, i64 104
  %347 = load ptr, ptr %346, align 8, !tbaa !11
  %.not161.9 = icmp eq ptr %347, null
  br i1 %.not161.9, label %383, label %348

348:                                              ; preds = %345
  %349 = icmp eq ptr %347, @_ZN2rw3ps29attribXYZE
  br i1 %349, label %380, label %350

350:                                              ; preds = %348
  %351 = icmp eq ptr %347, @_ZN2rw3ps210attribXYZWE
  br i1 %351, label %377, label %352

352:                                              ; preds = %350
  %353 = icmp eq ptr %347, @_ZN2rw3ps28attribUVE
  br i1 %353, label %374, label %354

354:                                              ; preds = %352
  %355 = icmp eq ptr %347, @_ZN2rw3ps29attribUV2E
  br i1 %355, label %371, label %356

356:                                              ; preds = %354
  %357 = icmp eq ptr %347, @_ZN2rw3ps210attribRGBAE
  br i1 %357, label %368, label %358

358:                                              ; preds = %356
  %359 = icmp eq ptr %347, @_ZN2rw3ps212attribNormalE
  br i1 %359, label %365, label %360

360:                                              ; preds = %358
  %361 = icmp eq ptr %347, @_ZN2rw3ps213attribWeightsE
  br i1 %361, label %362, label %383

362:                                              ; preds = %360
  %363 = getelementptr inbounds i8, ptr %4, i64 72
  %364 = load ptr, ptr %363, align 8, !tbaa !11
  br label %383

365:                                              ; preds = %358
  %366 = getelementptr inbounds i8, ptr %4, i64 72
  %367 = load ptr, ptr %366, align 8, !tbaa !11
  br label %383

368:                                              ; preds = %356
  %369 = getelementptr inbounds i8, ptr %4, i64 72
  %370 = load ptr, ptr %369, align 8, !tbaa !11
  br label %383

371:                                              ; preds = %354
  %372 = getelementptr inbounds i8, ptr %4, i64 72
  %373 = load ptr, ptr %372, align 8, !tbaa !11
  br label %383

374:                                              ; preds = %352
  %375 = getelementptr inbounds i8, ptr %4, i64 72
  %376 = load ptr, ptr %375, align 8, !tbaa !11
  br label %383

377:                                              ; preds = %350
  %378 = getelementptr inbounds i8, ptr %4, i64 72
  %379 = load ptr, ptr %378, align 8, !tbaa !11
  br label %383

380:                                              ; preds = %348
  %381 = getelementptr inbounds i8, ptr %4, i64 72
  %382 = load ptr, ptr %381, align 8, !tbaa !11
  br label %383

383:                                              ; preds = %380, %377, %374, %371, %368, %365, %362, %360, %345
  %.1136.9 = phi ptr [ %.1136.8, %380 ], [ %379, %377 ], [ %.1136.8, %374 ], [ %.1136.8, %371 ], [ %.1136.8, %368 ], [ %.1136.8, %365 ], [ %.1136.8, %362 ], [ %.1136.8, %360 ], [ %.1136.8, %345 ]
  %.1132.9 = phi ptr [ %.1132.8, %380 ], [ %.1132.8, %377 ], [ %376, %374 ], [ %.1132.8, %371 ], [ %.1132.8, %368 ], [ %.1132.8, %365 ], [ %.1132.8, %362 ], [ %.1132.8, %360 ], [ %.1132.8, %345 ]
  %.1128.9 = phi ptr [ %.1128.8, %380 ], [ %.1128.8, %377 ], [ %.1128.8, %374 ], [ %373, %371 ], [ %.1128.8, %368 ], [ %.1128.8, %365 ], [ %.1128.8, %362 ], [ %.1128.8, %360 ], [ %.1128.8, %345 ]
  %.1125.9 = phi ptr [ %.1125.8, %380 ], [ %.1125.8, %377 ], [ %.1125.8, %374 ], [ %.1125.8, %371 ], [ %370, %368 ], [ %.1125.8, %365 ], [ %.1125.8, %362 ], [ %.1125.8, %360 ], [ %.1125.8, %345 ]
  %.1122.9 = phi ptr [ %.1122.8, %380 ], [ %.1122.8, %377 ], [ %.1122.8, %374 ], [ %.1122.8, %371 ], [ %.1122.8, %368 ], [ %367, %365 ], [ %.1122.8, %362 ], [ %.1122.8, %360 ], [ %.1122.8, %345 ]
  %.1119.9 = phi ptr [ %.1119.8, %380 ], [ %.1119.8, %377 ], [ %.1119.8, %374 ], [ %.1119.8, %371 ], [ %.1119.8, %368 ], [ %.1119.8, %365 ], [ %364, %362 ], [ %.1119.8, %360 ], [ %.1119.8, %345 ]
  %.1113.9 = phi ptr [ %382, %380 ], [ %.1113.8, %377 ], [ %.1113.8, %374 ], [ %.1113.8, %371 ], [ %.1113.8, %368 ], [ %.1113.8, %365 ], [ %.1113.8, %362 ], [ %.1113.8, %360 ], [ %.1113.8, %345 ]
  %.not142 = icmp eq ptr %.1122.9, null
  br i1 %.not142, label %388, label %384

384:                                              ; preds = %383
  %385 = getelementptr inbounds i8, ptr %1, i64 16
  %386 = load i32, ptr %385, align 8, !tbaa !12
  %387 = and i32 %386, 16
  %spec.select = or disjoint i32 %387, 1
  br label %388

388:                                              ; preds = %384, %383
  %.0110 = phi i32 [ 1, %383 ], [ %spec.select, %384 ]
  %.not144 = icmp eq ptr %.1125.9, null
  br i1 %.not144, label %394, label %389

389:                                              ; preds = %388
  %390 = getelementptr inbounds i8, ptr %1, i64 16
  %391 = load i32, ptr %390, align 8, !tbaa !12
  %392 = shl i32 %391, 5
  %393 = and i32 %392, 256
  %spec.select162 = or i32 %393, %.0110
  br label %394

394:                                              ; preds = %389, %388
  %.1 = phi i32 [ %.0110, %388 ], [ %spec.select162, %389 ]
  %395 = icmp ne ptr %.1132.9, null
  %396 = icmp ne ptr %.1128.9, null
  %or.cond = select i1 %395, i1 true, i1 %396
  br i1 %or.cond, label %397, label %.thread

397:                                              ; preds = %394
  %398 = getelementptr inbounds i8, ptr %1, i64 36
  %399 = load i32, ptr %398, align 4, !tbaa !17
  %400 = icmp sgt i32 %399, 0
  %401 = or i32 %.1, 4096
  %spec.select163 = select i1 %400, i32 %401, i32 %.1
  br i1 %396, label %402, label %.thread

402:                                              ; preds = %397
  %403 = icmp sgt i32 %399, 1
  %404 = or i32 %spec.select163, 8192
  %spec.select164 = select i1 %403, i32 %404, i32 %spec.select163
  br label %.thread

.thread:                                          ; preds = %394, %402, %397
  %.3 = phi i32 [ %spec.select163, %397 ], [ %spec.select164, %402 ], [ %.1, %394 ]
  %405 = icmp ne ptr %.1119.9, null
  %406 = icmp ne ptr %.0116, null
  %or.cond3 = and i1 %406, %405
  %407 = or i32 %.3, 65536
  %spec.select165 = select i1 %or.cond3, i32 %407, i32 %.3
  %.not146 = icmp eq ptr %.1136.9, null
  br i1 %.not146, label %410, label %408

408:                                              ; preds = %.thread
  %409 = tail call noundef ptr @_ZN2rw3ps217getADCbitsForMeshEPNS_8GeometryEPNS_4MeshE(ptr noundef %1, ptr noundef %3)
  br label %410

410:                                              ; preds = %408, %.thread
  %.0117 = phi ptr [ %409, %408 ], [ null, %.thread ]
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %6) #6
  %411 = getelementptr inbounds i8, ptr %3, i64 8
  %412 = load i32, ptr %411, align 8, !tbaa !18
  %.not186 = icmp eq i32 %412, 0
  br i1 %.not186, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %410
  %413 = and i32 %spec.select165, 1
  %.not147 = icmp eq i32 %413, 0
  %414 = and i32 %spec.select165, 16
  %.not149 = icmp eq i32 %414, 0
  %415 = getelementptr inbounds i8, ptr %6, i64 32
  %416 = getelementptr inbounds i8, ptr %6, i64 36
  %417 = getelementptr inbounds i8, ptr %6, i64 40
  %418 = and i32 %spec.select165, 256
  %.not150 = icmp eq i32 %418, 0
  %419 = getelementptr inbounds i8, ptr %6, i64 28
  %420 = and i32 %spec.select165, 4096
  %.not151 = icmp eq i32 %420, 0
  %421 = getelementptr inbounds i8, ptr %6, i64 12
  %422 = and i32 %spec.select165, 8192
  %.not153 = icmp eq i32 %422, 0
  %423 = getelementptr inbounds i8, ptr %6, i64 20
  %424 = and i32 %spec.select165, 65536
  %.not154 = icmp eq i32 %424, 0
  %425 = getelementptr inbounds i8, ptr %6, i64 44
  %426 = getelementptr inbounds i8, ptr %6, i64 60
  %427 = getelementptr inbounds i8, ptr %1, i64 28
  %.not155 = icmp eq ptr %.0117, null
  %428 = getelementptr inbounds i8, ptr %6, i64 48
  %429 = getelementptr inbounds i8, ptr %6, i64 61
  %430 = getelementptr inbounds i8, ptr %6, i64 52
  %431 = getelementptr inbounds i8, ptr %6, i64 62
  %432 = getelementptr inbounds i8, ptr %6, i64 56
  %433 = getelementptr inbounds i8, ptr %6, i64 63
  br label %434

._crit_edge:                                      ; preds = %508, %410
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %6) #6
  ret void

434:                                              ; preds = %.lr.ph, %508
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %508 ]
  %.2114184 = phi ptr [ %.1113.9, %.lr.ph ], [ %spec.select167, %508 ]
  %.2120183 = phi ptr [ %.1119.9, %.lr.ph ], [ %517, %508 ]
  %.2123182 = phi ptr [ %.1122.9, %.lr.ph ], [ %516, %508 ]
  %.2126181 = phi ptr [ %.1125.9, %.lr.ph ], [ %515, %508 ]
  %.2129180 = phi ptr [ %.1128.9, %.lr.ph ], [ %.3130, %508 ]
  %.2133179 = phi ptr [ %.1132.9, %.lr.ph ], [ %.3134, %508 ]
  %.2137178 = phi ptr [ %.1136.9, %.lr.ph ], [ %.3138, %508 ]
  br i1 %.not147, label %437, label %435

435:                                              ; preds = %434
  %.not148 = icmp eq ptr %.2114184, null
  %436 = select i1 %.not148, ptr %.2137178, ptr %.2114184
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %6, ptr noundef nonnull align 4 dereferenceable(12) %436, i64 12, i1 false)
  br label %437

437:                                              ; preds = %435, %434
  br i1 %.not149, label %450, label %438

438:                                              ; preds = %437
  %439 = load i8, ptr %.2123182, align 1, !tbaa !20
  %440 = sitofp i8 %439 to float
  %441 = fmul float %440, 7.812500e-03
  store float %441, ptr %415, align 4, !tbaa !21
  %442 = getelementptr inbounds i8, ptr %.2123182, i64 1
  %443 = load i8, ptr %442, align 1, !tbaa !20
  %444 = sitofp i8 %443 to float
  %445 = fmul float %444, 7.812500e-03
  store float %445, ptr %416, align 4, !tbaa !27
  %446 = getelementptr inbounds i8, ptr %.2123182, i64 2
  %447 = load i8, ptr %446, align 1, !tbaa !20
  %448 = sitofp i8 %447 to float
  %449 = fmul float %448, 7.812500e-03
  store float %449, ptr %417, align 4, !tbaa !28
  br label %450

450:                                              ; preds = %438, %437
  br i1 %.not150, label %453, label %451

451:                                              ; preds = %450
  %452 = load i32, ptr %.2126181, align 1
  store i32 %452, ptr %419, align 4
  br label %453

453:                                              ; preds = %451, %450
  br i1 %.not151, label %457, label %454

454:                                              ; preds = %453
  %.not152 = icmp eq ptr %.2133179, null
  %455 = select i1 %.not152, ptr %.2129180, ptr %.2133179
  %456 = load i64, ptr %455, align 4
  store i64 %456, ptr %421, align 4
  br label %457

457:                                              ; preds = %454, %453
  br i1 %.not153, label %461, label %458

458:                                              ; preds = %457
  %459 = getelementptr inbounds i8, ptr %.2129180, i64 8
  %460 = load i64, ptr %459, align 4
  store i64 %460, ptr %423, align 4
  br label %461

461:                                              ; preds = %458, %457
  br i1 %.not154, label %.loopexit, label %.preheader.preheader

.preheader.preheader:                             ; preds = %461
  %462 = load i32, ptr %.2120183, align 4, !tbaa !29
  %463 = and i32 %462, -1024
  store i32 %463, ptr %425, align 4, !tbaa !29
  %464 = load i32, ptr %.2120183, align 4, !tbaa !29
  %465 = lshr i32 %464, 2
  %466 = trunc i32 %465 to i8
  %spec.select166 = call i8 @llvm.usub.sat.i8(i8 %466, i8 1)
  %467 = and i32 %462, 2147482624
  %468 = icmp eq i32 %467, 0
  %spec.select193 = select i1 %468, i8 0, i8 %spec.select166
  store i8 %spec.select193, ptr %426, align 4, !tbaa !20
  %469 = getelementptr inbounds i8, ptr %.2120183, i64 4
  %470 = load i32, ptr %469, align 4, !tbaa !29
  %471 = and i32 %470, -1024
  store i32 %471, ptr %428, align 4, !tbaa !29
  %472 = load i32, ptr %469, align 4, !tbaa !29
  %473 = lshr i32 %472, 2
  %474 = trunc i32 %473 to i8
  %spec.select166.1 = call i8 @llvm.usub.sat.i8(i8 %474, i8 1)
  %475 = and i32 %470, 2147482624
  %476 = icmp eq i32 %475, 0
  %storemerge190 = select i1 %476, i8 0, i8 %spec.select166.1
  store i8 %storemerge190, ptr %429, align 1, !tbaa !20
  %477 = getelementptr inbounds i8, ptr %.2120183, i64 8
  %478 = load i32, ptr %477, align 4, !tbaa !29
  %479 = and i32 %478, -1024
  store i32 %479, ptr %430, align 4, !tbaa !29
  %480 = load i32, ptr %477, align 4, !tbaa !29
  %481 = lshr i32 %480, 2
  %482 = trunc i32 %481 to i8
  %spec.select166.2 = call i8 @llvm.usub.sat.i8(i8 %482, i8 1)
  %483 = and i32 %478, 2147482624
  %484 = icmp eq i32 %483, 0
  %storemerge191 = select i1 %484, i8 0, i8 %spec.select166.2
  store i8 %storemerge191, ptr %431, align 2, !tbaa !20
  %485 = getelementptr inbounds i8, ptr %.2120183, i64 12
  %486 = load i32, ptr %485, align 4, !tbaa !29
  %487 = and i32 %486, -1024
  store i32 %487, ptr %432, align 4, !tbaa !29
  %488 = load i32, ptr %485, align 4, !tbaa !29
  %489 = lshr i32 %488, 2
  %490 = trunc i32 %489 to i8
  %spec.select166.3 = call i8 @llvm.usub.sat.i8(i8 %490, i8 1)
  %491 = and i32 %486, 2147482624
  %492 = icmp eq i32 %491, 0
  %storemerge192 = select i1 %492, i8 0, i8 %spec.select166.3
  store i8 %storemerge192, ptr %433, align 1, !tbaa !20
  br label %.loopexit

.loopexit:                                        ; preds = %.preheader.preheader, %461
  %493 = call noundef i32 @_ZN2rw3ps214findVertexSkinEPNS_8GeometryEPjjPNS0_6VertexE(ptr noundef %1, ptr noundef %2, i32 noundef %spec.select165, ptr noundef nonnull %6)
  %494 = icmp slt i32 %493, 0
  br i1 %494, label %495, label %498

495:                                              ; preds = %.loopexit
  %496 = load i32, ptr %427, align 4, !tbaa !30
  %497 = add nsw i32 %496, 1
  store i32 %497, ptr %427, align 4, !tbaa !30
  br label %498

498:                                              ; preds = %495, %.loopexit
  %.0 = phi i32 [ %496, %495 ], [ %493, %.loopexit ]
  %499 = trunc i32 %.0 to i16
  %500 = load ptr, ptr %3, align 8, !tbaa !31
  %501 = getelementptr inbounds i16, ptr %500, i64 %indvars.iv
  store i16 %499, ptr %501, align 2, !tbaa !32
  br i1 %.not155, label %508, label %502

502:                                              ; preds = %498
  %503 = getelementptr inbounds i8, ptr %.2137178, i64 12
  %504 = load float, ptr %503, align 4, !tbaa !33
  %505 = fcmp une float %504, 0.000000e+00
  %506 = zext i1 %505 to i8
  %507 = getelementptr inbounds i8, ptr %.0117, i64 %indvars.iv
  store i8 %506, ptr %507, align 1, !tbaa !20
  br label %508

508:                                              ; preds = %502, %498
  %509 = sext i32 %.0 to i64
  %510 = getelementptr inbounds i32, ptr %2, i64 %509
  store i32 %spec.select165, ptr %510, align 4, !tbaa !29
  call void @_ZN2rw3ps216insertVertexSkinEPNS_8GeometryEijPNS0_6VertexE(ptr noundef %1, i32 noundef %.0, i32 noundef %spec.select165, ptr noundef nonnull %6)
  %.not156 = icmp eq ptr %.2114184, null
  %511 = getelementptr inbounds i8, ptr %.2114184, i64 12
  %spec.select167 = select i1 %.not156, ptr null, ptr %511
  %.not157 = icmp eq ptr %.2137178, null
  %512 = getelementptr inbounds i8, ptr %.2137178, i64 16
  %.3138 = select i1 %.not157, ptr null, ptr %512
  %.not158 = icmp eq ptr %.2133179, null
  %513 = getelementptr inbounds i8, ptr %.2133179, i64 8
  %.3134 = select i1 %.not158, ptr null, ptr %513
  %.not159 = icmp eq ptr %.2129180, null
  %514 = getelementptr inbounds i8, ptr %.2129180, i64 16
  %.3130 = select i1 %.not159, ptr null, ptr %514
  %515 = getelementptr inbounds i8, ptr %.2126181, i64 4
  %516 = getelementptr inbounds i8, ptr %.2123182, i64 3
  %517 = getelementptr inbounds i8, ptr %.2120183, i64 16
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %518 = load i32, ptr %411, align 8, !tbaa !18
  %519 = zext i32 %518 to i64
  %520 = icmp ult i64 %indvars.iv.next, %519
  br i1 %520, label %434, label %._crit_edge, !llvm.loop !34
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN2rw4Skin3getEPKNS_8GeometryE(ptr noundef) local_unnamed_addr #3 align 2

declare noundef i32 @_ZN2rw3ps214findVertexSkinEPNS_8GeometryEPjjPNS0_6VertexE(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #4

declare void @_ZN2rw3ps216insertVertexSkinEPNS_8GeometryEijPNS0_6VertexE(ptr noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i8 @llvm.usub.sat.i8(i8, i8) #5

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress 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 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { mustprogress 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 #4 = { "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 #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { 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, !7, i64 0}
!6 = !{!"_ZTSN2rw11SkinGlobalsE", !7, i64 0, !7, i64 4, !8, i64 8, !10, i64 112}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"any pointer", !8, i64 0}
!11 = !{!10, !10, i64 0}
!12 = !{!13, !7, i64 16}
!13 = !{!"_ZTSN2rw8GeometryE", !14, i64 0, !7, i64 16, !15, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !10, i64 40, !10, i64 48, !8, i64 56, !10, i64 120, !16, i64 128, !10, i64 144, !10, i64 152, !7, i64 160}
!14 = !{!"_ZTSN2rw6ObjectE", !8, i64 0, !8, i64 1, !8, i64 2, !8, i64 3, !10, i64 8}
!15 = !{!"short", !8, i64 0}
!16 = !{!"_ZTSN2rw12MaterialListE", !10, i64 0, !7, i64 8, !7, i64 12}
!17 = !{!13, !7, i64 36}
!18 = !{!19, !7, i64 8}
!19 = !{!"_ZTSN2rw4MeshE", !10, i64 0, !7, i64 8, !10, i64 16}
!20 = !{!8, !8, i64 0}
!21 = !{!22, !24, i64 32}
!22 = !{!"_ZTSN2rw3ps26VertexE", !23, i64 0, !25, i64 12, !25, i64 20, !26, i64 28, !23, i64 32, !8, i64 44, !8, i64 60}
!23 = !{!"_ZTSN2rw3V3dE", !24, i64 0, !24, i64 4, !24, i64 8}
!24 = !{!"float", !8, i64 0}
!25 = !{!"_ZTSN2rw9TexCoordsE", !24, i64 0, !24, i64 4}
!26 = !{!"_ZTSN2rw4RGBAE", !8, i64 0, !8, i64 1, !8, i64 2, !8, i64 3}
!27 = !{!22, !24, i64 36}
!28 = !{!22, !24, i64 40}
!29 = !{!7, !7, i64 0}
!30 = !{!13, !7, i64 28}
!31 = !{!19, !10, i64 0}
!32 = !{!15, !15, i64 0}
!33 = !{!24, !24, i64 0}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}


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