; LLVM IR from intel/qpl :: sources/c_api/legacy_hw_path (qpl_hw_check_job)

; 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.qpl_hw_state = type { %struct.hw_decompress_analytics_descriptor, %struct.hw_iaa_completion_record, [2 x %struct.hw_iaa_aecs_analytic], [2 x %struct.hw_iaa_aecs_compress], %struct.qpl_buffer, %struct.qpl_execution_history, i32, i32, i32, %struct.hw_huffman_code, i32, %struct.hw_accelerator_context, i32, i32, i8, i8, i32, i32, %struct.qpl_execution_record }
%struct.hw_decompress_analytics_descriptor = type { i32, i32, ptr, ptr, ptr, i32, i16, i16, ptr, i32, i32, i32, i32 }
%struct.hw_iaa_completion_record = type { i8, i8, i8, i8, i32, i64, i64, i32, i8, i8, i16, i32, i32, i32, i32, i64, i64 }
%struct.hw_iaa_aecs_analytic = type { %struct.hw_iaa_aecs_filter, [36 x i32], %struct.hw_iaa_aecs_decompress }
%struct.hw_iaa_aecs_filter = type { i32, i32, i32, i32, i32, i32 }
%struct.hw_iaa_aecs_decompress = type { [2 x i32], i32, i32, [32 x i64], [32 x i8], i32, i8, i8, i16, [5 x i32], [5 x i32], [5 x i32], [5 x i32], [62 x i32], %union.anon, i16, i16, %union.anon.0, %struct.anon.2, i16, [4096 x i8], [6 x i32] }
%union.anon = type { %struct.anon }
%struct.anon = type { [6 x i32], [224 x i8], [5 x i32] }
%union.anon.0 = type { %struct.anon.1 }
%struct.anon.1 = type { [2 x i32], [144 x i8], [5 x i32] }
%struct.anon.2 = type { i16 }
%struct.hw_iaa_aecs_compress = type { i32, i32, [5 x i32], i32, [256 x i8], %struct.hw_iaa_histogram, [12288 x i8] }
%struct.hw_iaa_histogram = type { [286 x i32], [2 x i32], [30 x i32], [2 x i32] }
%struct.qpl_buffer = type { [1024 x i8], i32, i32 }
%struct.qpl_execution_history = type { i8, i32, i32, i32, ptr }
%struct.hw_huffman_code = type { i16, i8, i8 }
%struct.hw_accelerator_context = type { %struct.hw_device_properties, ptr }
%struct.hw_device_properties = type { i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8 }
%struct.qpl_execution_record = type { double, i32, i32 }
%struct.qpl_job = type { ptr, i32, i32, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, i32, ptr, i32, i32, i8, i8, i8, i64, i64, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.qpl_aux_data }
%struct.qpl_aux_data = type { ptr, ptr, ptr, ptr, ptr, i32 }

; 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: inlinehint mustprogress nounwind uwtable
declare hidden noundef ptr @_ZN3qpl3jobL9get_stateEPK7qpl_job(ptr noundef) #1

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZN3qpl3jobL16update_checksumsEP7qpl_jobjj(ptr noundef, i32 noundef, i32 noundef) #1

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZN3qpl3jobL20update_output_streamEP7qpl_jobjj(ptr noundef, i32 noundef, i32 noundef) #1

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZN3qpl3jobL19update_input_streamEP7qpl_jobj(ptr noundef, i32 noundef) #1

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN3qpl2ml21hw_check_compress_jobEP7qpl_job(ptr noundef) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef i32 @_ZN3qpl2ml4utilL25convert_status_iaa_to_qplEPVK20hw_completion_record(ptr noundef) #1

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN3qpl2ml4util18process_descriptorI10qpl_statusLNS1_16execution_mode_tE1EEET_P13hw_descriptorPV20hw_completion_recordi(ptr noundef, ptr noundef, i32 noundef) #1

; Function Attrs: mustprogress uwtable
define dso_local i32 @hw_check_job(ptr noundef %0) #2 {
  %2 = alloca i32, align 4
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #4
  %21 = load ptr, ptr %3, align 8, !tbaa !5
  %22 = call noundef ptr @_ZN3qpl3jobL9get_stateEPK7qpl_job(ptr noundef %21) #4
  store ptr %22, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #4
  %23 = load ptr, ptr %4, align 8, !tbaa !5
  %24 = getelementptr inbounds %struct.qpl_hw_state, ptr %23, i32 0, i32 0
  store ptr %24, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #4
  %25 = load ptr, ptr %4, align 8, !tbaa !5
  %26 = getelementptr inbounds %struct.qpl_hw_state, ptr %25, i32 0, i32 1
  store ptr %26, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #4
  %27 = load ptr, ptr %4, align 8, !tbaa !5
  %28 = getelementptr inbounds %struct.qpl_hw_state, ptr %27, i32 0, i32 2
  %29 = getelementptr inbounds [2 x %struct.hw_iaa_aecs_analytic], ptr %28, i64 0, i64 0
  %30 = load ptr, ptr %4, align 8, !tbaa !5
  %31 = getelementptr inbounds %struct.qpl_hw_state, ptr %30, i32 0, i32 7
  %32 = load i32, ptr %31, align 4, !tbaa !9
  %33 = zext i32 %32 to i64
  %34 = getelementptr inbounds i8, ptr %29, i64 %33
  store ptr %34, ptr %7, align 8, !tbaa !5
  %35 = load ptr, ptr %3, align 8, !tbaa !5
  %36 = call noundef zeroext i1 @_ZN3qpl3jobL16is_job_submittedEPK7qpl_job(ptr noundef %35)
  br i1 %36, label %38, label %37

37:                                               ; preds = %1
  store i32 7, ptr %2, align 4
  store i32 1, ptr %8, align 4
  br label %478

38:                                               ; preds = %1
  %39 = load ptr, ptr %6, align 8, !tbaa !5
  %40 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %39, i32 0, i32 0
  %41 = load i8, ptr %40, align 1, !tbaa !28
  %42 = zext i8 %41 to i32
  %43 = icmp eq i32 0, %42
  br i1 %43, label %44, label %50

44:                                               ; preds = %38
  %45 = load ptr, ptr %4, align 8, !tbaa !5
  %46 = getelementptr inbounds %struct.qpl_hw_state, ptr %45, i32 0, i32 12
  %47 = load i32, ptr %46, align 8, !tbaa !29
  %48 = icmp ne i32 %47, 0
  br i1 %48, label %50, label %49

49:                                               ; preds = %44
  store i32 1, ptr %2, align 4
  store i32 1, ptr %8, align 4
  br label %478

50:                                               ; preds = %44, %38
  %51 = load ptr, ptr %6, align 8, !tbaa !5
  %52 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %51, i32 0, i32 0
  %53 = load i8, ptr %52, align 1, !tbaa !28
  %54 = zext i8 %53 to i32
  %55 = icmp eq i32 255, %54
  br i1 %55, label %56, label %61

56:                                               ; preds = %50
  %57 = load ptr, ptr %3, align 8, !tbaa !5
  %58 = load ptr, ptr %6, align 8, !tbaa !5
  %59 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %58, i32 0, i32 4
  %60 = load i32, ptr %59, align 1, !tbaa !30
  call void @_ZN3qpl3jobL19update_input_streamEP7qpl_jobj(ptr noundef %57, i32 noundef %60) #4
  store i32 0, ptr %2, align 4
  store i32 1, ptr %8, align 4
  br label %478

61:                                               ; preds = %50
  %62 = load ptr, ptr %6, align 8, !tbaa !5
  %63 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %62, i32 0, i32 0
  %64 = load i8, ptr %63, align 1, !tbaa !28
  %65 = zext i8 %64 to i32
  %66 = icmp eq i32 3, %65
  br i1 %66, label %73, label %67

67:                                               ; preds = %61
  %68 = load ptr, ptr %6, align 8, !tbaa !5
  %69 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %68, i32 0, i32 0
  %70 = load i8, ptr %69, align 1, !tbaa !28
  %71 = zext i8 %70 to i32
  %72 = icmp eq i32 131, %71
  br i1 %72, label %73, label %118

73:                                               ; preds = %67, %61
  %74 = load ptr, ptr %4, align 8, !tbaa !5
  %75 = getelementptr inbounds %struct.qpl_hw_state, ptr %74, i32 0, i32 14
  %76 = load i8, ptr %75, align 8, !tbaa !31, !range !32, !noundef !33
  %77 = trunc i8 %76 to i1
  br i1 %77, label %118, label %78

78:                                               ; preds = %73
  %79 = load ptr, ptr %6, align 8, !tbaa !5
  %80 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %79, i32 0, i32 5
  %81 = load i64, ptr %80, align 1, !tbaa !34
  %82 = icmp ne i64 %81, 0
  br i1 %82, label %83, label %117

83:                                               ; preds = %78
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #4
  %84 = load ptr, ptr %6, align 8, !tbaa !5
  %85 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %84, i32 0, i32 5
  %86 = load i64, ptr %85, align 1, !tbaa !34
  %87 = inttoptr i64 %86 to ptr
  store ptr %87, ptr %9, align 8, !tbaa !5
  %88 = load ptr, ptr %6, align 8, !tbaa !5
  %89 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %88, i32 0, i32 0
  %90 = load i8, ptr %89, align 1, !tbaa !28
  %91 = zext i8 %90 to i32
  %92 = icmp eq i32 3, %91
  br i1 %92, label %93, label %97

93:                                               ; preds = %83
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #4
  %94 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %94, ptr %10, align 8, !tbaa !5
  %95 = load ptr, ptr %10, align 8, !tbaa !5
  %96 = load volatile i8, ptr %95, align 1, !tbaa !35
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #4
  br label %102

97:                                               ; preds = %83
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #4
  %98 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %98, ptr %11, align 8, !tbaa !5
  %99 = load ptr, ptr %11, align 8, !tbaa !5
  %100 = load volatile i8, ptr %99, align 1, !tbaa !35
  %101 = load ptr, ptr %11, align 8, !tbaa !5
  store volatile i8 %100, ptr %101, align 1, !tbaa !35
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #4
  br label %102

102:                                              ; preds = %97, %93
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #4
  %103 = load ptr, ptr %5, align 8, !tbaa !5
  %104 = load ptr, ptr %4, align 8, !tbaa !5
  %105 = getelementptr inbounds %struct.qpl_hw_state, ptr %104, i32 0, i32 1
  %106 = load ptr, ptr %3, align 8, !tbaa !5
  %107 = getelementptr inbounds %struct.qpl_job, ptr %106, i32 0, i32 38
  %108 = load i32, ptr %107, align 4, !tbaa !36
  %109 = call noundef i32 @_ZN3qpl2ml4util18process_descriptorI10qpl_statusLNS1_16execution_mode_tE1EEET_P13hw_descriptorPV20hw_completion_recordi(ptr noundef %103, ptr noundef %105, i32 noundef %108) #4
  store i32 %109, ptr %12, align 4, !tbaa !46
  %110 = load i32, ptr %12, align 4, !tbaa !46
  %111 = icmp ne i32 0, %110
  br i1 %111, label %112, label %113

112:                                              ; preds = %102
  store i32 5, ptr %2, align 4
  store i32 1, ptr %8, align 4
  br label %116

113:                                              ; preds = %102
  %114 = load ptr, ptr %4, align 8, !tbaa !5
  %115 = getelementptr inbounds %struct.qpl_hw_state, ptr %114, i32 0, i32 14
  store i8 1, ptr %115, align 8, !tbaa !31
  store i32 1, ptr %2, align 4
  store i32 1, ptr %8, align 4
  br label %116

116:                                              ; preds = %113, %112
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #4
  br label %478

117:                                              ; preds = %78
  br label %118

118:                                              ; preds = %117, %73, %67
  %119 = load ptr, ptr %3, align 8, !tbaa !5
  %120 = getelementptr inbounds %struct.qpl_job, ptr %119, i32 0, i32 6
  %121 = load i32, ptr %120, align 8, !tbaa !47
  %122 = icmp eq i32 1, %121
  br i1 %122, label %123, label %166

123:                                              ; preds = %118
  %124 = load ptr, ptr %3, align 8, !tbaa !5
  %125 = call noundef zeroext i1 @_ZN3qpl3jobL26is_canned_mode_compressionEPK7qpl_job(ptr noundef %124) #4
  br i1 %125, label %126, label %163

126:                                              ; preds = %123
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #4
  %127 = load ptr, ptr %6, align 8, !tbaa !5
  %128 = call noundef i32 @_ZN3qpl2ml4utilL25convert_status_iaa_to_qplEPVK20hw_completion_record(ptr noundef %127)
  store i32 %128, ptr %13, align 4, !tbaa !48
  %129 = load i32, ptr %13, align 4, !tbaa !48
  %130 = icmp eq i32 %129, 225
  br i1 %130, label %131, label %132

131:                                              ; preds = %126
  store i32 2, ptr %13, align 4, !tbaa !48
  br label %132

132:                                              ; preds = %131, %126
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #4
  %133 = load i32, ptr %13, align 4, !tbaa !48
  store i32 %133, ptr %14, align 4, !tbaa !48
  %134 = load i32, ptr %14, align 4, !tbaa !48
  %135 = icmp ne i32 %134, 0
  br i1 %135, label %136, label %138

136:                                              ; preds = %132
  %137 = load i32, ptr %14, align 4, !tbaa !48
  store i32 %137, ptr %2, align 4
  store i32 1, ptr %8, align 4
  br label %139

138:                                              ; preds = %132
  store i32 0, ptr %8, align 4
  br label %139

139:                                              ; preds = %138, %136
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #4
  %140 = load i32, ptr %8, align 4
  switch i32 %140, label %162 [
    i32 0, label %141
  ]

141:                                              ; preds = %139
  %142 = load ptr, ptr %3, align 8, !tbaa !5
  %143 = load ptr, ptr %3, align 8, !tbaa !5
  %144 = getelementptr inbounds %struct.qpl_job, ptr %143, i32 0, i32 1
  %145 = load i32, ptr %144, align 8, !tbaa !49
  call void @_ZN3qpl3jobL19update_input_streamEP7qpl_jobj(ptr noundef %142, i32 noundef %145) #4
  %146 = load ptr, ptr %3, align 8, !tbaa !5
  %147 = load ptr, ptr %6, align 8, !tbaa !5
  %148 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %147, i32 0, i32 7
  %149 = load i32, ptr %148, align 1, !tbaa !50
  %150 = load ptr, ptr %6, align 8, !tbaa !5
  %151 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %150, i32 0, i32 8
  %152 = load i8, ptr %151, align 1, !tbaa !51
  %153 = zext i8 %152 to i32
  call void @_ZN3qpl3jobL20update_output_streamEP7qpl_jobjj(ptr noundef %146, i32 noundef %149, i32 noundef %153) #4
  %154 = load ptr, ptr %3, align 8, !tbaa !5
  %155 = load ptr, ptr %6, align 8, !tbaa !5
  %156 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %155, i32 0, i32 11
  %157 = load i32, ptr %156, align 1, !tbaa !52
  %158 = load ptr, ptr %6, align 8, !tbaa !5
  %159 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %158, i32 0, i32 10
  %160 = load i16, ptr %159, align 1, !tbaa !53
  %161 = zext i16 %160 to i32
  call void @_ZN3qpl3jobL16update_checksumsEP7qpl_jobjj(ptr noundef %154, i32 noundef %157, i32 noundef %161) #4
  store i32 0, ptr %2, align 4
  store i32 1, ptr %8, align 4
  br label %162

162:                                              ; preds = %141, %139
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #4
  br label %478

163:                                              ; preds = %123
  %164 = load ptr, ptr %3, align 8, !tbaa !5
  %165 = call noundef i32 @_ZN3qpl2ml21hw_check_compress_jobEP7qpl_job(ptr noundef %164)
  store i32 %165, ptr %2, align 4
  store i32 1, ptr %8, align 4
  br label %478

166:                                              ; preds = %118
  %167 = load ptr, ptr %3, align 8, !tbaa !5
  %168 = call noundef zeroext i1 @_ZN3qpl3jobL28is_canned_mode_decompressionEPK7qpl_job(ptr noundef %167) #4
  br i1 %168, label %169, label %210

169:                                              ; preds = %166
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #4
  %170 = load ptr, ptr %6, align 8, !tbaa !5
  %171 = call noundef i32 @_ZN3qpl2ml4utilL25convert_status_iaa_to_qplEPVK20hw_completion_record(ptr noundef %170)
  store i32 %171, ptr %15, align 4, !tbaa !48
  %172 = load i32, ptr %15, align 4, !tbaa !48
  %173 = icmp ne i32 %172, 0
  br i1 %173, label %174, label %176

174:                                              ; preds = %169
  %175 = load i32, ptr %15, align 4, !tbaa !48
  store i32 %175, ptr %2, align 4
  store i32 1, ptr %8, align 4
  br label %177

176:                                              ; preds = %169
  store i32 0, ptr %8, align 4
  br label %177

177:                                              ; preds = %176, %174
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #4
  %178 = load i32, ptr %8, align 4
  switch i32 %178, label %478 [
    i32 0, label %179
  ]

179:                                              ; preds = %177
  %180 = load ptr, ptr %3, align 8, !tbaa !5
  %181 = load ptr, ptr %6, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %181, i32 0, i32 14
  %183 = load i32, ptr %182, align 1, !tbaa !54
  %184 = load ptr, ptr %6, align 8, !tbaa !5
  %185 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %184, i32 0, i32 12
  %186 = load i32, ptr %185, align 1, !tbaa !55
  %187 = load ptr, ptr %6, align 8, !tbaa !5
  %188 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %187, i32 0, i32 13
  %189 = load i32, ptr %188, align 1, !tbaa !56
  call void @_ZN3qpl3jobL17update_aggregatesEP7qpl_jobjjj(ptr noundef %180, i32 noundef %183, i32 noundef %186, i32 noundef %189) #4
  %190 = load ptr, ptr %3, align 8, !tbaa !5
  %191 = load ptr, ptr %6, align 8, !tbaa !5
  %192 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %191, i32 0, i32 11
  %193 = load i32, ptr %192, align 1, !tbaa !52
  %194 = load ptr, ptr %6, align 8, !tbaa !5
  %195 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %194, i32 0, i32 10
  %196 = load i16, ptr %195, align 1, !tbaa !53
  %197 = zext i16 %196 to i32
  call void @_ZN3qpl3jobL16update_checksumsEP7qpl_jobjj(ptr noundef %190, i32 noundef %193, i32 noundef %197) #4
  %198 = load ptr, ptr %3, align 8, !tbaa !5
  %199 = load ptr, ptr %5, align 8, !tbaa !5
  %200 = getelementptr inbounds %struct.hw_decompress_analytics_descriptor, ptr %199, i32 0, i32 5
  %201 = load i32, ptr %200, align 1, !tbaa !57
  call void @_ZN3qpl3jobL19update_input_streamEP7qpl_jobj(ptr noundef %198, i32 noundef %201) #4
  %202 = load ptr, ptr %3, align 8, !tbaa !5
  %203 = load ptr, ptr %6, align 8, !tbaa !5
  %204 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %203, i32 0, i32 7
  %205 = load i32, ptr %204, align 1, !tbaa !50
  %206 = load ptr, ptr %6, align 8, !tbaa !5
  %207 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %206, i32 0, i32 8
  %208 = load i8, ptr %207, align 1, !tbaa !51
  %209 = zext i8 %208 to i32
  call void @_ZN3qpl3jobL20update_output_streamEP7qpl_jobjj(ptr noundef %202, i32 noundef %205, i32 noundef %209) #4
  store i32 0, ptr %2, align 4
  store i32 1, ptr %8, align 4
  br label %478

210:                                              ; preds = %166
  %211 = load ptr, ptr %6, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %211, i32 0, i32 0
  %213 = load i8, ptr %212, align 1, !tbaa !28
  %214 = zext i8 %213 to i32
  %215 = icmp ne i32 1, %214
  br i1 %215, label %216, label %225

216:                                              ; preds = %210
  %217 = load ptr, ptr %6, align 8, !tbaa !5
  %218 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %217, i32 0, i32 0
  %219 = load i8, ptr %218, align 1, !tbaa !28
  %220 = zext i8 %219 to i32
  %221 = icmp ne i32 11, %220
  br i1 %221, label %222, label %225

222:                                              ; preds = %216
  %223 = load ptr, ptr %6, align 8, !tbaa !5
  %224 = call noundef i32 @_ZN3qpl2ml4utilL25convert_status_iaa_to_qplEPVK20hw_completion_record(ptr noundef %223)
  store i32 %224, ptr %2, align 4
  store i32 1, ptr %8, align 4
  br label %478

225:                                              ; preds = %216, %210
  %226 = load ptr, ptr %6, align 8, !tbaa !5
  %227 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %226, i32 0, i32 1
  %228 = load i8, ptr %227, align 1, !tbaa !58
  %229 = zext i8 %228 to i32
  %230 = icmp ne i32 0, %229
  br i1 %230, label %231, label %237

231:                                              ; preds = %225
  %232 = load ptr, ptr %6, align 8, !tbaa !5
  %233 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %232, i32 0, i32 1
  %234 = load i8, ptr %233, align 1, !tbaa !58
  %235 = zext i8 %234 to i32
  %236 = add i32 200, %235
  store i32 %236, ptr %2, align 4
  store i32 1, ptr %8, align 4
  br label %478

237:                                              ; preds = %225
  %238 = load ptr, ptr %3, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.qpl_job, ptr %238, i32 0, i32 7
  %240 = load i32, ptr %239, align 4, !tbaa !59
  %241 = and i32 %240, 513
  %242 = icmp eq i32 %241, 512
  br i1 %242, label %243, label %252

243:                                              ; preds = %237
  %244 = load ptr, ptr %3, align 8, !tbaa !5
  %245 = getelementptr inbounds %struct.qpl_job, ptr %244, i32 0, i32 20
  %246 = load i8, ptr %245, align 1, !tbaa !60
  %247 = zext i8 %246 to i32
  %248 = icmp ne i32 0, %247
  br i1 %248, label %249, label %252

249:                                              ; preds = %243
  %250 = load ptr, ptr %7, align 8, !tbaa !5
  %251 = getelementptr inbounds %struct.hw_iaa_aecs_analytic, ptr %250, i32 0, i32 2
  call void @hw_iaa_aecs_decompress_clean_input_accumulator(ptr noundef %251)
  br label %252

252:                                              ; preds = %249, %243, %237
  %253 = load ptr, ptr %3, align 8, !tbaa !5
  %254 = getelementptr inbounds %struct.qpl_job, ptr %253, i32 0, i32 7
  %255 = load i32, ptr %254, align 4, !tbaa !59
  %256 = and i32 %255, 513
  %257 = icmp eq i32 %256, 512
  br i1 %257, label %292, label %258

258:                                              ; preds = %252
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #4
  %259 = load ptr, ptr %5, align 8, !tbaa !5
  %260 = getelementptr inbounds %struct.hw_decompress_analytics_descriptor, ptr %259, i32 0, i32 1
  %261 = load i32, ptr %260, align 1, !tbaa !61
  %262 = lshr i32 %261, 18
  %263 = and i32 %262, 3
  store i32 %263, ptr %16, align 4, !tbaa !48
  %264 = load i32, ptr %16, align 4, !tbaa !48
  %265 = icmp eq i32 1, %264
  br i1 %265, label %277, label %266

266:                                              ; preds = %258
  %267 = load i32, ptr %16, align 4, !tbaa !48
  %268 = icmp eq i32 2, %267
  br i1 %268, label %269, label %275

269:                                              ; preds = %266
  %270 = load ptr, ptr %6, align 8, !tbaa !5
  %271 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %270, i32 0, i32 0
  %272 = load i8, ptr %271, align 1, !tbaa !28
  %273 = zext i8 %272 to i32
  %274 = icmp eq i32 11, %273
  br label %275

275:                                              ; preds = %269, %266
  %276 = phi i1 [ false, %266 ], [ %274, %269 ]
  br label %277

277:                                              ; preds = %275, %258
  %278 = phi i1 [ true, %258 ], [ %276, %275 ]
  %279 = zext i1 %278 to i64
  %280 = select i1 %278, i32 1, i32 0
  %281 = load ptr, ptr %4, align 8, !tbaa !5
  %282 = getelementptr inbounds %struct.qpl_hw_state, ptr %281, i32 0, i32 6
  store i32 %280, ptr %282, align 8, !tbaa !62
  %283 = load ptr, ptr %4, align 8, !tbaa !5
  %284 = getelementptr inbounds %struct.qpl_hw_state, ptr %283, i32 0, i32 8
  %285 = load i32, ptr %284, align 8, !tbaa !63
  %286 = load ptr, ptr %4, align 8, !tbaa !5
  %287 = getelementptr inbounds %struct.qpl_hw_state, ptr %286, i32 0, i32 7
  %288 = load i32, ptr %287, align 4, !tbaa !9
  %289 = sub i32 %285, %288
  %290 = load ptr, ptr %4, align 8, !tbaa !5
  %291 = getelementptr inbounds %struct.qpl_hw_state, ptr %290, i32 0, i32 7
  store i32 %289, ptr %291, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #4
  br label %292

292:                                              ; preds = %277, %252
  %293 = load ptr, ptr %3, align 8, !tbaa !5
  %294 = getelementptr inbounds %struct.qpl_job, ptr %293, i32 0, i32 6
  %295 = load i32, ptr %294, align 8, !tbaa !47
  %296 = icmp eq i32 5, %295
  br i1 %296, label %316, label %297

297:                                              ; preds = %292
  %298 = load ptr, ptr %3, align 8, !tbaa !5
  %299 = load ptr, ptr %6, align 8, !tbaa !5
  %300 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %299, i32 0, i32 14
  %301 = load i32, ptr %300, align 1, !tbaa !54
  %302 = load ptr, ptr %6, align 8, !tbaa !5
  %303 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %302, i32 0, i32 12
  %304 = load i32, ptr %303, align 1, !tbaa !55
  %305 = load ptr, ptr %6, align 8, !tbaa !5
  %306 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %305, i32 0, i32 13
  %307 = load i32, ptr %306, align 1, !tbaa !56
  call void @_ZN3qpl3jobL17update_aggregatesEP7qpl_jobjjj(ptr noundef %298, i32 noundef %301, i32 noundef %304, i32 noundef %307) #4
  %308 = load ptr, ptr %3, align 8, !tbaa !5
  %309 = load ptr, ptr %6, align 8, !tbaa !5
  %310 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %309, i32 0, i32 11
  %311 = load i32, ptr %310, align 1, !tbaa !52
  %312 = load ptr, ptr %6, align 8, !tbaa !5
  %313 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %312, i32 0, i32 10
  %314 = load i16, ptr %313, align 1, !tbaa !53
  %315 = zext i16 %314 to i32
  call void @_ZN3qpl3jobL16update_checksumsEP7qpl_jobjj(ptr noundef %308, i32 noundef %311, i32 noundef %315) #4
  br label %328

316:                                              ; preds = %292
  %317 = load ptr, ptr %3, align 8, !tbaa !5
  %318 = load ptr, ptr %6, align 8, !tbaa !5
  %319 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %318, i32 0, i32 14
  %320 = load i32, ptr %319, align 1, !tbaa !54
  %321 = zext i32 %320 to i64
  %322 = shl i64 %321, 32
  %323 = load ptr, ptr %6, align 8, !tbaa !5
  %324 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %323, i32 0, i32 13
  %325 = load i32, ptr %324, align 1, !tbaa !56
  %326 = zext i32 %325 to i64
  %327 = or i64 %322, %326
  call void @_ZN3qpl3jobL10update_crcEP7qpl_jobm(ptr noundef %317, i64 noundef %327) #4
  br label %328

328:                                              ; preds = %316, %297
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #4
  %329 = load ptr, ptr %3, align 8, !tbaa !5
  %330 = getelementptr inbounds %struct.qpl_job, ptr %329, i32 0, i32 4
  %331 = load i32, ptr %330, align 8, !tbaa !64
  %332 = load ptr, ptr %5, align 8, !tbaa !5
  %333 = getelementptr inbounds %struct.hw_decompress_analytics_descriptor, ptr %332, i32 0, i32 9
  %334 = load i32, ptr %333, align 1, !tbaa !65
  %335 = sub i32 %331, %334
  store i32 %335, ptr %17, align 4, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #4
  %336 = load ptr, ptr %6, align 8, !tbaa !5
  %337 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %336, i32 0, i32 7
  %338 = load i32, ptr %337, align 1, !tbaa !50
  store i32 %338, ptr %18, align 4, !tbaa !48
  %339 = load ptr, ptr %3, align 8, !tbaa !5
  %340 = load i32, ptr %18, align 4, !tbaa !48
  %341 = load ptr, ptr %6, align 8, !tbaa !5
  %342 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %341, i32 0, i32 8
  %343 = load i8, ptr %342, align 1, !tbaa !51
  %344 = zext i8 %343 to i32
  call void @_ZN3qpl3jobL20update_output_streamEP7qpl_jobjj(ptr noundef %339, i32 noundef %340, i32 noundef %344) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #4
  store i32 0, ptr %19, align 4, !tbaa !48
  %345 = load ptr, ptr %6, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %345, i32 0, i32 0
  %347 = load i8, ptr %346, align 1, !tbaa !28
  %348 = zext i8 %347 to i32
  %349 = icmp eq i32 1, %348
  br i1 %349, label %350, label %354

350:                                              ; preds = %328
  %351 = load ptr, ptr %5, align 8, !tbaa !5
  %352 = getelementptr inbounds %struct.hw_decompress_analytics_descriptor, ptr %351, i32 0, i32 5
  %353 = load i32, ptr %352, align 1, !tbaa !57
  store i32 %353, ptr %19, align 4, !tbaa !48
  br label %366

354:                                              ; preds = %328
  %355 = load ptr, ptr %6, align 8, !tbaa !5
  %356 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %355, i32 0, i32 0
  %357 = load i8, ptr %356, align 1, !tbaa !28
  %358 = zext i8 %357 to i32
  %359 = icmp eq i32 11, %358
  br i1 %359, label %360, label %364

360:                                              ; preds = %354
  %361 = load ptr, ptr %6, align 8, !tbaa !5
  %362 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %361, i32 0, i32 4
  %363 = load i32, ptr %362, align 1, !tbaa !30
  store i32 %363, ptr %19, align 4, !tbaa !48
  br label %365

364:                                              ; preds = %354
  store i32 0, ptr %19, align 4, !tbaa !48
  br label %365

365:                                              ; preds = %364, %360
  br label %366

366:                                              ; preds = %365, %350
  %367 = load ptr, ptr %4, align 8, !tbaa !5
  %368 = getelementptr inbounds %struct.qpl_hw_state, ptr %367, i32 0, i32 4
  %369 = getelementptr inbounds %struct.qpl_buffer, ptr %368, i32 0, i32 1
  %370 = load i32, ptr %369, align 8, !tbaa !66
  %371 = icmp ne i32 0, %370
  br i1 %371, label %372, label %431

372:                                              ; preds = %366
  %373 = load i32, ptr %19, align 4, !tbaa !48
  %374 = load ptr, ptr %4, align 8, !tbaa !5
  %375 = getelementptr inbounds %struct.qpl_hw_state, ptr %374, i32 0, i32 4
  %376 = getelementptr inbounds %struct.qpl_buffer, ptr %375, i32 0, i32 1
  %377 = load i32, ptr %376, align 8, !tbaa !66
  %378 = icmp ugt i32 %373, %377
  br i1 %378, label %379, label %380

379:                                              ; preds = %372
  store i32 6, ptr %2, align 4
  store i32 1, ptr %8, align 4
  br label %477

380:                                              ; preds = %372
  %381 = load i32, ptr %19, align 4, !tbaa !48
  %382 = load ptr, ptr %4, align 8, !tbaa !5
  %383 = getelementptr inbounds %struct.qpl_hw_state, ptr %382, i32 0, i32 4
  %384 = getelementptr inbounds %struct.qpl_buffer, ptr %383, i32 0, i32 1
  %385 = load i32, ptr %384, align 8, !tbaa !66
  %386 = sub i32 %385, %381
  store i32 %386, ptr %384, align 8, !tbaa !66
  %387 = load ptr, ptr %4, align 8, !tbaa !5
  %388 = getelementptr inbounds %struct.qpl_hw_state, ptr %387, i32 0, i32 4
  %389 = getelementptr inbounds %struct.qpl_buffer, ptr %388, i32 0, i32 1
  %390 = load i32, ptr %389, align 8, !tbaa !66
  %391 = icmp ne i32 0, %390
  br i1 %391, label %392, label %399

392:                                              ; preds = %380
  %393 = load ptr, ptr %6, align 8, !tbaa !5
  %394 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %393, i32 0, i32 0
  %395 = load i8, ptr %394, align 1, !tbaa !28
  %396 = zext i8 %395 to i32
  %397 = icmp ne i32 11, %396
  br i1 %397, label %398, label %399

398:                                              ; preds = %392
  store i32 6, ptr %2, align 4
  store i32 1, ptr %8, align 4
  br label %477

399:                                              ; preds = %392, %380
  %400 = load ptr, ptr %4, align 8, !tbaa !5
  %401 = getelementptr inbounds %struct.qpl_hw_state, ptr %400, i32 0, i32 4
  %402 = getelementptr inbounds %struct.qpl_buffer, ptr %401, i32 0, i32 1
  %403 = load i32, ptr %402, align 8, !tbaa !66
  %404 = icmp ne i32 0, %403
  br i1 %404, label %405, label %430

405:                                              ; preds = %399
  %406 = load ptr, ptr %4, align 8, !tbaa !5
  %407 = getelementptr inbounds %struct.qpl_hw_state, ptr %406, i32 0, i32 4
  %408 = getelementptr inbounds %struct.qpl_buffer, ptr %407, i32 0, i32 0
  %409 = getelementptr inbounds [1024 x i8], ptr %408, i64 0, i64 0
  %410 = load i32, ptr %19, align 4, !tbaa !48
  %411 = zext i32 %410 to i64
  %412 = getelementptr inbounds i8, ptr %409, i64 %411
  %413 = load ptr, ptr %4, align 8, !tbaa !5
  %414 = getelementptr inbounds %struct.qpl_hw_state, ptr %413, i32 0, i32 4
  %415 = getelementptr inbounds %struct.qpl_buffer, ptr %414, i32 0, i32 0
  %416 = getelementptr inbounds [1024 x i8], ptr %415, i64 0, i64 0
  %417 = load i32, ptr %19, align 4, !tbaa !48
  %418 = zext i32 %417 to i64
  %419 = getelementptr inbounds i8, ptr %416, i64 %418
  %420 = load ptr, ptr %4, align 8, !tbaa !5
  %421 = getelementptr inbounds %struct.qpl_hw_state, ptr %420, i32 0, i32 4
  %422 = getelementptr inbounds %struct.qpl_buffer, ptr %421, i32 0, i32 1
  %423 = load i32, ptr %422, align 8, !tbaa !66
  %424 = zext i32 %423 to i64
  %425 = getelementptr inbounds i8, ptr %419, i64 %424
  %426 = load ptr, ptr %4, align 8, !tbaa !5
  %427 = getelementptr inbounds %struct.qpl_hw_state, ptr %426, i32 0, i32 4
  %428 = getelementptr inbounds %struct.qpl_buffer, ptr %427, i32 0, i32 0
  %429 = getelementptr inbounds [1024 x i8], ptr %428, i64 0, i64 0
  call void @_ZN3qpl7core_sw4util4moveIPhS3_EEvT_S4_T0_(ptr noundef %412, ptr noundef %425, ptr noundef %429) #4
  br label %430

430:                                              ; preds = %405, %399
  br label %434

431:                                              ; preds = %366
  %432 = load ptr, ptr %3, align 8, !tbaa !5
  %433 = load i32, ptr %19, align 4, !tbaa !48
  call void @_ZN3qpl3jobL19update_input_streamEP7qpl_jobj(ptr noundef %432, i32 noundef %433) #4
  br label %434

434:                                              ; preds = %431, %430
  %435 = load ptr, ptr %6, align 8, !tbaa !5
  %436 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %435, i32 0, i32 0
  %437 = load i8, ptr %436, align 1, !tbaa !28
  %438 = zext i8 %437 to i32
  %439 = icmp eq i32 11, %438
  br i1 %439, label %440, label %451

440:                                              ; preds = %434
  %441 = load ptr, ptr %6, align 8, !tbaa !5
  %442 = getelementptr inbounds %struct.hw_iaa_completion_record, ptr %441, i32 0, i32 7
  %443 = load i32, ptr %442, align 1, !tbaa !50
  %444 = icmp eq i32 0, %443
  br i1 %444, label %445, label %446

445:                                              ; preds = %440
  store i32 225, ptr %2, align 4
  store i32 1, ptr %8, align 4
  br label %477

446:                                              ; preds = %440
  %447 = load i32, ptr %17, align 4, !tbaa !48
  %448 = icmp eq i32 0, %447
  br i1 %448, label %449, label %450

449:                                              ; preds = %446
  store i32 2, ptr %2, align 4
  store i32 1, ptr %8, align 4
  br label %477

450:                                              ; preds = %446
  br label %451

451:                                              ; preds = %450, %434
  %452 = load ptr, ptr %3, align 8, !tbaa !5
  %453 = getelementptr inbounds %struct.qpl_job, ptr %452, i32 0, i32 1
  %454 = load i32, ptr %453, align 8, !tbaa !49
  %455 = icmp ne i32 0, %454
  br i1 %455, label %456, label %476

456:                                              ; preds = %451
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #4
  %457 = load ptr, ptr %3, align 8, !tbaa !5
  %458 = load ptr, ptr %3, align 8, !tbaa !5
  %459 = getelementptr inbounds %struct.qpl_job, ptr %458, i32 0, i32 7
  %460 = load i32, ptr %459, align 4, !tbaa !59
  %461 = and i32 %460, 2
  %462 = load ptr, ptr %3, align 8, !tbaa !5
  %463 = getelementptr inbounds %struct.qpl_job, ptr %462, i32 0, i32 0
  %464 = load ptr, ptr %463, align 8, !tbaa !67
  %465 = load ptr, ptr %3, align 8, !tbaa !5
  %466 = getelementptr inbounds %struct.qpl_job, ptr %465, i32 0, i32 1
  %467 = load i32, ptr %466, align 8, !tbaa !49
  %468 = call i32 @hw_submit_decompress_job(ptr noundef %457, i32 noundef %461, ptr noundef %464, i32 noundef %467)
  store i32 %468, ptr %20, align 4, !tbaa !46
  %469 = load i32, ptr %20, align 4, !tbaa !46
  %470 = icmp ne i32 0, %469
  br i1 %470, label %471, label %473

471:                                              ; preds = %456
  %472 = load i32, ptr %20, align 4, !tbaa !46
  br label %474

473:                                              ; preds = %456
  br label %474

474:                                              ; preds = %473, %471
  %475 = phi i32 [ %472, %471 ], [ 1, %473 ]
  store i32 %475, ptr %2, align 4
  store i32 1, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #4
  br label %477

476:                                              ; preds = %451
  store i32 0, ptr %2, align 4
  store i32 1, ptr %8, align 4
  br label %477

477:                                              ; preds = %476, %474, %449, %445, %398, %379
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #4
  br label %478

478:                                              ; preds = %477, %231, %222, %179, %177, %163, %162, %116, %56, %49, %37
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #4
  %479 = load i32, ptr %2, align 4
  ret i32 %479
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN3qpl3jobL16is_job_submittedEPK7qpl_job(ptr noundef) #1

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN3qpl3jobL26is_canned_mode_compressionEPK7qpl_job(ptr noundef) #1

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN3qpl3jobL28is_canned_mode_decompressionEPK7qpl_job(ptr noundef) #1

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZN3qpl3jobL17update_aggregatesEP7qpl_jobjjj(ptr noundef, i32 noundef, i32 noundef, i32 noundef) #1

declare void @hw_iaa_aecs_decompress_clean_input_accumulator(ptr noundef) #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZN3qpl3jobL10update_crcEP7qpl_jobm(ptr noundef, i64 noundef) #1

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3qpl7core_sw4util4moveIPhS3_EEvT_S4_T0_(ptr noundef, ptr noundef, ptr noundef) #1

declare i32 @hw_submit_decompress_job(ptr noundef, i32 noundef, ptr noundef, i32 noundef) #3

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { inlinehint 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 #2 = { 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 #3 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind }

!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, !12, i64 39652}
!10 = !{!"_ZTS12qpl_hw_state", !11, i64 0, !14, i64 64, !7, i64 128, !7, i64 10880, !16, i64 38592, !17, i64 39624, !12, i64 39648, !12, i64 39652, !12, i64 39656, !21, i64 39660, !12, i64 39664, !22, i64 39672, !12, i64 39704, !12, i64 39708, !18, i64 39712, !18, i64 39713, !24, i64 39716, !25, i64 39720, !26, i64 39728}
!11 = !{!"_ZTS34hw_decompress_analytics_descriptor", !12, i64 0, !12, i64 4, !6, i64 8, !6, i64 16, !6, i64 24, !12, i64 32, !13, i64 36, !13, i64 38, !6, i64 40, !12, i64 48, !12, i64 52, !12, i64 56, !12, i64 60}
!12 = !{!"int", !7, i64 0}
!13 = !{!"short", !7, i64 0}
!14 = !{!"_ZTS24hw_iaa_completion_record", !7, i64 0, !7, i64 1, !7, i64 2, !7, i64 3, !12, i64 4, !15, i64 8, !15, i64 16, !12, i64 24, !7, i64 28, !7, i64 29, !13, i64 30, !12, i64 32, !12, i64 36, !12, i64 40, !12, i64 44, !15, i64 48, !15, i64 56}
!15 = !{!"long", !7, i64 0}
!16 = !{!"_ZTS10qpl_buffer", !7, i64 0, !12, i64 1024, !12, i64 1028}
!17 = !{!"_ZTS21qpl_execution_history", !18, i64 0, !19, i64 4, !20, i64 8, !12, i64 12, !6, i64 16}
!18 = !{!"bool", !7, i64 0}
!19 = !{!"_ZTS23qpl_task_execution_step", !7, i64 0}
!20 = !{!"_ZTS14qpl_comp_style", !7, i64 0}
!21 = !{!"_ZTS15hw_huffman_code", !13, i64 0, !7, i64 2, !7, i64 3}
!22 = !{!"_ZTS22hw_accelerator_context", !23, i64 0, !6, i64 24}
!23 = !{!"_ZTS20hw_device_properties", !12, i64 0, !12, i64 4, !12, i64 8, !18, i64 12, !18, i64 13, !18, i64 14, !18, i64 15, !18, i64 16, !18, i64 17, !18, i64 18, !18, i64 19, !18, i64 20, !18, i64 21, !18, i64 22}
!24 = !{!"_ZTS25hw_multidescriptor_status", !7, i64 0}
!25 = !{!"_ZTS10qpl_status", !7, i64 0}
!26 = !{!"_ZTS20qpl_execution_record", !27, i64 0, !12, i64 8, !12, i64 12}
!27 = !{!"double", !7, i64 0}
!28 = !{!14, !7, i64 0}
!29 = !{!10, !12, i64 39704}
!30 = !{!14, !12, i64 4}
!31 = !{!10, !18, i64 39712}
!32 = !{i8 0, i8 2}
!33 = !{}
!34 = !{!14, !15, i64 8}
!35 = !{!7, !7, i64 0}
!36 = !{!37, !12, i64 188}
!37 = !{!"_ZTS7qpl_job", !6, i64 0, !12, i64 8, !12, i64 12, !6, i64 16, !12, i64 24, !12, i64 28, !38, i64 32, !12, i64 36, !12, i64 40, !12, i64 44, !12, i64 48, !39, i64 52, !40, i64 56, !6, i64 64, !6, i64 72, !41, i64 80, !6, i64 88, !12, i64 96, !12, i64 100, !7, i64 104, !7, i64 105, !7, i64 106, !15, i64 112, !15, i64 120, !6, i64 128, !12, i64 136, !12, i64 140, !12, i64 144, !12, i64 148, !42, i64 152, !12, i64 156, !12, i64 160, !12, i64 164, !12, i64 168, !43, i64 172, !12, i64 176, !12, i64 180, !12, i64 184, !12, i64 188, !44, i64 192}
!38 = !{!"_ZTS13qpl_operation", !7, i64 0}
!39 = !{!"_ZTS22qpl_compression_levels", !7, i64 0}
!40 = !{!"_ZTS19qpl_statistics_mode", !7, i64 0}
!41 = !{!"_ZTS19qpl_mini_block_size", !7, i64 0}
!42 = !{!"_ZTS14qpl_out_format", !7, i64 0}
!43 = !{!"_ZTS10qpl_parser", !7, i64 0}
!44 = !{!"_ZTS12qpl_aux_data", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !45, i64 40}
!45 = !{!"_ZTS10qpl_path_t", !7, i64 0}
!46 = !{!25, !25, i64 0}
!47 = !{!37, !38, i64 32}
!48 = !{!12, !12, i64 0}
!49 = !{!37, !12, i64 8}
!50 = !{!14, !12, i64 24}
!51 = !{!14, !7, i64 28}
!52 = !{!14, !12, i64 32}
!53 = !{!14, !13, i64 30}
!54 = !{!14, !12, i64 44}
!55 = !{!14, !12, i64 36}
!56 = !{!14, !12, i64 40}
!57 = !{!11, !12, i64 32}
!58 = !{!14, !7, i64 1}
!59 = !{!37, !12, i64 36}
!60 = !{!37, !7, i64 105}
!61 = !{!11, !12, i64 4}
!62 = !{!10, !12, i64 39648}
!63 = !{!10, !12, i64 39656}
!64 = !{!37, !12, i64 24}
!65 = !{!11, !12, i64 48}
!66 = !{!10, !12, i64 39616}
!67 = !{!37, !6, i64 0}


; 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: inlinehint mustprogress nounwind uwtable
declare hidden noundef ptr @_ZN3qpl3jobL9get_stateEPK7qpl_job(ptr noundef) local_unnamed_addr #0

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZN3qpl3jobL16update_checksumsEP7qpl_jobjj(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZN3qpl3jobL20update_output_streamEP7qpl_jobjj(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZN3qpl3jobL19update_input_streamEP7qpl_jobj(ptr noundef, i32 noundef) local_unnamed_addr #0

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef i32 @_ZN3qpl2ml4utilL25convert_status_iaa_to_qplEPVK20hw_completion_record(ptr noundef) local_unnamed_addr #0

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN3qpl2ml4util18process_descriptorI10qpl_statusLNS1_16execution_mode_tE1EEET_P13hw_descriptorPV20hw_completion_recordi(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
define dso_local i32 @hw_check_job(ptr noundef %0) local_unnamed_addr #1 {
  %2 = tail call noundef ptr @_ZN3qpl3jobL9get_stateEPK7qpl_job(ptr noundef %0) #4
  %3 = getelementptr inbounds i8, ptr %2, i64 64
  %4 = getelementptr inbounds i8, ptr %2, i64 128
  %5 = getelementptr inbounds i8, ptr %2, i64 39652
  %6 = load i32, ptr %5, align 4, !tbaa !5
  %7 = zext i32 %6 to i64
  %8 = getelementptr inbounds i8, ptr %4, i64 %7
  %9 = tail call noundef zeroext i1 @_ZN3qpl3jobL16is_job_submittedEPK7qpl_job(ptr noundef %0)
  br i1 %9, label %10, label %180

10:                                               ; preds = %1
  %11 = load i8, ptr %3, align 1, !tbaa !27
  switch i8 %11, label %.thread [
    i8 0, label %12
    i8 -1, label %15
    i8 3, label %18
    i8 -125, label %18
  ]

12:                                               ; preds = %10
  %13 = getelementptr inbounds i8, ptr %2, i64 39704
  %14 = load i32, ptr %13, align 8, !tbaa !28
  %.not = icmp eq i32 %14, 0
  br i1 %.not, label %180, label %.thread

15:                                               ; preds = %10
  %16 = getelementptr inbounds i8, ptr %2, i64 68
  %17 = load i32, ptr %16, align 1, !tbaa !29
  tail call void @_ZN3qpl3jobL19update_input_streamEP7qpl_jobj(ptr noundef %0, i32 noundef %17) #4
  br label %180

18:                                               ; preds = %10, %10
  %19 = getelementptr inbounds i8, ptr %2, i64 39712
  %20 = load i8, ptr %19, align 8, !tbaa !30, !range !31, !noundef !32
  %21 = trunc nuw i8 %20 to i1
  br i1 %21, label %.thread, label %22

22:                                               ; preds = %18
  %23 = getelementptr inbounds i8, ptr %2, i64 72
  %24 = load i64, ptr %23, align 1, !tbaa !33
  %.not138 = icmp eq i64 %24, 0
  br i1 %.not138, label %.thread, label %25

25:                                               ; preds = %22
  %26 = inttoptr i64 %24 to ptr
  %27 = icmp eq i8 %11, 3
  %28 = load volatile i8, ptr %26, align 1, !tbaa !34
  br i1 %27, label %30, label %29

29:                                               ; preds = %25
  store volatile i8 %28, ptr %26, align 1, !tbaa !34
  br label %30

30:                                               ; preds = %25, %29
  %31 = getelementptr inbounds i8, ptr %0, i64 188
  %32 = load i32, ptr %31, align 4, !tbaa !35
  %33 = tail call noundef i32 @_ZN3qpl2ml4util18process_descriptorI10qpl_statusLNS1_16execution_mode_tE1EEET_P13hw_descriptorPV20hw_completion_recordi(ptr noundef nonnull %2, ptr noundef nonnull %3, i32 noundef %32) #4
  %.not139 = icmp eq i32 %33, 0
  br i1 %.not139, label %34, label %180

34:                                               ; preds = %30
  store i8 1, ptr %19, align 8, !tbaa !30
  br label %180

.thread:                                          ; preds = %10, %12, %22, %18
  %35 = getelementptr inbounds i8, ptr %0, i64 32
  %36 = load i32, ptr %35, align 8, !tbaa !45
  %37 = icmp eq i32 %36, 1
  br i1 %37, label %38, label %58

38:                                               ; preds = %.thread
  %39 = tail call noundef zeroext i1 @_ZN3qpl3jobL26is_canned_mode_compressionEPK7qpl_job(ptr noundef nonnull %0) #4
  br i1 %39, label %40, label %56

40:                                               ; preds = %38
  %41 = tail call noundef i32 @_ZN3qpl2ml4utilL25convert_status_iaa_to_qplEPVK20hw_completion_record(ptr noundef nonnull %3)
  %42 = icmp eq i32 %41, 225
  %spec.store.select = select i1 %42, i32 2, i32 %41
  %.not151 = icmp eq i32 %spec.store.select, 0
  br i1 %.not151, label %43, label %180

43:                                               ; preds = %40
  %44 = getelementptr inbounds i8, ptr %0, i64 8
  %45 = load i32, ptr %44, align 8, !tbaa !46
  tail call void @_ZN3qpl3jobL19update_input_streamEP7qpl_jobj(ptr noundef nonnull %0, i32 noundef %45) #4
  %46 = getelementptr inbounds i8, ptr %2, i64 88
  %47 = load i32, ptr %46, align 1, !tbaa !47
  %48 = getelementptr inbounds i8, ptr %2, i64 92
  %49 = load i8, ptr %48, align 1, !tbaa !48
  %50 = zext i8 %49 to i32
  tail call void @_ZN3qpl3jobL20update_output_streamEP7qpl_jobjj(ptr noundef nonnull %0, i32 noundef %47, i32 noundef %50) #4
  %51 = getelementptr inbounds i8, ptr %2, i64 96
  %52 = load i32, ptr %51, align 1, !tbaa !49
  %53 = getelementptr inbounds i8, ptr %2, i64 94
  %54 = load i16, ptr %53, align 1, !tbaa !50
  %55 = zext i16 %54 to i32
  tail call void @_ZN3qpl3jobL16update_checksumsEP7qpl_jobjj(ptr noundef nonnull %0, i32 noundef %52, i32 noundef %55) #4
  br label %180

56:                                               ; preds = %38
  %57 = tail call noundef i32 @_ZN3qpl2ml21hw_check_compress_jobEP7qpl_job(ptr noundef nonnull %0)
  br label %180

58:                                               ; preds = %.thread
  %59 = tail call noundef zeroext i1 @_ZN3qpl3jobL28is_canned_mode_decompressionEPK7qpl_job(ptr noundef nonnull %0) #4
  br i1 %59, label %60, label %81

60:                                               ; preds = %58
  %61 = tail call noundef i32 @_ZN3qpl2ml4utilL25convert_status_iaa_to_qplEPVK20hw_completion_record(ptr noundef nonnull %3)
  %.not150 = icmp eq i32 %61, 0
  br i1 %.not150, label %62, label %180

62:                                               ; preds = %60
  %63 = getelementptr inbounds i8, ptr %2, i64 108
  %64 = load i32, ptr %63, align 1, !tbaa !51
  %65 = getelementptr inbounds i8, ptr %2, i64 100
  %66 = load i32, ptr %65, align 1, !tbaa !52
  %67 = getelementptr inbounds i8, ptr %2, i64 104
  %68 = load i32, ptr %67, align 1, !tbaa !53
  tail call void @_ZN3qpl3jobL17update_aggregatesEP7qpl_jobjjj(ptr noundef nonnull %0, i32 noundef %64, i32 noundef %66, i32 noundef %68) #4
  %69 = getelementptr inbounds i8, ptr %2, i64 96
  %70 = load i32, ptr %69, align 1, !tbaa !49
  %71 = getelementptr inbounds i8, ptr %2, i64 94
  %72 = load i16, ptr %71, align 1, !tbaa !50
  %73 = zext i16 %72 to i32
  tail call void @_ZN3qpl3jobL16update_checksumsEP7qpl_jobjj(ptr noundef nonnull %0, i32 noundef %70, i32 noundef %73) #4
  %74 = getelementptr inbounds i8, ptr %2, i64 32
  %75 = load i32, ptr %74, align 1, !tbaa !54
  tail call void @_ZN3qpl3jobL19update_input_streamEP7qpl_jobj(ptr noundef nonnull %0, i32 noundef %75) #4
  %76 = getelementptr inbounds i8, ptr %2, i64 88
  %77 = load i32, ptr %76, align 1, !tbaa !47
  %78 = getelementptr inbounds i8, ptr %2, i64 92
  %79 = load i8, ptr %78, align 1, !tbaa !48
  %80 = zext i8 %79 to i32
  tail call void @_ZN3qpl3jobL20update_output_streamEP7qpl_jobjj(ptr noundef nonnull %0, i32 noundef %77, i32 noundef %80) #4
  br label %180

81:                                               ; preds = %58
  %82 = load i8, ptr %3, align 1, !tbaa !27
  switch i8 %82, label %83 [
    i8 1, label %85
    i8 11, label %85
  ]

83:                                               ; preds = %81
  %84 = tail call noundef i32 @_ZN3qpl2ml4utilL25convert_status_iaa_to_qplEPVK20hw_completion_record(ptr noundef nonnull %3)
  br label %180

85:                                               ; preds = %81, %81
  %86 = getelementptr inbounds i8, ptr %2, i64 65
  %87 = load i8, ptr %86, align 1, !tbaa !55
  %.not142 = icmp eq i8 %87, 0
  br i1 %.not142, label %91, label %88

88:                                               ; preds = %85
  %89 = zext i8 %87 to i32
  %90 = add nuw nsw i32 %89, 200
  br label %180

91:                                               ; preds = %85
  %92 = getelementptr inbounds i8, ptr %0, i64 36
  %93 = load i32, ptr %92, align 4, !tbaa !56
  %94 = and i32 %93, 513
  %95 = icmp eq i32 %94, 512
  br i1 %95, label %96, label %.thread155

96:                                               ; preds = %91
  %97 = getelementptr inbounds i8, ptr %0, i64 105
  %98 = load i8, ptr %97, align 1, !tbaa !57
  %.not143 = icmp eq i8 %98, 0
  br i1 %.not143, label %.thread153, label %99

99:                                               ; preds = %96
  %100 = getelementptr inbounds i8, ptr %8, i64 168
  tail call void @hw_iaa_aecs_decompress_clean_input_accumulator(ptr noundef nonnull %100)
  %.pre = load i32, ptr %92, align 4, !tbaa !56
  %.pre152 = and i32 %.pre, 513
  %101 = icmp eq i32 %.pre152, 512
  br i1 %101, label %.thread153, label %.thread155

.thread155:                                       ; preds = %91, %99
  %102 = getelementptr inbounds i8, ptr %2, i64 4
  %103 = load i32, ptr %102, align 1, !tbaa !58
  %104 = lshr i32 %103, 18
  %105 = and i32 %104, 3
  switch i32 %105, label %.fold.split [
    i32 1, label %110
    i32 2, label %106
  ]

106:                                              ; preds = %.thread155
  %107 = load i8, ptr %3, align 1, !tbaa !27
  %108 = icmp eq i8 %107, 11
  %109 = zext i1 %108 to i32
  br label %110

.fold.split:                                      ; preds = %.thread155
  br label %110

110:                                              ; preds = %.thread155, %.fold.split, %106
  %111 = phi i32 [ %105, %.thread155 ], [ %109, %106 ], [ 0, %.fold.split ]
  %112 = getelementptr inbounds i8, ptr %2, i64 39648
  store i32 %111, ptr %112, align 8, !tbaa !59
  %113 = getelementptr inbounds i8, ptr %2, i64 39656
  %114 = load i32, ptr %113, align 8, !tbaa !60
  %115 = load i32, ptr %5, align 4, !tbaa !5
  %116 = sub i32 %114, %115
  store i32 %116, ptr %5, align 4, !tbaa !5
  br label %.thread153

.thread153:                                       ; preds = %96, %110, %99
  %117 = load i32, ptr %35, align 8, !tbaa !45
  %118 = icmp eq i32 %117, 5
  br i1 %118, label %131, label %119

119:                                              ; preds = %.thread153
  %120 = getelementptr inbounds i8, ptr %2, i64 108
  %121 = load i32, ptr %120, align 1, !tbaa !51
  %122 = getelementptr inbounds i8, ptr %2, i64 100
  %123 = load i32, ptr %122, align 1, !tbaa !52
  %124 = getelementptr inbounds i8, ptr %2, i64 104
  %125 = load i32, ptr %124, align 1, !tbaa !53
  tail call void @_ZN3qpl3jobL17update_aggregatesEP7qpl_jobjjj(ptr noundef nonnull %0, i32 noundef %121, i32 noundef %123, i32 noundef %125) #4
  %126 = getelementptr inbounds i8, ptr %2, i64 96
  %127 = load i32, ptr %126, align 1, !tbaa !49
  %128 = getelementptr inbounds i8, ptr %2, i64 94
  %129 = load i16, ptr %128, align 1, !tbaa !50
  %130 = zext i16 %129 to i32
  tail call void @_ZN3qpl3jobL16update_checksumsEP7qpl_jobjj(ptr noundef nonnull %0, i32 noundef %127, i32 noundef %130) #4
  br label %134

131:                                              ; preds = %.thread153
  %132 = getelementptr i8, ptr %2, i64 104
  %133 = load i64, ptr %132, align 1
  tail call void @_ZN3qpl3jobL10update_crcEP7qpl_jobm(ptr noundef nonnull %0, i64 noundef %133) #4
  br label %134

134:                                              ; preds = %131, %119
  %135 = getelementptr inbounds i8, ptr %0, i64 24
  %136 = load i32, ptr %135, align 8, !tbaa !61
  %137 = getelementptr inbounds i8, ptr %2, i64 48
  %138 = load i32, ptr %137, align 1, !tbaa !62
  %139 = getelementptr inbounds i8, ptr %2, i64 88
  %140 = load i32, ptr %139, align 1, !tbaa !47
  %141 = getelementptr inbounds i8, ptr %2, i64 92
  %142 = load i8, ptr %141, align 1, !tbaa !48
  %143 = zext i8 %142 to i32
  tail call void @_ZN3qpl3jobL20update_output_streamEP7qpl_jobjj(ptr noundef nonnull %0, i32 noundef %140, i32 noundef %143) #4
  %144 = load i8, ptr %3, align 1, !tbaa !27
  switch i8 %144, label %148 [
    i8 1, label %.sink.split
    i8 11, label %145
  ]

145:                                              ; preds = %134
  br label %.sink.split

.sink.split:                                      ; preds = %134, %145
  %.sink157 = phi i64 [ 68, %145 ], [ 32, %134 ]
  %146 = getelementptr inbounds i8, ptr %2, i64 %.sink157
  %147 = load i32, ptr %146, align 1, !tbaa !63
  br label %148

148:                                              ; preds = %.sink.split, %134
  %.0126 = phi i32 [ 0, %134 ], [ %147, %.sink.split ]
  %149 = getelementptr inbounds i8, ptr %2, i64 38592
  %150 = getelementptr inbounds i8, ptr %2, i64 39616
  %151 = load i32, ptr %150, align 8, !tbaa !64
  %.not144 = icmp eq i32 %151, 0
  br i1 %.not144, label %162, label %152

152:                                              ; preds = %148
  %153 = icmp ugt i32 %.0126, %151
  br i1 %153, label %180, label %154

154:                                              ; preds = %152
  %155 = sub i32 %151, %.0126
  store i32 %155, ptr %150, align 8, !tbaa !64
  %.not145 = icmp eq i32 %151, %.0126
  %.not146 = icmp eq i8 %144, 11
  %or.cond = or i1 %.not146, %.not145
  br i1 %or.cond, label %156, label %180

156:                                              ; preds = %154
  br i1 %.not145, label %163, label %157

157:                                              ; preds = %156
  %158 = zext i32 %.0126 to i64
  %159 = getelementptr inbounds i8, ptr %149, i64 %158
  %160 = zext i32 %155 to i64
  %161 = getelementptr inbounds i8, ptr %159, i64 %160
  tail call void @_ZN3qpl7core_sw4util4moveIPhS3_EEvT_S4_T0_(ptr noundef nonnull %159, ptr noundef nonnull %161, ptr noundef nonnull %149) #4
  br label %163

162:                                              ; preds = %148
  tail call void @_ZN3qpl3jobL19update_input_streamEP7qpl_jobj(ptr noundef nonnull %0, i32 noundef %.0126) #4
  br label %163

163:                                              ; preds = %156, %157, %162
  %164 = load i8, ptr %3, align 1, !tbaa !27
  %165 = icmp eq i8 %164, 11
  br i1 %165, label %166, label %171

166:                                              ; preds = %163
  %167 = load i32, ptr %139, align 1, !tbaa !47
  %168 = icmp eq i32 %167, 0
  br i1 %168, label %180, label %169

169:                                              ; preds = %166
  %170 = icmp eq i32 %136, %138
  br i1 %170, label %180, label %171

171:                                              ; preds = %169, %163
  %172 = getelementptr inbounds i8, ptr %0, i64 8
  %173 = load i32, ptr %172, align 8, !tbaa !46
  %.not148 = icmp eq i32 %173, 0
  br i1 %.not148, label %180, label %174

174:                                              ; preds = %171
  %175 = load i32, ptr %92, align 4, !tbaa !56
  %176 = and i32 %175, 2
  %177 = load ptr, ptr %0, align 8, !tbaa !65
  %178 = tail call i32 @hw_submit_decompress_job(ptr noundef nonnull %0, i32 noundef %176, ptr noundef %177, i32 noundef %173)
  %179 = tail call i32 @llvm.umax.i32(i32 %178, i32 1)
  br label %180

180:                                              ; preds = %154, %174, %152, %166, %169, %171, %43, %40, %34, %30, %12, %1, %60, %88, %83, %62, %56, %15
  %.5 = phi i32 [ 0, %15 ], [ %57, %56 ], [ 0, %62 ], [ %61, %60 ], [ %84, %83 ], [ %90, %88 ], [ 7, %1 ], [ 1, %12 ], [ 1, %34 ], [ 5, %30 ], [ 0, %43 ], [ %spec.store.select, %40 ], [ %179, %174 ], [ 6, %152 ], [ 225, %166 ], [ 2, %169 ], [ 0, %171 ], [ 6, %154 ]
  ret i32 %.5
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN3qpl3jobL16is_job_submittedEPK7qpl_job(ptr noundef) local_unnamed_addr #0

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN3qpl3jobL26is_canned_mode_compressionEPK7qpl_job(ptr noundef) local_unnamed_addr #0

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN3qpl3jobL28is_canned_mode_decompressionEPK7qpl_job(ptr noundef) local_unnamed_addr #0

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZN3qpl3jobL17update_aggregatesEP7qpl_jobjjj(ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

declare void @hw_iaa_aecs_decompress_clean_input_accumulator(ptr noundef) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZN3qpl3jobL10update_crcEP7qpl_jobm(ptr noundef, i64 noundef) local_unnamed_addr #0

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3qpl7core_sw4util4moveIPhS3_EEvT_S4_T0_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

declare i32 @hw_submit_decompress_job(ptr noundef, i32 noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.umax.i32(i32, i32) #3

attributes #0 = { inlinehint 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 #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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !8, i64 39652}
!6 = !{!"_ZTS12qpl_hw_state", !7, i64 0, !13, i64 64, !9, i64 128, !9, i64 10880, !15, i64 38592, !16, i64 39624, !8, i64 39648, !8, i64 39652, !8, i64 39656, !20, i64 39660, !8, i64 39664, !21, i64 39672, !8, i64 39704, !8, i64 39708, !17, i64 39712, !17, i64 39713, !23, i64 39716, !24, i64 39720, !25, i64 39728}
!7 = !{!"_ZTS34hw_decompress_analytics_descriptor", !8, i64 0, !8, i64 4, !11, i64 8, !11, i64 16, !11, i64 24, !8, i64 32, !12, i64 36, !12, i64 38, !11, i64 40, !8, i64 48, !8, i64 52, !8, i64 56, !8, i64 60}
!8 = !{!"int", !9, i64 0}
!9 = !{!"omnipotent char", !10, i64 0}
!10 = !{!"Simple C++ TBAA"}
!11 = !{!"any pointer", !9, i64 0}
!12 = !{!"short", !9, i64 0}
!13 = !{!"_ZTS24hw_iaa_completion_record", !9, i64 0, !9, i64 1, !9, i64 2, !9, i64 3, !8, i64 4, !14, i64 8, !14, i64 16, !8, i64 24, !9, i64 28, !9, i64 29, !12, i64 30, !8, i64 32, !8, i64 36, !8, i64 40, !8, i64 44, !14, i64 48, !14, i64 56}
!14 = !{!"long", !9, i64 0}
!15 = !{!"_ZTS10qpl_buffer", !9, i64 0, !8, i64 1024, !8, i64 1028}
!16 = !{!"_ZTS21qpl_execution_history", !17, i64 0, !18, i64 4, !19, i64 8, !8, i64 12, !11, i64 16}
!17 = !{!"bool", !9, i64 0}
!18 = !{!"_ZTS23qpl_task_execution_step", !9, i64 0}
!19 = !{!"_ZTS14qpl_comp_style", !9, i64 0}
!20 = !{!"_ZTS15hw_huffman_code", !12, i64 0, !9, i64 2, !9, i64 3}
!21 = !{!"_ZTS22hw_accelerator_context", !22, i64 0, !11, i64 24}
!22 = !{!"_ZTS20hw_device_properties", !8, i64 0, !8, i64 4, !8, i64 8, !17, i64 12, !17, i64 13, !17, i64 14, !17, i64 15, !17, i64 16, !17, i64 17, !17, i64 18, !17, i64 19, !17, i64 20, !17, i64 21, !17, i64 22}
!23 = !{!"_ZTS25hw_multidescriptor_status", !9, i64 0}
!24 = !{!"_ZTS10qpl_status", !9, i64 0}
!25 = !{!"_ZTS20qpl_execution_record", !26, i64 0, !8, i64 8, !8, i64 12}
!26 = !{!"double", !9, i64 0}
!27 = !{!13, !9, i64 0}
!28 = !{!6, !8, i64 39704}
!29 = !{!13, !8, i64 4}
!30 = !{!6, !17, i64 39712}
!31 = !{i8 0, i8 2}
!32 = !{}
!33 = !{!13, !14, i64 8}
!34 = !{!9, !9, i64 0}
!35 = !{!36, !8, i64 188}
!36 = !{!"_ZTS7qpl_job", !11, i64 0, !8, i64 8, !8, i64 12, !11, i64 16, !8, i64 24, !8, i64 28, !37, i64 32, !8, i64 36, !8, i64 40, !8, i64 44, !8, i64 48, !38, i64 52, !39, i64 56, !11, i64 64, !11, i64 72, !40, i64 80, !11, i64 88, !8, i64 96, !8, i64 100, !9, i64 104, !9, i64 105, !9, i64 106, !14, i64 112, !14, i64 120, !11, i64 128, !8, i64 136, !8, i64 140, !8, i64 144, !8, i64 148, !41, i64 152, !8, i64 156, !8, i64 160, !8, i64 164, !8, i64 168, !42, i64 172, !8, i64 176, !8, i64 180, !8, i64 184, !8, i64 188, !43, i64 192}
!37 = !{!"_ZTS13qpl_operation", !9, i64 0}
!38 = !{!"_ZTS22qpl_compression_levels", !9, i64 0}
!39 = !{!"_ZTS19qpl_statistics_mode", !9, i64 0}
!40 = !{!"_ZTS19qpl_mini_block_size", !9, i64 0}
!41 = !{!"_ZTS14qpl_out_format", !9, i64 0}
!42 = !{!"_ZTS10qpl_parser", !9, i64 0}
!43 = !{!"_ZTS12qpl_aux_data", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !44, i64 40}
!44 = !{!"_ZTS10qpl_path_t", !9, i64 0}
!45 = !{!36, !37, i64 32}
!46 = !{!36, !8, i64 8}
!47 = !{!13, !8, i64 24}
!48 = !{!13, !9, i64 28}
!49 = !{!13, !8, i64 32}
!50 = !{!13, !12, i64 30}
!51 = !{!13, !8, i64 44}
!52 = !{!13, !8, i64 36}
!53 = !{!13, !8, i64 40}
!54 = !{!7, !8, i64 32}
!55 = !{!13, !9, i64 1}
!56 = !{!36, !8, i64 36}
!57 = !{!36, !9, i64 105}
!58 = !{!7, !8, i64 4}
!59 = !{!6, !8, i64 39648}
!60 = !{!6, !8, i64 39656}
!61 = !{!36, !8, i64 24}
!62 = !{!7, !8, i64 48}
!63 = !{!8, !8, i64 0}
!64 = !{!6, !8, i64 39616}
!65 = !{!36, !11, i64 0}


; Effective O3 passes: AggressiveInstCombinePass,BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass