; LLVM IR from trabucayre/openFPGALoader :: src/lattice.ll (ZN7Lattice23program_pubkey_MachXO3DEv)

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

%class.RawParser = type <{ %class.ConfigBitstreamParser, i8, [7 x i8] }>
%class.ConfigBitstreamParser = type { ptr, %"class.std::__cxx11::basic_string", i32, i32, i8, %"class.std::vector", %"class.std::__cxx11::basic_string", %"class.std::map.81" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::map.81" = type { %"class.std::_Rb_tree.82" }
%"class.std::_Rb_tree.82" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::allocator.0" = type { i8 }
%class.Device = type <{ ptr, ptr, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i32, i8, i8, i8, i8 }>

@.str.613 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.614 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.615 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.616 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.622 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.627 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.633 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.639 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.650 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.724 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.725 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.732 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.736 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.737 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.738 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.757 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.758 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.759 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.760 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.761 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.762 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.763 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.764 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.765 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.766 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.767 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.768 = external hidden unnamed_addr constant [18 x i8], align 1

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #1 align 2

declare void @_Z9printInfoRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext) #3

declare void @_Z10printErrorRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext) #3

declare i32 @printf(ptr noundef, ...) #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZN7Lattice13readStatusRegEv(ptr noundef nonnull align 8 dereferenceable(152)) #2 align 2

declare void @_Z12printSuccessRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7Lattice14displayReadRegEm(ptr noundef nonnull align 8 dereferenceable(152), i64 noundef) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN7Lattice5wr_rdEhPhiS0_ib(ptr noundef nonnull align 8 dereferenceable(152), i8 noundef zeroext, ptr noundef, i32 noundef, ptr noundef, i32 noundef, i1 noundef zeroext) #2 align 2

declare void @_ZN4Jtag9set_stateENS_10tapState_tEh(ptr noundef nonnull align 8 dereferenceable(193), i32 noundef, i8 noundef zeroext) #3

declare void @_ZN4Jtag9toggleClkEi(ptr noundef nonnull align 8 dereferenceable(193), i32 noundef) #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN7Lattice9EnableISCEh(ptr noundef nonnull align 8 dereferenceable(152), i8 noundef zeroext) #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN7Lattice10flashEraseEj(ptr noundef nonnull align 8 dereferenceable(152), i32 noundef) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK21ConfigBitstreamParser7getDataEv(ptr noundef nonnull align 8 dereferenceable(160)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN21ConfigBitstreamParser9getLengthEv(ptr noundef nonnull align 8 dereferenceable(160)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN7Lattice10DisableISCEv(ptr noundef nonnull align 8 dereferenceable(152)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN7Lattice16writeProgramDoneEv(ptr noundef nonnull align 8 dereferenceable(152)) #2 align 2

declare void @_ZN9RawParserC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext) unnamed_addr #3

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN7Lattice23program_pubkey_MachXO3DEv(ptr noundef nonnull align 8 dereferenceable(152) %0) #2 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca i1, align 1
  %3 = alloca ptr, align 8
  %4 = alloca i8, align 1
  %5 = alloca i8, align 1
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca [64 x i8], align 16
  %10 = alloca [64 x i8], align 16
  %11 = alloca %class.RawParser, align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::allocator.0", align 1
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::allocator.0", align 1
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::allocator.0", align 1
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::allocator.0", align 1
  %22 = alloca i32, align 4
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::allocator.0", align 1
  %25 = alloca ptr, align 8
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::allocator.0", align 1
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::allocator.0", align 1
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::allocator.0", align 1
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::allocator.0", align 1
  %34 = alloca i32, align 4
  %35 = alloca [2 x i8], align 1
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::allocator.0", align 1
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::allocator.0", align 1
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::allocator.0", align 1
  %42 = alloca %"class.std::__cxx11::basic_string", align 8
  %43 = alloca %"class.std::allocator.0", align 1
  %44 = alloca %"class.std::__cxx11::basic_string", align 8
  %45 = alloca %"class.std::allocator.0", align 1
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca %"class.std::allocator.0", align 1
  %48 = alloca i8, align 1
  %49 = alloca %"class.std::__cxx11::basic_string", align 8
  %50 = alloca %"class.std::allocator.0", align 1
  %51 = alloca %"class.std::__cxx11::basic_string", align 8
  %52 = alloca %"class.std::allocator.0", align 1
  %53 = alloca %"class.std::__cxx11::basic_string", align 8
  %54 = alloca %"class.std::allocator.0", align 1
  %55 = alloca %"class.std::__cxx11::basic_string", align 8
  %56 = alloca %"class.std::allocator.0", align 1
  %57 = alloca %"class.std::__cxx11::basic_string", align 8
  %58 = alloca %"class.std::allocator.0", align 1
  %59 = alloca %"class.std::__cxx11::basic_string", align 8
  %60 = alloca %"class.std::allocator.0", align 1
  store ptr %0, ptr %3, align 8, !tbaa !5
  %61 = load ptr, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %4) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %5) #6
  store i8 1, ptr %5, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr %9) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr %10) #6
  call void @llvm.lifetime.start.p0(i64 168, ptr %11) #6
  %62 = getelementptr inbounds %class.Device, ptr %61, i32 0, i32 2
  call void @_ZN9RawParserC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(161) %11, ptr noundef nonnull align 8 dereferenceable(32) %62, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 32, ptr %12) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef @.str.613, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %63 unwind label %80

63:                                               ; preds = %1
  invoke void @_Z9printInfoRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %12, i1 noundef zeroext false)
          to label %64 unwind label %84

64:                                               ; preds = %63
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %16) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef @.str.614, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %65 unwind label %89

65:                                               ; preds = %64
  invoke void @_Z12printSuccessRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %16, i1 noundef zeroext true)
          to label %66 unwind label %93

66:                                               ; preds = %65
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #6
  %67 = invoke noundef i32 @_ZN9RawParser5parseEv(ptr noundef nonnull align 8 dereferenceable(161) %11)
          to label %68 unwind label %98

68:                                               ; preds = %66
  %69 = icmp ne i32 %67, 0
  %70 = zext i1 %69 to i8
  store i8 %70, ptr %4, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef @.str.615, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %71 unwind label %102

71:                                               ; preds = %68
  invoke void @_Z9printInfoRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %18, i1 noundef zeroext false)
          to label %72 unwind label %106

72:                                               ; preds = %71
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #6
  %73 = load i8, ptr %4, align 1, !tbaa !9, !range !11, !noundef !12
  %74 = trunc i8 %73 to i1
  %75 = zext i1 %74 to i32
  %76 = icmp eq i32 %75, 1
  br i1 %76, label %77, label %120

77:                                               ; preds = %72
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef @.str.616, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %78 unwind label %111

78:                                               ; preds = %77
  invoke void @_Z10printErrorRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %20, i1 noundef zeroext true)
          to label %79 unwind label %115

79:                                               ; preds = %78
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #6
  store i1 false, ptr %2, align 1
  store i32 1, ptr %22, align 4
  br label %670

80:                                               ; preds = %1
  %81 = landingpad { ptr, i32 }
          cleanup
  %82 = extractvalue { ptr, i32 } %81, 0
  store ptr %82, ptr %14, align 8
  %83 = extractvalue { ptr, i32 } %81, 1
  store i32 %83, ptr %15, align 4
  br label %88

84:                                               ; preds = %63
  %85 = landingpad { ptr, i32 }
          cleanup
  %86 = extractvalue { ptr, i32 } %85, 0
  store ptr %86, ptr %14, align 8
  %87 = extractvalue { ptr, i32 } %85, 1
  store i32 %87, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #6
  br label %88

88:                                               ; preds = %84, %80
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #6
  br label %672

89:                                               ; preds = %64
  %90 = landingpad { ptr, i32 }
          cleanup
  %91 = extractvalue { ptr, i32 } %90, 0
  store ptr %91, ptr %14, align 8
  %92 = extractvalue { ptr, i32 } %90, 1
  store i32 %92, ptr %15, align 4
  br label %97

93:                                               ; preds = %65
  %94 = landingpad { ptr, i32 }
          cleanup
  %95 = extractvalue { ptr, i32 } %94, 0
  store ptr %95, ptr %14, align 8
  %96 = extractvalue { ptr, i32 } %94, 1
  store i32 %96, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #6
  br label %97

97:                                               ; preds = %93, %89
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #6
  br label %672

98:                                               ; preds = %66
  %99 = landingpad { ptr, i32 }
          cleanup
  %100 = extractvalue { ptr, i32 } %99, 0
  store ptr %100, ptr %14, align 8
  %101 = extractvalue { ptr, i32 } %99, 1
  store i32 %101, ptr %15, align 4
  br label %672

102:                                              ; preds = %68
  %103 = landingpad { ptr, i32 }
          cleanup
  %104 = extractvalue { ptr, i32 } %103, 0
  store ptr %104, ptr %14, align 8
  %105 = extractvalue { ptr, i32 } %103, 1
  store i32 %105, ptr %15, align 4
  br label %110

106:                                              ; preds = %71
  %107 = landingpad { ptr, i32 }
          cleanup
  %108 = extractvalue { ptr, i32 } %107, 0
  store ptr %108, ptr %14, align 8
  %109 = extractvalue { ptr, i32 } %107, 1
  store i32 %109, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #6
  br label %110

110:                                              ; preds = %106, %102
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #6
  br label %672

111:                                              ; preds = %77
  %112 = landingpad { ptr, i32 }
          cleanup
  %113 = extractvalue { ptr, i32 } %112, 0
  store ptr %113, ptr %14, align 8
  %114 = extractvalue { ptr, i32 } %112, 1
  store i32 %114, ptr %15, align 4
  br label %119

115:                                              ; preds = %78
  %116 = landingpad { ptr, i32 }
          cleanup
  %117 = extractvalue { ptr, i32 } %116, 0
  store ptr %117, ptr %14, align 8
  %118 = extractvalue { ptr, i32 } %116, 1
  store i32 %118, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #6
  br label %119

119:                                              ; preds = %115, %111
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #6
  br label %672

120:                                              ; preds = %72
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef @.str.614, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %121 unwind label %123

121:                                              ; preds = %120
  invoke void @_Z12printSuccessRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %23, i1 noundef zeroext true)
          to label %122 unwind label %127

122:                                              ; preds = %121
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #6
  br label %132

123:                                              ; preds = %120
  %124 = landingpad { ptr, i32 }
          cleanup
  %125 = extractvalue { ptr, i32 } %124, 0
  store ptr %125, ptr %14, align 8
  %126 = extractvalue { ptr, i32 } %124, 1
  store i32 %126, ptr %15, align 4
  br label %131

127:                                              ; preds = %121
  %128 = landingpad { ptr, i32 }
          cleanup
  %129 = extractvalue { ptr, i32 } %128, 0
  store ptr %129, ptr %14, align 8
  %130 = extractvalue { ptr, i32 } %128, 1
  store i32 %130, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #6
  br label %131

131:                                              ; preds = %127, %123
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #6
  br label %672

132:                                              ; preds = %122
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #6
  %133 = invoke noundef ptr @_ZNK21ConfigBitstreamParser7getDataEv(ptr noundef nonnull align 8 dereferenceable(160) %11)
          to label %134 unwind label %182

134:                                              ; preds = %132
  store ptr %133, ptr %25, align 8, !tbaa !5
  %135 = invoke noundef i32 @_ZN21ConfigBitstreamParser9getLengthEv(ptr noundef nonnull align 8 dereferenceable(160) %11)
          to label %136 unwind label %182

136:                                              ; preds = %134
  %137 = sdiv i32 %135, 8
  store i32 %137, ptr %6, align 4, !tbaa !13
  %138 = load ptr, ptr %25, align 8, !tbaa !5
  %139 = getelementptr inbounds i8, ptr %138, i64 0
  %140 = load i8, ptr %139, align 1, !tbaa !15
  %141 = zext i8 %140 to i32
  %142 = icmp eq i32 %141, 15
  br i1 %142, label %143, label %256

143:                                              ; preds = %136
  %144 = load ptr, ptr %25, align 8, !tbaa !5
  %145 = getelementptr inbounds i8, ptr %144, i64 1
  %146 = load i8, ptr %145, align 1, !tbaa !15
  %147 = zext i8 %146 to i32
  %148 = icmp eq i32 %147, 240
  br i1 %148, label %149, label %256

149:                                              ; preds = %143
  store i32 2, ptr %7, align 4, !tbaa !13
  br label %150

150:                                              ; preds = %190, %149
  %151 = load i32, ptr %7, align 4, !tbaa !13
  %152 = load i32, ptr %6, align 4, !tbaa !13
  %153 = icmp slt i32 %151, %152
  br i1 %153, label %154, label %193

154:                                              ; preds = %150
  %155 = load ptr, ptr %25, align 8, !tbaa !5
  %156 = load i32, ptr %7, align 4, !tbaa !13
  %157 = sext i32 %156 to i64
  %158 = getelementptr inbounds i8, ptr %155, i64 %157
  %159 = load i8, ptr %158, align 1, !tbaa !15
  %160 = zext i8 %159 to i32
  %161 = icmp eq i32 %160, 240
  br i1 %161, label %162, label %189

162:                                              ; preds = %154
  %163 = load ptr, ptr %25, align 8, !tbaa !5
  %164 = load i32, ptr %7, align 4, !tbaa !13
  %165 = add nsw i32 %164, 1
  %166 = sext i32 %165 to i64
  %167 = getelementptr inbounds i8, ptr %163, i64 %166
  %168 = load i8, ptr %167, align 1, !tbaa !15
  %169 = zext i8 %168 to i32
  %170 = icmp eq i32 %169, 15
  br i1 %170, label %171, label %189

171:                                              ; preds = %162
  %172 = getelementptr inbounds %class.Device, ptr %61, i32 0, i32 6
  %173 = load i8, ptr %172, align 1, !tbaa !16, !range !11, !noundef !12
  %174 = trunc i8 %173 to i1
  br i1 %174, label %175, label %186

175:                                              ; preds = %171
  %176 = load i32, ptr %7, align 4, !tbaa !13
  %177 = sub nsw i32 %176, 2
  %178 = load ptr, ptr %25, align 8, !tbaa !5
  %179 = getelementptr inbounds i8, ptr %178, i64 2
  %180 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.757, i32 noundef %177, ptr noundef %179)
          to label %181 unwind label %182

181:                                              ; preds = %175
  br label %186

182:                                              ; preds = %408, %381, %374, %360, %354, %347, %344, %340, %337, %334, %330, %327, %324, %320, %317, %314, %311, %279, %277, %272, %268, %252, %240, %233, %231, %220, %217, %204, %175, %134, %132
  %183 = landingpad { ptr, i32 }
          cleanup
  %184 = extractvalue { ptr, i32 } %183, 0
  store ptr %184, ptr %14, align 8
  %185 = extractvalue { ptr, i32 } %183, 1
  store i32 %185, ptr %15, align 4
  br label %669

186:                                              ; preds = %181, %171
  %187 = load i32, ptr %7, align 4, !tbaa !13
  %188 = add nsw i32 %187, 2
  store i32 %188, ptr %7, align 4, !tbaa !13
  br label %193

189:                                              ; preds = %162, %154
  br label %190

190:                                              ; preds = %189
  %191 = load i32, ptr %7, align 4, !tbaa !13
  %192 = add nsw i32 %191, 1
  store i32 %192, ptr %7, align 4, !tbaa !13
  br label %150, !llvm.loop !22

193:                                              ; preds = %186, %150
  %194 = getelementptr inbounds [64 x i8], ptr %9, i64 0, i64 0
  %195 = load ptr, ptr %25, align 8, !tbaa !5
  %196 = load i32, ptr %7, align 4, !tbaa !13
  %197 = sext i32 %196 to i64
  %198 = getelementptr inbounds i8, ptr %195, i64 %197
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %194, ptr align 1 %198, i64 64, i1 false)
  %199 = load i32, ptr %7, align 4, !tbaa !13
  %200 = add nsw i32 %199, 64
  store i32 %200, ptr %7, align 4, !tbaa !13
  %201 = getelementptr inbounds %class.Device, ptr %61, i32 0, i32 6
  %202 = load i8, ptr %201, align 1, !tbaa !16, !range !11, !noundef !12
  %203 = trunc i8 %202 to i1
  br i1 %203, label %204, label %255

204:                                              ; preds = %193
  %205 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.758)
          to label %206 unwind label %182

206:                                              ; preds = %204
  store i32 0, ptr %8, align 4, !tbaa !13
  br label %207

207:                                              ; preds = %228, %206
  %208 = load i32, ptr %8, align 4, !tbaa !13
  %209 = icmp slt i32 %208, 64
  br i1 %209, label %210, label %231

210:                                              ; preds = %207
  %211 = load i32, ptr %8, align 4, !tbaa !13
  %212 = icmp ne i32 %211, 0
  br i1 %212, label %213, label %220

213:                                              ; preds = %210
  %214 = load i32, ptr %8, align 4, !tbaa !13
  %215 = srem i32 %214, 16
  %216 = icmp eq i32 %215, 0
  br i1 %216, label %217, label %220

217:                                              ; preds = %213
  %218 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.732)
          to label %219 unwind label %182

219:                                              ; preds = %217
  br label %220

220:                                              ; preds = %219, %213, %210
  %221 = load i32, ptr %8, align 4, !tbaa !13
  %222 = sext i32 %221 to i64
  %223 = getelementptr inbounds [64 x i8], ptr %9, i64 0, i64 %222
  %224 = load i8, ptr %223, align 1, !tbaa !15
  %225 = zext i8 %224 to i32
  %226 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.724, i32 noundef %225)
          to label %227 unwind label %182

227:                                              ; preds = %220
  br label %228

228:                                              ; preds = %227
  %229 = load i32, ptr %8, align 4, !tbaa !13
  %230 = add nsw i32 %229, 1
  store i32 %230, ptr %8, align 4, !tbaa !13
  br label %207, !llvm.loop !24

231:                                              ; preds = %207
  %232 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.725)
          to label %233 unwind label %182

233:                                              ; preds = %231
  %234 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.759)
          to label %235 unwind label %182

235:                                              ; preds = %233
  br label %236

236:                                              ; preds = %249, %235
  %237 = load i32, ptr %7, align 4, !tbaa !13
  %238 = load i32, ptr %6, align 4, !tbaa !13
  %239 = icmp slt i32 %237, %238
  br i1 %239, label %240, label %252

240:                                              ; preds = %236
  %241 = load ptr, ptr %25, align 8, !tbaa !5
  %242 = load i32, ptr %7, align 4, !tbaa !13
  %243 = sext i32 %242 to i64
  %244 = getelementptr inbounds i8, ptr %241, i64 %243
  %245 = load i8, ptr %244, align 1, !tbaa !15
  %246 = zext i8 %245 to i32
  %247 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.650, i32 noundef %246)
          to label %248 unwind label %182

248:                                              ; preds = %240
  br label %249

249:                                              ; preds = %248
  %250 = load i32, ptr %7, align 4, !tbaa !13
  %251 = add nsw i32 %250, 1
  store i32 %251, ptr %7, align 4, !tbaa !13
  br label %236, !llvm.loop !25

252:                                              ; preds = %236
  %253 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.760)
          to label %254 unwind label %182

254:                                              ; preds = %252
  br label %255

255:                                              ; preds = %254, %193
  br label %268

256:                                              ; preds = %143, %136
  call void @llvm.lifetime.start.p0(i64 32, ptr %26) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef @.str.761, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %257 unwind label %259

257:                                              ; preds = %256
  invoke void @_Z10printErrorRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %26, i1 noundef zeroext true)
          to label %258 unwind label %263

258:                                              ; preds = %257
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #6
  store i1 false, ptr %2, align 1
  store i32 1, ptr %22, align 4
  br label %668

259:                                              ; preds = %256
  %260 = landingpad { ptr, i32 }
          cleanup
  %261 = extractvalue { ptr, i32 } %260, 0
  store ptr %261, ptr %14, align 8
  %262 = extractvalue { ptr, i32 } %260, 1
  store i32 %262, ptr %15, align 4
  br label %267

263:                                              ; preds = %257
  %264 = landingpad { ptr, i32 }
          cleanup
  %265 = extractvalue { ptr, i32 } %264, 0
  store ptr %265, ptr %14, align 8
  %266 = extractvalue { ptr, i32 } %264, 1
  store i32 %266, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #6
  br label %267

267:                                              ; preds = %263, %259
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #6
  br label %669

268:                                              ; preds = %255
  %269 = invoke noundef zeroext i1 @_ZN7Lattice5wr_rdEhPhiS0_ib(ptr noundef nonnull align 8 dereferenceable(152) %61, i8 noundef zeroext -1, ptr noundef null, i32 noundef 0, ptr noundef null, i32 noundef 0, i1 noundef zeroext false)
          to label %270 unwind label %182

270:                                              ; preds = %268
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef @.str.622, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %271 unwind label %281

271:                                              ; preds = %270
  invoke void @_Z9printInfoRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %28, i1 noundef zeroext false)
          to label %272 unwind label %285

272:                                              ; preds = %271
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #6
  %273 = invoke noundef zeroext i1 @_ZN7Lattice9EnableISCEh(ptr noundef nonnull align 8 dereferenceable(152) %61, i8 noundef zeroext 8)
          to label %274 unwind label %182

274:                                              ; preds = %272
  br i1 %273, label %299, label %275

275:                                              ; preds = %274
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef @.str.616, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %276 unwind label %290

276:                                              ; preds = %275
  invoke void @_Z10printErrorRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %30, i1 noundef zeroext true)
          to label %277 unwind label %294

277:                                              ; preds = %276
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #6
  %278 = invoke noundef i64 @_ZN7Lattice13readStatusRegEv(ptr noundef nonnull align 8 dereferenceable(152) %61)
          to label %279 unwind label %182

279:                                              ; preds = %277
  invoke void @_ZN7Lattice14displayReadRegEm(ptr noundef nonnull align 8 dereferenceable(152) %61, i64 noundef %278)
          to label %280 unwind label %182

280:                                              ; preds = %279
  store i1 false, ptr %2, align 1
  store i32 1, ptr %22, align 4
  br label %668

281:                                              ; preds = %270
  %282 = landingpad { ptr, i32 }
          cleanup
  %283 = extractvalue { ptr, i32 } %282, 0
  store ptr %283, ptr %14, align 8
  %284 = extractvalue { ptr, i32 } %282, 1
  store i32 %284, ptr %15, align 4
  br label %289

285:                                              ; preds = %271
  %286 = landingpad { ptr, i32 }
          cleanup
  %287 = extractvalue { ptr, i32 } %286, 0
  store ptr %287, ptr %14, align 8
  %288 = extractvalue { ptr, i32 } %286, 1
  store i32 %288, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #6
  br label %289

289:                                              ; preds = %285, %281
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #6
  br label %669

290:                                              ; preds = %275
  %291 = landingpad { ptr, i32 }
          cleanup
  %292 = extractvalue { ptr, i32 } %291, 0
  store ptr %292, ptr %14, align 8
  %293 = extractvalue { ptr, i32 } %291, 1
  store i32 %293, ptr %15, align 4
  br label %298

294:                                              ; preds = %276
  %295 = landingpad { ptr, i32 }
          cleanup
  %296 = extractvalue { ptr, i32 } %295, 0
  store ptr %296, ptr %14, align 8
  %297 = extractvalue { ptr, i32 } %295, 1
  store i32 %297, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #6
  br label %298

298:                                              ; preds = %294, %290
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #6
  br label %669

299:                                              ; preds = %274
  call void @llvm.lifetime.start.p0(i64 32, ptr %32) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef @.str.614, ptr noundef nonnull align 1 dereferenceable(1) %33)
          to label %300 unwind label %302

300:                                              ; preds = %299
  invoke void @_Z12printSuccessRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %32, i1 noundef zeroext true)
          to label %301 unwind label %306

301:                                              ; preds = %300
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #6
  br label %311

302:                                              ; preds = %299
  %303 = landingpad { ptr, i32 }
          cleanup
  %304 = extractvalue { ptr, i32 } %303, 0
  store ptr %304, ptr %14, align 8
  %305 = extractvalue { ptr, i32 } %303, 1
  store i32 %305, ptr %15, align 4
  br label %310

306:                                              ; preds = %300
  %307 = landingpad { ptr, i32 }
          cleanup
  %308 = extractvalue { ptr, i32 } %307, 0
  store ptr %308, ptr %14, align 8
  %309 = extractvalue { ptr, i32 } %307, 1
  store i32 %309, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #6
  br label %310

310:                                              ; preds = %306, %302
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #6
  br label %669

311:                                              ; preds = %301
  %312 = getelementptr inbounds [64 x i8], ptr %10, i64 0, i64 0
  %313 = invoke noundef zeroext i1 @_ZN7Lattice5wr_rdEhPhiS0_ib(ptr noundef nonnull align 8 dereferenceable(152) %61, i8 noundef zeroext 90, ptr noundef null, i32 noundef 0, ptr noundef %312, i32 noundef 16, i1 noundef zeroext false)
          to label %314 unwind label %182

314:                                              ; preds = %311
  %315 = getelementptr inbounds %class.Device, ptr %61, i32 0, i32 1
  %316 = load ptr, ptr %315, align 8, !tbaa !26
  invoke void @_ZN4Jtag9set_stateENS_10tapState_tEh(ptr noundef nonnull align 8 dereferenceable(193) %316, i32 noundef 1, i8 noundef zeroext 1)
          to label %317 unwind label %182

317:                                              ; preds = %314
  %318 = getelementptr inbounds %class.Device, ptr %61, i32 0, i32 1
  %319 = load ptr, ptr %318, align 8, !tbaa !26
  invoke void @_ZN4Jtag9toggleClkEi(ptr noundef nonnull align 8 dereferenceable(193) %319, i32 noundef 2)
          to label %320 unwind label %182

320:                                              ; preds = %317
  %321 = getelementptr inbounds [64 x i8], ptr %10, i64 0, i64 0
  %322 = getelementptr inbounds i8, ptr %321, i64 16
  %323 = invoke noundef zeroext i1 @_ZN7Lattice5wr_rdEhPhiS0_ib(ptr noundef nonnull align 8 dereferenceable(152) %61, i8 noundef zeroext 92, ptr noundef null, i32 noundef 0, ptr noundef %322, i32 noundef 16, i1 noundef zeroext false)
          to label %324 unwind label %182

324:                                              ; preds = %320
  %325 = getelementptr inbounds %class.Device, ptr %61, i32 0, i32 1
  %326 = load ptr, ptr %325, align 8, !tbaa !26
  invoke void @_ZN4Jtag9set_stateENS_10tapState_tEh(ptr noundef nonnull align 8 dereferenceable(193) %326, i32 noundef 1, i8 noundef zeroext 1)
          to label %327 unwind label %182

327:                                              ; preds = %324
  %328 = getelementptr inbounds %class.Device, ptr %61, i32 0, i32 1
  %329 = load ptr, ptr %328, align 8, !tbaa !26
  invoke void @_ZN4Jtag9toggleClkEi(ptr noundef nonnull align 8 dereferenceable(193) %329, i32 noundef 2)
          to label %330 unwind label %182

330:                                              ; preds = %327
  %331 = getelementptr inbounds [64 x i8], ptr %10, i64 0, i64 0
  %332 = getelementptr inbounds i8, ptr %331, i64 32
  %333 = invoke noundef zeroext i1 @_ZN7Lattice5wr_rdEhPhiS0_ib(ptr noundef nonnull align 8 dereferenceable(152) %61, i8 noundef zeroext 98, ptr noundef null, i32 noundef 0, ptr noundef %332, i32 noundef 16, i1 noundef zeroext false)
          to label %334 unwind label %182

334:                                              ; preds = %330
  %335 = getelementptr inbounds %class.Device, ptr %61, i32 0, i32 1
  %336 = load ptr, ptr %335, align 8, !tbaa !26
  invoke void @_ZN4Jtag9set_stateENS_10tapState_tEh(ptr noundef nonnull align 8 dereferenceable(193) %336, i32 noundef 1, i8 noundef zeroext 1)
          to label %337 unwind label %182

337:                                              ; preds = %334
  %338 = getelementptr inbounds %class.Device, ptr %61, i32 0, i32 1
  %339 = load ptr, ptr %338, align 8, !tbaa !26
  invoke void @_ZN4Jtag9toggleClkEi(ptr noundef nonnull align 8 dereferenceable(193) %339, i32 noundef 2)
          to label %340 unwind label %182

340:                                              ; preds = %337
  %341 = getelementptr inbounds [64 x i8], ptr %10, i64 0, i64 0
  %342 = getelementptr inbounds i8, ptr %341, i64 48
  %343 = invoke noundef zeroext i1 @_ZN7Lattice5wr_rdEhPhiS0_ib(ptr noundef nonnull align 8 dereferenceable(152) %61, i8 noundef zeroext 100, ptr noundef null, i32 noundef 0, ptr noundef %342, i32 noundef 16, i1 noundef zeroext false)
          to label %344 unwind label %182

344:                                              ; preds = %340
  %345 = getelementptr inbounds %class.Device, ptr %61, i32 0, i32 1
  %346 = load ptr, ptr %345, align 8, !tbaa !26
  invoke void @_ZN4Jtag9set_stateENS_10tapState_tEh(ptr noundef nonnull align 8 dereferenceable(193) %346, i32 noundef 1, i8 noundef zeroext 1)
          to label %347 unwind label %182

347:                                              ; preds = %344
  %348 = getelementptr inbounds %class.Device, ptr %61, i32 0, i32 1
  %349 = load ptr, ptr %348, align 8, !tbaa !26
  invoke void @_ZN4Jtag9toggleClkEi(ptr noundef nonnull align 8 dereferenceable(193) %349, i32 noundef 2)
          to label %350 unwind label %182

350:                                              ; preds = %347
  %351 = getelementptr inbounds %class.Device, ptr %61, i32 0, i32 6
  %352 = load i8, ptr %351, align 1, !tbaa !16, !range !11, !noundef !12
  %353 = trunc i8 %352 to i1
  br i1 %353, label %354, label %384

354:                                              ; preds = %350
  %355 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.762)
          to label %356 unwind label %182

356:                                              ; preds = %354
  store i32 63, ptr %8, align 4, !tbaa !13
  br label %357

357:                                              ; preds = %378, %356
  %358 = load i32, ptr %8, align 4, !tbaa !13
  %359 = icmp sge i32 %358, 0
  br i1 %359, label %360, label %381

360:                                              ; preds = %357
  %361 = load i32, ptr %8, align 4, !tbaa !13
  %362 = sext i32 %361 to i64
  %363 = getelementptr inbounds [64 x i8], ptr %10, i64 0, i64 %362
  %364 = load i8, ptr %363, align 1, !tbaa !15
  %365 = zext i8 %364 to i32
  %366 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.724, i32 noundef %365)
          to label %367 unwind label %182

367:                                              ; preds = %360
  %368 = load i32, ptr %8, align 4, !tbaa !13
  %369 = icmp ne i32 %368, 0
  br i1 %369, label %370, label %377

370:                                              ; preds = %367
  %371 = load i32, ptr %8, align 4, !tbaa !13
  %372 = srem i32 %371, 16
  %373 = icmp eq i32 %372, 0
  br i1 %373, label %374, label %377

374:                                              ; preds = %370
  %375 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.732)
          to label %376 unwind label %182

376:                                              ; preds = %374
  br label %377

377:                                              ; preds = %376, %370, %367
  br label %378

378:                                              ; preds = %377
  %379 = load i32, ptr %8, align 4, !tbaa !13
  %380 = add nsw i32 %379, -1
  store i32 %380, ptr %8, align 4, !tbaa !13
  br label %357, !llvm.loop !27

381:                                              ; preds = %357
  %382 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.725)
          to label %383 unwind label %182

383:                                              ; preds = %381
  br label %384

384:                                              ; preds = %383, %350
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #6
  store i32 0, ptr %34, align 4, !tbaa !13
  br label %385

385:                                              ; preds = %405, %384
  %386 = load i32, ptr %34, align 4, !tbaa !13
  %387 = icmp slt i32 %386, 64
  br i1 %387, label %389, label %388

388:                                              ; preds = %385
  store i32 14, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  br label %408

389:                                              ; preds = %385
  %390 = load i32, ptr %34, align 4, !tbaa !13
  %391 = sext i32 %390 to i64
  %392 = getelementptr inbounds [64 x i8], ptr %9, i64 0, i64 %391
  %393 = load i8, ptr %392, align 1, !tbaa !15
  %394 = zext i8 %393 to i32
  %395 = load i32, ptr %34, align 4, !tbaa !13
  %396 = sub nsw i32 64, %395
  %397 = sub nsw i32 %396, 1
  %398 = sext i32 %397 to i64
  %399 = getelementptr inbounds [64 x i8], ptr %10, i64 0, i64 %398
  %400 = load i8, ptr %399, align 1, !tbaa !15
  %401 = zext i8 %400 to i32
  %402 = icmp ne i32 %394, %401
  br i1 %402, label %403, label %404

403:                                              ; preds = %389
  store i8 0, ptr %5, align 1, !tbaa !9
  br label %404

404:                                              ; preds = %403, %389
  br label %405

405:                                              ; preds = %404
  %406 = load i32, ptr %34, align 4, !tbaa !13
  %407 = add nsw i32 %406, 1
  store i32 %407, ptr %34, align 4, !tbaa !13
  br label %385, !llvm.loop !28

408:                                              ; preds = %388
  %409 = load i8, ptr %5, align 1, !tbaa !9, !range !11, !noundef !12
  %410 = trunc i8 %409 to i1
  %411 = zext i1 %410 to i64
  %412 = select i1 %410, ptr @.str.736, ptr @.str.737
  %413 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.763, ptr noundef %412)
          to label %414 unwind label %182

414:                                              ; preds = %408
  %415 = load i8, ptr %5, align 1, !tbaa !9, !range !11, !noundef !12
  %416 = trunc i8 %415 to i1
  %417 = zext i1 %416 to i32
  %418 = icmp eq i32 %417, 0
  br i1 %418, label %419, label %525

419:                                              ; preds = %414
  call void @llvm.lifetime.start.p0(i64 2, ptr %35) #6
  %420 = getelementptr inbounds [2 x i8], ptr %35, i64 0, i64 0
  store i8 0, ptr %420, align 1, !tbaa !15
  %421 = getelementptr inbounds [2 x i8], ptr %35, i64 0, i64 1
  store i8 1, ptr %421, align 1, !tbaa !15
  %422 = getelementptr inbounds %class.Device, ptr %61, i32 0, i32 6
  %423 = load i8, ptr %422, align 1, !tbaa !16, !range !11, !noundef !12
  %424 = trunc i8 %423 to i1
  br i1 %424, label %425, label %438

425:                                              ; preds = %419
  %426 = getelementptr inbounds [2 x i8], ptr %35, i64 0, i64 0
  %427 = load i8, ptr %426, align 1, !tbaa !15
  %428 = zext i8 %427 to i32
  %429 = getelementptr inbounds [2 x i8], ptr %35, i64 0, i64 1
  %430 = load i8, ptr %429, align 1, !tbaa !15
  %431 = zext i8 %430 to i32
  %432 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.738, i32 noundef %428, i32 noundef %431)
          to label %433 unwind label %434

433:                                              ; preds = %425
  br label %438

434:                                              ; preds = %483, %443, %438, %425
  %435 = landingpad { ptr, i32 }
          cleanup
  %436 = extractvalue { ptr, i32 } %435, 0
  store ptr %436, ptr %14, align 8
  %437 = extractvalue { ptr, i32 } %435, 1
  store i32 %437, ptr %15, align 4
  br label %524

438:                                              ; preds = %433, %419
  %439 = getelementptr inbounds [2 x i8], ptr %35, i64 0, i64 0
  %440 = invoke noundef zeroext i1 @_ZN7Lattice5wr_rdEhPhiS0_ib(ptr noundef nonnull align 8 dereferenceable(152) %61, i8 noundef zeroext 70, ptr noundef %439, i32 noundef 2, ptr noundef null, i32 noundef 0, i1 noundef zeroext false)
          to label %441 unwind label %434

441:                                              ; preds = %438
  call void @llvm.lifetime.start.p0(i64 32, ptr %36) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef @.str.633, ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %442 unwind label %451

442:                                              ; preds = %441
  invoke void @_Z9printInfoRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %36, i1 noundef zeroext false)
          to label %443 unwind label %455

443:                                              ; preds = %442
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #6
  %444 = invoke noundef zeroext i1 @_ZN7Lattice10flashEraseEj(ptr noundef nonnull align 8 dereferenceable(152) %61, i32 noundef 65536)
          to label %445 unwind label %434

445:                                              ; preds = %443
  %446 = zext i1 %444 to i32
  %447 = icmp eq i32 %446, 0
  br i1 %447, label %448, label %469

448:                                              ; preds = %445
  call void @llvm.lifetime.start.p0(i64 32, ptr %38) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef @.str.616, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %449 unwind label %460

449:                                              ; preds = %448
  invoke void @_Z10printErrorRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %38, i1 noundef zeroext true)
          to label %450 unwind label %464

450:                                              ; preds = %449
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #6
  store i1 false, ptr %2, align 1
  store i32 1, ptr %22, align 4
  br label %521

451:                                              ; preds = %441
  %452 = landingpad { ptr, i32 }
          cleanup
  %453 = extractvalue { ptr, i32 } %452, 0
  store ptr %453, ptr %14, align 8
  %454 = extractvalue { ptr, i32 } %452, 1
  store i32 %454, ptr %15, align 4
  br label %459

455:                                              ; preds = %442
  %456 = landingpad { ptr, i32 }
          cleanup
  %457 = extractvalue { ptr, i32 } %456, 0
  store ptr %457, ptr %14, align 8
  %458 = extractvalue { ptr, i32 } %456, 1
  store i32 %458, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #6
  br label %459

459:                                              ; preds = %455, %451
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #6
  br label %524

460:                                              ; preds = %448
  %461 = landingpad { ptr, i32 }
          cleanup
  %462 = extractvalue { ptr, i32 } %461, 0
  store ptr %462, ptr %14, align 8
  %463 = extractvalue { ptr, i32 } %461, 1
  store i32 %463, ptr %15, align 4
  br label %468

464:                                              ; preds = %449
  %465 = landingpad { ptr, i32 }
          cleanup
  %466 = extractvalue { ptr, i32 } %465, 0
  store ptr %466, ptr %14, align 8
  %467 = extractvalue { ptr, i32 } %465, 1
  store i32 %467, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #6
  br label %468

468:                                              ; preds = %464, %460
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #6
  br label %524

469:                                              ; preds = %445
  call void @llvm.lifetime.start.p0(i64 32, ptr %40) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef @.str.614, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %470 unwind label %472

470:                                              ; preds = %469
  invoke void @_Z12printSuccessRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %40, i1 noundef zeroext true)
          to label %471 unwind label %476

471:                                              ; preds = %470
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #6
  br label %481

472:                                              ; preds = %469
  %473 = landingpad { ptr, i32 }
          cleanup
  %474 = extractvalue { ptr, i32 } %473, 0
  store ptr %474, ptr %14, align 8
  %475 = extractvalue { ptr, i32 } %473, 1
  store i32 %475, ptr %15, align 4
  br label %480

476:                                              ; preds = %470
  %477 = landingpad { ptr, i32 }
          cleanup
  %478 = extractvalue { ptr, i32 } %477, 0
  store ptr %478, ptr %14, align 8
  %479 = extractvalue { ptr, i32 } %477, 1
  store i32 %479, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #6
  br label %480

480:                                              ; preds = %476, %472
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #6
  br label %524

481:                                              ; preds = %471
  call void @llvm.lifetime.start.p0(i64 32, ptr %42) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %43) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef @.str.764, ptr noundef nonnull align 1 dereferenceable(1) %43)
          to label %482 unwind label %490

482:                                              ; preds = %481
  invoke void @_Z9printInfoRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %42, i1 noundef zeroext true)
          to label %483 unwind label %494

483:                                              ; preds = %482
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %42) #6
  %484 = getelementptr inbounds [64 x i8], ptr %9, i64 0, i64 0
  %485 = invoke noundef zeroext i1 @_ZN7Lattice22programPubKey_MachXO3DEPh(ptr noundef nonnull align 8 dereferenceable(152) %61, ptr noundef %484)
          to label %486 unwind label %434

486:                                              ; preds = %483
  br i1 %485, label %508, label %487

487:                                              ; preds = %486
  call void @llvm.lifetime.start.p0(i64 32, ptr %44) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %45) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef @.str.616, ptr noundef nonnull align 1 dereferenceable(1) %45)
          to label %488 unwind label %499

488:                                              ; preds = %487
  invoke void @_Z10printErrorRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %44, i1 noundef zeroext true)
          to label %489 unwind label %503

489:                                              ; preds = %488
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #6
  store i1 false, ptr %2, align 1
  store i32 1, ptr %22, align 4
  br label %521

490:                                              ; preds = %481
  %491 = landingpad { ptr, i32 }
          cleanup
  %492 = extractvalue { ptr, i32 } %491, 0
  store ptr %492, ptr %14, align 8
  %493 = extractvalue { ptr, i32 } %491, 1
  store i32 %493, ptr %15, align 4
  br label %498

494:                                              ; preds = %482
  %495 = landingpad { ptr, i32 }
          cleanup
  %496 = extractvalue { ptr, i32 } %495, 0
  store ptr %496, ptr %14, align 8
  %497 = extractvalue { ptr, i32 } %495, 1
  store i32 %497, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #6
  br label %498

498:                                              ; preds = %494, %490
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %42) #6
  br label %524

499:                                              ; preds = %487
  %500 = landingpad { ptr, i32 }
          cleanup
  %501 = extractvalue { ptr, i32 } %500, 0
  store ptr %501, ptr %14, align 8
  %502 = extractvalue { ptr, i32 } %500, 1
  store i32 %502, ptr %15, align 4
  br label %507

503:                                              ; preds = %488
  %504 = landingpad { ptr, i32 }
          cleanup
  %505 = extractvalue { ptr, i32 } %504, 0
  store ptr %505, ptr %14, align 8
  %506 = extractvalue { ptr, i32 } %504, 1
  store i32 %506, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #6
  br label %507

507:                                              ; preds = %503, %499
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #6
  br label %524

508:                                              ; preds = %486
  call void @llvm.lifetime.start.p0(i64 32, ptr %46) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef @.str.614, ptr noundef nonnull align 1 dereferenceable(1) %47)
          to label %509 unwind label %511

509:                                              ; preds = %508
  invoke void @_Z12printSuccessRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %46, i1 noundef zeroext true)
          to label %510 unwind label %515

510:                                              ; preds = %509
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #6
  br label %520

511:                                              ; preds = %508
  %512 = landingpad { ptr, i32 }
          cleanup
  %513 = extractvalue { ptr, i32 } %512, 0
  store ptr %513, ptr %14, align 8
  %514 = extractvalue { ptr, i32 } %512, 1
  store i32 %514, ptr %15, align 4
  br label %519

515:                                              ; preds = %509
  %516 = landingpad { ptr, i32 }
          cleanup
  %517 = extractvalue { ptr, i32 } %516, 0
  store ptr %517, ptr %14, align 8
  %518 = extractvalue { ptr, i32 } %516, 1
  store i32 %518, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #6
  br label %519

519:                                              ; preds = %515, %511
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #6
  br label %524

520:                                              ; preds = %510
  store i32 0, ptr %22, align 4
  br label %521

521:                                              ; preds = %520, %489, %450
  call void @llvm.lifetime.end.p0(i64 2, ptr %35) #6
  %522 = load i32, ptr %22, align 4
  switch i32 %522, label %668 [
    i32 0, label %523
  ]

523:                                              ; preds = %521
  br label %525

524:                                              ; preds = %519, %507, %498, %480, %468, %459, %434
  call void @llvm.lifetime.end.p0(i64 2, ptr %35) #6
  br label %669

525:                                              ; preds = %523, %414
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #6
  store i8 3, ptr %48, align 1, !tbaa !15
  %526 = invoke noundef zeroext i1 @_ZN7Lattice5wr_rdEhPhiS0_ib(ptr noundef nonnull align 8 dereferenceable(152) %61, i8 noundef zeroext -60, ptr noundef %48, i32 noundef 1, ptr noundef null, i32 noundef 0, i1 noundef zeroext false)
          to label %527 unwind label %581

527:                                              ; preds = %525
  %528 = getelementptr inbounds %class.Device, ptr %61, i32 0, i32 1
  %529 = load ptr, ptr %528, align 8, !tbaa !26
  invoke void @_ZN4Jtag9set_stateENS_10tapState_tEh(ptr noundef nonnull align 8 dereferenceable(193) %529, i32 noundef 1, i8 noundef zeroext 1)
          to label %530 unwind label %581

530:                                              ; preds = %527
  %531 = getelementptr inbounds %class.Device, ptr %61, i32 0, i32 1
  %532 = load ptr, ptr %531, align 8, !tbaa !26
  invoke void @_ZN4Jtag9toggleClkEi(ptr noundef nonnull align 8 dereferenceable(193) %532, i32 noundef 2)
          to label %533 unwind label %581

533:                                              ; preds = %530
  %534 = invoke noundef zeroext i1 @_ZN7Lattice5wr_rdEhPhiS0_ib(ptr noundef nonnull align 8 dereferenceable(152) %61, i8 noundef zeroext -1, ptr noundef null, i32 noundef 0, ptr noundef null, i32 noundef 0, i1 noundef zeroext false)
          to label %535 unwind label %581

535:                                              ; preds = %533
  %536 = invoke noundef zeroext i1 @_ZN7Lattice5wr_rdEhPhiS0_ib(ptr noundef nonnull align 8 dereferenceable(152) %61, i8 noundef zeroext -60, ptr noundef %48, i32 noundef 1, ptr noundef null, i32 noundef 0, i1 noundef zeroext false)
          to label %537 unwind label %581

537:                                              ; preds = %535
  %538 = getelementptr inbounds %class.Device, ptr %61, i32 0, i32 1
  %539 = load ptr, ptr %538, align 8, !tbaa !26
  invoke void @_ZN4Jtag9set_stateENS_10tapState_tEh(ptr noundef nonnull align 8 dereferenceable(193) %539, i32 noundef 1, i8 noundef zeroext 1)
          to label %540 unwind label %581

540:                                              ; preds = %537
  %541 = getelementptr inbounds %class.Device, ptr %61, i32 0, i32 1
  %542 = load ptr, ptr %541, align 8, !tbaa !26
  invoke void @_ZN4Jtag9toggleClkEi(ptr noundef nonnull align 8 dereferenceable(193) %542, i32 noundef 2)
          to label %543 unwind label %581

543:                                              ; preds = %540
  %544 = invoke noundef zeroext i1 @_ZN7Lattice5wr_rdEhPhiS0_ib(ptr noundef nonnull align 8 dereferenceable(152) %61, i8 noundef zeroext -1, ptr noundef null, i32 noundef 0, ptr noundef null, i32 noundef 0, i1 noundef zeroext false)
          to label %545 unwind label %581

545:                                              ; preds = %543
  %546 = getelementptr inbounds %class.Device, ptr %61, i32 0, i32 6
  %547 = load i8, ptr %546, align 1, !tbaa !16, !range !11, !noundef !12
  %548 = trunc i8 %547 to i1
  br i1 %548, label %549, label %585

549:                                              ; preds = %545
  %550 = getelementptr inbounds [64 x i8], ptr %10, i64 0, i64 0
  %551 = invoke noundef zeroext i1 @_ZN7Lattice5wr_rdEhPhiS0_ib(ptr noundef nonnull align 8 dereferenceable(152) %61, i8 noundef zeroext 61, ptr noundef null, i32 noundef 0, ptr noundef %550, i32 noundef 4, i1 noundef zeroext false)
          to label %552 unwind label %581

552:                                              ; preds = %549
  %553 = getelementptr inbounds %class.Device, ptr %61, i32 0, i32 1
  %554 = load ptr, ptr %553, align 8, !tbaa !26
  invoke void @_ZN4Jtag9set_stateENS_10tapState_tEh(ptr noundef nonnull align 8 dereferenceable(193) %554, i32 noundef 1, i8 noundef zeroext 1)
          to label %555 unwind label %581

555:                                              ; preds = %552
  %556 = getelementptr inbounds %class.Device, ptr %61, i32 0, i32 1
  %557 = load ptr, ptr %556, align 8, !tbaa !26
  invoke void @_ZN4Jtag9toggleClkEi(ptr noundef nonnull align 8 dereferenceable(193) %557, i32 noundef 2)
          to label %558 unwind label %581

558:                                              ; preds = %555
  %559 = getelementptr inbounds [64 x i8], ptr %10, i64 0, i64 1
  %560 = load i8, ptr %559, align 1, !tbaa !15
  %561 = zext i8 %560 to i32
  %562 = and i32 %561, 3
  %563 = icmp ne i32 %562, 0
  br i1 %563, label %564, label %565

564:                                              ; preds = %558
  br label %573

565:                                              ; preds = %558
  %566 = getelementptr inbounds [64 x i8], ptr %10, i64 0, i64 1
  %567 = load i8, ptr %566, align 1, !tbaa !15
  %568 = zext i8 %567 to i32
  %569 = and i32 %568, 1
  %570 = icmp ne i32 %569, 0
  %571 = zext i1 %570 to i64
  %572 = select i1 %570, ptr @.str.767, ptr @.str.768
  br label %573

573:                                              ; preds = %565, %564
  %574 = phi ptr [ @.str.766, %564 ], [ %572, %565 ]
  %575 = getelementptr inbounds [64 x i8], ptr %10, i64 0, i64 1
  %576 = load i8, ptr %575, align 1, !tbaa !15
  %577 = zext i8 %576 to i32
  %578 = and i32 %577, 3
  %579 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.765, ptr noundef %574, i32 noundef %578)
          to label %580 unwind label %581

580:                                              ; preds = %573
  br label %585

581:                                              ; preds = %629, %625, %587, %573, %555, %552, %549, %543, %540, %537, %535, %533, %530, %527, %525
  %582 = landingpad { ptr, i32 }
          cleanup
  %583 = extractvalue { ptr, i32 } %582, 0
  store ptr %583, ptr %14, align 8
  %584 = extractvalue { ptr, i32 } %582, 1
  store i32 %584, ptr %15, align 4
  br label %667

585:                                              ; preds = %580, %545
  call void @llvm.lifetime.start.p0(i64 32, ptr %49) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %50) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef @.str.639, ptr noundef nonnull align 1 dereferenceable(1) %50)
          to label %586 unwind label %595

586:                                              ; preds = %585
  invoke void @_Z9printInfoRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %49, i1 noundef zeroext false)
          to label %587 unwind label %599

587:                                              ; preds = %586
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #6
  %588 = invoke noundef zeroext i1 @_ZN7Lattice16writeProgramDoneEv(ptr noundef nonnull align 8 dereferenceable(152) %61)
          to label %589 unwind label %581

589:                                              ; preds = %587
  %590 = zext i1 %588 to i32
  %591 = icmp eq i32 %590, 0
  br i1 %591, label %592, label %613

592:                                              ; preds = %589
  call void @llvm.lifetime.start.p0(i64 32, ptr %51) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %52) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef @.str.616, ptr noundef nonnull align 1 dereferenceable(1) %52)
          to label %593 unwind label %604

593:                                              ; preds = %592
  invoke void @_Z10printErrorRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %51, i1 noundef zeroext true)
          to label %594 unwind label %608

594:                                              ; preds = %593
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %51) #6
  store i1 false, ptr %2, align 1
  store i32 1, ptr %22, align 4
  br label %666

595:                                              ; preds = %585
  %596 = landingpad { ptr, i32 }
          cleanup
  %597 = extractvalue { ptr, i32 } %596, 0
  store ptr %597, ptr %14, align 8
  %598 = extractvalue { ptr, i32 } %596, 1
  store i32 %598, ptr %15, align 4
  br label %603

599:                                              ; preds = %586
  %600 = landingpad { ptr, i32 }
          cleanup
  %601 = extractvalue { ptr, i32 } %600, 0
  store ptr %601, ptr %14, align 8
  %602 = extractvalue { ptr, i32 } %600, 1
  store i32 %602, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #6
  br label %603

603:                                              ; preds = %599, %595
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #6
  br label %667

604:                                              ; preds = %592
  %605 = landingpad { ptr, i32 }
          cleanup
  %606 = extractvalue { ptr, i32 } %605, 0
  store ptr %606, ptr %14, align 8
  %607 = extractvalue { ptr, i32 } %605, 1
  store i32 %607, ptr %15, align 4
  br label %612

608:                                              ; preds = %593
  %609 = landingpad { ptr, i32 }
          cleanup
  %610 = extractvalue { ptr, i32 } %609, 0
  store ptr %610, ptr %14, align 8
  %611 = extractvalue { ptr, i32 } %609, 1
  store i32 %611, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #6
  br label %612

612:                                              ; preds = %608, %604
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %51) #6
  br label %667

613:                                              ; preds = %589
  call void @llvm.lifetime.start.p0(i64 32, ptr %53) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %54) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef @.str.614, ptr noundef nonnull align 1 dereferenceable(1) %54)
          to label %614 unwind label %616

614:                                              ; preds = %613
  invoke void @_Z12printSuccessRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %53, i1 noundef zeroext true)
          to label %615 unwind label %620

615:                                              ; preds = %614
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %53) #6
  br label %625

616:                                              ; preds = %613
  %617 = landingpad { ptr, i32 }
          cleanup
  %618 = extractvalue { ptr, i32 } %617, 0
  store ptr %618, ptr %14, align 8
  %619 = extractvalue { ptr, i32 } %617, 1
  store i32 %619, ptr %15, align 4
  br label %624

620:                                              ; preds = %614
  %621 = landingpad { ptr, i32 }
          cleanup
  %622 = extractvalue { ptr, i32 } %621, 0
  store ptr %622, ptr %14, align 8
  %623 = extractvalue { ptr, i32 } %621, 1
  store i32 %623, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #6
  br label %624

624:                                              ; preds = %620, %616
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %53) #6
  br label %667

625:                                              ; preds = %615
  %626 = invoke noundef zeroext i1 @_ZN7Lattice5wr_rdEhPhiS0_ib(ptr noundef nonnull align 8 dereferenceable(152) %61, i8 noundef zeroext -1, ptr noundef null, i32 noundef 0, ptr noundef null, i32 noundef 0, i1 noundef zeroext false)
          to label %627 unwind label %581

627:                                              ; preds = %625
  call void @llvm.lifetime.start.p0(i64 32, ptr %55) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %56) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef @.str.627, ptr noundef nonnull align 1 dereferenceable(1) %56)
          to label %628 unwind label %635

628:                                              ; preds = %627
  invoke void @_Z9printInfoRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %55, i1 noundef zeroext false)
          to label %629 unwind label %639

629:                                              ; preds = %628
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %55) #6
  %630 = invoke noundef zeroext i1 @_ZN7Lattice10DisableISCEv(ptr noundef nonnull align 8 dereferenceable(152) %61)
          to label %631 unwind label %581

631:                                              ; preds = %629
  br i1 %630, label %653, label %632

632:                                              ; preds = %631
  call void @llvm.lifetime.start.p0(i64 32, ptr %57) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %58) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %57, ptr noundef @.str.616, ptr noundef nonnull align 1 dereferenceable(1) %58)
          to label %633 unwind label %644

633:                                              ; preds = %632
  invoke void @_Z10printErrorRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %57, i1 noundef zeroext true)
          to label %634 unwind label %648

634:                                              ; preds = %633
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #6
  store i1 false, ptr %2, align 1
  store i32 1, ptr %22, align 4
  br label %666

635:                                              ; preds = %627
  %636 = landingpad { ptr, i32 }
          cleanup
  %637 = extractvalue { ptr, i32 } %636, 0
  store ptr %637, ptr %14, align 8
  %638 = extractvalue { ptr, i32 } %636, 1
  store i32 %638, ptr %15, align 4
  br label %643

639:                                              ; preds = %628
  %640 = landingpad { ptr, i32 }
          cleanup
  %641 = extractvalue { ptr, i32 } %640, 0
  store ptr %641, ptr %14, align 8
  %642 = extractvalue { ptr, i32 } %640, 1
  store i32 %642, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #6
  br label %643

643:                                              ; preds = %639, %635
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %55) #6
  br label %667

644:                                              ; preds = %632
  %645 = landingpad { ptr, i32 }
          cleanup
  %646 = extractvalue { ptr, i32 } %645, 0
  store ptr %646, ptr %14, align 8
  %647 = extractvalue { ptr, i32 } %645, 1
  store i32 %647, ptr %15, align 4
  br label %652

648:                                              ; preds = %633
  %649 = landingpad { ptr, i32 }
          cleanup
  %650 = extractvalue { ptr, i32 } %649, 0
  store ptr %650, ptr %14, align 8
  %651 = extractvalue { ptr, i32 } %649, 1
  store i32 %651, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #6
  br label %652

652:                                              ; preds = %648, %644
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #6
  br label %667

653:                                              ; preds = %631
  call void @llvm.lifetime.start.p0(i64 32, ptr %59) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %60) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef @.str.614, ptr noundef nonnull align 1 dereferenceable(1) %60)
          to label %654 unwind label %656

654:                                              ; preds = %653
  invoke void @_Z12printSuccessRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %59, i1 noundef zeroext true)
          to label %655 unwind label %660

655:                                              ; preds = %654
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %59) #6
  br label %665

656:                                              ; preds = %653
  %657 = landingpad { ptr, i32 }
          cleanup
  %658 = extractvalue { ptr, i32 } %657, 0
  store ptr %658, ptr %14, align 8
  %659 = extractvalue { ptr, i32 } %657, 1
  store i32 %659, ptr %15, align 4
  br label %664

660:                                              ; preds = %654
  %661 = landingpad { ptr, i32 }
          cleanup
  %662 = extractvalue { ptr, i32 } %661, 0
  store ptr %662, ptr %14, align 8
  %663 = extractvalue { ptr, i32 } %661, 1
  store i32 %663, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #6
  br label %664

664:                                              ; preds = %660, %656
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %59) #6
  br label %667

665:                                              ; preds = %655
  store i1 true, ptr %2, align 1
  store i32 1, ptr %22, align 4
  br label %666

666:                                              ; preds = %665, %634, %594
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #6
  br label %668

667:                                              ; preds = %664, %652, %643, %624, %612, %603, %581
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #6
  br label %669

668:                                              ; preds = %666, %521, %280, %258
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #6
  br label %670

669:                                              ; preds = %667, %524, %310, %298, %289, %267, %182
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #6
  br label %672

670:                                              ; preds = %668, %79
  call void @_ZN21ConfigBitstreamParserD2Ev(ptr noundef nonnull align 8 dereferenceable(161) %11) #6
  call void @llvm.lifetime.end.p0(i64 168, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %9) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %4) #6
  %671 = load i1, ptr %2, align 1
  ret i1 %671

672:                                              ; preds = %669, %131, %119, %110, %98, %97, %88
  call void @_ZN21ConfigBitstreamParserD2Ev(ptr noundef nonnull align 8 dereferenceable(161) %11) #6
  call void @llvm.lifetime.end.p0(i64 168, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %9) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %4) #6
  br label %673

673:                                              ; preds = %672
  %674 = load ptr, ptr %14, align 8
  %675 = load i32, ptr %15, align 4
  %676 = insertvalue { ptr, i32 } poison, ptr %674, 0
  %677 = insertvalue { ptr, i32 } %676, i32 %675, 1
  resume { ptr, i32 } %677
}

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN7Lattice22programPubKey_MachXO3DEPh(ptr noundef nonnull align 8 dereferenceable(152), ptr noundef) #2 align 2

declare noundef i32 @_ZN9RawParser5parseEv(ptr noundef nonnull align 8 dereferenceable(161)) unnamed_addr #3

; Function Attrs: nounwind
declare void @_ZN21ConfigBitstreamParserD2Ev(ptr noundef nonnull align 8 dereferenceable(160)) unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{i8 0, i8 2}
!12 = !{}
!13 = !{!14, !14, i64 0}
!14 = !{!"int", !7, i64 0}
!15 = !{!7, !7, i64 0}
!16 = !{!17, !10, i64 85}
!17 = !{!"_ZTS6Device", !6, i64 8, !18, i64 16, !18, i64 48, !21, i64 80, !10, i64 84, !10, i64 85, !10, i64 86}
!18 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !19, i64 0, !20, i64 8, !7, i64 16}
!19 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!20 = !{!"long", !7, i64 0}
!21 = !{!"_ZTSN6Device9prog_modeE", !7, i64 0}
!22 = distinct !{!22, !23}
!23 = !{!"llvm.loop.mustprogress"}
!24 = distinct !{!24, !23}
!25 = distinct !{!25, !23}
!26 = !{!17, !6, i64 8}
!27 = distinct !{!27, !23}
!28 = distinct !{!28, !23}


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

%class.RawParser = type <{ %class.ConfigBitstreamParser, i8, [7 x i8] }>
%class.ConfigBitstreamParser = type { ptr, %"class.std::__cxx11::basic_string", i32, i32, i8, %"class.std::vector", %"class.std::__cxx11::basic_string", %"class.std::map.81" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::map.81" = type { %"class.std::_Rb_tree.82" }
%"class.std::_Rb_tree.82" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::allocator.0" = type { i8 }

@.str.613 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.614 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.615 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.616 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.622 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.627 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.633 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.639 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.650 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.724 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.725 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.732 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.736 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.737 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.738 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.757 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.758 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.759 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.760 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.761 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.762 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.763 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.764 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.765 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.766 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.768 = external hidden unnamed_addr constant [18 x i8], align 1

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #1 align 2

declare void @_Z9printInfoRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext) local_unnamed_addr #3

declare void @_Z10printErrorRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext) local_unnamed_addr #3

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZN7Lattice13readStatusRegEv(ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #2 align 2

declare void @_Z12printSuccessRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7Lattice14displayReadRegEm(ptr noundef nonnull align 8 dereferenceable(152), i64 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN7Lattice5wr_rdEhPhiS0_ib(ptr noundef nonnull align 8 dereferenceable(152), i8 noundef zeroext, ptr noundef, i32 noundef, ptr noundef, i32 noundef, i1 noundef zeroext) local_unnamed_addr #2 align 2

declare void @_ZN4Jtag9set_stateENS_10tapState_tEh(ptr noundef nonnull align 8 dereferenceable(193), i32 noundef, i8 noundef zeroext) local_unnamed_addr #3

declare void @_ZN4Jtag9toggleClkEi(ptr noundef nonnull align 8 dereferenceable(193), i32 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN7Lattice9EnableISCEh(ptr noundef nonnull align 8 dereferenceable(152), i8 noundef zeroext) local_unnamed_addr #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN7Lattice10flashEraseEj(ptr noundef nonnull align 8 dereferenceable(152), i32 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK21ConfigBitstreamParser7getDataEv(ptr noundef nonnull align 8 dereferenceable(160)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN21ConfigBitstreamParser9getLengthEv(ptr noundef nonnull align 8 dereferenceable(160)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN7Lattice10DisableISCEv(ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN7Lattice16writeProgramDoneEv(ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #2 align 2

declare void @_ZN9RawParserC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(161), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext) unnamed_addr #3

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN7Lattice23program_pubkey_MachXO3DEv(ptr noundef nonnull align 8 dereferenceable(152) %0) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca [64 x i8], align 16
  %3 = alloca [64 x i8], align 16
  %4 = alloca %class.RawParser, align 8
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::allocator.0", align 1
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::allocator.0", align 1
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::allocator.0", align 1
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::allocator.0", align 1
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::allocator.0", align 1
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::allocator.0", align 1
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::allocator.0", align 1
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::allocator.0", align 1
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::allocator.0", align 1
  %23 = alloca [2 x i8], align 1
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::allocator.0", align 1
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::allocator.0", align 1
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::allocator.0", align 1
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::allocator.0", align 1
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::allocator.0", align 1
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.std::allocator.0", align 1
  %36 = alloca i8, align 1
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.std::allocator.0", align 1
  %39 = alloca %"class.std::__cxx11::basic_string", align 8
  %40 = alloca %"class.std::allocator.0", align 1
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca %"class.std::allocator.0", align 1
  %43 = alloca %"class.std::__cxx11::basic_string", align 8
  %44 = alloca %"class.std::allocator.0", align 1
  %45 = alloca %"class.std::__cxx11::basic_string", align 8
  %46 = alloca %"class.std::allocator.0", align 1
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca %"class.std::allocator.0", align 1
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %2) #8
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %3) #8
  call void @llvm.lifetime.start.p0(i64 168, ptr nonnull %4) #8
  %49 = getelementptr inbounds i8, ptr %0, i64 16
  call void @_ZN9RawParserC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(161) %4, ptr noundef nonnull align 8 dereferenceable(32) %49, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str.613, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %50 unwind label %61

50:                                               ; preds = %1
  invoke void @_Z9printInfoRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %5, i1 noundef zeroext false)
          to label %51 unwind label %63

51:                                               ; preds = %50
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.614, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %52 unwind label %66

52:                                               ; preds = %51
  invoke void @_Z12printSuccessRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %7, i1 noundef zeroext true)
          to label %53 unwind label %68

53:                                               ; preds = %52
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #8
  %54 = invoke noundef i32 @_ZN9RawParser5parseEv(ptr noundef nonnull align 8 dereferenceable(161) %4)
          to label %55 unwind label %71

55:                                               ; preds = %53
  %.not = icmp eq i32 %54, 0
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull @.str.615, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %56 unwind label %73

56:                                               ; preds = %55
  invoke void @_Z9printInfoRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %9, i1 noundef zeroext false)
          to label %57 unwind label %75

57:                                               ; preds = %56
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #8
  br i1 %.not, label %83, label %58

58:                                               ; preds = %57
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull @.str.616, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %59 unwind label %78

59:                                               ; preds = %58
  invoke void @_Z10printErrorRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %11, i1 noundef zeroext true)
          to label %60 unwind label %80

60:                                               ; preds = %59
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #8
  br label %398

61:                                               ; preds = %1
  %62 = landingpad { ptr, i32 }
          cleanup
  br label %65

63:                                               ; preds = %50
  %64 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #8
  br label %65

65:                                               ; preds = %63, %61
  %.pn = phi { ptr, i32 } [ %64, %63 ], [ %62, %61 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #8
  br label %399

66:                                               ; preds = %51
  %67 = landingpad { ptr, i32 }
          cleanup
  br label %70

68:                                               ; preds = %52
  %69 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  br label %70

70:                                               ; preds = %68, %66
  %.pn80 = phi { ptr, i32 } [ %69, %68 ], [ %67, %66 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #8
  br label %399

71:                                               ; preds = %53
  %72 = landingpad { ptr, i32 }
          cleanup
  br label %399

73:                                               ; preds = %55
  %74 = landingpad { ptr, i32 }
          cleanup
  br label %77

75:                                               ; preds = %56
  %76 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  br label %77

77:                                               ; preds = %75, %73
  %.pn82 = phi { ptr, i32 } [ %76, %75 ], [ %74, %73 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #8
  br label %399

78:                                               ; preds = %58
  %79 = landingpad { ptr, i32 }
          cleanup
  br label %82

80:                                               ; preds = %59
  %81 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #8
  br label %82

82:                                               ; preds = %80, %78
  %.pn125 = phi { ptr, i32 } [ %81, %80 ], [ %79, %78 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #8
  br label %399

83:                                               ; preds = %57
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %14) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull @.str.614, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %84 unwind label %91

84:                                               ; preds = %83
  invoke void @_Z12printSuccessRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %13, i1 noundef zeroext true)
          to label %85 unwind label %93

85:                                               ; preds = %84
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #8
  %86 = call noundef ptr @_ZNK21ConfigBitstreamParser7getDataEv(ptr noundef nonnull align 8 dereferenceable(160) %4)
  %87 = call noundef i32 @_ZN21ConfigBitstreamParser9getLengthEv(ptr noundef nonnull align 8 dereferenceable(160) %4)
  %88 = sdiv i32 %87, 8
  %89 = load i8, ptr %86, align 1, !tbaa !5
  %90 = icmp eq i8 %89, 15
  br i1 %90, label %96, label %151

91:                                               ; preds = %83
  %92 = landingpad { ptr, i32 }
          cleanup
  br label %95

93:                                               ; preds = %84
  %94 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #8
  br label %95

95:                                               ; preds = %93, %91
  %.pn84 = phi { ptr, i32 } [ %94, %93 ], [ %92, %91 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #8
  br label %399

96:                                               ; preds = %85
  %97 = getelementptr inbounds i8, ptr %86, i64 1
  %98 = load i8, ptr %97, align 1, !tbaa !5
  %99 = icmp eq i8 %98, -16
  br i1 %99, label %.preheader, label %151

.preheader:                                       ; preds = %96
  %100 = icmp sgt i32 %87, 23
  br i1 %100, label %.lr.ph.preheader, label %.loopexit

.lr.ph.preheader:                                 ; preds = %.preheader
  %smax = call i32 @llvm.smax.i32(i32 %88, i32 3)
  %wide.trip.count = zext nneg i32 %smax to i64
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %121
  %indvars.iv = phi i64 [ 2, %.lr.ph.preheader ], [ %indvars.iv.next, %121 ]
  %101 = getelementptr inbounds i8, ptr %86, i64 %indvars.iv
  %102 = load i8, ptr %101, align 1, !tbaa !5
  %103 = icmp eq i8 %102, -16
  br i1 %103, label %104, label %121

104:                                              ; preds = %.lr.ph
  %105 = getelementptr inbounds i8, ptr %101, i64 1
  %106 = load i8, ptr %105, align 1, !tbaa !5
  %107 = icmp eq i8 %106, 15
  br i1 %107, label %108, label %121

108:                                              ; preds = %104
  %109 = trunc nuw nsw i64 %indvars.iv to i32
  %110 = getelementptr inbounds i8, ptr %0, i64 85
  %111 = load i8, ptr %110, align 1, !tbaa !8, !range !16, !noundef !17
  %112 = trunc nuw i8 %111 to i1
  br i1 %112, label %113, label %119

113:                                              ; preds = %108
  %114 = add nsw i32 %109, -2
  %115 = getelementptr inbounds i8, ptr %86, i64 2
  %116 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.757, i32 noundef %114, ptr noundef nonnull %115)
  br label %119

117:                                              ; preds = %214, %212, %209, %207, %205, %202, %200, %198, %195, %193, %190, %183, %170, %168, %163, %159
  %118 = landingpad { ptr, i32 }
          cleanup
  br label %399

119:                                              ; preds = %113, %108
  %120 = add nuw nsw i32 %109, 2
  br label %.loopexit

121:                                              ; preds = %.lr.ph, %104
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.loopexit, label %.lr.ph, !llvm.loop !18

.loopexit:                                        ; preds = %121, %.preheader, %119
  %.175 = phi i32 [ %120, %119 ], [ 2, %.preheader ], [ %smax, %121 ]
  %122 = sext i32 %.175 to i64
  %123 = getelementptr inbounds i8, ptr %86, i64 %122
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %2, ptr noundef nonnull align 1 dereferenceable(64) %123, i64 64, i1 false)
  %124 = add nsw i32 %.175, 64
  %125 = getelementptr inbounds i8, ptr %0, i64 85
  %126 = load i8, ptr %125, align 1, !tbaa !8, !range !16, !noundef !17
  %127 = trunc nuw i8 %126 to i1
  br i1 %127, label %.peel.next, label %159

.peel.next:                                       ; preds = %.loopexit
  %128 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.758)
  %.pre = load i8, ptr %2, align 16, !tbaa !5
  %129 = zext i8 %.pre to i32
  %130 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.724, i32 noundef %129)
  br label %131

131:                                              ; preds = %.peel.next, %136
  %indvars.iv142 = phi i64 [ 1, %.peel.next ], [ %indvars.iv.next143, %136 ]
  %132 = and i64 %indvars.iv142, 15
  %133 = icmp eq i64 %132, 0
  br i1 %133, label %134, label %136

134:                                              ; preds = %131
  %135 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.732)
  br label %136

136:                                              ; preds = %134, %131
  %137 = getelementptr inbounds [64 x i8], ptr %2, i64 0, i64 %indvars.iv142
  %138 = load i8, ptr %137, align 1, !tbaa !5
  %139 = zext i8 %138 to i32
  %140 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.724, i32 noundef %139)
  %indvars.iv.next143 = add nuw nsw i64 %indvars.iv142, 1
  %exitcond145.not = icmp eq i64 %indvars.iv.next143, 64
  br i1 %exitcond145.not, label %.loopexit147, label %131, !llvm.loop !20

.loopexit147:                                     ; preds = %136
  %141 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.725)
  %142 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.759)
  %143 = icmp slt i32 %124, %88
  br i1 %143, label %.lr.ph136.preheader, label %._crit_edge

.lr.ph136.preheader:                              ; preds = %.loopexit147
  %144 = zext nneg i32 %.175 to i64
  %145 = add nuw nsw i64 %144, 64
  %wide.trip.count151 = zext i32 %88 to i64
  br label %.lr.ph136

.lr.ph136:                                        ; preds = %.lr.ph136.preheader, %.lr.ph136
  %indvars.iv148 = phi i64 [ %145, %.lr.ph136.preheader ], [ %indvars.iv.next149, %.lr.ph136 ]
  %146 = getelementptr inbounds i8, ptr %86, i64 %indvars.iv148
  %147 = load i8, ptr %146, align 1, !tbaa !5
  %148 = zext i8 %147 to i32
  %149 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.650, i32 noundef %148)
  %indvars.iv.next149 = add nuw nsw i64 %indvars.iv148, 1
  %exitcond152.not = icmp eq i64 %indvars.iv.next149, %wide.trip.count151
  br i1 %exitcond152.not, label %._crit_edge, label %.lr.ph136, !llvm.loop !22

._crit_edge:                                      ; preds = %.lr.ph136, %.loopexit147
  %150 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.760)
  br label %159

151:                                              ; preds = %96, %85
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull @.str.761, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %152 unwind label %154

152:                                              ; preds = %151
  invoke void @_Z10printErrorRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %15, i1 noundef zeroext true)
          to label %153 unwind label %156

153:                                              ; preds = %152
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #8
  br label %398

154:                                              ; preds = %151
  %155 = landingpad { ptr, i32 }
          cleanup
  br label %158

156:                                              ; preds = %152
  %157 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #8
  br label %158

158:                                              ; preds = %156, %154
  %.pn86 = phi { ptr, i32 } [ %157, %156 ], [ %155, %154 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #8
  br label %399

159:                                              ; preds = %.loopexit, %._crit_edge
  %160 = invoke noundef zeroext i1 @_ZN7Lattice5wr_rdEhPhiS0_ib(ptr noundef nonnull align 8 dereferenceable(152) %0, i8 noundef zeroext -1, ptr noundef null, i32 noundef 0, ptr noundef null, i32 noundef 0, i1 noundef zeroext false)
          to label %161 unwind label %117

161:                                              ; preds = %159
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull @.str.622, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %162 unwind label %171

162:                                              ; preds = %161
  invoke void @_Z9printInfoRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %17, i1 noundef zeroext false)
          to label %163 unwind label %173

163:                                              ; preds = %162
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #8
  %164 = invoke noundef zeroext i1 @_ZN7Lattice9EnableISCEh(ptr noundef nonnull align 8 dereferenceable(152) %0, i8 noundef zeroext 8)
          to label %165 unwind label %117

165:                                              ; preds = %163
  br i1 %164, label %181, label %166

166:                                              ; preds = %165
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull @.str.616, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %167 unwind label %176

167:                                              ; preds = %166
  invoke void @_Z10printErrorRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %19, i1 noundef zeroext true)
          to label %168 unwind label %178

168:                                              ; preds = %167
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #8
  %169 = invoke noundef i64 @_ZN7Lattice13readStatusRegEv(ptr noundef nonnull align 8 dereferenceable(152) %0)
          to label %170 unwind label %117

170:                                              ; preds = %168
  invoke void @_ZN7Lattice14displayReadRegEm(ptr noundef nonnull align 8 dereferenceable(152) %0, i64 noundef %169)
          to label %398 unwind label %117

171:                                              ; preds = %161
  %172 = landingpad { ptr, i32 }
          cleanup
  br label %175

173:                                              ; preds = %162
  %174 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  br label %175

175:                                              ; preds = %173, %171
  %.pn88 = phi { ptr, i32 } [ %174, %173 ], [ %172, %171 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #8
  br label %399

176:                                              ; preds = %166
  %177 = landingpad { ptr, i32 }
          cleanup
  br label %180

178:                                              ; preds = %167
  %179 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  br label %180

180:                                              ; preds = %178, %176
  %.pn90 = phi { ptr, i32 } [ %179, %178 ], [ %177, %176 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #8
  br label %399

181:                                              ; preds = %165
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %22) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull @.str.614, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %182 unwind label %185

182:                                              ; preds = %181
  invoke void @_Z12printSuccessRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %21, i1 noundef zeroext true)
          to label %183 unwind label %187

183:                                              ; preds = %182
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #8
  %184 = invoke noundef zeroext i1 @_ZN7Lattice5wr_rdEhPhiS0_ib(ptr noundef nonnull align 8 dereferenceable(152) %0, i8 noundef zeroext 90, ptr noundef null, i32 noundef 0, ptr noundef nonnull %3, i32 noundef 16, i1 noundef zeroext false)
          to label %190 unwind label %117

185:                                              ; preds = %181
  %186 = landingpad { ptr, i32 }
          cleanup
  br label %189

187:                                              ; preds = %182
  %188 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  br label %189

189:                                              ; preds = %187, %185
  %.pn92 = phi { ptr, i32 } [ %188, %187 ], [ %186, %185 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #8
  br label %399

190:                                              ; preds = %183
  %191 = getelementptr inbounds i8, ptr %0, i64 8
  %192 = load ptr, ptr %191, align 8, !tbaa !23
  invoke void @_ZN4Jtag9set_stateENS_10tapState_tEh(ptr noundef nonnull align 8 dereferenceable(193) %192, i32 noundef 1, i8 noundef zeroext 1)
          to label %193 unwind label %117

193:                                              ; preds = %190
  %194 = load ptr, ptr %191, align 8, !tbaa !23
  invoke void @_ZN4Jtag9toggleClkEi(ptr noundef nonnull align 8 dereferenceable(193) %194, i32 noundef 2)
          to label %195 unwind label %117

195:                                              ; preds = %193
  %196 = getelementptr inbounds i8, ptr %3, i64 16
  %197 = invoke noundef zeroext i1 @_ZN7Lattice5wr_rdEhPhiS0_ib(ptr noundef nonnull align 8 dereferenceable(152) %0, i8 noundef zeroext 92, ptr noundef null, i32 noundef 0, ptr noundef nonnull %196, i32 noundef 16, i1 noundef zeroext false)
          to label %198 unwind label %117

198:                                              ; preds = %195
  %199 = load ptr, ptr %191, align 8, !tbaa !23
  invoke void @_ZN4Jtag9set_stateENS_10tapState_tEh(ptr noundef nonnull align 8 dereferenceable(193) %199, i32 noundef 1, i8 noundef zeroext 1)
          to label %200 unwind label %117

200:                                              ; preds = %198
  %201 = load ptr, ptr %191, align 8, !tbaa !23
  invoke void @_ZN4Jtag9toggleClkEi(ptr noundef nonnull align 8 dereferenceable(193) %201, i32 noundef 2)
          to label %202 unwind label %117

202:                                              ; preds = %200
  %203 = getelementptr inbounds i8, ptr %3, i64 32
  %204 = invoke noundef zeroext i1 @_ZN7Lattice5wr_rdEhPhiS0_ib(ptr noundef nonnull align 8 dereferenceable(152) %0, i8 noundef zeroext 98, ptr noundef null, i32 noundef 0, ptr noundef nonnull %203, i32 noundef 16, i1 noundef zeroext false)
          to label %205 unwind label %117

205:                                              ; preds = %202
  %206 = load ptr, ptr %191, align 8, !tbaa !23
  invoke void @_ZN4Jtag9set_stateENS_10tapState_tEh(ptr noundef nonnull align 8 dereferenceable(193) %206, i32 noundef 1, i8 noundef zeroext 1)
          to label %207 unwind label %117

207:                                              ; preds = %205
  %208 = load ptr, ptr %191, align 8, !tbaa !23
  invoke void @_ZN4Jtag9toggleClkEi(ptr noundef nonnull align 8 dereferenceable(193) %208, i32 noundef 2)
          to label %209 unwind label %117

209:                                              ; preds = %207
  %210 = getelementptr inbounds i8, ptr %3, i64 48
  %211 = invoke noundef zeroext i1 @_ZN7Lattice5wr_rdEhPhiS0_ib(ptr noundef nonnull align 8 dereferenceable(152) %0, i8 noundef zeroext 100, ptr noundef null, i32 noundef 0, ptr noundef nonnull %210, i32 noundef 16, i1 noundef zeroext false)
          to label %212 unwind label %117

212:                                              ; preds = %209
  %213 = load ptr, ptr %191, align 8, !tbaa !23
  invoke void @_ZN4Jtag9set_stateENS_10tapState_tEh(ptr noundef nonnull align 8 dereferenceable(193) %213, i32 noundef 1, i8 noundef zeroext 1)
          to label %214 unwind label %117

214:                                              ; preds = %212
  %215 = load ptr, ptr %191, align 8, !tbaa !23
  invoke void @_ZN4Jtag9toggleClkEi(ptr noundef nonnull align 8 dereferenceable(193) %215, i32 noundef 2)
          to label %216 unwind label %117

216:                                              ; preds = %214
  %217 = load i8, ptr %125, align 1, !tbaa !8, !range !16, !noundef !17
  %218 = trunc nuw i8 %217 to i1
  br i1 %218, label %219, label %vector.body

219:                                              ; preds = %216
  %220 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.762)
  br label %221

221:                                              ; preds = %219, %230
  %indvars.iv153 = phi i64 [ 63, %219 ], [ %indvars.iv.next154, %230 ]
  %222 = getelementptr inbounds [64 x i8], ptr %3, i64 0, i64 %indvars.iv153
  %223 = load i8, ptr %222, align 1, !tbaa !5
  %224 = zext i8 %223 to i32
  %225 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.724, i32 noundef %224)
  %.not123 = icmp ne i64 %indvars.iv153, 0
  %226 = and i64 %indvars.iv153, 15
  %227 = icmp eq i64 %226, 0
  %or.cond130 = and i1 %.not123, %227
  br i1 %or.cond130, label %228, label %230

228:                                              ; preds = %221
  %229 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.732)
  br label %230

230:                                              ; preds = %221, %228
  %indvars.iv.next154 = add nsw i64 %indvars.iv153, -1
  %.not160 = icmp eq i64 %indvars.iv153, 0
  br i1 %.not160, label %231, label %221, !llvm.loop !24

231:                                              ; preds = %230
  %232 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.725)
  br label %vector.body

vector.body:                                      ; preds = %231, %216
  %233 = getelementptr inbounds i8, ptr %2, i64 16
  %wide.load = load <16 x i8>, ptr %2, align 16, !tbaa !5
  %wide.load164 = load <16 x i8>, ptr %233, align 16, !tbaa !5
  %234 = getelementptr inbounds i8, ptr %3, i64 48
  %235 = getelementptr inbounds i8, ptr %3, i64 32
  %wide.load165 = load <16 x i8>, ptr %234, align 16, !tbaa !5
  %reverse = shufflevector <16 x i8> %wide.load165, <16 x i8> poison, <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
  %wide.load166 = load <16 x i8>, ptr %235, align 16, !tbaa !5
  %reverse167 = shufflevector <16 x i8> %wide.load166, <16 x i8> poison, <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
  %236 = icmp ne <16 x i8> %wide.load, %reverse
  %237 = icmp ne <16 x i8> %wide.load164, %reverse167
  %238 = getelementptr inbounds i8, ptr %2, i64 32
  %239 = getelementptr inbounds i8, ptr %2, i64 48
  %wide.load.1 = load <16 x i8>, ptr %238, align 16, !tbaa !5
  %wide.load164.1 = load <16 x i8>, ptr %239, align 16, !tbaa !5
  %240 = getelementptr inbounds i8, ptr %3, i64 16
  %wide.load165.1 = load <16 x i8>, ptr %240, align 16, !tbaa !5
  %reverse.1 = shufflevector <16 x i8> %wide.load165.1, <16 x i8> poison, <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
  %wide.load166.1 = load <16 x i8>, ptr %3, align 16, !tbaa !5
  %reverse167.1 = shufflevector <16 x i8> %wide.load166.1, <16 x i8> poison, <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
  %241 = icmp ne <16 x i8> %wide.load.1, %reverse.1
  %242 = icmp ne <16 x i8> %wide.load164.1, %reverse167.1
  %243 = or <16 x i1> %236, %241
  %244 = or <16 x i1> %237, %242
  %bin.rdx = or <16 x i1> %244, %243
  %bin.rdx.fr = freeze <16 x i1> %bin.rdx
  %245 = bitcast <16 x i1> %bin.rdx.fr to i16
  %.not169.not = icmp eq i16 %245, 0
  %246 = select i1 %.not169.not, ptr @.str.736, ptr @.str.737
  %247 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.763, ptr noundef nonnull %246)
  br i1 %.not169.not, label %310, label %248

248:                                              ; preds = %vector.body
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %23) #8
  store i8 0, ptr %23, align 1, !tbaa !5
  %249 = getelementptr inbounds i8, ptr %23, i64 1
  store i8 1, ptr %249, align 1, !tbaa !5
  %250 = load i8, ptr %125, align 1, !tbaa !8, !range !16, !noundef !17
  %251 = trunc nuw i8 %250 to i1
  br i1 %251, label %252, label %256

252:                                              ; preds = %248
  %253 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.738, i32 noundef 0, i32 noundef 1)
  br label %256

254:                                              ; preds = %285, %260, %256
  %255 = landingpad { ptr, i32 }
          cleanup
  br label %309

256:                                              ; preds = %252, %248
  %257 = invoke noundef zeroext i1 @_ZN7Lattice5wr_rdEhPhiS0_ib(ptr noundef nonnull align 8 dereferenceable(152) %0, i8 noundef zeroext 70, ptr noundef nonnull %23, i32 noundef 2, ptr noundef null, i32 noundef 0, i1 noundef zeroext false)
          to label %258 unwind label %254

258:                                              ; preds = %256
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull @.str.633, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %259 unwind label %266

259:                                              ; preds = %258
  invoke void @_Z9printInfoRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %24, i1 noundef zeroext false)
          to label %260 unwind label %268

260:                                              ; preds = %259
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #8
  %261 = invoke noundef zeroext i1 @_ZN7Lattice10flashEraseEj(ptr noundef nonnull align 8 dereferenceable(152) %0, i32 noundef 65536)
          to label %262 unwind label %254

262:                                              ; preds = %260
  br i1 %261, label %276, label %263

263:                                              ; preds = %262
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %26) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %27) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull @.str.616, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %264 unwind label %271

264:                                              ; preds = %263
  invoke void @_Z10printErrorRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %26, i1 noundef zeroext true)
          to label %265 unwind label %273

265:                                              ; preds = %264
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #8
  br label %.critedge

266:                                              ; preds = %258
  %267 = landingpad { ptr, i32 }
          cleanup
  br label %270

268:                                              ; preds = %259
  %269 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  br label %270

270:                                              ; preds = %268, %266
  %.pn94 = phi { ptr, i32 } [ %269, %268 ], [ %267, %266 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #8
  br label %309

271:                                              ; preds = %263
  %272 = landingpad { ptr, i32 }
          cleanup
  br label %275

273:                                              ; preds = %264
  %274 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #8
  br label %275

275:                                              ; preds = %273, %271
  %.pn104 = phi { ptr, i32 } [ %274, %273 ], [ %272, %271 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #8
  br label %309

276:                                              ; preds = %262
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %28) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %29) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull @.str.614, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %277 unwind label %279

277:                                              ; preds = %276
  invoke void @_Z12printSuccessRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %28, i1 noundef zeroext true)
          to label %278 unwind label %281

278:                                              ; preds = %277
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %30) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %31) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull @.str.764, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %284 unwind label %291

279:                                              ; preds = %276
  %280 = landingpad { ptr, i32 }
          cleanup
  br label %283

281:                                              ; preds = %277
  %282 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  br label %283

283:                                              ; preds = %281, %279
  %.pn96 = phi { ptr, i32 } [ %282, %281 ], [ %280, %279 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #8
  br label %309

284:                                              ; preds = %278
  invoke void @_Z9printInfoRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %30, i1 noundef zeroext true)
          to label %285 unwind label %293

285:                                              ; preds = %284
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #8
  %286 = invoke noundef zeroext i1 @_ZN7Lattice22programPubKey_MachXO3DEPh(ptr noundef nonnull align 8 dereferenceable(152) %0, ptr noundef nonnull %2)
          to label %287 unwind label %254

287:                                              ; preds = %285
  br i1 %286, label %301, label %288

288:                                              ; preds = %287
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %32) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %33) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull @.str.616, ptr noundef nonnull align 1 dereferenceable(1) %33)
          to label %289 unwind label %296

289:                                              ; preds = %288
  invoke void @_Z10printErrorRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %32, i1 noundef zeroext true)
          to label %290 unwind label %298

290:                                              ; preds = %289
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #8
  br label %.critedge

291:                                              ; preds = %278
  %292 = landingpad { ptr, i32 }
          cleanup
  br label %295

293:                                              ; preds = %284
  %294 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #8
  br label %295

295:                                              ; preds = %293, %291
  %.pn98 = phi { ptr, i32 } [ %294, %293 ], [ %292, %291 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #8
  br label %309

296:                                              ; preds = %288
  %297 = landingpad { ptr, i32 }
          cleanup
  br label %300

298:                                              ; preds = %289
  %299 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #8
  br label %300

300:                                              ; preds = %298, %296
  %.pn100 = phi { ptr, i32 } [ %299, %298 ], [ %297, %296 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #8
  br label %309

301:                                              ; preds = %287
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %34) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %35) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull @.str.614, ptr noundef nonnull align 1 dereferenceable(1) %35)
          to label %302 unwind label %304

302:                                              ; preds = %301
  invoke void @_Z12printSuccessRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %34, i1 noundef zeroext true)
          to label %303 unwind label %306

303:                                              ; preds = %302
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #8
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %23) #8
  br label %310

304:                                              ; preds = %301
  %305 = landingpad { ptr, i32 }
          cleanup
  br label %308

306:                                              ; preds = %302
  %307 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  br label %308

308:                                              ; preds = %306, %304
  %.pn102 = phi { ptr, i32 } [ %307, %306 ], [ %305, %304 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #8
  br label %309

309:                                              ; preds = %308, %300, %295, %283, %275, %270, %254
  %.pn104.pn = phi { ptr, i32 } [ %.pn104, %275 ], [ %.pn102, %308 ], [ %.pn100, %300 ], [ %255, %254 ], [ %.pn98, %295 ], [ %.pn96, %283 ], [ %.pn94, %270 ]
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %23) #8
  br label %399

310:                                              ; preds = %303, %vector.body
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %36) #8
  store i8 3, ptr %36, align 1, !tbaa !5
  %311 = invoke noundef zeroext i1 @_ZN7Lattice5wr_rdEhPhiS0_ib(ptr noundef nonnull align 8 dereferenceable(152) %0, i8 noundef zeroext -60, ptr noundef nonnull %36, i32 noundef 1, ptr noundef null, i32 noundef 0, i1 noundef zeroext false)
          to label %312 unwind label %341

312:                                              ; preds = %310
  %313 = load ptr, ptr %191, align 8, !tbaa !23
  invoke void @_ZN4Jtag9set_stateENS_10tapState_tEh(ptr noundef nonnull align 8 dereferenceable(193) %313, i32 noundef 1, i8 noundef zeroext 1)
          to label %314 unwind label %341

314:                                              ; preds = %312
  %315 = load ptr, ptr %191, align 8, !tbaa !23
  invoke void @_ZN4Jtag9toggleClkEi(ptr noundef nonnull align 8 dereferenceable(193) %315, i32 noundef 2)
          to label %316 unwind label %341

316:                                              ; preds = %314
  %317 = invoke noundef zeroext i1 @_ZN7Lattice5wr_rdEhPhiS0_ib(ptr noundef nonnull align 8 dereferenceable(152) %0, i8 noundef zeroext -1, ptr noundef null, i32 noundef 0, ptr noundef null, i32 noundef 0, i1 noundef zeroext false)
          to label %318 unwind label %341

318:                                              ; preds = %316
  %319 = invoke noundef zeroext i1 @_ZN7Lattice5wr_rdEhPhiS0_ib(ptr noundef nonnull align 8 dereferenceable(152) %0, i8 noundef zeroext -60, ptr noundef nonnull %36, i32 noundef 1, ptr noundef null, i32 noundef 0, i1 noundef zeroext false)
          to label %320 unwind label %341

320:                                              ; preds = %318
  %321 = load ptr, ptr %191, align 8, !tbaa !23
  invoke void @_ZN4Jtag9set_stateENS_10tapState_tEh(ptr noundef nonnull align 8 dereferenceable(193) %321, i32 noundef 1, i8 noundef zeroext 1)
          to label %322 unwind label %341

322:                                              ; preds = %320
  %323 = load ptr, ptr %191, align 8, !tbaa !23
  invoke void @_ZN4Jtag9toggleClkEi(ptr noundef nonnull align 8 dereferenceable(193) %323, i32 noundef 2)
          to label %324 unwind label %341

324:                                              ; preds = %322
  %325 = invoke noundef zeroext i1 @_ZN7Lattice5wr_rdEhPhiS0_ib(ptr noundef nonnull align 8 dereferenceable(152) %0, i8 noundef zeroext -1, ptr noundef null, i32 noundef 0, ptr noundef null, i32 noundef 0, i1 noundef zeroext false)
          to label %326 unwind label %341

326:                                              ; preds = %324
  %327 = load i8, ptr %125, align 1, !tbaa !8, !range !16, !noundef !17
  %328 = trunc nuw i8 %327 to i1
  br i1 %328, label %329, label %343

329:                                              ; preds = %326
  %330 = invoke noundef zeroext i1 @_ZN7Lattice5wr_rdEhPhiS0_ib(ptr noundef nonnull align 8 dereferenceable(152) %0, i8 noundef zeroext 61, ptr noundef null, i32 noundef 0, ptr noundef nonnull %3, i32 noundef 4, i1 noundef zeroext false)
          to label %331 unwind label %341

331:                                              ; preds = %329
  %332 = load ptr, ptr %191, align 8, !tbaa !23
  invoke void @_ZN4Jtag9set_stateENS_10tapState_tEh(ptr noundef nonnull align 8 dereferenceable(193) %332, i32 noundef 1, i8 noundef zeroext 1)
          to label %333 unwind label %341

333:                                              ; preds = %331
  %334 = load ptr, ptr %191, align 8, !tbaa !23
  invoke void @_ZN4Jtag9toggleClkEi(ptr noundef nonnull align 8 dereferenceable(193) %334, i32 noundef 2)
          to label %335 unwind label %341

335:                                              ; preds = %333
  %336 = getelementptr inbounds i8, ptr %3, i64 1
  %337 = load i8, ptr %336, align 1, !tbaa !5
  %338 = and i8 %337, 3
  %.not107 = icmp eq i8 %338, 0
  %spec.select131 = select i1 %.not107, ptr @.str.768, ptr @.str.766
  %339 = zext nneg i8 %338 to i32
  %340 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.765, ptr noundef nonnull %spec.select131, i32 noundef %339)
  br label %343

341:                                              ; preds = %372, %363, %345, %333, %331, %329, %324, %322, %320, %318, %316, %314, %312, %310
  %342 = landingpad { ptr, i32 }
          cleanup
  br label %397

343:                                              ; preds = %335, %326
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %37) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %38) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull @.str.639, ptr noundef nonnull align 1 dereferenceable(1) %38)
          to label %344 unwind label %351

344:                                              ; preds = %343
  invoke void @_Z9printInfoRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %37, i1 noundef zeroext false)
          to label %345 unwind label %353

345:                                              ; preds = %344
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %38) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #8
  %346 = invoke noundef zeroext i1 @_ZN7Lattice16writeProgramDoneEv(ptr noundef nonnull align 8 dereferenceable(152) %0)
          to label %347 unwind label %341

347:                                              ; preds = %345
  br i1 %346, label %361, label %348

348:                                              ; preds = %347
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %39) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %40) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull @.str.616, ptr noundef nonnull align 1 dereferenceable(1) %40)
          to label %349 unwind label %356

349:                                              ; preds = %348
  invoke void @_Z10printErrorRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %39, i1 noundef zeroext true)
          to label %350 unwind label %358

350:                                              ; preds = %349
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %40) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #8
  br label %396

351:                                              ; preds = %343
  %352 = landingpad { ptr, i32 }
          cleanup
  br label %355

353:                                              ; preds = %344
  %354 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #8
  br label %355

355:                                              ; preds = %353, %351
  %.pn108 = phi { ptr, i32 } [ %354, %353 ], [ %352, %351 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %38) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #8
  br label %397

356:                                              ; preds = %348
  %357 = landingpad { ptr, i32 }
          cleanup
  br label %360

358:                                              ; preds = %349
  %359 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #8
  br label %360

360:                                              ; preds = %358, %356
  %.pn118 = phi { ptr, i32 } [ %359, %358 ], [ %357, %356 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %40) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #8
  br label %397

361:                                              ; preds = %347
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %41) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %42) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef nonnull @.str.614, ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %362 unwind label %365

362:                                              ; preds = %361
  invoke void @_Z12printSuccessRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %41, i1 noundef zeroext true)
          to label %363 unwind label %367

363:                                              ; preds = %362
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %42) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #8
  %364 = invoke noundef zeroext i1 @_ZN7Lattice5wr_rdEhPhiS0_ib(ptr noundef nonnull align 8 dereferenceable(152) %0, i8 noundef zeroext -1, ptr noundef null, i32 noundef 0, ptr noundef null, i32 noundef 0, i1 noundef zeroext false)
          to label %370 unwind label %341

365:                                              ; preds = %361
  %366 = landingpad { ptr, i32 }
          cleanup
  br label %369

367:                                              ; preds = %362
  %368 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #8
  br label %369

369:                                              ; preds = %367, %365
  %.pn110 = phi { ptr, i32 } [ %368, %367 ], [ %366, %365 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %42) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #8
  br label %397

370:                                              ; preds = %363
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %43) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %44) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef nonnull @.str.627, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %371 unwind label %378

371:                                              ; preds = %370
  invoke void @_Z9printInfoRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %43, i1 noundef zeroext false)
          to label %372 unwind label %380

372:                                              ; preds = %371
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %44) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #8
  %373 = invoke noundef zeroext i1 @_ZN7Lattice10DisableISCEv(ptr noundef nonnull align 8 dereferenceable(152) %0)
          to label %374 unwind label %341

374:                                              ; preds = %372
  br i1 %373, label %388, label %375

375:                                              ; preds = %374
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %45) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %46) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull @.str.616, ptr noundef nonnull align 1 dereferenceable(1) %46)
          to label %376 unwind label %383

376:                                              ; preds = %375
  invoke void @_Z10printErrorRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %45, i1 noundef zeroext true)
          to label %377 unwind label %385

377:                                              ; preds = %376
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %46) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #8
  br label %396

378:                                              ; preds = %370
  %379 = landingpad { ptr, i32 }
          cleanup
  br label %382

380:                                              ; preds = %371
  %381 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #8
  br label %382

382:                                              ; preds = %380, %378
  %.pn112 = phi { ptr, i32 } [ %381, %380 ], [ %379, %378 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %44) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #8
  br label %397

383:                                              ; preds = %375
  %384 = landingpad { ptr, i32 }
          cleanup
  br label %387

385:                                              ; preds = %376
  %386 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #8
  br label %387

387:                                              ; preds = %385, %383
  %.pn114 = phi { ptr, i32 } [ %386, %385 ], [ %384, %383 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %46) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #8
  br label %397

388:                                              ; preds = %374
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %47) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %48) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull @.str.614, ptr noundef nonnull align 1 dereferenceable(1) %48)
          to label %389 unwind label %391

389:                                              ; preds = %388
  invoke void @_Z12printSuccessRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(32) %47, i1 noundef zeroext true)
          to label %390 unwind label %393

390:                                              ; preds = %389
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %48) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #8
  br label %396

391:                                              ; preds = %388
  %392 = landingpad { ptr, i32 }
          cleanup
  br label %395

393:                                              ; preds = %389
  %394 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #8
  br label %395

395:                                              ; preds = %393, %391
  %.pn116 = phi { ptr, i32 } [ %394, %393 ], [ %392, %391 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %48) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #8
  br label %397

396:                                              ; preds = %390, %377, %350
  %.1 = phi i1 [ false, %350 ], [ true, %390 ], [ false, %377 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %36) #8
  br label %398

397:                                              ; preds = %395, %387, %382, %369, %360, %355, %341
  %.pn118.pn = phi { ptr, i32 } [ %.pn118, %360 ], [ %.pn116, %395 ], [ %.pn114, %387 ], [ %342, %341 ], [ %.pn112, %382 ], [ %.pn110, %369 ], [ %.pn108, %355 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %36) #8
  br label %399

.critedge:                                        ; preds = %290, %265
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %23) #8
  br label %398

398:                                              ; preds = %153, %396, %170, %.critedge, %60
  %.3 = phi i1 [ false, %60 ], [ %.1, %396 ], [ false, %153 ], [ false, %170 ], [ false, %.critedge ]
  call void @_ZN21ConfigBitstreamParserD2Ev(ptr noundef nonnull align 8 dereferenceable(161) %4) #8
  call void @llvm.lifetime.end.p0(i64 168, ptr nonnull %4) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %3) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %2) #8
  ret i1 %.3

399:                                              ; preds = %117, %158, %175, %180, %189, %309, %397, %95, %82, %77, %71, %70, %65
  %.pn125.pn = phi { ptr, i32 } [ %.pn125, %82 ], [ %.pn84, %95 ], [ %.pn82, %77 ], [ %72, %71 ], [ %.pn80, %70 ], [ %.pn, %65 ], [ %.pn118.pn, %397 ], [ %.pn104.pn, %309 ], [ %118, %117 ], [ %.pn92, %189 ], [ %.pn90, %180 ], [ %.pn88, %175 ], [ %.pn86, %158 ]
  call void @_ZN21ConfigBitstreamParserD2Ev(ptr noundef nonnull align 8 dereferenceable(161) %4) #8
  call void @llvm.lifetime.end.p0(i64 168, ptr nonnull %4) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %3) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %2) #8
  resume { ptr, i32 } %.pn125.pn
}

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN7Lattice22programPubKey_MachXO3DEPh(ptr noundef nonnull align 8 dereferenceable(152), ptr noundef) local_unnamed_addr #2 align 2

declare noundef i32 @_ZN9RawParser5parseEv(ptr noundef nonnull align 8 dereferenceable(161)) unnamed_addr #3

; Function Attrs: nounwind
declare void @_ZN21ConfigBitstreamParserD2Ev(ptr noundef nonnull align 8 dereferenceable(160)) unnamed_addr #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #6 = { nounwind "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 #7 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #8 = { 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 = !{!"omnipotent char", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !15, i64 85}
!9 = !{!"_ZTS6Device", !10, i64 8, !11, i64 16, !11, i64 48, !14, i64 80, !15, i64 84, !15, i64 85, !15, i64 86}
!10 = !{!"any pointer", !6, i64 0}
!11 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !12, i64 0, !13, i64 8, !6, i64 16}
!12 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !10, i64 0}
!13 = !{!"long", !6, i64 0}
!14 = !{!"_ZTSN6Device9prog_modeE", !6, i64 0}
!15 = !{!"bool", !6, i64 0}
!16 = !{i8 0, i8 2}
!17 = !{}
!18 = distinct !{!18, !19}
!19 = !{!"llvm.loop.mustprogress"}
!20 = distinct !{!20, !19, !21}
!21 = !{!"llvm.loop.peeled.count", i32 1}
!22 = distinct !{!22, !19}
!23 = !{!9, !10, i64 8}
!24 = distinct !{!24, !19}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalDCEPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LoopFullUnrollPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,SCCPPass,SROAPass,SimplifyCFGPass