; LLVM IR from Water-Melon/Melon :: src (mln_sha)

; 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.mln_sha256_t = type { i32, i32, i32, i32, i32, i32, i32, i32, i64, i32, [64 x i8] }

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

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

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

11:                                               ; preds = %3
  %12 = load ptr, ptr %5, align 8, !tbaa !5
  %13 = icmp eq ptr %12, null
  br i1 %13, label %14, label %15

14:                                               ; preds = %11, %3
  br label %502

15:                                               ; preds = %11
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #2
  store i32 0, ptr %7, align 4, !tbaa !9
  %16 = load ptr, ptr %4, align 8, !tbaa !5
  %17 = getelementptr inbounds %struct.mln_sha256_t, ptr %16, i32 0, i32 0
  %18 = load i32, ptr %17, align 8, !tbaa !11
  %19 = lshr i32 %18, 24
  %20 = and i32 %19, 255
  %21 = trunc i32 %20 to i8
  %22 = load ptr, ptr %5, align 8, !tbaa !5
  %23 = load i32, ptr %7, align 4, !tbaa !9
  %24 = add i32 %23, 1
  store i32 %24, ptr %7, align 4, !tbaa !9
  %25 = zext i32 %23 to i64
  %26 = getelementptr inbounds i8, ptr %22, i64 %25
  store i8 %21, ptr %26, align 1, !tbaa !14
  %27 = load i32, ptr %7, align 4, !tbaa !9
  %28 = load i32, ptr %6, align 4, !tbaa !9
  %29 = icmp uge i32 %27, %28
  br i1 %29, label %30, label %31

30:                                               ; preds = %15
  store i32 1, ptr %8, align 4
  br label %500

31:                                               ; preds = %15
  %32 = load ptr, ptr %4, align 8, !tbaa !5
  %33 = getelementptr inbounds %struct.mln_sha256_t, ptr %32, i32 0, i32 0
  %34 = load i32, ptr %33, align 8, !tbaa !11
  %35 = lshr i32 %34, 16
  %36 = and i32 %35, 255
  %37 = trunc i32 %36 to i8
  %38 = load ptr, ptr %5, align 8, !tbaa !5
  %39 = load i32, ptr %7, align 4, !tbaa !9
  %40 = add i32 %39, 1
  store i32 %40, ptr %7, align 4, !tbaa !9
  %41 = zext i32 %39 to i64
  %42 = getelementptr inbounds i8, ptr %38, i64 %41
  store i8 %37, ptr %42, align 1, !tbaa !14
  %43 = load i32, ptr %7, align 4, !tbaa !9
  %44 = load i32, ptr %6, align 4, !tbaa !9
  %45 = icmp uge i32 %43, %44
  br i1 %45, label %46, label %47

46:                                               ; preds = %31
  store i32 1, ptr %8, align 4
  br label %500

47:                                               ; preds = %31
  %48 = load ptr, ptr %4, align 8, !tbaa !5
  %49 = getelementptr inbounds %struct.mln_sha256_t, ptr %48, i32 0, i32 0
  %50 = load i32, ptr %49, align 8, !tbaa !11
  %51 = lshr i32 %50, 8
  %52 = and i32 %51, 255
  %53 = trunc i32 %52 to i8
  %54 = load ptr, ptr %5, align 8, !tbaa !5
  %55 = load i32, ptr %7, align 4, !tbaa !9
  %56 = add i32 %55, 1
  store i32 %56, ptr %7, align 4, !tbaa !9
  %57 = zext i32 %55 to i64
  %58 = getelementptr inbounds i8, ptr %54, i64 %57
  store i8 %53, ptr %58, align 1, !tbaa !14
  %59 = load i32, ptr %7, align 4, !tbaa !9
  %60 = load i32, ptr %6, align 4, !tbaa !9
  %61 = icmp uge i32 %59, %60
  br i1 %61, label %62, label %63

62:                                               ; preds = %47
  store i32 1, ptr %8, align 4
  br label %500

63:                                               ; preds = %47
  %64 = load ptr, ptr %4, align 8, !tbaa !5
  %65 = getelementptr inbounds %struct.mln_sha256_t, ptr %64, i32 0, i32 0
  %66 = load i32, ptr %65, align 8, !tbaa !11
  %67 = and i32 %66, 255
  %68 = trunc i32 %67 to i8
  %69 = load ptr, ptr %5, align 8, !tbaa !5
  %70 = load i32, ptr %7, align 4, !tbaa !9
  %71 = add i32 %70, 1
  store i32 %71, ptr %7, align 4, !tbaa !9
  %72 = zext i32 %70 to i64
  %73 = getelementptr inbounds i8, ptr %69, i64 %72
  store i8 %68, ptr %73, align 1, !tbaa !14
  %74 = load i32, ptr %7, align 4, !tbaa !9
  %75 = load i32, ptr %6, align 4, !tbaa !9
  %76 = icmp uge i32 %74, %75
  br i1 %76, label %77, label %78

77:                                               ; preds = %63
  store i32 1, ptr %8, align 4
  br label %500

78:                                               ; preds = %63
  %79 = load ptr, ptr %4, align 8, !tbaa !5
  %80 = getelementptr inbounds %struct.mln_sha256_t, ptr %79, i32 0, i32 1
  %81 = load i32, ptr %80, align 4, !tbaa !15
  %82 = lshr i32 %81, 24
  %83 = and i32 %82, 255
  %84 = trunc i32 %83 to i8
  %85 = load ptr, ptr %5, align 8, !tbaa !5
  %86 = load i32, ptr %7, align 4, !tbaa !9
  %87 = add i32 %86, 1
  store i32 %87, ptr %7, align 4, !tbaa !9
  %88 = zext i32 %86 to i64
  %89 = getelementptr inbounds i8, ptr %85, i64 %88
  store i8 %84, ptr %89, align 1, !tbaa !14
  %90 = load i32, ptr %7, align 4, !tbaa !9
  %91 = load i32, ptr %6, align 4, !tbaa !9
  %92 = icmp uge i32 %90, %91
  br i1 %92, label %93, label %94

93:                                               ; preds = %78
  store i32 1, ptr %8, align 4
  br label %500

94:                                               ; preds = %78
  %95 = load ptr, ptr %4, align 8, !tbaa !5
  %96 = getelementptr inbounds %struct.mln_sha256_t, ptr %95, i32 0, i32 1
  %97 = load i32, ptr %96, align 4, !tbaa !15
  %98 = lshr i32 %97, 16
  %99 = and i32 %98, 255
  %100 = trunc i32 %99 to i8
  %101 = load ptr, ptr %5, align 8, !tbaa !5
  %102 = load i32, ptr %7, align 4, !tbaa !9
  %103 = add i32 %102, 1
  store i32 %103, ptr %7, align 4, !tbaa !9
  %104 = zext i32 %102 to i64
  %105 = getelementptr inbounds i8, ptr %101, i64 %104
  store i8 %100, ptr %105, align 1, !tbaa !14
  %106 = load i32, ptr %7, align 4, !tbaa !9
  %107 = load i32, ptr %6, align 4, !tbaa !9
  %108 = icmp uge i32 %106, %107
  br i1 %108, label %109, label %110

109:                                              ; preds = %94
  store i32 1, ptr %8, align 4
  br label %500

110:                                              ; preds = %94
  %111 = load ptr, ptr %4, align 8, !tbaa !5
  %112 = getelementptr inbounds %struct.mln_sha256_t, ptr %111, i32 0, i32 1
  %113 = load i32, ptr %112, align 4, !tbaa !15
  %114 = lshr i32 %113, 8
  %115 = and i32 %114, 255
  %116 = trunc i32 %115 to i8
  %117 = load ptr, ptr %5, align 8, !tbaa !5
  %118 = load i32, ptr %7, align 4, !tbaa !9
  %119 = add i32 %118, 1
  store i32 %119, ptr %7, align 4, !tbaa !9
  %120 = zext i32 %118 to i64
  %121 = getelementptr inbounds i8, ptr %117, i64 %120
  store i8 %116, ptr %121, align 1, !tbaa !14
  %122 = load i32, ptr %7, align 4, !tbaa !9
  %123 = load i32, ptr %6, align 4, !tbaa !9
  %124 = icmp uge i32 %122, %123
  br i1 %124, label %125, label %126

125:                                              ; preds = %110
  store i32 1, ptr %8, align 4
  br label %500

126:                                              ; preds = %110
  %127 = load ptr, ptr %4, align 8, !tbaa !5
  %128 = getelementptr inbounds %struct.mln_sha256_t, ptr %127, i32 0, i32 1
  %129 = load i32, ptr %128, align 4, !tbaa !15
  %130 = and i32 %129, 255
  %131 = trunc i32 %130 to i8
  %132 = load ptr, ptr %5, align 8, !tbaa !5
  %133 = load i32, ptr %7, align 4, !tbaa !9
  %134 = add i32 %133, 1
  store i32 %134, ptr %7, align 4, !tbaa !9
  %135 = zext i32 %133 to i64
  %136 = getelementptr inbounds i8, ptr %132, i64 %135
  store i8 %131, ptr %136, align 1, !tbaa !14
  %137 = load i32, ptr %7, align 4, !tbaa !9
  %138 = load i32, ptr %6, align 4, !tbaa !9
  %139 = icmp uge i32 %137, %138
  br i1 %139, label %140, label %141

140:                                              ; preds = %126
  store i32 1, ptr %8, align 4
  br label %500

141:                                              ; preds = %126
  %142 = load ptr, ptr %4, align 8, !tbaa !5
  %143 = getelementptr inbounds %struct.mln_sha256_t, ptr %142, i32 0, i32 2
  %144 = load i32, ptr %143, align 8, !tbaa !16
  %145 = lshr i32 %144, 24
  %146 = and i32 %145, 255
  %147 = trunc i32 %146 to i8
  %148 = load ptr, ptr %5, align 8, !tbaa !5
  %149 = load i32, ptr %7, align 4, !tbaa !9
  %150 = add i32 %149, 1
  store i32 %150, ptr %7, align 4, !tbaa !9
  %151 = zext i32 %149 to i64
  %152 = getelementptr inbounds i8, ptr %148, i64 %151
  store i8 %147, ptr %152, align 1, !tbaa !14
  %153 = load i32, ptr %7, align 4, !tbaa !9
  %154 = load i32, ptr %6, align 4, !tbaa !9
  %155 = icmp uge i32 %153, %154
  br i1 %155, label %156, label %157

156:                                              ; preds = %141
  store i32 1, ptr %8, align 4
  br label %500

157:                                              ; preds = %141
  %158 = load ptr, ptr %4, align 8, !tbaa !5
  %159 = getelementptr inbounds %struct.mln_sha256_t, ptr %158, i32 0, i32 2
  %160 = load i32, ptr %159, align 8, !tbaa !16
  %161 = lshr i32 %160, 16
  %162 = and i32 %161, 255
  %163 = trunc i32 %162 to i8
  %164 = load ptr, ptr %5, align 8, !tbaa !5
  %165 = load i32, ptr %7, align 4, !tbaa !9
  %166 = add i32 %165, 1
  store i32 %166, ptr %7, align 4, !tbaa !9
  %167 = zext i32 %165 to i64
  %168 = getelementptr inbounds i8, ptr %164, i64 %167
  store i8 %163, ptr %168, align 1, !tbaa !14
  %169 = load i32, ptr %7, align 4, !tbaa !9
  %170 = load i32, ptr %6, align 4, !tbaa !9
  %171 = icmp uge i32 %169, %170
  br i1 %171, label %172, label %173

172:                                              ; preds = %157
  store i32 1, ptr %8, align 4
  br label %500

173:                                              ; preds = %157
  %174 = load ptr, ptr %4, align 8, !tbaa !5
  %175 = getelementptr inbounds %struct.mln_sha256_t, ptr %174, i32 0, i32 2
  %176 = load i32, ptr %175, align 8, !tbaa !16
  %177 = lshr i32 %176, 8
  %178 = and i32 %177, 255
  %179 = trunc i32 %178 to i8
  %180 = load ptr, ptr %5, align 8, !tbaa !5
  %181 = load i32, ptr %7, align 4, !tbaa !9
  %182 = add i32 %181, 1
  store i32 %182, ptr %7, align 4, !tbaa !9
  %183 = zext i32 %181 to i64
  %184 = getelementptr inbounds i8, ptr %180, i64 %183
  store i8 %179, ptr %184, align 1, !tbaa !14
  %185 = load i32, ptr %7, align 4, !tbaa !9
  %186 = load i32, ptr %6, align 4, !tbaa !9
  %187 = icmp uge i32 %185, %186
  br i1 %187, label %188, label %189

188:                                              ; preds = %173
  store i32 1, ptr %8, align 4
  br label %500

189:                                              ; preds = %173
  %190 = load ptr, ptr %4, align 8, !tbaa !5
  %191 = getelementptr inbounds %struct.mln_sha256_t, ptr %190, i32 0, i32 2
  %192 = load i32, ptr %191, align 8, !tbaa !16
  %193 = and i32 %192, 255
  %194 = trunc i32 %193 to i8
  %195 = load ptr, ptr %5, align 8, !tbaa !5
  %196 = load i32, ptr %7, align 4, !tbaa !9
  %197 = add i32 %196, 1
  store i32 %197, ptr %7, align 4, !tbaa !9
  %198 = zext i32 %196 to i64
  %199 = getelementptr inbounds i8, ptr %195, i64 %198
  store i8 %194, ptr %199, align 1, !tbaa !14
  %200 = load i32, ptr %7, align 4, !tbaa !9
  %201 = load i32, ptr %6, align 4, !tbaa !9
  %202 = icmp uge i32 %200, %201
  br i1 %202, label %203, label %204

203:                                              ; preds = %189
  store i32 1, ptr %8, align 4
  br label %500

204:                                              ; preds = %189
  %205 = load ptr, ptr %4, align 8, !tbaa !5
  %206 = getelementptr inbounds %struct.mln_sha256_t, ptr %205, i32 0, i32 3
  %207 = load i32, ptr %206, align 4, !tbaa !17
  %208 = lshr i32 %207, 24
  %209 = and i32 %208, 255
  %210 = trunc i32 %209 to i8
  %211 = load ptr, ptr %5, align 8, !tbaa !5
  %212 = load i32, ptr %7, align 4, !tbaa !9
  %213 = add i32 %212, 1
  store i32 %213, ptr %7, align 4, !tbaa !9
  %214 = zext i32 %212 to i64
  %215 = getelementptr inbounds i8, ptr %211, i64 %214
  store i8 %210, ptr %215, align 1, !tbaa !14
  %216 = load i32, ptr %7, align 4, !tbaa !9
  %217 = load i32, ptr %6, align 4, !tbaa !9
  %218 = icmp uge i32 %216, %217
  br i1 %218, label %219, label %220

219:                                              ; preds = %204
  store i32 1, ptr %8, align 4
  br label %500

220:                                              ; preds = %204
  %221 = load ptr, ptr %4, align 8, !tbaa !5
  %222 = getelementptr inbounds %struct.mln_sha256_t, ptr %221, i32 0, i32 3
  %223 = load i32, ptr %222, align 4, !tbaa !17
  %224 = lshr i32 %223, 16
  %225 = and i32 %224, 255
  %226 = trunc i32 %225 to i8
  %227 = load ptr, ptr %5, align 8, !tbaa !5
  %228 = load i32, ptr %7, align 4, !tbaa !9
  %229 = add i32 %228, 1
  store i32 %229, ptr %7, align 4, !tbaa !9
  %230 = zext i32 %228 to i64
  %231 = getelementptr inbounds i8, ptr %227, i64 %230
  store i8 %226, ptr %231, align 1, !tbaa !14
  %232 = load i32, ptr %7, align 4, !tbaa !9
  %233 = load i32, ptr %6, align 4, !tbaa !9
  %234 = icmp uge i32 %232, %233
  br i1 %234, label %235, label %236

235:                                              ; preds = %220
  store i32 1, ptr %8, align 4
  br label %500

236:                                              ; preds = %220
  %237 = load ptr, ptr %4, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.mln_sha256_t, ptr %237, i32 0, i32 3
  %239 = load i32, ptr %238, align 4, !tbaa !17
  %240 = lshr i32 %239, 8
  %241 = and i32 %240, 255
  %242 = trunc i32 %241 to i8
  %243 = load ptr, ptr %5, align 8, !tbaa !5
  %244 = load i32, ptr %7, align 4, !tbaa !9
  %245 = add i32 %244, 1
  store i32 %245, ptr %7, align 4, !tbaa !9
  %246 = zext i32 %244 to i64
  %247 = getelementptr inbounds i8, ptr %243, i64 %246
  store i8 %242, ptr %247, align 1, !tbaa !14
  %248 = load i32, ptr %7, align 4, !tbaa !9
  %249 = load i32, ptr %6, align 4, !tbaa !9
  %250 = icmp uge i32 %248, %249
  br i1 %250, label %251, label %252

251:                                              ; preds = %236
  store i32 1, ptr %8, align 4
  br label %500

252:                                              ; preds = %236
  %253 = load ptr, ptr %4, align 8, !tbaa !5
  %254 = getelementptr inbounds %struct.mln_sha256_t, ptr %253, i32 0, i32 3
  %255 = load i32, ptr %254, align 4, !tbaa !17
  %256 = and i32 %255, 255
  %257 = trunc i32 %256 to i8
  %258 = load ptr, ptr %5, align 8, !tbaa !5
  %259 = load i32, ptr %7, align 4, !tbaa !9
  %260 = add i32 %259, 1
  store i32 %260, ptr %7, align 4, !tbaa !9
  %261 = zext i32 %259 to i64
  %262 = getelementptr inbounds i8, ptr %258, i64 %261
  store i8 %257, ptr %262, align 1, !tbaa !14
  %263 = load i32, ptr %7, align 4, !tbaa !9
  %264 = load i32, ptr %6, align 4, !tbaa !9
  %265 = icmp uge i32 %263, %264
  br i1 %265, label %266, label %267

266:                                              ; preds = %252
  store i32 1, ptr %8, align 4
  br label %500

267:                                              ; preds = %252
  %268 = load ptr, ptr %4, align 8, !tbaa !5
  %269 = getelementptr inbounds %struct.mln_sha256_t, ptr %268, i32 0, i32 4
  %270 = load i32, ptr %269, align 8, !tbaa !18
  %271 = lshr i32 %270, 24
  %272 = and i32 %271, 255
  %273 = trunc i32 %272 to i8
  %274 = load ptr, ptr %5, align 8, !tbaa !5
  %275 = load i32, ptr %7, align 4, !tbaa !9
  %276 = add i32 %275, 1
  store i32 %276, ptr %7, align 4, !tbaa !9
  %277 = zext i32 %275 to i64
  %278 = getelementptr inbounds i8, ptr %274, i64 %277
  store i8 %273, ptr %278, align 1, !tbaa !14
  %279 = load i32, ptr %7, align 4, !tbaa !9
  %280 = load i32, ptr %6, align 4, !tbaa !9
  %281 = icmp uge i32 %279, %280
  br i1 %281, label %282, label %283

282:                                              ; preds = %267
  store i32 1, ptr %8, align 4
  br label %500

283:                                              ; preds = %267
  %284 = load ptr, ptr %4, align 8, !tbaa !5
  %285 = getelementptr inbounds %struct.mln_sha256_t, ptr %284, i32 0, i32 4
  %286 = load i32, ptr %285, align 8, !tbaa !18
  %287 = lshr i32 %286, 16
  %288 = and i32 %287, 255
  %289 = trunc i32 %288 to i8
  %290 = load ptr, ptr %5, align 8, !tbaa !5
  %291 = load i32, ptr %7, align 4, !tbaa !9
  %292 = add i32 %291, 1
  store i32 %292, ptr %7, align 4, !tbaa !9
  %293 = zext i32 %291 to i64
  %294 = getelementptr inbounds i8, ptr %290, i64 %293
  store i8 %289, ptr %294, align 1, !tbaa !14
  %295 = load i32, ptr %7, align 4, !tbaa !9
  %296 = load i32, ptr %6, align 4, !tbaa !9
  %297 = icmp uge i32 %295, %296
  br i1 %297, label %298, label %299

298:                                              ; preds = %283
  store i32 1, ptr %8, align 4
  br label %500

299:                                              ; preds = %283
  %300 = load ptr, ptr %4, align 8, !tbaa !5
  %301 = getelementptr inbounds %struct.mln_sha256_t, ptr %300, i32 0, i32 4
  %302 = load i32, ptr %301, align 8, !tbaa !18
  %303 = lshr i32 %302, 8
  %304 = and i32 %303, 255
  %305 = trunc i32 %304 to i8
  %306 = load ptr, ptr %5, align 8, !tbaa !5
  %307 = load i32, ptr %7, align 4, !tbaa !9
  %308 = add i32 %307, 1
  store i32 %308, ptr %7, align 4, !tbaa !9
  %309 = zext i32 %307 to i64
  %310 = getelementptr inbounds i8, ptr %306, i64 %309
  store i8 %305, ptr %310, align 1, !tbaa !14
  %311 = load i32, ptr %7, align 4, !tbaa !9
  %312 = load i32, ptr %6, align 4, !tbaa !9
  %313 = icmp uge i32 %311, %312
  br i1 %313, label %314, label %315

314:                                              ; preds = %299
  store i32 1, ptr %8, align 4
  br label %500

315:                                              ; preds = %299
  %316 = load ptr, ptr %4, align 8, !tbaa !5
  %317 = getelementptr inbounds %struct.mln_sha256_t, ptr %316, i32 0, i32 4
  %318 = load i32, ptr %317, align 8, !tbaa !18
  %319 = and i32 %318, 255
  %320 = trunc i32 %319 to i8
  %321 = load ptr, ptr %5, align 8, !tbaa !5
  %322 = load i32, ptr %7, align 4, !tbaa !9
  %323 = add i32 %322, 1
  store i32 %323, ptr %7, align 4, !tbaa !9
  %324 = zext i32 %322 to i64
  %325 = getelementptr inbounds i8, ptr %321, i64 %324
  store i8 %320, ptr %325, align 1, !tbaa !14
  %326 = load ptr, ptr %4, align 8, !tbaa !5
  %327 = getelementptr inbounds %struct.mln_sha256_t, ptr %326, i32 0, i32 5
  %328 = load i32, ptr %327, align 4, !tbaa !19
  %329 = lshr i32 %328, 24
  %330 = and i32 %329, 255
  %331 = trunc i32 %330 to i8
  %332 = load ptr, ptr %5, align 8, !tbaa !5
  %333 = load i32, ptr %7, align 4, !tbaa !9
  %334 = add i32 %333, 1
  store i32 %334, ptr %7, align 4, !tbaa !9
  %335 = zext i32 %333 to i64
  %336 = getelementptr inbounds i8, ptr %332, i64 %335
  store i8 %331, ptr %336, align 1, !tbaa !14
  %337 = load i32, ptr %7, align 4, !tbaa !9
  %338 = load i32, ptr %6, align 4, !tbaa !9
  %339 = icmp uge i32 %337, %338
  br i1 %339, label %340, label %341

340:                                              ; preds = %315
  store i32 1, ptr %8, align 4
  br label %500

341:                                              ; preds = %315
  %342 = load ptr, ptr %4, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct.mln_sha256_t, ptr %342, i32 0, i32 5
  %344 = load i32, ptr %343, align 4, !tbaa !19
  %345 = lshr i32 %344, 16
  %346 = and i32 %345, 255
  %347 = trunc i32 %346 to i8
  %348 = load ptr, ptr %5, align 8, !tbaa !5
  %349 = load i32, ptr %7, align 4, !tbaa !9
  %350 = add i32 %349, 1
  store i32 %350, ptr %7, align 4, !tbaa !9
  %351 = zext i32 %349 to i64
  %352 = getelementptr inbounds i8, ptr %348, i64 %351
  store i8 %347, ptr %352, align 1, !tbaa !14
  %353 = load i32, ptr %7, align 4, !tbaa !9
  %354 = load i32, ptr %6, align 4, !tbaa !9
  %355 = icmp uge i32 %353, %354
  br i1 %355, label %356, label %357

356:                                              ; preds = %341
  store i32 1, ptr %8, align 4
  br label %500

357:                                              ; preds = %341
  %358 = load ptr, ptr %4, align 8, !tbaa !5
  %359 = getelementptr inbounds %struct.mln_sha256_t, ptr %358, i32 0, i32 5
  %360 = load i32, ptr %359, align 4, !tbaa !19
  %361 = lshr i32 %360, 8
  %362 = and i32 %361, 255
  %363 = trunc i32 %362 to i8
  %364 = load ptr, ptr %5, align 8, !tbaa !5
  %365 = load i32, ptr %7, align 4, !tbaa !9
  %366 = add i32 %365, 1
  store i32 %366, ptr %7, align 4, !tbaa !9
  %367 = zext i32 %365 to i64
  %368 = getelementptr inbounds i8, ptr %364, i64 %367
  store i8 %363, ptr %368, align 1, !tbaa !14
  %369 = load i32, ptr %7, align 4, !tbaa !9
  %370 = load i32, ptr %6, align 4, !tbaa !9
  %371 = icmp uge i32 %369, %370
  br i1 %371, label %372, label %373

372:                                              ; preds = %357
  store i32 1, ptr %8, align 4
  br label %500

373:                                              ; preds = %357
  %374 = load ptr, ptr %4, align 8, !tbaa !5
  %375 = getelementptr inbounds %struct.mln_sha256_t, ptr %374, i32 0, i32 5
  %376 = load i32, ptr %375, align 4, !tbaa !19
  %377 = and i32 %376, 255
  %378 = trunc i32 %377 to i8
  %379 = load ptr, ptr %5, align 8, !tbaa !5
  %380 = load i32, ptr %7, align 4, !tbaa !9
  %381 = add i32 %380, 1
  store i32 %381, ptr %7, align 4, !tbaa !9
  %382 = zext i32 %380 to i64
  %383 = getelementptr inbounds i8, ptr %379, i64 %382
  store i8 %378, ptr %383, align 1, !tbaa !14
  %384 = load ptr, ptr %4, align 8, !tbaa !5
  %385 = getelementptr inbounds %struct.mln_sha256_t, ptr %384, i32 0, i32 6
  %386 = load i32, ptr %385, align 8, !tbaa !20
  %387 = lshr i32 %386, 24
  %388 = and i32 %387, 255
  %389 = trunc i32 %388 to i8
  %390 = load ptr, ptr %5, align 8, !tbaa !5
  %391 = load i32, ptr %7, align 4, !tbaa !9
  %392 = add i32 %391, 1
  store i32 %392, ptr %7, align 4, !tbaa !9
  %393 = zext i32 %391 to i64
  %394 = getelementptr inbounds i8, ptr %390, i64 %393
  store i8 %389, ptr %394, align 1, !tbaa !14
  %395 = load i32, ptr %7, align 4, !tbaa !9
  %396 = load i32, ptr %6, align 4, !tbaa !9
  %397 = icmp uge i32 %395, %396
  br i1 %397, label %398, label %399

398:                                              ; preds = %373
  store i32 1, ptr %8, align 4
  br label %500

399:                                              ; preds = %373
  %400 = load ptr, ptr %4, align 8, !tbaa !5
  %401 = getelementptr inbounds %struct.mln_sha256_t, ptr %400, i32 0, i32 6
  %402 = load i32, ptr %401, align 8, !tbaa !20
  %403 = lshr i32 %402, 16
  %404 = and i32 %403, 255
  %405 = trunc i32 %404 to i8
  %406 = load ptr, ptr %5, align 8, !tbaa !5
  %407 = load i32, ptr %7, align 4, !tbaa !9
  %408 = add i32 %407, 1
  store i32 %408, ptr %7, align 4, !tbaa !9
  %409 = zext i32 %407 to i64
  %410 = getelementptr inbounds i8, ptr %406, i64 %409
  store i8 %405, ptr %410, align 1, !tbaa !14
  %411 = load i32, ptr %7, align 4, !tbaa !9
  %412 = load i32, ptr %6, align 4, !tbaa !9
  %413 = icmp uge i32 %411, %412
  br i1 %413, label %414, label %415

414:                                              ; preds = %399
  store i32 1, ptr %8, align 4
  br label %500

415:                                              ; preds = %399
  %416 = load ptr, ptr %4, align 8, !tbaa !5
  %417 = getelementptr inbounds %struct.mln_sha256_t, ptr %416, i32 0, i32 6
  %418 = load i32, ptr %417, align 8, !tbaa !20
  %419 = lshr i32 %418, 8
  %420 = and i32 %419, 255
  %421 = trunc i32 %420 to i8
  %422 = load ptr, ptr %5, align 8, !tbaa !5
  %423 = load i32, ptr %7, align 4, !tbaa !9
  %424 = add i32 %423, 1
  store i32 %424, ptr %7, align 4, !tbaa !9
  %425 = zext i32 %423 to i64
  %426 = getelementptr inbounds i8, ptr %422, i64 %425
  store i8 %421, ptr %426, align 1, !tbaa !14
  %427 = load i32, ptr %7, align 4, !tbaa !9
  %428 = load i32, ptr %6, align 4, !tbaa !9
  %429 = icmp uge i32 %427, %428
  br i1 %429, label %430, label %431

430:                                              ; preds = %415
  store i32 1, ptr %8, align 4
  br label %500

431:                                              ; preds = %415
  %432 = load ptr, ptr %4, align 8, !tbaa !5
  %433 = getelementptr inbounds %struct.mln_sha256_t, ptr %432, i32 0, i32 6
  %434 = load i32, ptr %433, align 8, !tbaa !20
  %435 = and i32 %434, 255
  %436 = trunc i32 %435 to i8
  %437 = load ptr, ptr %5, align 8, !tbaa !5
  %438 = load i32, ptr %7, align 4, !tbaa !9
  %439 = add i32 %438, 1
  store i32 %439, ptr %7, align 4, !tbaa !9
  %440 = zext i32 %438 to i64
  %441 = getelementptr inbounds i8, ptr %437, i64 %440
  store i8 %436, ptr %441, align 1, !tbaa !14
  %442 = load ptr, ptr %4, align 8, !tbaa !5
  %443 = getelementptr inbounds %struct.mln_sha256_t, ptr %442, i32 0, i32 7
  %444 = load i32, ptr %443, align 4, !tbaa !21
  %445 = lshr i32 %444, 24
  %446 = and i32 %445, 255
  %447 = trunc i32 %446 to i8
  %448 = load ptr, ptr %5, align 8, !tbaa !5
  %449 = load i32, ptr %7, align 4, !tbaa !9
  %450 = add i32 %449, 1
  store i32 %450, ptr %7, align 4, !tbaa !9
  %451 = zext i32 %449 to i64
  %452 = getelementptr inbounds i8, ptr %448, i64 %451
  store i8 %447, ptr %452, align 1, !tbaa !14
  %453 = load i32, ptr %7, align 4, !tbaa !9
  %454 = load i32, ptr %6, align 4, !tbaa !9
  %455 = icmp uge i32 %453, %454
  br i1 %455, label %456, label %457

456:                                              ; preds = %431
  store i32 1, ptr %8, align 4
  br label %500

457:                                              ; preds = %431
  %458 = load ptr, ptr %4, align 8, !tbaa !5
  %459 = getelementptr inbounds %struct.mln_sha256_t, ptr %458, i32 0, i32 7
  %460 = load i32, ptr %459, align 4, !tbaa !21
  %461 = lshr i32 %460, 16
  %462 = and i32 %461, 255
  %463 = trunc i32 %462 to i8
  %464 = load ptr, ptr %5, align 8, !tbaa !5
  %465 = load i32, ptr %7, align 4, !tbaa !9
  %466 = add i32 %465, 1
  store i32 %466, ptr %7, align 4, !tbaa !9
  %467 = zext i32 %465 to i64
  %468 = getelementptr inbounds i8, ptr %464, i64 %467
  store i8 %463, ptr %468, align 1, !tbaa !14
  %469 = load i32, ptr %7, align 4, !tbaa !9
  %470 = load i32, ptr %6, align 4, !tbaa !9
  %471 = icmp uge i32 %469, %470
  br i1 %471, label %472, label %473

472:                                              ; preds = %457
  store i32 1, ptr %8, align 4
  br label %500

473:                                              ; preds = %457
  %474 = load ptr, ptr %4, align 8, !tbaa !5
  %475 = getelementptr inbounds %struct.mln_sha256_t, ptr %474, i32 0, i32 7
  %476 = load i32, ptr %475, align 4, !tbaa !21
  %477 = lshr i32 %476, 8
  %478 = and i32 %477, 255
  %479 = trunc i32 %478 to i8
  %480 = load ptr, ptr %5, align 8, !tbaa !5
  %481 = load i32, ptr %7, align 4, !tbaa !9
  %482 = add i32 %481, 1
  store i32 %482, ptr %7, align 4, !tbaa !9
  %483 = zext i32 %481 to i64
  %484 = getelementptr inbounds i8, ptr %480, i64 %483
  store i8 %479, ptr %484, align 1, !tbaa !14
  %485 = load i32, ptr %7, align 4, !tbaa !9
  %486 = load i32, ptr %6, align 4, !tbaa !9
  %487 = icmp uge i32 %485, %486
  br i1 %487, label %488, label %489

488:                                              ; preds = %473
  store i32 1, ptr %8, align 4
  br label %500

489:                                              ; preds = %473
  %490 = load ptr, ptr %4, align 8, !tbaa !5
  %491 = getelementptr inbounds %struct.mln_sha256_t, ptr %490, i32 0, i32 7
  %492 = load i32, ptr %491, align 4, !tbaa !21
  %493 = and i32 %492, 255
  %494 = trunc i32 %493 to i8
  %495 = load ptr, ptr %5, align 8, !tbaa !5
  %496 = load i32, ptr %7, align 4, !tbaa !9
  %497 = add i32 %496, 1
  store i32 %497, ptr %7, align 4, !tbaa !9
  %498 = zext i32 %496 to i64
  %499 = getelementptr inbounds i8, ptr %495, i64 %498
  store i8 %494, ptr %499, align 1, !tbaa !14
  store i32 0, ptr %8, align 4
  br label %500

500:                                              ; preds = %489, %488, %472, %456, %430, %414, %398, %372, %356, %340, %314, %298, %282, %266, %251, %235, %219, %203, %188, %172, %156, %140, %125, %109, %93, %77, %62, %46, %30
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #2
  %501 = load i32, ptr %8, align 4
  switch i32 %501, label %503 [
    i32 0, label %502
    i32 1, label %502
  ]

502:                                              ; preds = %500, %500, %14
  ret void

503:                                              ; preds = %500
  unreachable
}

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

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

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


; 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: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable
define dso_local void @mln_sha256_tobytes(ptr nocapture noundef nonnull readonly %0, ptr noundef writeonly %1, i32 noundef %2) local_unnamed_addr #0 {
  %4 = icmp eq i32 %2, 0
  %5 = icmp eq ptr %1, null
  %or.cond = or i1 %5, %4
  br i1 %or.cond, label %189, label %6

6:                                                ; preds = %3
  %7 = load i32, ptr %0, align 8, !tbaa !5
  %8 = lshr i32 %7, 24
  %9 = trunc nuw i32 %8 to i8
  store i8 %9, ptr %1, align 1, !tbaa !11
  %10 = icmp ult i32 %2, 2
  br i1 %10, label %189, label %11

11:                                               ; preds = %6
  %12 = load i32, ptr %0, align 8, !tbaa !5
  %13 = lshr i32 %12, 16
  %14 = trunc i32 %13 to i8
  %15 = getelementptr inbounds i8, ptr %1, i64 1
  store i8 %14, ptr %15, align 1, !tbaa !11
  %16 = icmp eq i32 %2, 2
  br i1 %16, label %189, label %17

17:                                               ; preds = %11
  %18 = load i32, ptr %0, align 8, !tbaa !5
  %19 = lshr i32 %18, 8
  %20 = trunc i32 %19 to i8
  %21 = getelementptr inbounds i8, ptr %1, i64 2
  store i8 %20, ptr %21, align 1, !tbaa !11
  %22 = icmp ult i32 %2, 4
  br i1 %22, label %189, label %23

23:                                               ; preds = %17
  %24 = load i32, ptr %0, align 8, !tbaa !5
  %25 = trunc i32 %24 to i8
  %26 = getelementptr inbounds i8, ptr %1, i64 3
  store i8 %25, ptr %26, align 1, !tbaa !11
  %27 = icmp eq i32 %2, 4
  br i1 %27, label %189, label %28

28:                                               ; preds = %23
  %29 = getelementptr inbounds i8, ptr %0, i64 4
  %30 = load i32, ptr %29, align 4, !tbaa !12
  %31 = lshr i32 %30, 24
  %32 = trunc nuw i32 %31 to i8
  %33 = getelementptr inbounds i8, ptr %1, i64 4
  store i8 %32, ptr %33, align 1, !tbaa !11
  %34 = icmp ult i32 %2, 6
  br i1 %34, label %189, label %35

35:                                               ; preds = %28
  %36 = load i32, ptr %29, align 4, !tbaa !12
  %37 = lshr i32 %36, 16
  %38 = trunc i32 %37 to i8
  %39 = getelementptr inbounds i8, ptr %1, i64 5
  store i8 %38, ptr %39, align 1, !tbaa !11
  %40 = icmp eq i32 %2, 6
  br i1 %40, label %189, label %41

41:                                               ; preds = %35
  %42 = load i32, ptr %29, align 4, !tbaa !12
  %43 = lshr i32 %42, 8
  %44 = trunc i32 %43 to i8
  %45 = getelementptr inbounds i8, ptr %1, i64 6
  store i8 %44, ptr %45, align 1, !tbaa !11
  %46 = icmp ult i32 %2, 8
  br i1 %46, label %189, label %47

47:                                               ; preds = %41
  %48 = load i32, ptr %29, align 4, !tbaa !12
  %49 = trunc i32 %48 to i8
  %50 = getelementptr inbounds i8, ptr %1, i64 7
  store i8 %49, ptr %50, align 1, !tbaa !11
  %51 = icmp eq i32 %2, 8
  br i1 %51, label %189, label %52

52:                                               ; preds = %47
  %53 = getelementptr inbounds i8, ptr %0, i64 8
  %54 = load i32, ptr %53, align 8, !tbaa !13
  %55 = lshr i32 %54, 24
  %56 = trunc nuw i32 %55 to i8
  %57 = getelementptr inbounds i8, ptr %1, i64 8
  store i8 %56, ptr %57, align 1, !tbaa !11
  %58 = icmp ult i32 %2, 10
  br i1 %58, label %189, label %59

59:                                               ; preds = %52
  %60 = load i32, ptr %53, align 8, !tbaa !13
  %61 = lshr i32 %60, 16
  %62 = trunc i32 %61 to i8
  %63 = getelementptr inbounds i8, ptr %1, i64 9
  store i8 %62, ptr %63, align 1, !tbaa !11
  %64 = icmp eq i32 %2, 10
  br i1 %64, label %189, label %65

65:                                               ; preds = %59
  %66 = load i32, ptr %53, align 8, !tbaa !13
  %67 = lshr i32 %66, 8
  %68 = trunc i32 %67 to i8
  %69 = getelementptr inbounds i8, ptr %1, i64 10
  store i8 %68, ptr %69, align 1, !tbaa !11
  %70 = icmp ult i32 %2, 12
  br i1 %70, label %189, label %71

71:                                               ; preds = %65
  %72 = load i32, ptr %53, align 8, !tbaa !13
  %73 = trunc i32 %72 to i8
  %74 = getelementptr inbounds i8, ptr %1, i64 11
  store i8 %73, ptr %74, align 1, !tbaa !11
  %75 = icmp eq i32 %2, 12
  br i1 %75, label %189, label %76

76:                                               ; preds = %71
  %77 = getelementptr inbounds i8, ptr %0, i64 12
  %78 = load i32, ptr %77, align 4, !tbaa !14
  %79 = lshr i32 %78, 24
  %80 = trunc nuw i32 %79 to i8
  %81 = getelementptr inbounds i8, ptr %1, i64 12
  store i8 %80, ptr %81, align 1, !tbaa !11
  %82 = icmp ult i32 %2, 14
  br i1 %82, label %189, label %83

83:                                               ; preds = %76
  %84 = load i32, ptr %77, align 4, !tbaa !14
  %85 = lshr i32 %84, 16
  %86 = trunc i32 %85 to i8
  %87 = getelementptr inbounds i8, ptr %1, i64 13
  store i8 %86, ptr %87, align 1, !tbaa !11
  %88 = icmp eq i32 %2, 14
  br i1 %88, label %189, label %89

89:                                               ; preds = %83
  %90 = load i32, ptr %77, align 4, !tbaa !14
  %91 = lshr i32 %90, 8
  %92 = trunc i32 %91 to i8
  %93 = getelementptr inbounds i8, ptr %1, i64 14
  store i8 %92, ptr %93, align 1, !tbaa !11
  %94 = icmp ult i32 %2, 16
  br i1 %94, label %189, label %95

95:                                               ; preds = %89
  %96 = load i32, ptr %77, align 4, !tbaa !14
  %97 = trunc i32 %96 to i8
  %98 = getelementptr inbounds i8, ptr %1, i64 15
  store i8 %97, ptr %98, align 1, !tbaa !11
  %99 = icmp eq i32 %2, 16
  br i1 %99, label %189, label %100

100:                                              ; preds = %95
  %101 = getelementptr inbounds i8, ptr %0, i64 16
  %102 = load i32, ptr %101, align 8, !tbaa !15
  %103 = lshr i32 %102, 24
  %104 = trunc nuw i32 %103 to i8
  %105 = getelementptr inbounds i8, ptr %1, i64 16
  store i8 %104, ptr %105, align 1, !tbaa !11
  %106 = icmp ult i32 %2, 18
  br i1 %106, label %189, label %107

107:                                              ; preds = %100
  %108 = load i32, ptr %101, align 8, !tbaa !15
  %109 = lshr i32 %108, 16
  %110 = trunc i32 %109 to i8
  %111 = getelementptr inbounds i8, ptr %1, i64 17
  store i8 %110, ptr %111, align 1, !tbaa !11
  %112 = icmp eq i32 %2, 18
  br i1 %112, label %189, label %113

113:                                              ; preds = %107
  %114 = load i32, ptr %101, align 8, !tbaa !15
  %115 = lshr i32 %114, 8
  %116 = trunc i32 %115 to i8
  %117 = getelementptr inbounds i8, ptr %1, i64 18
  store i8 %116, ptr %117, align 1, !tbaa !11
  %118 = icmp ult i32 %2, 20
  br i1 %118, label %189, label %119

119:                                              ; preds = %113
  %120 = load i32, ptr %101, align 8, !tbaa !15
  %121 = trunc i32 %120 to i8
  %122 = getelementptr inbounds i8, ptr %1, i64 19
  store i8 %121, ptr %122, align 1, !tbaa !11
  %123 = getelementptr inbounds i8, ptr %0, i64 20
  %124 = load i32, ptr %123, align 4, !tbaa !16
  %125 = lshr i32 %124, 24
  %126 = trunc nuw i32 %125 to i8
  %127 = getelementptr inbounds i8, ptr %1, i64 20
  store i8 %126, ptr %127, align 1, !tbaa !11
  %128 = icmp ult i32 %2, 22
  br i1 %128, label %189, label %129

129:                                              ; preds = %119
  %130 = load i32, ptr %123, align 4, !tbaa !16
  %131 = lshr i32 %130, 16
  %132 = trunc i32 %131 to i8
  %133 = getelementptr inbounds i8, ptr %1, i64 21
  store i8 %132, ptr %133, align 1, !tbaa !11
  %134 = icmp eq i32 %2, 22
  br i1 %134, label %189, label %135

135:                                              ; preds = %129
  %136 = load i32, ptr %123, align 4, !tbaa !16
  %137 = lshr i32 %136, 8
  %138 = trunc i32 %137 to i8
  %139 = getelementptr inbounds i8, ptr %1, i64 22
  store i8 %138, ptr %139, align 1, !tbaa !11
  %140 = icmp ult i32 %2, 24
  br i1 %140, label %189, label %141

141:                                              ; preds = %135
  %142 = load i32, ptr %123, align 4, !tbaa !16
  %143 = trunc i32 %142 to i8
  %144 = getelementptr inbounds i8, ptr %1, i64 23
  store i8 %143, ptr %144, align 1, !tbaa !11
  %145 = getelementptr inbounds i8, ptr %0, i64 24
  %146 = load i32, ptr %145, align 8, !tbaa !17
  %147 = lshr i32 %146, 24
  %148 = trunc nuw i32 %147 to i8
  %149 = getelementptr inbounds i8, ptr %1, i64 24
  store i8 %148, ptr %149, align 1, !tbaa !11
  %150 = icmp ult i32 %2, 26
  br i1 %150, label %189, label %151

151:                                              ; preds = %141
  %152 = load i32, ptr %145, align 8, !tbaa !17
  %153 = lshr i32 %152, 16
  %154 = trunc i32 %153 to i8
  %155 = getelementptr inbounds i8, ptr %1, i64 25
  store i8 %154, ptr %155, align 1, !tbaa !11
  %156 = icmp eq i32 %2, 26
  br i1 %156, label %189, label %157

157:                                              ; preds = %151
  %158 = load i32, ptr %145, align 8, !tbaa !17
  %159 = lshr i32 %158, 8
  %160 = trunc i32 %159 to i8
  %161 = getelementptr inbounds i8, ptr %1, i64 26
  store i8 %160, ptr %161, align 1, !tbaa !11
  %162 = icmp ult i32 %2, 28
  br i1 %162, label %189, label %163

163:                                              ; preds = %157
  %164 = load i32, ptr %145, align 8, !tbaa !17
  %165 = trunc i32 %164 to i8
  %166 = getelementptr inbounds i8, ptr %1, i64 27
  store i8 %165, ptr %166, align 1, !tbaa !11
  %167 = getelementptr inbounds i8, ptr %0, i64 28
  %168 = load i32, ptr %167, align 4, !tbaa !18
  %169 = lshr i32 %168, 24
  %170 = trunc nuw i32 %169 to i8
  %171 = getelementptr inbounds i8, ptr %1, i64 28
  store i8 %170, ptr %171, align 1, !tbaa !11
  %172 = icmp ult i32 %2, 30
  br i1 %172, label %189, label %173

173:                                              ; preds = %163
  %174 = load i32, ptr %167, align 4, !tbaa !18
  %175 = lshr i32 %174, 16
  %176 = trunc i32 %175 to i8
  %177 = getelementptr inbounds i8, ptr %1, i64 29
  store i8 %176, ptr %177, align 1, !tbaa !11
  %178 = icmp eq i32 %2, 30
  br i1 %178, label %189, label %179

179:                                              ; preds = %173
  %180 = load i32, ptr %167, align 4, !tbaa !18
  %181 = lshr i32 %180, 8
  %182 = trunc i32 %181 to i8
  %183 = getelementptr inbounds i8, ptr %1, i64 30
  store i8 %182, ptr %183, align 1, !tbaa !11
  %184 = icmp ult i32 %2, 32
  br i1 %184, label %189, label %185

185:                                              ; preds = %179
  %186 = load i32, ptr %167, align 4, !tbaa !18
  %187 = trunc i32 %186 to i8
  %188 = getelementptr inbounds i8, ptr %1, i64 31
  store i8 %187, ptr %188, align 1, !tbaa !11
  br label %189

189:                                              ; preds = %185, %6, %11, %17, %23, %28, %35, %41, %47, %52, %59, %65, %71, %76, %83, %89, %95, %100, %107, %113, %119, %129, %135, %141, %151, %157, %163, %173, %179, %3
  ret void
}

attributes #0 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) 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" }

!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 = !{!"", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !10, i64 32, !7, i64 40, !8, i64 44}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"long", !8, i64 0}
!11 = !{!8, !8, i64 0}
!12 = !{!6, !7, i64 4}
!13 = !{!6, !7, i64 8}
!14 = !{!6, !7, i64 12}
!15 = !{!6, !7, i64 16}
!16 = !{!6, !7, i64 20}
!17 = !{!6, !7, i64 24}
!18 = !{!6, !7, i64 28}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass