; LLVM IR from albertobsd/keyhunt :: keyhunt_legacy.ll (Z21thread_process_vanityPv)

; 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.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<Point, std::allocator<Point>>::_Vector_impl" }
%"struct.std::_Vector_base<Point, std::allocator<Point>>::_Vector_impl" = type { %"struct.std::_Vector_base<Point, std::allocator<Point>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Point, std::allocator<Point>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.Point = type { %class.Int, %class.Int, %class.Int }
%class.Int = type { [1 x %struct.__mpz_struct] }
%struct.__mpz_struct = type { i32, i32, ptr }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%struct.tothread = type { i32, ptr, ptr }
%class.Secp256K1 = type { %class.Point, %class.Int, %class.Int, [8192 x %class.Point] }

@Gn = external dso_local global %"class.std::vector", align 8
@_2Gn = external dso_local global %class.Point, align 8
@THREADOUTPUT = external dso_local global i32, align 4
@write_random = external dso_local global %union.pthread_mutex_t, align 8
@steps = external dso_local global ptr, align 8
@ends = external dso_local global ptr, align 8
@N_SEQUENTIAL_MAX = external dso_local global i64, align 8
@FLAGENDOMORPHISM = external dso_local global i32, align 4
@FLAGQUIET = external dso_local global i32, align 4
@FLAGMATRIX = external dso_local global i32, align 4
@FLAGSEARCH = external dso_local global i32, align 4
@FLAGRANDOM = external dso_local global i32, align 4
@stride = external dso_local global %class.Int, align 8
@n_range_start = external dso_local global %class.Int, align 8
@n_range_end = external dso_local global %class.Int, align 8
@lambda = external dso_local global %class.Int, align 8
@lambda2 = external dso_local global %class.Int, align 8
@beta = external dso_local global %class.Int, align 8
@beta2 = external dso_local global %class.Int, align 8
@secp = external dso_local global ptr, align 8
@stdout = external global ptr, align 8
@.str.232 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.233 = external hidden unnamed_addr constant [20 x i8], align 1

declare void @_ZN5PointC1Ev(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #0

; Function Attrs: nounwind
declare void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #1

declare void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #0

; Function Attrs: nounwind
declare void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) #3

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) #4

declare void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #0

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

declare void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) #0

declare noundef ptr @_ZN3Int9GetBase16Ev(ptr noundef nonnull align 8 dereferenceable(16)) #0

declare noundef zeroext i1 @_ZN3Int7IsLowerEPS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) #0

; Function Attrs: nounwind
declare void @free(ptr noundef) #1

declare void @_ZN3Int3SubEPS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #5 align 2

declare void @_ZN3Int4RandEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, ptr noundef) #0

declare void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) #0

declare i32 @fflush(ptr noundef) #0

declare void @_ZN9Secp256K116ComputePublicKeyEP3Int(ptr dead_on_unwind writable sret(%class.Point) align 8, ptr noundef nonnull align 8 dereferenceable(393296), ptr noundef) #0

declare noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(48)) #0

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

declare void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind writable sret(%class.Point) align 8, ptr noundef nonnull align 8 dereferenceable(393296), ptr noundef nonnull align 8 dereferenceable(48)) #0

; Function Attrs: nounwind willreturn memory(read)
declare i32 @memcmp(ptr noundef, ptr noundef, i64 noundef) #6

; Function Attrs: nounwind
declare i32 @pthread_mutex_lock(ptr noundef) #1

; Function Attrs: nounwind
declare i32 @pthread_mutex_unlock(ptr noundef) #1

; Function Attrs: mustprogress uwtable
define dso_local noundef ptr @_Z21thread_process_vanityPv(ptr noundef %0) #7 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca [1024 x %class.Point], align 16
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca [1024 x %class.Point], align 16
  %9 = alloca [1024 x %class.Point], align 16
  %10 = alloca [4 x %class.Point], align 16
  %11 = alloca [513 x %class.Int], align 16
  %12 = alloca ptr, align 8
  %13 = alloca %class.Point, align 8
  %14 = alloca %class.Int, align 8
  %15 = alloca %class.Int, align 8
  %16 = alloca %class.Int, align 8
  %17 = alloca %class.Int, align 8
  %18 = alloca %class.Point, align 8
  %19 = alloca %class.Point, align 8
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i64, align 8
  %26 = alloca i64, align 8
  %27 = alloca %class.Point, align 8
  %28 = alloca %class.Point, align 8
  %29 = alloca %class.Point, align 8
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca ptr, align 8
  %34 = alloca [20 x i8], align 16
  %35 = alloca [4 x [20 x i8]], align 16
  %36 = alloca [12 x [4 x [20 x i8]]], align 16
  %37 = alloca %class.Int, align 8
  %38 = alloca %class.Int, align 8
  %39 = alloca %class.Int, align 8
  %40 = alloca i8, align 1
  %41 = alloca %class.Point, align 8
  %42 = alloca %class.Point, align 8
  %43 = alloca %class.Point, align 8
  %44 = alloca %class.Point, align 8
  %45 = alloca %class.Point, align 8
  %46 = alloca %class.Point, align 8
  %47 = alloca %class.Point, align 8
  %48 = alloca %class.Point, align 8
  %49 = alloca %class.Point, align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #8
  call void @llvm.lifetime.start.p0(i64 49152, ptr %5) #8
  %50 = getelementptr inbounds [1024 x %class.Point], ptr %5, i32 0, i32 0
  %51 = getelementptr inbounds %class.Point, ptr %50, i64 1024
  br label %52

52:                                               ; preds = %54, %1
  %53 = phi ptr [ %50, %1 ], [ %55, %54 ]
  invoke void @_ZN5PointC1Ev(ptr noundef nonnull align 8 dereferenceable(48) %53)
          to label %54 unwind label %127

54:                                               ; preds = %52
  %55 = getelementptr inbounds %class.Point, ptr %53, i64 1
  %56 = icmp eq ptr %55, %51
  br i1 %56, label %57, label %52

57:                                               ; preds = %54
  call void @llvm.lifetime.start.p0(i64 49152, ptr %8) #8
  %58 = getelementptr inbounds [1024 x %class.Point], ptr %8, i32 0, i32 0
  %59 = getelementptr inbounds %class.Point, ptr %58, i64 1024
  br label %60

60:                                               ; preds = %62, %57
  %61 = phi ptr [ %58, %57 ], [ %63, %62 ]
  invoke void @_ZN5PointC1Ev(ptr noundef nonnull align 8 dereferenceable(48) %61)
          to label %62 unwind label %137

62:                                               ; preds = %60
  %63 = getelementptr inbounds %class.Point, ptr %61, i64 1
  %64 = icmp eq ptr %63, %59
  br i1 %64, label %65, label %60

65:                                               ; preds = %62
  call void @llvm.lifetime.start.p0(i64 49152, ptr %9) #8
  %66 = getelementptr inbounds [1024 x %class.Point], ptr %9, i32 0, i32 0
  %67 = getelementptr inbounds %class.Point, ptr %66, i64 1024
  br label %68

68:                                               ; preds = %70, %65
  %69 = phi ptr [ %66, %65 ], [ %71, %70 ]
  invoke void @_ZN5PointC1Ev(ptr noundef nonnull align 8 dereferenceable(48) %69)
          to label %70 unwind label %147

70:                                               ; preds = %68
  %71 = getelementptr inbounds %class.Point, ptr %69, i64 1
  %72 = icmp eq ptr %71, %67
  br i1 %72, label %73, label %68

73:                                               ; preds = %70
  call void @llvm.lifetime.start.p0(i64 192, ptr %10) #8
  %74 = getelementptr inbounds [4 x %class.Point], ptr %10, i32 0, i32 0
  %75 = getelementptr inbounds %class.Point, ptr %74, i64 4
  br label %76

76:                                               ; preds = %78, %73
  %77 = phi ptr [ %74, %73 ], [ %79, %78 ]
  invoke void @_ZN5PointC1Ev(ptr noundef nonnull align 8 dereferenceable(48) %77)
          to label %78 unwind label %157

78:                                               ; preds = %76
  %79 = getelementptr inbounds %class.Point, ptr %77, i64 1
  %80 = icmp eq ptr %79, %75
  br i1 %80, label %81, label %76

81:                                               ; preds = %78
  call void @llvm.lifetime.start.p0(i64 8208, ptr %11) #8
  %82 = getelementptr inbounds [513 x %class.Int], ptr %11, i32 0, i32 0
  %83 = getelementptr inbounds %class.Int, ptr %82, i64 513
  br label %84

84:                                               ; preds = %86, %81
  %85 = phi ptr [ %82, %81 ], [ %87, %86 ]
  invoke void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %85)
          to label %86 unwind label %167

86:                                               ; preds = %84
  %87 = getelementptr inbounds %class.Int, ptr %85, i64 1
  %88 = icmp eq ptr %87, %83
  br i1 %88, label %89, label %84

89:                                               ; preds = %86
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #8
  %90 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 24) #9
          to label %91 unwind label %177

91:                                               ; preds = %89
  invoke void @_ZN8IntGroupC1Ei(ptr noundef nonnull align 8 dereferenceable(20) %90, i32 noundef 513)
          to label %92 unwind label %181

92:                                               ; preds = %91
  store ptr %90, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 48, ptr %13) #8
  invoke void @_ZN5PointC1Ev(ptr noundef nonnull align 8 dereferenceable(48) %13)
          to label %93 unwind label %185

93:                                               ; preds = %92
  call void @llvm.lifetime.start.p0(i64 16, ptr %14) #8
  invoke void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %14)
          to label %94 unwind label %189

94:                                               ; preds = %93
  call void @llvm.lifetime.start.p0(i64 16, ptr %15) #8
  invoke void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %15)
          to label %95 unwind label %193

95:                                               ; preds = %94
  call void @llvm.lifetime.start.p0(i64 16, ptr %16) #8
  invoke void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %16)
          to label %96 unwind label %197

96:                                               ; preds = %95
  call void @llvm.lifetime.start.p0(i64 16, ptr %17) #8
  invoke void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %17)
          to label %97 unwind label %201

97:                                               ; preds = %96
  call void @llvm.lifetime.start.p0(i64 48, ptr %18) #8
  invoke void @_ZN5PointC1Ev(ptr noundef nonnull align 8 dereferenceable(48) %18)
          to label %98 unwind label %205

98:                                               ; preds = %97
  call void @llvm.lifetime.start.p0(i64 48, ptr %19) #8
  invoke void @_ZN5PointC1Ev(ptr noundef nonnull align 8 dereferenceable(48) %19)
          to label %99 unwind label %209

99:                                               ; preds = %98
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #8
  store i32 511, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #8
  call void @llvm.lifetime.start.p0(i64 48, ptr %27) #8
  invoke void @_ZN5PointC1Ev(ptr noundef nonnull align 8 dereferenceable(48) %27)
          to label %100 unwind label %213

100:                                              ; preds = %99
  call void @llvm.lifetime.start.p0(i64 48, ptr %28) #8
  invoke void @_ZN5PointC1Ev(ptr noundef nonnull align 8 dereferenceable(48) %28)
          to label %101 unwind label %217

101:                                              ; preds = %100
  call void @llvm.lifetime.start.p0(i64 48, ptr %29) #8
  invoke void @_ZN5PointC1Ev(ptr noundef nonnull align 8 dereferenceable(48) %29)
          to label %102 unwind label %221

102:                                              ; preds = %101
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #8
  store i32 1, ptr %31, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  store ptr null, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 20, ptr %34) #8
  call void @llvm.lifetime.start.p0(i64 80, ptr %35) #8
  call void @llvm.lifetime.start.p0(i64 960, ptr %36) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #8
  invoke void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %37)
          to label %103 unwind label %225

103:                                              ; preds = %102
  call void @llvm.lifetime.start.p0(i64 16, ptr %38) #8
  invoke void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %38)
          to label %104 unwind label %229

104:                                              ; preds = %103
  call void @llvm.lifetime.start.p0(i64 16, ptr %39) #8
  invoke void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %39)
          to label %105 unwind label %233

105:                                              ; preds = %104
  %106 = load ptr, ptr %3, align 8, !tbaa !5
  store ptr %106, ptr %4, align 8, !tbaa !5
  %107 = load ptr, ptr %4, align 8, !tbaa !5
  %108 = getelementptr inbounds %struct.tothread, ptr %107, i32 0, i32 0
  %109 = load i32, ptr %108, align 8, !tbaa !11
  store i32 %109, ptr %30, align 4, !tbaa !9
  %110 = load ptr, ptr %4, align 8, !tbaa !5
  call void @free(ptr noundef %110) #8
  %111 = load ptr, ptr %12, align 8, !tbaa !5
  %112 = getelementptr inbounds [513 x %class.Int], ptr %11, i64 0, i64 0
  invoke void @_ZN8IntGroup3SetEP3Int(ptr noundef nonnull align 8 dereferenceable(20) %111, ptr noundef %112)
          to label %113 unwind label %237

113:                                              ; preds = %105
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #8
  %114 = load i32, ptr @FLAGSEARCH, align 4, !tbaa !9
  %115 = icmp eq i32 %114, 0
  br i1 %115, label %119, label %116

116:                                              ; preds = %113
  %117 = load i32, ptr @FLAGSEARCH, align 4, !tbaa !9
  %118 = icmp eq i32 %117, 2
  br label %119

119:                                              ; preds = %116, %113
  %120 = phi i1 [ true, %113 ], [ %118, %116 ]
  %121 = zext i1 %120 to i8
  store i8 %121, ptr %40, align 1, !tbaa !13
  br label %122

122:                                              ; preds = %1546, %119
  %123 = load i32, ptr @FLAGRANDOM, align 4, !tbaa !9
  %124 = icmp ne i32 %123, 0
  br i1 %124, label %125, label %245

125:                                              ; preds = %122
  invoke void @_ZN3Int4RandEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %37, ptr noundef @n_range_start, ptr noundef @n_range_end)
          to label %126 unwind label %241

126:                                              ; preds = %125
  br label %256

127:                                              ; preds = %52
  %128 = landingpad { ptr, i32 }
          cleanup
  %129 = extractvalue { ptr, i32 } %128, 0
  store ptr %129, ptr %6, align 8
  %130 = extractvalue { ptr, i32 } %128, 1
  store i32 %130, ptr %7, align 4
  %131 = icmp eq ptr %50, %53
  br i1 %131, label %136, label %132

132:                                              ; preds = %132, %127
  %133 = phi ptr [ %53, %127 ], [ %134, %132 ]
  %134 = getelementptr inbounds %class.Point, ptr %133, i64 -1
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %134) #8
  %135 = icmp eq ptr %134, %50
  br i1 %135, label %136, label %132

136:                                              ; preds = %132, %127
  br label %1645

137:                                              ; preds = %60
  %138 = landingpad { ptr, i32 }
          cleanup
  %139 = extractvalue { ptr, i32 } %138, 0
  store ptr %139, ptr %6, align 8
  %140 = extractvalue { ptr, i32 } %138, 1
  store i32 %140, ptr %7, align 4
  %141 = icmp eq ptr %58, %61
  br i1 %141, label %146, label %142

142:                                              ; preds = %142, %137
  %143 = phi ptr [ %61, %137 ], [ %144, %142 ]
  %144 = getelementptr inbounds %class.Point, ptr %143, i64 -1
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %144) #8
  %145 = icmp eq ptr %144, %58
  br i1 %145, label %146, label %142

146:                                              ; preds = %142, %137
  br label %1631

147:                                              ; preds = %68
  %148 = landingpad { ptr, i32 }
          cleanup
  %149 = extractvalue { ptr, i32 } %148, 0
  store ptr %149, ptr %6, align 8
  %150 = extractvalue { ptr, i32 } %148, 1
  store i32 %150, ptr %7, align 4
  %151 = icmp eq ptr %66, %69
  br i1 %151, label %156, label %152

152:                                              ; preds = %152, %147
  %153 = phi ptr [ %69, %147 ], [ %154, %152 ]
  %154 = getelementptr inbounds %class.Point, ptr %153, i64 -1
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %154) #8
  %155 = icmp eq ptr %154, %66
  br i1 %155, label %156, label %152

156:                                              ; preds = %152, %147
  br label %1616

157:                                              ; preds = %76
  %158 = landingpad { ptr, i32 }
          cleanup
  %159 = extractvalue { ptr, i32 } %158, 0
  store ptr %159, ptr %6, align 8
  %160 = extractvalue { ptr, i32 } %158, 1
  store i32 %160, ptr %7, align 4
  %161 = icmp eq ptr %74, %77
  br i1 %161, label %166, label %162

162:                                              ; preds = %162, %157
  %163 = phi ptr [ %77, %157 ], [ %164, %162 ]
  %164 = getelementptr inbounds %class.Point, ptr %163, i64 -1
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %164) #8
  %165 = icmp eq ptr %164, %74
  br i1 %165, label %166, label %162

166:                                              ; preds = %162, %157
  br label %1601

167:                                              ; preds = %84
  %168 = landingpad { ptr, i32 }
          cleanup
  %169 = extractvalue { ptr, i32 } %168, 0
  store ptr %169, ptr %6, align 8
  %170 = extractvalue { ptr, i32 } %168, 1
  store i32 %170, ptr %7, align 4
  %171 = icmp eq ptr %82, %85
  br i1 %171, label %176, label %172

172:                                              ; preds = %172, %167
  %173 = phi ptr [ %85, %167 ], [ %174, %172 ]
  %174 = getelementptr inbounds %class.Int, ptr %173, i64 -1
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %174) #8
  %175 = icmp eq ptr %174, %82
  br i1 %175, label %176, label %172

176:                                              ; preds = %172, %167
  br label %1586

177:                                              ; preds = %89
  %178 = landingpad { ptr, i32 }
          cleanup
  %179 = extractvalue { ptr, i32 } %178, 0
  store ptr %179, ptr %6, align 8
  %180 = extractvalue { ptr, i32 } %178, 1
  store i32 %180, ptr %7, align 4
  br label %1571

181:                                              ; preds = %91
  %182 = landingpad { ptr, i32 }
          cleanup
  %183 = extractvalue { ptr, i32 } %182, 0
  store ptr %183, ptr %6, align 8
  %184 = extractvalue { ptr, i32 } %182, 1
  store i32 %184, ptr %7, align 4
  call void @_ZdlPvm(ptr noundef %90, i64 noundef 24) #10
  br label %1571

185:                                              ; preds = %92
  %186 = landingpad { ptr, i32 }
          cleanup
  %187 = extractvalue { ptr, i32 } %186, 0
  store ptr %187, ptr %6, align 8
  %188 = extractvalue { ptr, i32 } %186, 1
  store i32 %188, ptr %7, align 4
  br label %1570

189:                                              ; preds = %93
  %190 = landingpad { ptr, i32 }
          cleanup
  %191 = extractvalue { ptr, i32 } %190, 0
  store ptr %191, ptr %6, align 8
  %192 = extractvalue { ptr, i32 } %190, 1
  store i32 %192, ptr %7, align 4
  br label %1569

193:                                              ; preds = %94
  %194 = landingpad { ptr, i32 }
          cleanup
  %195 = extractvalue { ptr, i32 } %194, 0
  store ptr %195, ptr %6, align 8
  %196 = extractvalue { ptr, i32 } %194, 1
  store i32 %196, ptr %7, align 4
  br label %1568

197:                                              ; preds = %95
  %198 = landingpad { ptr, i32 }
          cleanup
  %199 = extractvalue { ptr, i32 } %198, 0
  store ptr %199, ptr %6, align 8
  %200 = extractvalue { ptr, i32 } %198, 1
  store i32 %200, ptr %7, align 4
  br label %1567

201:                                              ; preds = %96
  %202 = landingpad { ptr, i32 }
          cleanup
  %203 = extractvalue { ptr, i32 } %202, 0
  store ptr %203, ptr %6, align 8
  %204 = extractvalue { ptr, i32 } %202, 1
  store i32 %204, ptr %7, align 4
  br label %1566

205:                                              ; preds = %97
  %206 = landingpad { ptr, i32 }
          cleanup
  %207 = extractvalue { ptr, i32 } %206, 0
  store ptr %207, ptr %6, align 8
  %208 = extractvalue { ptr, i32 } %206, 1
  store i32 %208, ptr %7, align 4
  br label %1565

209:                                              ; preds = %98
  %210 = landingpad { ptr, i32 }
          cleanup
  %211 = extractvalue { ptr, i32 } %210, 0
  store ptr %211, ptr %6, align 8
  %212 = extractvalue { ptr, i32 } %210, 1
  store i32 %212, ptr %7, align 4
  br label %1564

213:                                              ; preds = %99
  %214 = landingpad { ptr, i32 }
          cleanup
  %215 = extractvalue { ptr, i32 } %214, 0
  store ptr %215, ptr %6, align 8
  %216 = extractvalue { ptr, i32 } %214, 1
  store i32 %216, ptr %7, align 4
  br label %1563

217:                                              ; preds = %100
  %218 = landingpad { ptr, i32 }
          cleanup
  %219 = extractvalue { ptr, i32 } %218, 0
  store ptr %219, ptr %6, align 8
  %220 = extractvalue { ptr, i32 } %218, 1
  store i32 %220, ptr %7, align 4
  br label %1562

221:                                              ; preds = %101
  %222 = landingpad { ptr, i32 }
          cleanup
  %223 = extractvalue { ptr, i32 } %222, 0
  store ptr %223, ptr %6, align 8
  %224 = extractvalue { ptr, i32 } %222, 1
  store i32 %224, ptr %7, align 4
  br label %1561

225:                                              ; preds = %102
  %226 = landingpad { ptr, i32 }
          cleanup
  %227 = extractvalue { ptr, i32 } %226, 0
  store ptr %227, ptr %6, align 8
  %228 = extractvalue { ptr, i32 } %226, 1
  store i32 %228, ptr %7, align 4
  br label %1560

229:                                              ; preds = %103
  %230 = landingpad { ptr, i32 }
          cleanup
  %231 = extractvalue { ptr, i32 } %230, 0
  store ptr %231, ptr %6, align 8
  %232 = extractvalue { ptr, i32 } %230, 1
  store i32 %232, ptr %7, align 4
  br label %1559

233:                                              ; preds = %104
  %234 = landingpad { ptr, i32 }
          cleanup
  %235 = extractvalue { ptr, i32 } %234, 0
  store ptr %235, ptr %6, align 8
  %236 = extractvalue { ptr, i32 } %234, 1
  store i32 %236, ptr %7, align 4
  br label %1558

237:                                              ; preds = %105
  %238 = landingpad { ptr, i32 }
          cleanup
  %239 = extractvalue { ptr, i32 } %238, 0
  store ptr %239, ptr %6, align 8
  %240 = extractvalue { ptr, i32 } %238, 1
  store i32 %240, ptr %7, align 4
  br label %1557

241:                                              ; preds = %1532, %1530, %1528, %1525, %1523, %1521, %1519, %1518, %1513, %1511, %1503, %1498, %1497, %1494, %1486, %1485, %1484, %1482, %1475, %1468, %1454, %1453, %1437, %1432, %1418, %1417, %1401, %1396, %1382, %1381, %1365, %1358, %1357, %1355, %1345, %1324, %1311, %1310, %1296, %1291, %1290, %1288, %1278, %1267, %1262, %1261, %1257, %1256, %1251, %1250, %1246, %1245, %1240, %1239, %1235, %1234, %1229, %1228, %1224, %1223, %1218, %1217, %1213, %1208, %1207, %1203, %1187, %1186, %1184, %1174, %1130, %1111, %1082, %1034, %1005, %957, %928, %854, %821, %787, %754, %721, %688, %655, %622, %604, %600, %595, %591, %582, %575, %573, %566, %557, %555, %553, %552, %548, %546, %545, %540, %538, %532, %527, %521, %516, %499, %493, %487, %481, %474, %468, %462, %456, %445, %434, %427, %425, %418, %409, %407, %405, %404, %400, %398, %397, %392, %385, %383, %376, %367, %365, %363, %362, %358, %352, %350, %348, %340, %338, %332, %323, %301, %295, %290, %289, %288, %281, %278, %276, %268, %264, %262, %250, %248, %245, %125
  %242 = landingpad { ptr, i32 }
          cleanup
  %243 = extractvalue { ptr, i32 } %242, 0
  store ptr %243, ptr %6, align 8
  %244 = extractvalue { ptr, i32 } %242, 1
  store i32 %244, ptr %7, align 4
  br label %1556

245:                                              ; preds = %122
  %246 = invoke noundef zeroext i1 @_ZN3Int7IsLowerEPS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_start, ptr noundef @n_range_end)
          to label %247 unwind label %241

247:                                              ; preds = %245
  br i1 %246, label %248, label %254

248:                                              ; preds = %247
  %249 = call i32 @pthread_mutex_lock(ptr noundef @write_random) #8
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %37, ptr noundef @n_range_start)
          to label %250 unwind label %241

250:                                              ; preds = %248
  %251 = load i64, ptr @N_SEQUENTIAL_MAX, align 8, !tbaa !15
  invoke void @_ZN3Int3AddEm(ptr noundef nonnull align 8 dereferenceable(16) @n_range_start, i64 noundef %251)
          to label %252 unwind label %241

252:                                              ; preds = %250
  %253 = call i32 @pthread_mutex_unlock(ptr noundef @write_random) #8
  br label %255

254:                                              ; preds = %247
  store i32 0, ptr %31, align 4, !tbaa !9
  br label %255

255:                                              ; preds = %254, %252
  br label %256

256:                                              ; preds = %255, %126
  %257 = load i32, ptr %31, align 4, !tbaa !9
  %258 = icmp ne i32 %257, 0
  br i1 %258, label %259, label %1545

259:                                              ; preds = %256
  store i64 0, ptr %26, align 8, !tbaa !15
  %260 = load i32, ptr @FLAGMATRIX, align 4, !tbaa !9
  %261 = icmp ne i32 %260, 0
  br i1 %261, label %262, label %273

262:                                              ; preds = %259
  %263 = invoke noundef ptr @_ZN3Int9GetBase16Ev(ptr noundef nonnull align 8 dereferenceable(16) %37)
          to label %264 unwind label %241

264:                                              ; preds = %262
  store ptr %263, ptr %33, align 8, !tbaa !5
  %265 = load ptr, ptr %33, align 8, !tbaa !5
  %266 = load i32, ptr %30, align 4, !tbaa !9
  %267 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.232, ptr noundef %265, i32 noundef %266)
          to label %268 unwind label %241

268:                                              ; preds = %264
  %269 = load ptr, ptr @stdout, align 8, !tbaa !5
  %270 = invoke i32 @fflush(ptr noundef %269)
          to label %271 unwind label %241

271:                                              ; preds = %268
  %272 = load ptr, ptr %33, align 8, !tbaa !5
  call void @free(ptr noundef %272) #8
  br label %287

273:                                              ; preds = %259
  %274 = load i32, ptr @FLAGQUIET, align 4, !tbaa !9
  %275 = icmp eq i32 %274, 0
  br i1 %275, label %276, label %286

276:                                              ; preds = %273
  %277 = invoke noundef ptr @_ZN3Int9GetBase16Ev(ptr noundef nonnull align 8 dereferenceable(16) %37)
          to label %278 unwind label %241

278:                                              ; preds = %276
  store ptr %277, ptr %33, align 8, !tbaa !5
  %279 = load ptr, ptr %33, align 8, !tbaa !5
  %280 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.233, ptr noundef %279)
          to label %281 unwind label %241

281:                                              ; preds = %278
  %282 = load ptr, ptr @stdout, align 8, !tbaa !5
  %283 = invoke i32 @fflush(ptr noundef %282)
          to label %284 unwind label %241

284:                                              ; preds = %281
  %285 = load ptr, ptr %33, align 8, !tbaa !5
  call void @free(ptr noundef %285) #8
  store i32 1, ptr @THREADOUTPUT, align 4, !tbaa !9
  br label %286

286:                                              ; preds = %284, %273
  br label %287

287:                                              ; preds = %286, %271
  br label %288

288:                                              ; preds = %1542, %287
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) %38, i32 noundef 512)
          to label %289 unwind label %241

289:                                              ; preds = %288
  invoke void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(16) %38, ptr noundef @stride)
          to label %290 unwind label %241

290:                                              ; preds = %289
  invoke void @_ZN3Int3AddEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %37, ptr noundef %38)
          to label %291 unwind label %241

291:                                              ; preds = %290
  call void @llvm.lifetime.start.p0(i64 48, ptr %41) #8
  %292 = load ptr, ptr @secp, align 8, !tbaa !5
  invoke void @_ZN9Secp256K116ComputePublicKeyEP3Int(ptr dead_on_unwind writable sret(%class.Point) align 8 %41, ptr noundef nonnull align 8 dereferenceable(393296) %292, ptr noundef %37)
          to label %293 unwind label %314

293:                                              ; preds = %291
  %294 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %13, ptr noundef nonnull align 8 dereferenceable(48) %41)
          to label %295 unwind label %318

295:                                              ; preds = %293
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %41) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %41) #8
  invoke void @_ZN3Int3SubEPS_(ptr noundef nonnull align 8 dereferenceable(16) %37, ptr noundef %38)
          to label %296 unwind label %241

296:                                              ; preds = %295
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %297

297:                                              ; preds = %311, %296
  %298 = load i32, ptr %20, align 4, !tbaa !9
  %299 = load i32, ptr %21, align 4, !tbaa !9
  %300 = icmp slt i32 %298, %299
  br i1 %300, label %301, label %323

301:                                              ; preds = %297
  %302 = load i32, ptr %20, align 4, !tbaa !9
  %303 = sext i32 %302 to i64
  %304 = getelementptr inbounds [513 x %class.Int], ptr %11, i64 0, i64 %303
  %305 = load i32, ptr %20, align 4, !tbaa !9
  %306 = sext i32 %305 to i64
  %307 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %306) #8
  %308 = getelementptr inbounds %class.Point, ptr %307, i32 0, i32 0
  %309 = getelementptr inbounds %class.Point, ptr %13, i32 0, i32 0
  invoke void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %304, ptr noundef %308, ptr noundef %309)
          to label %310 unwind label %241

310:                                              ; preds = %301
  br label %311

311:                                              ; preds = %310
  %312 = load i32, ptr %20, align 4, !tbaa !9
  %313 = add nsw i32 %312, 1
  store i32 %313, ptr %20, align 4, !tbaa !9
  br label %297, !llvm.loop !17

314:                                              ; preds = %291
  %315 = landingpad { ptr, i32 }
          cleanup
  %316 = extractvalue { ptr, i32 } %315, 0
  store ptr %316, ptr %6, align 8
  %317 = extractvalue { ptr, i32 } %315, 1
  store i32 %317, ptr %7, align 4
  br label %322

318:                                              ; preds = %293
  %319 = landingpad { ptr, i32 }
          cleanup
  %320 = extractvalue { ptr, i32 } %319, 0
  store ptr %320, ptr %6, align 8
  %321 = extractvalue { ptr, i32 } %319, 1
  store i32 %321, ptr %7, align 4
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %41) #8
  br label %322

322:                                              ; preds = %318, %314
  call void @llvm.lifetime.end.p0(i64 48, ptr %41) #8
  br label %1556

323:                                              ; preds = %297
  %324 = load i32, ptr %20, align 4, !tbaa !9
  %325 = sext i32 %324 to i64
  %326 = getelementptr inbounds [513 x %class.Int], ptr %11, i64 0, i64 %325
  %327 = load i32, ptr %20, align 4, !tbaa !9
  %328 = sext i32 %327 to i64
  %329 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %328) #8
  %330 = getelementptr inbounds %class.Point, ptr %329, i32 0, i32 0
  %331 = getelementptr inbounds %class.Point, ptr %13, i32 0, i32 0
  invoke void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %326, ptr noundef %330, ptr noundef %331)
          to label %332 unwind label %241

332:                                              ; preds = %323
  %333 = load i32, ptr %20, align 4, !tbaa !9
  %334 = add nsw i32 %333, 1
  %335 = sext i32 %334 to i64
  %336 = getelementptr inbounds [513 x %class.Int], ptr %11, i64 0, i64 %335
  %337 = getelementptr inbounds %class.Point, ptr %13, i32 0, i32 0
  invoke void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %336, ptr noundef @_2Gn, ptr noundef %337)
          to label %338 unwind label %241

338:                                              ; preds = %332
  %339 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN8IntGroup6ModInvEv(ptr noundef nonnull align 8 dereferenceable(20) %339)
          to label %340 unwind label %241

340:                                              ; preds = %338
  %341 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 512
  %342 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %341, ptr noundef nonnull align 8 dereferenceable(48) %13)
          to label %343 unwind label %241

343:                                              ; preds = %340
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %344

344:                                              ; preds = %507, %343
  %345 = load i32, ptr %20, align 4, !tbaa !9
  %346 = load i32, ptr %21, align 4, !tbaa !9
  %347 = icmp slt i32 %345, %346
  br i1 %347, label %348, label %510

348:                                              ; preds = %344
  %349 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %18, ptr noundef nonnull align 8 dereferenceable(48) %13)
          to label %350 unwind label %241

350:                                              ; preds = %348
  %351 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %19, ptr noundef nonnull align 8 dereferenceable(48) %13)
          to label %352 unwind label %241

352:                                              ; preds = %350
  %353 = load i32, ptr %20, align 4, !tbaa !9
  %354 = sext i32 %353 to i64
  %355 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %354) #8
  %356 = getelementptr inbounds %class.Point, ptr %355, i32 0, i32 1
  %357 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 1
  invoke void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef %356, ptr noundef %357)
          to label %358 unwind label %241

358:                                              ; preds = %352
  %359 = load i32, ptr %20, align 4, !tbaa !9
  %360 = sext i32 %359 to i64
  %361 = getelementptr inbounds [513 x %class.Int], ptr %11, i64 0, i64 %360
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef %14, ptr noundef %361)
          to label %362 unwind label %241

362:                                              ; preds = %358
  invoke void @_ZN3Int11ModSquareK1EPS_(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef %16)
          to label %363 unwind label %241

363:                                              ; preds = %362
  %364 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 0
  invoke void @_ZN3Int6ModNegEv(ptr noundef nonnull align 8 dereferenceable(16) %364)
          to label %365 unwind label %241

365:                                              ; preds = %363
  %366 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 0
  invoke void @_ZN3Int6ModAddEPS_(ptr noundef nonnull align 8 dereferenceable(16) %366, ptr noundef %17)
          to label %367 unwind label %241

367:                                              ; preds = %365
  %368 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 0
  %369 = load i32, ptr %20, align 4, !tbaa !9
  %370 = sext i32 %369 to i64
  %371 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %370) #8
  %372 = getelementptr inbounds %class.Point, ptr %371, i32 0, i32 0
  invoke void @_ZN3Int6ModSubEPS_(ptr noundef nonnull align 8 dereferenceable(16) %368, ptr noundef %372)
          to label %373 unwind label %241

373:                                              ; preds = %367
  %374 = load i8, ptr %40, align 1, !tbaa !13, !range !19, !noundef !20
  %375 = trunc i8 %374 to i1
  br i1 %375, label %376, label %392

376:                                              ; preds = %373
  %377 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 1
  %378 = load i32, ptr %20, align 4, !tbaa !9
  %379 = sext i32 %378 to i64
  %380 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %379) #8
  %381 = getelementptr inbounds %class.Point, ptr %380, i32 0, i32 0
  %382 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 0
  invoke void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %377, ptr noundef %381, ptr noundef %382)
          to label %383 unwind label %241

383:                                              ; preds = %376
  %384 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 1
  invoke void @_ZN3Int8ModMulK1EPS_(ptr noundef nonnull align 8 dereferenceable(16) %384, ptr noundef %16)
          to label %385 unwind label %241

385:                                              ; preds = %383
  %386 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 1
  %387 = load i32, ptr %20, align 4, !tbaa !9
  %388 = sext i32 %387 to i64
  %389 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %388) #8
  %390 = getelementptr inbounds %class.Point, ptr %389, i32 0, i32 1
  invoke void @_ZN3Int6ModSubEPS_(ptr noundef nonnull align 8 dereferenceable(16) %386, ptr noundef %390)
          to label %391 unwind label %241

391:                                              ; preds = %385
  br label %392

392:                                              ; preds = %391, %373
  %393 = load i32, ptr %20, align 4, !tbaa !9
  %394 = sext i32 %393 to i64
  %395 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %394) #8
  %396 = getelementptr inbounds %class.Point, ptr %395, i32 0, i32 1
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef %396)
          to label %397 unwind label %241

397:                                              ; preds = %392
  invoke void @_ZN3Int6ModNegEv(ptr noundef nonnull align 8 dereferenceable(16) %15)
          to label %398 unwind label %241

398:                                              ; preds = %397
  %399 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 1
  invoke void @_ZN3Int6ModSubEPS_(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef %399)
          to label %400 unwind label %241

400:                                              ; preds = %398
  %401 = load i32, ptr %20, align 4, !tbaa !9
  %402 = sext i32 %401 to i64
  %403 = getelementptr inbounds [513 x %class.Int], ptr %11, i64 0, i64 %402
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef %15, ptr noundef %403)
          to label %404 unwind label %241

404:                                              ; preds = %400
  invoke void @_ZN3Int11ModSquareK1EPS_(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef %16)
          to label %405 unwind label %241

405:                                              ; preds = %404
  %406 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 0
  invoke void @_ZN3Int6ModNegEv(ptr noundef nonnull align 8 dereferenceable(16) %406)
          to label %407 unwind label %241

407:                                              ; preds = %405
  %408 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 0
  invoke void @_ZN3Int6ModAddEPS_(ptr noundef nonnull align 8 dereferenceable(16) %408, ptr noundef %17)
          to label %409 unwind label %241

409:                                              ; preds = %407
  %410 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 0
  %411 = load i32, ptr %20, align 4, !tbaa !9
  %412 = sext i32 %411 to i64
  %413 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %412) #8
  %414 = getelementptr inbounds %class.Point, ptr %413, i32 0, i32 0
  invoke void @_ZN3Int6ModSubEPS_(ptr noundef nonnull align 8 dereferenceable(16) %410, ptr noundef %414)
          to label %415 unwind label %241

415:                                              ; preds = %409
  %416 = load i8, ptr %40, align 1, !tbaa !13, !range !19, !noundef !20
  %417 = trunc i8 %416 to i1
  br i1 %417, label %418, label %434

418:                                              ; preds = %415
  %419 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 1
  %420 = load i32, ptr %20, align 4, !tbaa !9
  %421 = sext i32 %420 to i64
  %422 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %421) #8
  %423 = getelementptr inbounds %class.Point, ptr %422, i32 0, i32 0
  %424 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 0
  invoke void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %419, ptr noundef %423, ptr noundef %424)
          to label %425 unwind label %241

425:                                              ; preds = %418
  %426 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 1
  invoke void @_ZN3Int8ModMulK1EPS_(ptr noundef nonnull align 8 dereferenceable(16) %426, ptr noundef %16)
          to label %427 unwind label %241

427:                                              ; preds = %425
  %428 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 1
  %429 = load i32, ptr %20, align 4, !tbaa !9
  %430 = sext i32 %429 to i64
  %431 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %430) #8
  %432 = getelementptr inbounds %class.Point, ptr %431, i32 0, i32 1
  invoke void @_ZN3Int6ModAddEPS_(ptr noundef nonnull align 8 dereferenceable(16) %428, ptr noundef %432)
          to label %433 unwind label %241

433:                                              ; preds = %427
  br label %434

434:                                              ; preds = %433, %415
  %435 = load i32, ptr %20, align 4, !tbaa !9
  %436 = add nsw i32 %435, 1
  %437 = add nsw i32 512, %436
  store i32 %437, ptr %23, align 4, !tbaa !9
  %438 = load i32, ptr %20, align 4, !tbaa !9
  %439 = add nsw i32 %438, 1
  %440 = sub nsw i32 512, %439
  store i32 %440, ptr %24, align 4, !tbaa !9
  %441 = load i32, ptr %23, align 4, !tbaa !9
  %442 = sext i32 %441 to i64
  %443 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %442
  %444 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %443, ptr noundef nonnull align 8 dereferenceable(48) %18)
          to label %445 unwind label %241

445:                                              ; preds = %434
  %446 = load i32, ptr %24, align 4, !tbaa !9
  %447 = sext i32 %446 to i64
  %448 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %447
  %449 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %448, ptr noundef nonnull align 8 dereferenceable(48) %19)
          to label %450 unwind label %241

450:                                              ; preds = %445
  %451 = load i32, ptr @FLAGENDOMORPHISM, align 4, !tbaa !9
  %452 = icmp ne i32 %451, 0
  br i1 %452, label %453, label %506

453:                                              ; preds = %450
  %454 = load i8, ptr %40, align 1, !tbaa !13, !range !19, !noundef !20
  %455 = trunc i8 %454 to i1
  br i1 %455, label %456, label %481

456:                                              ; preds = %453
  %457 = load i32, ptr %23, align 4, !tbaa !9
  %458 = sext i32 %457 to i64
  %459 = getelementptr inbounds [1024 x %class.Point], ptr %8, i64 0, i64 %458
  %460 = getelementptr inbounds %class.Point, ptr %459, i32 0, i32 1
  %461 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 1
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %460, ptr noundef %461)
          to label %462 unwind label %241

462:                                              ; preds = %456
  %463 = load i32, ptr %24, align 4, !tbaa !9
  %464 = sext i32 %463 to i64
  %465 = getelementptr inbounds [1024 x %class.Point], ptr %8, i64 0, i64 %464
  %466 = getelementptr inbounds %class.Point, ptr %465, i32 0, i32 1
  %467 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 1
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %466, ptr noundef %467)
          to label %468 unwind label %241

468:                                              ; preds = %462
  %469 = load i32, ptr %23, align 4, !tbaa !9
  %470 = sext i32 %469 to i64
  %471 = getelementptr inbounds [1024 x %class.Point], ptr %9, i64 0, i64 %470
  %472 = getelementptr inbounds %class.Point, ptr %471, i32 0, i32 1
  %473 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 1
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %472, ptr noundef %473)
          to label %474 unwind label %241

474:                                              ; preds = %468
  %475 = load i32, ptr %24, align 4, !tbaa !9
  %476 = sext i32 %475 to i64
  %477 = getelementptr inbounds [1024 x %class.Point], ptr %9, i64 0, i64 %476
  %478 = getelementptr inbounds %class.Point, ptr %477, i32 0, i32 1
  %479 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 1
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %478, ptr noundef %479)
          to label %480 unwind label %241

480:                                              ; preds = %474
  br label %481

481:                                              ; preds = %480, %453
  %482 = load i32, ptr %23, align 4, !tbaa !9
  %483 = sext i32 %482 to i64
  %484 = getelementptr inbounds [1024 x %class.Point], ptr %8, i64 0, i64 %483
  %485 = getelementptr inbounds %class.Point, ptr %484, i32 0, i32 0
  %486 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 0
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %485, ptr noundef %486, ptr noundef @beta)
          to label %487 unwind label %241

487:                                              ; preds = %481
  %488 = load i32, ptr %24, align 4, !tbaa !9
  %489 = sext i32 %488 to i64
  %490 = getelementptr inbounds [1024 x %class.Point], ptr %8, i64 0, i64 %489
  %491 = getelementptr inbounds %class.Point, ptr %490, i32 0, i32 0
  %492 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 0
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %491, ptr noundef %492, ptr noundef @beta)
          to label %493 unwind label %241

493:                                              ; preds = %487
  %494 = load i32, ptr %23, align 4, !tbaa !9
  %495 = sext i32 %494 to i64
  %496 = getelementptr inbounds [1024 x %class.Point], ptr %9, i64 0, i64 %495
  %497 = getelementptr inbounds %class.Point, ptr %496, i32 0, i32 0
  %498 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 0
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %497, ptr noundef %498, ptr noundef @beta2)
          to label %499 unwind label %241

499:                                              ; preds = %493
  %500 = load i32, ptr %24, align 4, !tbaa !9
  %501 = sext i32 %500 to i64
  %502 = getelementptr inbounds [1024 x %class.Point], ptr %9, i64 0, i64 %501
  %503 = getelementptr inbounds %class.Point, ptr %502, i32 0, i32 0
  %504 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 0
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %503, ptr noundef %504, ptr noundef @beta2)
          to label %505 unwind label %241

505:                                              ; preds = %499
  br label %506

506:                                              ; preds = %505, %450
  br label %507

507:                                              ; preds = %506
  %508 = load i32, ptr %20, align 4, !tbaa !9
  %509 = add nsw i32 %508, 1
  store i32 %509, ptr %20, align 4, !tbaa !9
  br label %344, !llvm.loop !21

510:                                              ; preds = %344
  %511 = load i32, ptr @FLAGENDOMORPHISM, align 4, !tbaa !9
  %512 = icmp ne i32 %511, 0
  br i1 %512, label %513, label %538

513:                                              ; preds = %510
  %514 = load i8, ptr %40, align 1, !tbaa !13, !range !19, !noundef !20
  %515 = trunc i8 %514 to i1
  br i1 %515, label %516, label %527

516:                                              ; preds = %513
  %517 = getelementptr inbounds [1024 x %class.Point], ptr %8, i64 0, i64 512
  %518 = getelementptr inbounds %class.Point, ptr %517, i32 0, i32 1
  %519 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 512
  %520 = getelementptr inbounds %class.Point, ptr %519, i32 0, i32 1
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %518, ptr noundef %520)
          to label %521 unwind label %241

521:                                              ; preds = %516
  %522 = getelementptr inbounds [1024 x %class.Point], ptr %9, i64 0, i64 512
  %523 = getelementptr inbounds %class.Point, ptr %522, i32 0, i32 1
  %524 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 512
  %525 = getelementptr inbounds %class.Point, ptr %524, i32 0, i32 1
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %523, ptr noundef %525)
          to label %526 unwind label %241

526:                                              ; preds = %521
  br label %527

527:                                              ; preds = %526, %513
  %528 = getelementptr inbounds [1024 x %class.Point], ptr %8, i64 0, i64 512
  %529 = getelementptr inbounds %class.Point, ptr %528, i32 0, i32 0
  %530 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 512
  %531 = getelementptr inbounds %class.Point, ptr %530, i32 0, i32 0
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %529, ptr noundef %531, ptr noundef @beta)
          to label %532 unwind label %241

532:                                              ; preds = %527
  %533 = getelementptr inbounds [1024 x %class.Point], ptr %9, i64 0, i64 512
  %534 = getelementptr inbounds %class.Point, ptr %533, i32 0, i32 0
  %535 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 512
  %536 = getelementptr inbounds %class.Point, ptr %535, i32 0, i32 0
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %534, ptr noundef %536, ptr noundef @beta2)
          to label %537 unwind label %241

537:                                              ; preds = %532
  br label %538

538:                                              ; preds = %537, %510
  %539 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %19, ptr noundef nonnull align 8 dereferenceable(48) %13)
          to label %540 unwind label %241

540:                                              ; preds = %538
  %541 = load i32, ptr %20, align 4, !tbaa !9
  %542 = sext i32 %541 to i64
  %543 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %542) #8
  %544 = getelementptr inbounds %class.Point, ptr %543, i32 0, i32 1
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef %544)
          to label %545 unwind label %241

545:                                              ; preds = %540
  invoke void @_ZN3Int6ModNegEv(ptr noundef nonnull align 8 dereferenceable(16) %15)
          to label %546 unwind label %241

546:                                              ; preds = %545
  %547 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 1
  invoke void @_ZN3Int6ModSubEPS_(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef %547)
          to label %548 unwind label %241

548:                                              ; preds = %546
  %549 = load i32, ptr %20, align 4, !tbaa !9
  %550 = sext i32 %549 to i64
  %551 = getelementptr inbounds [513 x %class.Int], ptr %11, i64 0, i64 %550
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef %15, ptr noundef %551)
          to label %552 unwind label %241

552:                                              ; preds = %548
  invoke void @_ZN3Int11ModSquareK1EPS_(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef %16)
          to label %553 unwind label %241

553:                                              ; preds = %552
  %554 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 0
  invoke void @_ZN3Int6ModNegEv(ptr noundef nonnull align 8 dereferenceable(16) %554)
          to label %555 unwind label %241

555:                                              ; preds = %553
  %556 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 0
  invoke void @_ZN3Int6ModAddEPS_(ptr noundef nonnull align 8 dereferenceable(16) %556, ptr noundef %17)
          to label %557 unwind label %241

557:                                              ; preds = %555
  %558 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 0
  %559 = load i32, ptr %20, align 4, !tbaa !9
  %560 = sext i32 %559 to i64
  %561 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %560) #8
  %562 = getelementptr inbounds %class.Point, ptr %561, i32 0, i32 0
  invoke void @_ZN3Int6ModSubEPS_(ptr noundef nonnull align 8 dereferenceable(16) %558, ptr noundef %562)
          to label %563 unwind label %241

563:                                              ; preds = %557
  %564 = load i8, ptr %40, align 1, !tbaa !13, !range !19, !noundef !20
  %565 = trunc i8 %564 to i1
  br i1 %565, label %566, label %582

566:                                              ; preds = %563
  %567 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 1
  %568 = load i32, ptr %20, align 4, !tbaa !9
  %569 = sext i32 %568 to i64
  %570 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %569) #8
  %571 = getelementptr inbounds %class.Point, ptr %570, i32 0, i32 0
  %572 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 0
  invoke void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %567, ptr noundef %571, ptr noundef %572)
          to label %573 unwind label %241

573:                                              ; preds = %566
  %574 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 1
  invoke void @_ZN3Int8ModMulK1EPS_(ptr noundef nonnull align 8 dereferenceable(16) %574, ptr noundef %16)
          to label %575 unwind label %241

575:                                              ; preds = %573
  %576 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 1
  %577 = load i32, ptr %20, align 4, !tbaa !9
  %578 = sext i32 %577 to i64
  %579 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %578) #8
  %580 = getelementptr inbounds %class.Point, ptr %579, i32 0, i32 1
  invoke void @_ZN3Int6ModAddEPS_(ptr noundef nonnull align 8 dereferenceable(16) %576, ptr noundef %580)
          to label %581 unwind label %241

581:                                              ; preds = %575
  br label %582

582:                                              ; preds = %581, %563
  %583 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 0
  %584 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %583, ptr noundef nonnull align 8 dereferenceable(48) %19)
          to label %585 unwind label %241

585:                                              ; preds = %582
  %586 = load i32, ptr @FLAGENDOMORPHISM, align 4, !tbaa !9
  %587 = icmp ne i32 %586, 0
  br i1 %587, label %588, label %609

588:                                              ; preds = %585
  %589 = load i8, ptr %40, align 1, !tbaa !13, !range !19, !noundef !20
  %590 = trunc i8 %589 to i1
  br i1 %590, label %591, label %600

591:                                              ; preds = %588
  %592 = getelementptr inbounds [1024 x %class.Point], ptr %8, i64 0, i64 0
  %593 = getelementptr inbounds %class.Point, ptr %592, i32 0, i32 1
  %594 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 1
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %593, ptr noundef %594)
          to label %595 unwind label %241

595:                                              ; preds = %591
  %596 = getelementptr inbounds [1024 x %class.Point], ptr %9, i64 0, i64 0
  %597 = getelementptr inbounds %class.Point, ptr %596, i32 0, i32 1
  %598 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 1
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %597, ptr noundef %598)
          to label %599 unwind label %241

599:                                              ; preds = %595
  br label %600

600:                                              ; preds = %599, %588
  %601 = getelementptr inbounds [1024 x %class.Point], ptr %8, i64 0, i64 0
  %602 = getelementptr inbounds %class.Point, ptr %601, i32 0, i32 0
  %603 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 0
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %602, ptr noundef %603, ptr noundef @beta)
          to label %604 unwind label %241

604:                                              ; preds = %600
  %605 = getelementptr inbounds [1024 x %class.Point], ptr %9, i64 0, i64 0
  %606 = getelementptr inbounds %class.Point, ptr %605, i32 0, i32 0
  %607 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 0
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %606, ptr noundef %607, ptr noundef @beta2)
          to label %608 unwind label %241

608:                                              ; preds = %604
  br label %609

609:                                              ; preds = %608, %585
  store i64 0, ptr %25, align 8, !tbaa !15
  br label %610

610:                                              ; preds = %1500, %609
  %611 = load i64, ptr %25, align 8, !tbaa !15
  %612 = icmp ult i64 %611, 256
  br i1 %612, label %613, label %1503

613:                                              ; preds = %610
  %614 = load i32, ptr @FLAGSEARCH, align 4, !tbaa !9
  %615 = icmp eq i32 %614, 1
  br i1 %615, label %619, label %616

616:                                              ; preds = %613
  %617 = load i32, ptr @FLAGSEARCH, align 4, !tbaa !9
  %618 = icmp eq i32 %617, 2
  br i1 %618, label %619, label %889

619:                                              ; preds = %616, %613
  %620 = load i32, ptr @FLAGENDOMORPHISM, align 4, !tbaa !9
  %621 = icmp ne i32 %620, 0
  br i1 %621, label %622, label %821

622:                                              ; preds = %619
  %623 = load ptr, ptr @secp, align 8, !tbaa !5
  %624 = load i64, ptr %25, align 8, !tbaa !15
  %625 = mul i64 %624, 4
  %626 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %625
  %627 = getelementptr inbounds %class.Point, ptr %626, i32 0, i32 0
  %628 = load i64, ptr %25, align 8, !tbaa !15
  %629 = mul i64 %628, 4
  %630 = add i64 %629, 1
  %631 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %630
  %632 = getelementptr inbounds %class.Point, ptr %631, i32 0, i32 0
  %633 = load i64, ptr %25, align 8, !tbaa !15
  %634 = mul i64 %633, 4
  %635 = add i64 %634, 2
  %636 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %635
  %637 = getelementptr inbounds %class.Point, ptr %636, i32 0, i32 0
  %638 = load i64, ptr %25, align 8, !tbaa !15
  %639 = mul i64 %638, 4
  %640 = add i64 %639, 3
  %641 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %640
  %642 = getelementptr inbounds %class.Point, ptr %641, i32 0, i32 0
  %643 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 0
  %644 = getelementptr inbounds [4 x [20 x i8]], ptr %643, i64 0, i64 0
  %645 = getelementptr inbounds [20 x i8], ptr %644, i64 0, i64 0
  %646 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 0
  %647 = getelementptr inbounds [4 x [20 x i8]], ptr %646, i64 0, i64 1
  %648 = getelementptr inbounds [20 x i8], ptr %647, i64 0, i64 0
  %649 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 0
  %650 = getelementptr inbounds [4 x [20 x i8]], ptr %649, i64 0, i64 2
  %651 = getelementptr inbounds [20 x i8], ptr %650, i64 0, i64 0
  %652 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 0
  %653 = getelementptr inbounds [4 x [20 x i8]], ptr %652, i64 0, i64 3
  %654 = getelementptr inbounds [20 x i8], ptr %653, i64 0, i64 0
  invoke void @_ZN9Secp256K116GetHash160_fromXEihP3IntS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(393296) %623, i32 noundef 0, i8 noundef zeroext 2, ptr noundef %627, ptr noundef %632, ptr noundef %637, ptr noundef %642, ptr noundef %645, ptr noundef %648, ptr noundef %651, ptr noundef %654)
          to label %655 unwind label %241

655:                                              ; preds = %622
  %656 = load ptr, ptr @secp, align 8, !tbaa !5
  %657 = load i64, ptr %25, align 8, !tbaa !15
  %658 = mul i64 %657, 4
  %659 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %658
  %660 = getelementptr inbounds %class.Point, ptr %659, i32 0, i32 0
  %661 = load i64, ptr %25, align 8, !tbaa !15
  %662 = mul i64 %661, 4
  %663 = add i64 %662, 1
  %664 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %663
  %665 = getelementptr inbounds %class.Point, ptr %664, i32 0, i32 0
  %666 = load i64, ptr %25, align 8, !tbaa !15
  %667 = mul i64 %666, 4
  %668 = add i64 %667, 2
  %669 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %668
  %670 = getelementptr inbounds %class.Point, ptr %669, i32 0, i32 0
  %671 = load i64, ptr %25, align 8, !tbaa !15
  %672 = mul i64 %671, 4
  %673 = add i64 %672, 3
  %674 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %673
  %675 = getelementptr inbounds %class.Point, ptr %674, i32 0, i32 0
  %676 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 1
  %677 = getelementptr inbounds [4 x [20 x i8]], ptr %676, i64 0, i64 0
  %678 = getelementptr inbounds [20 x i8], ptr %677, i64 0, i64 0
  %679 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 1
  %680 = getelementptr inbounds [4 x [20 x i8]], ptr %679, i64 0, i64 1
  %681 = getelementptr inbounds [20 x i8], ptr %680, i64 0, i64 0
  %682 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 1
  %683 = getelementptr inbounds [4 x [20 x i8]], ptr %682, i64 0, i64 2
  %684 = getelementptr inbounds [20 x i8], ptr %683, i64 0, i64 0
  %685 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 1
  %686 = getelementptr inbounds [4 x [20 x i8]], ptr %685, i64 0, i64 3
  %687 = getelementptr inbounds [20 x i8], ptr %686, i64 0, i64 0
  invoke void @_ZN9Secp256K116GetHash160_fromXEihP3IntS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(393296) %656, i32 noundef 0, i8 noundef zeroext 3, ptr noundef %660, ptr noundef %665, ptr noundef %670, ptr noundef %675, ptr noundef %678, ptr noundef %681, ptr noundef %684, ptr noundef %687)
          to label %688 unwind label %241

688:                                              ; preds = %655
  %689 = load ptr, ptr @secp, align 8, !tbaa !5
  %690 = load i64, ptr %25, align 8, !tbaa !15
  %691 = mul i64 %690, 4
  %692 = getelementptr inbounds [1024 x %class.Point], ptr %8, i64 0, i64 %691
  %693 = getelementptr inbounds %class.Point, ptr %692, i32 0, i32 0
  %694 = load i64, ptr %25, align 8, !tbaa !15
  %695 = mul i64 %694, 4
  %696 = add i64 %695, 1
  %697 = getelementptr inbounds [1024 x %class.Point], ptr %8, i64 0, i64 %696
  %698 = getelementptr inbounds %class.Point, ptr %697, i32 0, i32 0
  %699 = load i64, ptr %25, align 8, !tbaa !15
  %700 = mul i64 %699, 4
  %701 = add i64 %700, 2
  %702 = getelementptr inbounds [1024 x %class.Point], ptr %8, i64 0, i64 %701
  %703 = getelementptr inbounds %class.Point, ptr %702, i32 0, i32 0
  %704 = load i64, ptr %25, align 8, !tbaa !15
  %705 = mul i64 %704, 4
  %706 = add i64 %705, 3
  %707 = getelementptr inbounds [1024 x %class.Point], ptr %8, i64 0, i64 %706
  %708 = getelementptr inbounds %class.Point, ptr %707, i32 0, i32 0
  %709 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 2
  %710 = getelementptr inbounds [4 x [20 x i8]], ptr %709, i64 0, i64 0
  %711 = getelementptr inbounds [20 x i8], ptr %710, i64 0, i64 0
  %712 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 2
  %713 = getelementptr inbounds [4 x [20 x i8]], ptr %712, i64 0, i64 1
  %714 = getelementptr inbounds [20 x i8], ptr %713, i64 0, i64 0
  %715 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 2
  %716 = getelementptr inbounds [4 x [20 x i8]], ptr %715, i64 0, i64 2
  %717 = getelementptr inbounds [20 x i8], ptr %716, i64 0, i64 0
  %718 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 2
  %719 = getelementptr inbounds [4 x [20 x i8]], ptr %718, i64 0, i64 3
  %720 = getelementptr inbounds [20 x i8], ptr %719, i64 0, i64 0
  invoke void @_ZN9Secp256K116GetHash160_fromXEihP3IntS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(393296) %689, i32 noundef 0, i8 noundef zeroext 2, ptr noundef %693, ptr noundef %698, ptr noundef %703, ptr noundef %708, ptr noundef %711, ptr noundef %714, ptr noundef %717, ptr noundef %720)
          to label %721 unwind label %241

721:                                              ; preds = %688
  %722 = load ptr, ptr @secp, align 8, !tbaa !5
  %723 = load i64, ptr %25, align 8, !tbaa !15
  %724 = mul i64 %723, 4
  %725 = getelementptr inbounds [1024 x %class.Point], ptr %8, i64 0, i64 %724
  %726 = getelementptr inbounds %class.Point, ptr %725, i32 0, i32 0
  %727 = load i64, ptr %25, align 8, !tbaa !15
  %728 = mul i64 %727, 4
  %729 = add i64 %728, 1
  %730 = getelementptr inbounds [1024 x %class.Point], ptr %8, i64 0, i64 %729
  %731 = getelementptr inbounds %class.Point, ptr %730, i32 0, i32 0
  %732 = load i64, ptr %25, align 8, !tbaa !15
  %733 = mul i64 %732, 4
  %734 = add i64 %733, 2
  %735 = getelementptr inbounds [1024 x %class.Point], ptr %8, i64 0, i64 %734
  %736 = getelementptr inbounds %class.Point, ptr %735, i32 0, i32 0
  %737 = load i64, ptr %25, align 8, !tbaa !15
  %738 = mul i64 %737, 4
  %739 = add i64 %738, 3
  %740 = getelementptr inbounds [1024 x %class.Point], ptr %8, i64 0, i64 %739
  %741 = getelementptr inbounds %class.Point, ptr %740, i32 0, i32 0
  %742 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 3
  %743 = getelementptr inbounds [4 x [20 x i8]], ptr %742, i64 0, i64 0
  %744 = getelementptr inbounds [20 x i8], ptr %743, i64 0, i64 0
  %745 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 3
  %746 = getelementptr inbounds [4 x [20 x i8]], ptr %745, i64 0, i64 1
  %747 = getelementptr inbounds [20 x i8], ptr %746, i64 0, i64 0
  %748 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 3
  %749 = getelementptr inbounds [4 x [20 x i8]], ptr %748, i64 0, i64 2
  %750 = getelementptr inbounds [20 x i8], ptr %749, i64 0, i64 0
  %751 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 3
  %752 = getelementptr inbounds [4 x [20 x i8]], ptr %751, i64 0, i64 3
  %753 = getelementptr inbounds [20 x i8], ptr %752, i64 0, i64 0
  invoke void @_ZN9Secp256K116GetHash160_fromXEihP3IntS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(393296) %722, i32 noundef 0, i8 noundef zeroext 3, ptr noundef %726, ptr noundef %731, ptr noundef %736, ptr noundef %741, ptr noundef %744, ptr noundef %747, ptr noundef %750, ptr noundef %753)
          to label %754 unwind label %241

754:                                              ; preds = %721
  %755 = load ptr, ptr @secp, align 8, !tbaa !5
  %756 = load i64, ptr %25, align 8, !tbaa !15
  %757 = mul i64 %756, 4
  %758 = getelementptr inbounds [1024 x %class.Point], ptr %9, i64 0, i64 %757
  %759 = getelementptr inbounds %class.Point, ptr %758, i32 0, i32 0
  %760 = load i64, ptr %25, align 8, !tbaa !15
  %761 = mul i64 %760, 4
  %762 = add i64 %761, 1
  %763 = getelementptr inbounds [1024 x %class.Point], ptr %9, i64 0, i64 %762
  %764 = getelementptr inbounds %class.Point, ptr %763, i32 0, i32 0
  %765 = load i64, ptr %25, align 8, !tbaa !15
  %766 = mul i64 %765, 4
  %767 = add i64 %766, 2
  %768 = getelementptr inbounds [1024 x %class.Point], ptr %9, i64 0, i64 %767
  %769 = getelementptr inbounds %class.Point, ptr %768, i32 0, i32 0
  %770 = load i64, ptr %25, align 8, !tbaa !15
  %771 = mul i64 %770, 4
  %772 = add i64 %771, 3
  %773 = getelementptr inbounds [1024 x %class.Point], ptr %9, i64 0, i64 %772
  %774 = getelementptr inbounds %class.Point, ptr %773, i32 0, i32 0
  %775 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 4
  %776 = getelementptr inbounds [4 x [20 x i8]], ptr %775, i64 0, i64 0
  %777 = getelementptr inbounds [20 x i8], ptr %776, i64 0, i64 0
  %778 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 4
  %779 = getelementptr inbounds [4 x [20 x i8]], ptr %778, i64 0, i64 1
  %780 = getelementptr inbounds [20 x i8], ptr %779, i64 0, i64 0
  %781 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 4
  %782 = getelementptr inbounds [4 x [20 x i8]], ptr %781, i64 0, i64 2
  %783 = getelementptr inbounds [20 x i8], ptr %782, i64 0, i64 0
  %784 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 4
  %785 = getelementptr inbounds [4 x [20 x i8]], ptr %784, i64 0, i64 3
  %786 = getelementptr inbounds [20 x i8], ptr %785, i64 0, i64 0
  invoke void @_ZN9Secp256K116GetHash160_fromXEihP3IntS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(393296) %755, i32 noundef 0, i8 noundef zeroext 2, ptr noundef %759, ptr noundef %764, ptr noundef %769, ptr noundef %774, ptr noundef %777, ptr noundef %780, ptr noundef %783, ptr noundef %786)
          to label %787 unwind label %241

787:                                              ; preds = %754
  %788 = load ptr, ptr @secp, align 8, !tbaa !5
  %789 = load i64, ptr %25, align 8, !tbaa !15
  %790 = mul i64 %789, 4
  %791 = getelementptr inbounds [1024 x %class.Point], ptr %9, i64 0, i64 %790
  %792 = getelementptr inbounds %class.Point, ptr %791, i32 0, i32 0
  %793 = load i64, ptr %25, align 8, !tbaa !15
  %794 = mul i64 %793, 4
  %795 = add i64 %794, 1
  %796 = getelementptr inbounds [1024 x %class.Point], ptr %9, i64 0, i64 %795
  %797 = getelementptr inbounds %class.Point, ptr %796, i32 0, i32 0
  %798 = load i64, ptr %25, align 8, !tbaa !15
  %799 = mul i64 %798, 4
  %800 = add i64 %799, 2
  %801 = getelementptr inbounds [1024 x %class.Point], ptr %9, i64 0, i64 %800
  %802 = getelementptr inbounds %class.Point, ptr %801, i32 0, i32 0
  %803 = load i64, ptr %25, align 8, !tbaa !15
  %804 = mul i64 %803, 4
  %805 = add i64 %804, 3
  %806 = getelementptr inbounds [1024 x %class.Point], ptr %9, i64 0, i64 %805
  %807 = getelementptr inbounds %class.Point, ptr %806, i32 0, i32 0
  %808 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 5
  %809 = getelementptr inbounds [4 x [20 x i8]], ptr %808, i64 0, i64 0
  %810 = getelementptr inbounds [20 x i8], ptr %809, i64 0, i64 0
  %811 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 5
  %812 = getelementptr inbounds [4 x [20 x i8]], ptr %811, i64 0, i64 1
  %813 = getelementptr inbounds [20 x i8], ptr %812, i64 0, i64 0
  %814 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 5
  %815 = getelementptr inbounds [4 x [20 x i8]], ptr %814, i64 0, i64 2
  %816 = getelementptr inbounds [20 x i8], ptr %815, i64 0, i64 0
  %817 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 5
  %818 = getelementptr inbounds [4 x [20 x i8]], ptr %817, i64 0, i64 3
  %819 = getelementptr inbounds [20 x i8], ptr %818, i64 0, i64 0
  invoke void @_ZN9Secp256K116GetHash160_fromXEihP3IntS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(393296) %788, i32 noundef 0, i8 noundef zeroext 3, ptr noundef %792, ptr noundef %797, ptr noundef %802, ptr noundef %807, ptr noundef %810, ptr noundef %813, ptr noundef %816, ptr noundef %819)
          to label %820 unwind label %241

820:                                              ; preds = %787
  br label %888

821:                                              ; preds = %619
  %822 = load ptr, ptr @secp, align 8, !tbaa !5
  %823 = load i64, ptr %25, align 8, !tbaa !15
  %824 = mul i64 %823, 4
  %825 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %824
  %826 = getelementptr inbounds %class.Point, ptr %825, i32 0, i32 0
  %827 = load i64, ptr %25, align 8, !tbaa !15
  %828 = mul i64 %827, 4
  %829 = add i64 %828, 1
  %830 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %829
  %831 = getelementptr inbounds %class.Point, ptr %830, i32 0, i32 0
  %832 = load i64, ptr %25, align 8, !tbaa !15
  %833 = mul i64 %832, 4
  %834 = add i64 %833, 2
  %835 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %834
  %836 = getelementptr inbounds %class.Point, ptr %835, i32 0, i32 0
  %837 = load i64, ptr %25, align 8, !tbaa !15
  %838 = mul i64 %837, 4
  %839 = add i64 %838, 3
  %840 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %839
  %841 = getelementptr inbounds %class.Point, ptr %840, i32 0, i32 0
  %842 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 0
  %843 = getelementptr inbounds [4 x [20 x i8]], ptr %842, i64 0, i64 0
  %844 = getelementptr inbounds [20 x i8], ptr %843, i64 0, i64 0
  %845 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 0
  %846 = getelementptr inbounds [4 x [20 x i8]], ptr %845, i64 0, i64 1
  %847 = getelementptr inbounds [20 x i8], ptr %846, i64 0, i64 0
  %848 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 0
  %849 = getelementptr inbounds [4 x [20 x i8]], ptr %848, i64 0, i64 2
  %850 = getelementptr inbounds [20 x i8], ptr %849, i64 0, i64 0
  %851 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 0
  %852 = getelementptr inbounds [4 x [20 x i8]], ptr %851, i64 0, i64 3
  %853 = getelementptr inbounds [20 x i8], ptr %852, i64 0, i64 0
  invoke void @_ZN9Secp256K116GetHash160_fromXEihP3IntS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(393296) %822, i32 noundef 0, i8 noundef zeroext 2, ptr noundef %826, ptr noundef %831, ptr noundef %836, ptr noundef %841, ptr noundef %844, ptr noundef %847, ptr noundef %850, ptr noundef %853)
          to label %854 unwind label %241

854:                                              ; preds = %821
  %855 = load ptr, ptr @secp, align 8, !tbaa !5
  %856 = load i64, ptr %25, align 8, !tbaa !15
  %857 = mul i64 %856, 4
  %858 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %857
  %859 = getelementptr inbounds %class.Point, ptr %858, i32 0, i32 0
  %860 = load i64, ptr %25, align 8, !tbaa !15
  %861 = mul i64 %860, 4
  %862 = add i64 %861, 1
  %863 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %862
  %864 = getelementptr inbounds %class.Point, ptr %863, i32 0, i32 0
  %865 = load i64, ptr %25, align 8, !tbaa !15
  %866 = mul i64 %865, 4
  %867 = add i64 %866, 2
  %868 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %867
  %869 = getelementptr inbounds %class.Point, ptr %868, i32 0, i32 0
  %870 = load i64, ptr %25, align 8, !tbaa !15
  %871 = mul i64 %870, 4
  %872 = add i64 %871, 3
  %873 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %872
  %874 = getelementptr inbounds %class.Point, ptr %873, i32 0, i32 0
  %875 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 1
  %876 = getelementptr inbounds [4 x [20 x i8]], ptr %875, i64 0, i64 0
  %877 = getelementptr inbounds [20 x i8], ptr %876, i64 0, i64 0
  %878 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 1
  %879 = getelementptr inbounds [4 x [20 x i8]], ptr %878, i64 0, i64 1
  %880 = getelementptr inbounds [20 x i8], ptr %879, i64 0, i64 0
  %881 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 1
  %882 = getelementptr inbounds [4 x [20 x i8]], ptr %881, i64 0, i64 2
  %883 = getelementptr inbounds [20 x i8], ptr %882, i64 0, i64 0
  %884 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 1
  %885 = getelementptr inbounds [4 x [20 x i8]], ptr %884, i64 0, i64 3
  %886 = getelementptr inbounds [20 x i8], ptr %885, i64 0, i64 0
  invoke void @_ZN9Secp256K116GetHash160_fromXEihP3IntS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(393296) %855, i32 noundef 0, i8 noundef zeroext 3, ptr noundef %859, ptr noundef %864, ptr noundef %869, ptr noundef %874, ptr noundef %877, ptr noundef %880, ptr noundef %883, ptr noundef %886)
          to label %887 unwind label %241

887:                                              ; preds = %854
  br label %888

888:                                              ; preds = %887, %820
  br label %889

889:                                              ; preds = %888, %616
  %890 = load i32, ptr @FLAGSEARCH, align 4, !tbaa !9
  %891 = icmp eq i32 %890, 0
  br i1 %891, label %895, label %892

892:                                              ; preds = %889
  %893 = load i32, ptr @FLAGSEARCH, align 4, !tbaa !9
  %894 = icmp eq i32 %893, 2
  br i1 %894, label %895, label %1157

895:                                              ; preds = %892, %889
  %896 = load i32, ptr @FLAGENDOMORPHISM, align 4, !tbaa !9
  %897 = icmp ne i32 %896, 0
  br i1 %897, label %898, label %1130

898:                                              ; preds = %895
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %899

899:                                              ; preds = %916, %898
  %900 = load i32, ptr %22, align 4, !tbaa !9
  %901 = icmp slt i32 %900, 4
  br i1 %901, label %902, label %928

902:                                              ; preds = %899
  call void @llvm.lifetime.start.p0(i64 48, ptr %42) #8
  %903 = load ptr, ptr @secp, align 8, !tbaa !5
  %904 = load i64, ptr %25, align 8, !tbaa !15
  %905 = mul i64 %904, 4
  %906 = load i32, ptr %22, align 4, !tbaa !9
  %907 = sext i32 %906 to i64
  %908 = add i64 %905, %907
  %909 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %908
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind writable sret(%class.Point) align 8 %42, ptr noundef nonnull align 8 dereferenceable(393296) %903, ptr noundef nonnull align 8 dereferenceable(48) %909)
          to label %910 unwind label %919

910:                                              ; preds = %902
  %911 = load i32, ptr %22, align 4, !tbaa !9
  %912 = sext i32 %911 to i64
  %913 = getelementptr inbounds [4 x %class.Point], ptr %10, i64 0, i64 %912
  %914 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %913, ptr noundef nonnull align 8 dereferenceable(48) %42)
          to label %915 unwind label %923

915:                                              ; preds = %910
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %42) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %42) #8
  br label %916

916:                                              ; preds = %915
  %917 = load i32, ptr %22, align 4, !tbaa !9
  %918 = add nsw i32 %917, 1
  store i32 %918, ptr %22, align 4, !tbaa !9
  br label %899, !llvm.loop !22

919:                                              ; preds = %902
  %920 = landingpad { ptr, i32 }
          cleanup
  %921 = extractvalue { ptr, i32 } %920, 0
  store ptr %921, ptr %6, align 8
  %922 = extractvalue { ptr, i32 } %920, 1
  store i32 %922, ptr %7, align 4
  br label %927

923:                                              ; preds = %910
  %924 = landingpad { ptr, i32 }
          cleanup
  %925 = extractvalue { ptr, i32 } %924, 0
  store ptr %925, ptr %6, align 8
  %926 = extractvalue { ptr, i32 } %924, 1
  store i32 %926, ptr %7, align 4
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %42) #8
  br label %927

927:                                              ; preds = %923, %919
  call void @llvm.lifetime.end.p0(i64 48, ptr %42) #8
  br label %1556

928:                                              ; preds = %899
  %929 = load ptr, ptr @secp, align 8, !tbaa !5
  %930 = load i64, ptr %25, align 8, !tbaa !15
  %931 = mul i64 %930, 4
  %932 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %931
  %933 = load i64, ptr %25, align 8, !tbaa !15
  %934 = mul i64 %933, 4
  %935 = add i64 %934, 1
  %936 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %935
  %937 = load i64, ptr %25, align 8, !tbaa !15
  %938 = mul i64 %937, 4
  %939 = add i64 %938, 2
  %940 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %939
  %941 = load i64, ptr %25, align 8, !tbaa !15
  %942 = mul i64 %941, 4
  %943 = add i64 %942, 3
  %944 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %943
  %945 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 6
  %946 = getelementptr inbounds [4 x [20 x i8]], ptr %945, i64 0, i64 0
  %947 = getelementptr inbounds [20 x i8], ptr %946, i64 0, i64 0
  %948 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 6
  %949 = getelementptr inbounds [4 x [20 x i8]], ptr %948, i64 0, i64 1
  %950 = getelementptr inbounds [20 x i8], ptr %949, i64 0, i64 0
  %951 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 6
  %952 = getelementptr inbounds [4 x [20 x i8]], ptr %951, i64 0, i64 2
  %953 = getelementptr inbounds [20 x i8], ptr %952, i64 0, i64 0
  %954 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 6
  %955 = getelementptr inbounds [4 x [20 x i8]], ptr %954, i64 0, i64 3
  %956 = getelementptr inbounds [20 x i8], ptr %955, i64 0, i64 0
  invoke void @_ZN9Secp256K110GetHash160EibR5PointS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(393296) %929, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(48) %932, ptr noundef nonnull align 8 dereferenceable(48) %936, ptr noundef nonnull align 8 dereferenceable(48) %940, ptr noundef nonnull align 8 dereferenceable(48) %944, ptr noundef %947, ptr noundef %950, ptr noundef %953, ptr noundef %956)
          to label %957 unwind label %241

957:                                              ; preds = %928
  %958 = load ptr, ptr @secp, align 8, !tbaa !5
  %959 = getelementptr inbounds [4 x %class.Point], ptr %10, i64 0, i64 0
  %960 = getelementptr inbounds [4 x %class.Point], ptr %10, i64 0, i64 1
  %961 = getelementptr inbounds [4 x %class.Point], ptr %10, i64 0, i64 2
  %962 = getelementptr inbounds [4 x %class.Point], ptr %10, i64 0, i64 3
  %963 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 7
  %964 = getelementptr inbounds [4 x [20 x i8]], ptr %963, i64 0, i64 0
  %965 = getelementptr inbounds [20 x i8], ptr %964, i64 0, i64 0
  %966 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 7
  %967 = getelementptr inbounds [4 x [20 x i8]], ptr %966, i64 0, i64 1
  %968 = getelementptr inbounds [20 x i8], ptr %967, i64 0, i64 0
  %969 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 7
  %970 = getelementptr inbounds [4 x [20 x i8]], ptr %969, i64 0, i64 2
  %971 = getelementptr inbounds [20 x i8], ptr %970, i64 0, i64 0
  %972 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 7
  %973 = getelementptr inbounds [4 x [20 x i8]], ptr %972, i64 0, i64 3
  %974 = getelementptr inbounds [20 x i8], ptr %973, i64 0, i64 0
  invoke void @_ZN9Secp256K110GetHash160EibR5PointS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(393296) %958, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(48) %959, ptr noundef nonnull align 8 dereferenceable(48) %960, ptr noundef nonnull align 8 dereferenceable(48) %961, ptr noundef nonnull align 8 dereferenceable(48) %962, ptr noundef %965, ptr noundef %968, ptr noundef %971, ptr noundef %974)
          to label %975 unwind label %241

975:                                              ; preds = %957
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %976

976:                                              ; preds = %993, %975
  %977 = load i32, ptr %22, align 4, !tbaa !9
  %978 = icmp slt i32 %977, 4
  br i1 %978, label %979, label %1005

979:                                              ; preds = %976
  call void @llvm.lifetime.start.p0(i64 48, ptr %43) #8
  %980 = load ptr, ptr @secp, align 8, !tbaa !5
  %981 = load i64, ptr %25, align 8, !tbaa !15
  %982 = mul i64 %981, 4
  %983 = load i32, ptr %22, align 4, !tbaa !9
  %984 = sext i32 %983 to i64
  %985 = add i64 %982, %984
  %986 = getelementptr inbounds [1024 x %class.Point], ptr %8, i64 0, i64 %985
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind writable sret(%class.Point) align 8 %43, ptr noundef nonnull align 8 dereferenceable(393296) %980, ptr noundef nonnull align 8 dereferenceable(48) %986)
          to label %987 unwind label %996

987:                                              ; preds = %979
  %988 = load i32, ptr %22, align 4, !tbaa !9
  %989 = sext i32 %988 to i64
  %990 = getelementptr inbounds [4 x %class.Point], ptr %10, i64 0, i64 %989
  %991 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %990, ptr noundef nonnull align 8 dereferenceable(48) %43)
          to label %992 unwind label %1000

992:                                              ; preds = %987
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %43) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %43) #8
  br label %993

993:                                              ; preds = %992
  %994 = load i32, ptr %22, align 4, !tbaa !9
  %995 = add nsw i32 %994, 1
  store i32 %995, ptr %22, align 4, !tbaa !9
  br label %976, !llvm.loop !23

996:                                              ; preds = %979
  %997 = landingpad { ptr, i32 }
          cleanup
  %998 = extractvalue { ptr, i32 } %997, 0
  store ptr %998, ptr %6, align 8
  %999 = extractvalue { ptr, i32 } %997, 1
  store i32 %999, ptr %7, align 4
  br label %1004

1000:                                             ; preds = %987
  %1001 = landingpad { ptr, i32 }
          cleanup
  %1002 = extractvalue { ptr, i32 } %1001, 0
  store ptr %1002, ptr %6, align 8
  %1003 = extractvalue { ptr, i32 } %1001, 1
  store i32 %1003, ptr %7, align 4
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %43) #8
  br label %1004

1004:                                             ; preds = %1000, %996
  call void @llvm.lifetime.end.p0(i64 48, ptr %43) #8
  br label %1556

1005:                                             ; preds = %976
  %1006 = load ptr, ptr @secp, align 8, !tbaa !5
  %1007 = load i64, ptr %25, align 8, !tbaa !15
  %1008 = mul i64 %1007, 4
  %1009 = getelementptr inbounds [1024 x %class.Point], ptr %8, i64 0, i64 %1008
  %1010 = load i64, ptr %25, align 8, !tbaa !15
  %1011 = mul i64 %1010, 4
  %1012 = add i64 %1011, 1
  %1013 = getelementptr inbounds [1024 x %class.Point], ptr %8, i64 0, i64 %1012
  %1014 = load i64, ptr %25, align 8, !tbaa !15
  %1015 = mul i64 %1014, 4
  %1016 = add i64 %1015, 2
  %1017 = getelementptr inbounds [1024 x %class.Point], ptr %8, i64 0, i64 %1016
  %1018 = load i64, ptr %25, align 8, !tbaa !15
  %1019 = mul i64 %1018, 4
  %1020 = add i64 %1019, 3
  %1021 = getelementptr inbounds [1024 x %class.Point], ptr %8, i64 0, i64 %1020
  %1022 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 8
  %1023 = getelementptr inbounds [4 x [20 x i8]], ptr %1022, i64 0, i64 0
  %1024 = getelementptr inbounds [20 x i8], ptr %1023, i64 0, i64 0
  %1025 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 8
  %1026 = getelementptr inbounds [4 x [20 x i8]], ptr %1025, i64 0, i64 1
  %1027 = getelementptr inbounds [20 x i8], ptr %1026, i64 0, i64 0
  %1028 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 8
  %1029 = getelementptr inbounds [4 x [20 x i8]], ptr %1028, i64 0, i64 2
  %1030 = getelementptr inbounds [20 x i8], ptr %1029, i64 0, i64 0
  %1031 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 8
  %1032 = getelementptr inbounds [4 x [20 x i8]], ptr %1031, i64 0, i64 3
  %1033 = getelementptr inbounds [20 x i8], ptr %1032, i64 0, i64 0
  invoke void @_ZN9Secp256K110GetHash160EibR5PointS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(393296) %1006, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(48) %1009, ptr noundef nonnull align 8 dereferenceable(48) %1013, ptr noundef nonnull align 8 dereferenceable(48) %1017, ptr noundef nonnull align 8 dereferenceable(48) %1021, ptr noundef %1024, ptr noundef %1027, ptr noundef %1030, ptr noundef %1033)
          to label %1034 unwind label %241

1034:                                             ; preds = %1005
  %1035 = load ptr, ptr @secp, align 8, !tbaa !5
  %1036 = getelementptr inbounds [4 x %class.Point], ptr %10, i64 0, i64 0
  %1037 = getelementptr inbounds [4 x %class.Point], ptr %10, i64 0, i64 1
  %1038 = getelementptr inbounds [4 x %class.Point], ptr %10, i64 0, i64 2
  %1039 = getelementptr inbounds [4 x %class.Point], ptr %10, i64 0, i64 3
  %1040 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 9
  %1041 = getelementptr inbounds [4 x [20 x i8]], ptr %1040, i64 0, i64 0
  %1042 = getelementptr inbounds [20 x i8], ptr %1041, i64 0, i64 0
  %1043 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 9
  %1044 = getelementptr inbounds [4 x [20 x i8]], ptr %1043, i64 0, i64 1
  %1045 = getelementptr inbounds [20 x i8], ptr %1044, i64 0, i64 0
  %1046 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 9
  %1047 = getelementptr inbounds [4 x [20 x i8]], ptr %1046, i64 0, i64 2
  %1048 = getelementptr inbounds [20 x i8], ptr %1047, i64 0, i64 0
  %1049 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 9
  %1050 = getelementptr inbounds [4 x [20 x i8]], ptr %1049, i64 0, i64 3
  %1051 = getelementptr inbounds [20 x i8], ptr %1050, i64 0, i64 0
  invoke void @_ZN9Secp256K110GetHash160EibR5PointS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(393296) %1035, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(48) %1036, ptr noundef nonnull align 8 dereferenceable(48) %1037, ptr noundef nonnull align 8 dereferenceable(48) %1038, ptr noundef nonnull align 8 dereferenceable(48) %1039, ptr noundef %1042, ptr noundef %1045, ptr noundef %1048, ptr noundef %1051)
          to label %1052 unwind label %241

1052:                                             ; preds = %1034
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %1053

1053:                                             ; preds = %1070, %1052
  %1054 = load i32, ptr %22, align 4, !tbaa !9
  %1055 = icmp slt i32 %1054, 4
  br i1 %1055, label %1056, label %1082

1056:                                             ; preds = %1053
  call void @llvm.lifetime.start.p0(i64 48, ptr %44) #8
  %1057 = load ptr, ptr @secp, align 8, !tbaa !5
  %1058 = load i64, ptr %25, align 8, !tbaa !15
  %1059 = mul i64 %1058, 4
  %1060 = load i32, ptr %22, align 4, !tbaa !9
  %1061 = sext i32 %1060 to i64
  %1062 = add i64 %1059, %1061
  %1063 = getelementptr inbounds [1024 x %class.Point], ptr %9, i64 0, i64 %1062
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind writable sret(%class.Point) align 8 %44, ptr noundef nonnull align 8 dereferenceable(393296) %1057, ptr noundef nonnull align 8 dereferenceable(48) %1063)
          to label %1064 unwind label %1073

1064:                                             ; preds = %1056
  %1065 = load i32, ptr %22, align 4, !tbaa !9
  %1066 = sext i32 %1065 to i64
  %1067 = getelementptr inbounds [4 x %class.Point], ptr %10, i64 0, i64 %1066
  %1068 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %1067, ptr noundef nonnull align 8 dereferenceable(48) %44)
          to label %1069 unwind label %1077

1069:                                             ; preds = %1064
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %44) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %44) #8
  br label %1070

1070:                                             ; preds = %1069
  %1071 = load i32, ptr %22, align 4, !tbaa !9
  %1072 = add nsw i32 %1071, 1
  store i32 %1072, ptr %22, align 4, !tbaa !9
  br label %1053, !llvm.loop !24

1073:                                             ; preds = %1056
  %1074 = landingpad { ptr, i32 }
          cleanup
  %1075 = extractvalue { ptr, i32 } %1074, 0
  store ptr %1075, ptr %6, align 8
  %1076 = extractvalue { ptr, i32 } %1074, 1
  store i32 %1076, ptr %7, align 4
  br label %1081

1077:                                             ; preds = %1064
  %1078 = landingpad { ptr, i32 }
          cleanup
  %1079 = extractvalue { ptr, i32 } %1078, 0
  store ptr %1079, ptr %6, align 8
  %1080 = extractvalue { ptr, i32 } %1078, 1
  store i32 %1080, ptr %7, align 4
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %44) #8
  br label %1081

1081:                                             ; preds = %1077, %1073
  call void @llvm.lifetime.end.p0(i64 48, ptr %44) #8
  br label %1556

1082:                                             ; preds = %1053
  %1083 = load ptr, ptr @secp, align 8, !tbaa !5
  %1084 = load i64, ptr %25, align 8, !tbaa !15
  %1085 = mul i64 %1084, 4
  %1086 = getelementptr inbounds [1024 x %class.Point], ptr %9, i64 0, i64 %1085
  %1087 = load i64, ptr %25, align 8, !tbaa !15
  %1088 = mul i64 %1087, 4
  %1089 = add i64 %1088, 1
  %1090 = getelementptr inbounds [1024 x %class.Point], ptr %9, i64 0, i64 %1089
  %1091 = load i64, ptr %25, align 8, !tbaa !15
  %1092 = mul i64 %1091, 4
  %1093 = add i64 %1092, 2
  %1094 = getelementptr inbounds [1024 x %class.Point], ptr %9, i64 0, i64 %1093
  %1095 = load i64, ptr %25, align 8, !tbaa !15
  %1096 = mul i64 %1095, 4
  %1097 = add i64 %1096, 3
  %1098 = getelementptr inbounds [1024 x %class.Point], ptr %9, i64 0, i64 %1097
  %1099 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 10
  %1100 = getelementptr inbounds [4 x [20 x i8]], ptr %1099, i64 0, i64 0
  %1101 = getelementptr inbounds [20 x i8], ptr %1100, i64 0, i64 0
  %1102 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 10
  %1103 = getelementptr inbounds [4 x [20 x i8]], ptr %1102, i64 0, i64 1
  %1104 = getelementptr inbounds [20 x i8], ptr %1103, i64 0, i64 0
  %1105 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 10
  %1106 = getelementptr inbounds [4 x [20 x i8]], ptr %1105, i64 0, i64 2
  %1107 = getelementptr inbounds [20 x i8], ptr %1106, i64 0, i64 0
  %1108 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 10
  %1109 = getelementptr inbounds [4 x [20 x i8]], ptr %1108, i64 0, i64 3
  %1110 = getelementptr inbounds [20 x i8], ptr %1109, i64 0, i64 0
  invoke void @_ZN9Secp256K110GetHash160EibR5PointS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(393296) %1083, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(48) %1086, ptr noundef nonnull align 8 dereferenceable(48) %1090, ptr noundef nonnull align 8 dereferenceable(48) %1094, ptr noundef nonnull align 8 dereferenceable(48) %1098, ptr noundef %1101, ptr noundef %1104, ptr noundef %1107, ptr noundef %1110)
          to label %1111 unwind label %241

1111:                                             ; preds = %1082
  %1112 = load ptr, ptr @secp, align 8, !tbaa !5
  %1113 = getelementptr inbounds [4 x %class.Point], ptr %10, i64 0, i64 0
  %1114 = getelementptr inbounds [4 x %class.Point], ptr %10, i64 0, i64 1
  %1115 = getelementptr inbounds [4 x %class.Point], ptr %10, i64 0, i64 2
  %1116 = getelementptr inbounds [4 x %class.Point], ptr %10, i64 0, i64 3
  %1117 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 11
  %1118 = getelementptr inbounds [4 x [20 x i8]], ptr %1117, i64 0, i64 0
  %1119 = getelementptr inbounds [20 x i8], ptr %1118, i64 0, i64 0
  %1120 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 11
  %1121 = getelementptr inbounds [4 x [20 x i8]], ptr %1120, i64 0, i64 1
  %1122 = getelementptr inbounds [20 x i8], ptr %1121, i64 0, i64 0
  %1123 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 11
  %1124 = getelementptr inbounds [4 x [20 x i8]], ptr %1123, i64 0, i64 2
  %1125 = getelementptr inbounds [20 x i8], ptr %1124, i64 0, i64 0
  %1126 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 11
  %1127 = getelementptr inbounds [4 x [20 x i8]], ptr %1126, i64 0, i64 3
  %1128 = getelementptr inbounds [20 x i8], ptr %1127, i64 0, i64 0
  invoke void @_ZN9Secp256K110GetHash160EibR5PointS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(393296) %1112, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(48) %1113, ptr noundef nonnull align 8 dereferenceable(48) %1114, ptr noundef nonnull align 8 dereferenceable(48) %1115, ptr noundef nonnull align 8 dereferenceable(48) %1116, ptr noundef %1119, ptr noundef %1122, ptr noundef %1125, ptr noundef %1128)
          to label %1129 unwind label %241

1129:                                             ; preds = %1111
  br label %1156

1130:                                             ; preds = %895
  %1131 = load ptr, ptr @secp, align 8, !tbaa !5
  %1132 = load i64, ptr %25, align 8, !tbaa !15
  %1133 = mul i64 %1132, 4
  %1134 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %1133
  %1135 = load i64, ptr %25, align 8, !tbaa !15
  %1136 = mul i64 %1135, 4
  %1137 = add i64 %1136, 1
  %1138 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %1137
  %1139 = load i64, ptr %25, align 8, !tbaa !15
  %1140 = mul i64 %1139, 4
  %1141 = add i64 %1140, 2
  %1142 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %1141
  %1143 = load i64, ptr %25, align 8, !tbaa !15
  %1144 = mul i64 %1143, 4
  %1145 = add i64 %1144, 3
  %1146 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %1145
  %1147 = getelementptr inbounds [4 x [20 x i8]], ptr %35, i64 0, i64 0
  %1148 = getelementptr inbounds [20 x i8], ptr %1147, i64 0, i64 0
  %1149 = getelementptr inbounds [4 x [20 x i8]], ptr %35, i64 0, i64 1
  %1150 = getelementptr inbounds [20 x i8], ptr %1149, i64 0, i64 0
  %1151 = getelementptr inbounds [4 x [20 x i8]], ptr %35, i64 0, i64 2
  %1152 = getelementptr inbounds [20 x i8], ptr %1151, i64 0, i64 0
  %1153 = getelementptr inbounds [4 x [20 x i8]], ptr %35, i64 0, i64 3
  %1154 = getelementptr inbounds [20 x i8], ptr %1153, i64 0, i64 0
  invoke void @_ZN9Secp256K110GetHash160EibR5PointS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(393296) %1131, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(48) %1134, ptr noundef nonnull align 8 dereferenceable(48) %1138, ptr noundef nonnull align 8 dereferenceable(48) %1142, ptr noundef nonnull align 8 dereferenceable(48) %1146, ptr noundef %1148, ptr noundef %1150, ptr noundef %1152, ptr noundef %1154)
          to label %1155 unwind label %241

1155:                                             ; preds = %1130
  br label %1156

1156:                                             ; preds = %1155, %1129
  br label %1157

1157:                                             ; preds = %1156, %892
  store i32 0, ptr %32, align 4, !tbaa !9
  br label %1158

1158:                                             ; preds = %1491, %1157
  %1159 = load i32, ptr %32, align 4, !tbaa !9
  %1160 = icmp slt i32 %1159, 4
  br i1 %1160, label %1161, label %1494

1161:                                             ; preds = %1158
  %1162 = load i32, ptr @FLAGSEARCH, align 4, !tbaa !9
  %1163 = icmp eq i32 %1162, 1
  br i1 %1163, label %1167, label %1164

1164:                                             ; preds = %1161
  %1165 = load i32, ptr @FLAGSEARCH, align 4, !tbaa !9
  %1166 = icmp eq i32 %1165, 2
  br i1 %1166, label %1167, label %1332

1167:                                             ; preds = %1164, %1161
  %1168 = load i32, ptr @FLAGENDOMORPHISM, align 4, !tbaa !9
  %1169 = icmp ne i32 %1168, 0
  br i1 %1169, label %1170, label %1274

1170:                                             ; preds = %1167
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %1171

1171:                                             ; preds = %1270, %1170
  %1172 = load i32, ptr %22, align 4, !tbaa !9
  %1173 = icmp slt i32 %1172, 6
  br i1 %1173, label %1174, label %1273

1174:                                             ; preds = %1171
  %1175 = load i32, ptr %22, align 4, !tbaa !9
  %1176 = sext i32 %1175 to i64
  %1177 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 %1176
  %1178 = load i32, ptr %32, align 4, !tbaa !9
  %1179 = sext i32 %1178 to i64
  %1180 = getelementptr inbounds [4 x [20 x i8]], ptr %1177, i64 0, i64 %1179
  %1181 = getelementptr inbounds [20 x i8], ptr %1180, i64 0, i64 0
  %1182 = invoke noundef zeroext i1 @_Z14vanityrmdmatchPh(ptr noundef %1181)
          to label %1183 unwind label %241

1183:                                             ; preds = %1174
  br i1 %1182, label %1184, label %1269

1184:                                             ; preds = %1183
  %1185 = load i32, ptr %32, align 4, !tbaa !9
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) %39, i32 noundef %1185)
          to label %1186 unwind label %241

1186:                                             ; preds = %1184
  invoke void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef @stride)
          to label %1187 unwind label %241

1187:                                             ; preds = %1186
  invoke void @_ZN3Int3AddEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef %37)
          to label %1188 unwind label %241

1188:                                             ; preds = %1187
  call void @llvm.lifetime.start.p0(i64 48, ptr %45) #8
  %1189 = load ptr, ptr @secp, align 8, !tbaa !5
  invoke void @_ZN9Secp256K116ComputePublicKeyEP3Int(ptr dead_on_unwind writable sret(%class.Point) align 8 %45, ptr noundef nonnull align 8 dereferenceable(393296) %1189, ptr noundef %39)
          to label %1190 unwind label %1194

1190:                                             ; preds = %1188
  %1191 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %29, ptr noundef nonnull align 8 dereferenceable(48) %45)
          to label %1192 unwind label %1198

1192:                                             ; preds = %1190
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %45) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %45) #8
  %1193 = load i32, ptr %22, align 4, !tbaa !9
  switch i32 %1193, label %1267 [
    i32 0, label %1203
    i32 1, label %1213
    i32 2, label %1223
    i32 3, label %1234
    i32 4, label %1245
    i32 5, label %1256
  ]

1194:                                             ; preds = %1188
  %1195 = landingpad { ptr, i32 }
          cleanup
  %1196 = extractvalue { ptr, i32 } %1195, 0
  store ptr %1196, ptr %6, align 8
  %1197 = extractvalue { ptr, i32 } %1195, 1
  store i32 %1197, ptr %7, align 4
  br label %1202

1198:                                             ; preds = %1190
  %1199 = landingpad { ptr, i32 }
          cleanup
  %1200 = extractvalue { ptr, i32 } %1199, 0
  store ptr %1200, ptr %6, align 8
  %1201 = extractvalue { ptr, i32 } %1199, 1
  store i32 %1201, ptr %7, align 4
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %45) #8
  br label %1202

1202:                                             ; preds = %1198, %1194
  call void @llvm.lifetime.end.p0(i64 48, ptr %45) #8
  br label %1556

1203:                                             ; preds = %1192
  %1204 = getelementptr inbounds %class.Point, ptr %29, i32 0, i32 1
  %1205 = invoke noundef zeroext i1 @_ZN3Int5IsOddEv(ptr noundef nonnull align 8 dereferenceable(16) %1204)
          to label %1206 unwind label %241

1206:                                             ; preds = %1203
  br i1 %1205, label %1207, label %1212

1207:                                             ; preds = %1206
  invoke void @_ZN3Int3NegEv(ptr noundef nonnull align 8 dereferenceable(16) %39)
          to label %1208 unwind label %241

1208:                                             ; preds = %1207
  %1209 = load ptr, ptr @secp, align 8, !tbaa !5
  %1210 = getelementptr inbounds %class.Secp256K1, ptr %1209, i32 0, i32 2
  invoke void @_ZN3Int3AddEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef %1210)
          to label %1211 unwind label %241

1211:                                             ; preds = %1208
  br label %1212

1212:                                             ; preds = %1211, %1206
  br label %1267

1213:                                             ; preds = %1192
  %1214 = getelementptr inbounds %class.Point, ptr %29, i32 0, i32 1
  %1215 = invoke noundef zeroext i1 @_ZN3Int6IsEvenEv(ptr noundef nonnull align 8 dereferenceable(16) %1214)
          to label %1216 unwind label %241

1216:                                             ; preds = %1213
  br i1 %1215, label %1217, label %1222

1217:                                             ; preds = %1216
  invoke void @_ZN3Int3NegEv(ptr noundef nonnull align 8 dereferenceable(16) %39)
          to label %1218 unwind label %241

1218:                                             ; preds = %1217
  %1219 = load ptr, ptr @secp, align 8, !tbaa !5
  %1220 = getelementptr inbounds %class.Secp256K1, ptr %1219, i32 0, i32 2
  invoke void @_ZN3Int3AddEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef %1220)
          to label %1221 unwind label %241

1221:                                             ; preds = %1218
  br label %1222

1222:                                             ; preds = %1221, %1216
  br label %1267

1223:                                             ; preds = %1192
  invoke void @_ZN3Int13ModMulK1orderEPS_(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef @lambda)
          to label %1224 unwind label %241

1224:                                             ; preds = %1223
  %1225 = getelementptr inbounds %class.Point, ptr %29, i32 0, i32 1
  %1226 = invoke noundef zeroext i1 @_ZN3Int5IsOddEv(ptr noundef nonnull align 8 dereferenceable(16) %1225)
          to label %1227 unwind label %241

1227:                                             ; preds = %1224
  br i1 %1226, label %1228, label %1233

1228:                                             ; preds = %1227
  invoke void @_ZN3Int3NegEv(ptr noundef nonnull align 8 dereferenceable(16) %39)
          to label %1229 unwind label %241

1229:                                             ; preds = %1228
  %1230 = load ptr, ptr @secp, align 8, !tbaa !5
  %1231 = getelementptr inbounds %class.Secp256K1, ptr %1230, i32 0, i32 2
  invoke void @_ZN3Int3AddEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef %1231)
          to label %1232 unwind label %241

1232:                                             ; preds = %1229
  br label %1233

1233:                                             ; preds = %1232, %1227
  br label %1267

1234:                                             ; preds = %1192
  invoke void @_ZN3Int13ModMulK1orderEPS_(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef @lambda)
          to label %1235 unwind label %241

1235:                                             ; preds = %1234
  %1236 = getelementptr inbounds %class.Point, ptr %29, i32 0, i32 1
  %1237 = invoke noundef zeroext i1 @_ZN3Int6IsEvenEv(ptr noundef nonnull align 8 dereferenceable(16) %1236)
          to label %1238 unwind label %241

1238:                                             ; preds = %1235
  br i1 %1237, label %1239, label %1244

1239:                                             ; preds = %1238
  invoke void @_ZN3Int3NegEv(ptr noundef nonnull align 8 dereferenceable(16) %39)
          to label %1240 unwind label %241

1240:                                             ; preds = %1239
  %1241 = load ptr, ptr @secp, align 8, !tbaa !5
  %1242 = getelementptr inbounds %class.Secp256K1, ptr %1241, i32 0, i32 2
  invoke void @_ZN3Int3AddEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef %1242)
          to label %1243 unwind label %241

1243:                                             ; preds = %1240
  br label %1244

1244:                                             ; preds = %1243, %1238
  br label %1267

1245:                                             ; preds = %1192
  invoke void @_ZN3Int13ModMulK1orderEPS_(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef @lambda2)
          to label %1246 unwind label %241

1246:                                             ; preds = %1245
  %1247 = getelementptr inbounds %class.Point, ptr %29, i32 0, i32 1
  %1248 = invoke noundef zeroext i1 @_ZN3Int5IsOddEv(ptr noundef nonnull align 8 dereferenceable(16) %1247)
          to label %1249 unwind label %241

1249:                                             ; preds = %1246
  br i1 %1248, label %1250, label %1255

1250:                                             ; preds = %1249
  invoke void @_ZN3Int3NegEv(ptr noundef nonnull align 8 dereferenceable(16) %39)
          to label %1251 unwind label %241

1251:                                             ; preds = %1250
  %1252 = load ptr, ptr @secp, align 8, !tbaa !5
  %1253 = getelementptr inbounds %class.Secp256K1, ptr %1252, i32 0, i32 2
  invoke void @_ZN3Int3AddEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef %1253)
          to label %1254 unwind label %241

1254:                                             ; preds = %1251
  br label %1255

1255:                                             ; preds = %1254, %1249
  br label %1267

1256:                                             ; preds = %1192
  invoke void @_ZN3Int13ModMulK1orderEPS_(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef @lambda2)
          to label %1257 unwind label %241

1257:                                             ; preds = %1256
  %1258 = getelementptr inbounds %class.Point, ptr %29, i32 0, i32 1
  %1259 = invoke noundef zeroext i1 @_ZN3Int6IsEvenEv(ptr noundef nonnull align 8 dereferenceable(16) %1258)
          to label %1260 unwind label %241

1260:                                             ; preds = %1257
  br i1 %1259, label %1261, label %1266

1261:                                             ; preds = %1260
  invoke void @_ZN3Int3NegEv(ptr noundef nonnull align 8 dereferenceable(16) %39)
          to label %1262 unwind label %241

1262:                                             ; preds = %1261
  %1263 = load ptr, ptr @secp, align 8, !tbaa !5
  %1264 = getelementptr inbounds %class.Secp256K1, ptr %1263, i32 0, i32 2
  invoke void @_ZN3Int3AddEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef %1264)
          to label %1265 unwind label %241

1265:                                             ; preds = %1262
  br label %1266

1266:                                             ; preds = %1265, %1260
  br label %1267

1267:                                             ; preds = %1266, %1255, %1244, %1233, %1222, %1212, %1192
  invoke void @_Z14writevanitykeybP3Int(i1 noundef zeroext true, ptr noundef %39)
          to label %1268 unwind label %241

1268:                                             ; preds = %1267
  br label %1269

1269:                                             ; preds = %1268, %1183
  br label %1270

1270:                                             ; preds = %1269
  %1271 = load i32, ptr %22, align 4, !tbaa !9
  %1272 = add nsw i32 %1271, 1
  store i32 %1272, ptr %22, align 4, !tbaa !9
  br label %1171, !llvm.loop !25

1273:                                             ; preds = %1171
  br label %1331

1274:                                             ; preds = %1167
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %1275

1275:                                             ; preds = %1327, %1274
  %1276 = load i32, ptr %22, align 4, !tbaa !9
  %1277 = icmp slt i32 %1276, 2
  br i1 %1277, label %1278, label %1330

1278:                                             ; preds = %1275
  %1279 = load i32, ptr %22, align 4, !tbaa !9
  %1280 = sext i32 %1279 to i64
  %1281 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 %1280
  %1282 = load i32, ptr %32, align 4, !tbaa !9
  %1283 = sext i32 %1282 to i64
  %1284 = getelementptr inbounds [4 x [20 x i8]], ptr %1281, i64 0, i64 %1283
  %1285 = getelementptr inbounds [20 x i8], ptr %1284, i64 0, i64 0
  %1286 = invoke noundef zeroext i1 @_Z14vanityrmdmatchPh(ptr noundef %1285)
          to label %1287 unwind label %241

1287:                                             ; preds = %1278
  br i1 %1286, label %1288, label %1326

1288:                                             ; preds = %1287
  %1289 = load i32, ptr %32, align 4, !tbaa !9
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) %39, i32 noundef %1289)
          to label %1290 unwind label %241

1290:                                             ; preds = %1288
  invoke void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef @stride)
          to label %1291 unwind label %241

1291:                                             ; preds = %1290
  invoke void @_ZN3Int3AddEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef %37)
          to label %1292 unwind label %241

1292:                                             ; preds = %1291
  call void @llvm.lifetime.start.p0(i64 48, ptr %46) #8
  %1293 = load ptr, ptr @secp, align 8, !tbaa !5
  invoke void @_ZN9Secp256K116ComputePublicKeyEP3Int(ptr dead_on_unwind writable sret(%class.Point) align 8 %46, ptr noundef nonnull align 8 dereferenceable(393296) %1293, ptr noundef %39)
          to label %1294 unwind label %1315

1294:                                             ; preds = %1292
  %1295 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %29, ptr noundef nonnull align 8 dereferenceable(48) %46)
          to label %1296 unwind label %1319

1296:                                             ; preds = %1294
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %46) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %46) #8
  %1297 = load ptr, ptr @secp, align 8, !tbaa !5
  %1298 = getelementptr inbounds [20 x i8], ptr %34, i64 0, i64 0
  invoke void @_ZN9Secp256K110GetHash160EibR5PointPh(ptr noundef nonnull align 8 dereferenceable(393296) %1297, i32 noundef 0, i1 noundef zeroext true, ptr noundef nonnull align 8 dereferenceable(48) %29, ptr noundef %1298)
          to label %1299 unwind label %241

1299:                                             ; preds = %1296
  %1300 = load i32, ptr %22, align 4, !tbaa !9
  %1301 = sext i32 %1300 to i64
  %1302 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 %1301
  %1303 = load i32, ptr %32, align 4, !tbaa !9
  %1304 = sext i32 %1303 to i64
  %1305 = getelementptr inbounds [4 x [20 x i8]], ptr %1302, i64 0, i64 %1304
  %1306 = getelementptr inbounds [20 x i8], ptr %1305, i64 0, i64 0
  %1307 = getelementptr inbounds [20 x i8], ptr %34, i64 0, i64 0
  %1308 = call i32 @memcmp(ptr noundef %1306, ptr noundef %1307, i64 noundef 20) #11
  %1309 = icmp ne i32 %1308, 0
  br i1 %1309, label %1310, label %1324

1310:                                             ; preds = %1299
  invoke void @_ZN3Int3NegEv(ptr noundef nonnull align 8 dereferenceable(16) %39)
          to label %1311 unwind label %241

1311:                                             ; preds = %1310
  %1312 = load ptr, ptr @secp, align 8, !tbaa !5
  %1313 = getelementptr inbounds %class.Secp256K1, ptr %1312, i32 0, i32 2
  invoke void @_ZN3Int3AddEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef %1313)
          to label %1314 unwind label %241

1314:                                             ; preds = %1311
  br label %1324

1315:                                             ; preds = %1292
  %1316 = landingpad { ptr, i32 }
          cleanup
  %1317 = extractvalue { ptr, i32 } %1316, 0
  store ptr %1317, ptr %6, align 8
  %1318 = extractvalue { ptr, i32 } %1316, 1
  store i32 %1318, ptr %7, align 4
  br label %1323

1319:                                             ; preds = %1294
  %1320 = landingpad { ptr, i32 }
          cleanup
  %1321 = extractvalue { ptr, i32 } %1320, 0
  store ptr %1321, ptr %6, align 8
  %1322 = extractvalue { ptr, i32 } %1320, 1
  store i32 %1322, ptr %7, align 4
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %46) #8
  br label %1323

1323:                                             ; preds = %1319, %1315
  call void @llvm.lifetime.end.p0(i64 48, ptr %46) #8
  br label %1556

1324:                                             ; preds = %1314, %1299
  invoke void @_Z14writevanitykeybP3Int(i1 noundef zeroext true, ptr noundef %39)
          to label %1325 unwind label %241

1325:                                             ; preds = %1324
  br label %1326

1326:                                             ; preds = %1325, %1287
  br label %1327

1327:                                             ; preds = %1326
  %1328 = load i32, ptr %22, align 4, !tbaa !9
  %1329 = add nsw i32 %1328, 1
  store i32 %1329, ptr %22, align 4, !tbaa !9
  br label %1275, !llvm.loop !26

1330:                                             ; preds = %1275
  br label %1331

1331:                                             ; preds = %1330, %1273
  br label %1332

1332:                                             ; preds = %1331, %1164
  %1333 = load i32, ptr @FLAGSEARCH, align 4, !tbaa !9
  %1334 = icmp eq i32 %1333, 0
  br i1 %1334, label %1338, label %1335

1335:                                             ; preds = %1332
  %1336 = load i32, ptr @FLAGSEARCH, align 4, !tbaa !9
  %1337 = icmp eq i32 %1336, 2
  br i1 %1337, label %1338, label %1490

1338:                                             ; preds = %1335, %1332
  %1339 = load i32, ptr @FLAGENDOMORPHISM, align 4, !tbaa !9
  %1340 = icmp ne i32 %1339, 0
  br i1 %1340, label %1341, label %1475

1341:                                             ; preds = %1338
  store i32 6, ptr %22, align 4, !tbaa !9
  br label %1342

1342:                                             ; preds = %1471, %1341
  %1343 = load i32, ptr %22, align 4, !tbaa !9
  %1344 = icmp slt i32 %1343, 12
  br i1 %1344, label %1345, label %1474

1345:                                             ; preds = %1342
  %1346 = load i32, ptr %22, align 4, !tbaa !9
  %1347 = sext i32 %1346 to i64
  %1348 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 %1347
  %1349 = load i32, ptr %32, align 4, !tbaa !9
  %1350 = sext i32 %1349 to i64
  %1351 = getelementptr inbounds [4 x [20 x i8]], ptr %1348, i64 0, i64 %1350
  %1352 = getelementptr inbounds [20 x i8], ptr %1351, i64 0, i64 0
  %1353 = invoke noundef zeroext i1 @_Z14vanityrmdmatchPh(ptr noundef %1352)
          to label %1354 unwind label %241

1354:                                             ; preds = %1345
  br i1 %1353, label %1355, label %1470

1355:                                             ; preds = %1354
  %1356 = load i32, ptr %32, align 4, !tbaa !9
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) %39, i32 noundef %1356)
          to label %1357 unwind label %241

1357:                                             ; preds = %1355
  invoke void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef @stride)
          to label %1358 unwind label %241

1358:                                             ; preds = %1357
  invoke void @_ZN3Int3AddEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef %37)
          to label %1359 unwind label %241

1359:                                             ; preds = %1358
  %1360 = load i32, ptr %22, align 4, !tbaa !9
  switch i32 %1360, label %1468 [
    i32 6, label %1361
    i32 7, label %1361
    i32 8, label %1396
    i32 9, label %1396
    i32 10, label %1432
    i32 11, label %1432
  ]

1361:                                             ; preds = %1359, %1359
  call void @llvm.lifetime.start.p0(i64 48, ptr %47) #8
  %1362 = load ptr, ptr @secp, align 8, !tbaa !5
  invoke void @_ZN9Secp256K116ComputePublicKeyEP3Int(ptr dead_on_unwind writable sret(%class.Point) align 8 %47, ptr noundef nonnull align 8 dereferenceable(393296) %1362, ptr noundef %39)
          to label %1363 unwind label %1386

1363:                                             ; preds = %1361
  %1364 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %29, ptr noundef nonnull align 8 dereferenceable(48) %47)
          to label %1365 unwind label %1390

1365:                                             ; preds = %1363
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %47) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %47) #8
  %1366 = load ptr, ptr @secp, align 8, !tbaa !5
  %1367 = getelementptr inbounds [4 x [20 x i8]], ptr %35, i64 0, i64 0
  %1368 = getelementptr inbounds [20 x i8], ptr %1367, i64 0, i64 0
  invoke void @_ZN9Secp256K110GetHash160EibR5PointPh(ptr noundef nonnull align 8 dereferenceable(393296) %1366, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(48) %29, ptr noundef %1368)
          to label %1369 unwind label %241

1369:                                             ; preds = %1365
  %1370 = load i32, ptr %22, align 4, !tbaa !9
  %1371 = sext i32 %1370 to i64
  %1372 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 %1371
  %1373 = load i32, ptr %32, align 4, !tbaa !9
  %1374 = sext i32 %1373 to i64
  %1375 = getelementptr inbounds [4 x [20 x i8]], ptr %1372, i64 0, i64 %1374
  %1376 = getelementptr inbounds [20 x i8], ptr %1375, i64 0, i64 0
  %1377 = getelementptr inbounds [4 x [20 x i8]], ptr %35, i64 0, i64 0
  %1378 = getelementptr inbounds [20 x i8], ptr %1377, i64 0, i64 0
  %1379 = call i32 @memcmp(ptr noundef %1376, ptr noundef %1378, i64 noundef 20) #11
  %1380 = icmp ne i32 %1379, 0
  br i1 %1380, label %1381, label %1395

1381:                                             ; preds = %1369
  invoke void @_ZN3Int3NegEv(ptr noundef nonnull align 8 dereferenceable(16) %39)
          to label %1382 unwind label %241

1382:                                             ; preds = %1381
  %1383 = load ptr, ptr @secp, align 8, !tbaa !5
  %1384 = getelementptr inbounds %class.Secp256K1, ptr %1383, i32 0, i32 2
  invoke void @_ZN3Int3AddEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef %1384)
          to label %1385 unwind label %241

1385:                                             ; preds = %1382
  br label %1395

1386:                                             ; preds = %1361
  %1387 = landingpad { ptr, i32 }
          cleanup
  %1388 = extractvalue { ptr, i32 } %1387, 0
  store ptr %1388, ptr %6, align 8
  %1389 = extractvalue { ptr, i32 } %1387, 1
  store i32 %1389, ptr %7, align 4
  br label %1394

1390:                                             ; preds = %1363
  %1391 = landingpad { ptr, i32 }
          cleanup
  %1392 = extractvalue { ptr, i32 } %1391, 0
  store ptr %1392, ptr %6, align 8
  %1393 = extractvalue { ptr, i32 } %1391, 1
  store i32 %1393, ptr %7, align 4
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %47) #8
  br label %1394

1394:                                             ; preds = %1390, %1386
  call void @llvm.lifetime.end.p0(i64 48, ptr %47) #8
  br label %1556

1395:                                             ; preds = %1385, %1369
  br label %1468

1396:                                             ; preds = %1359, %1359
  invoke void @_ZN3Int13ModMulK1orderEPS_(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef @lambda)
          to label %1397 unwind label %241

1397:                                             ; preds = %1396
  call void @llvm.lifetime.start.p0(i64 48, ptr %48) #8
  %1398 = load ptr, ptr @secp, align 8, !tbaa !5
  invoke void @_ZN9Secp256K116ComputePublicKeyEP3Int(ptr dead_on_unwind writable sret(%class.Point) align 8 %48, ptr noundef nonnull align 8 dereferenceable(393296) %1398, ptr noundef %39)
          to label %1399 unwind label %1422

1399:                                             ; preds = %1397
  %1400 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %29, ptr noundef nonnull align 8 dereferenceable(48) %48)
          to label %1401 unwind label %1426

1401:                                             ; preds = %1399
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %48) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %48) #8
  %1402 = load ptr, ptr @secp, align 8, !tbaa !5
  %1403 = getelementptr inbounds [4 x [20 x i8]], ptr %35, i64 0, i64 0
  %1404 = getelementptr inbounds [20 x i8], ptr %1403, i64 0, i64 0
  invoke void @_ZN9Secp256K110GetHash160EibR5PointPh(ptr noundef nonnull align 8 dereferenceable(393296) %1402, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(48) %29, ptr noundef %1404)
          to label %1405 unwind label %241

1405:                                             ; preds = %1401
  %1406 = load i32, ptr %22, align 4, !tbaa !9
  %1407 = sext i32 %1406 to i64
  %1408 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 %1407
  %1409 = load i32, ptr %32, align 4, !tbaa !9
  %1410 = sext i32 %1409 to i64
  %1411 = getelementptr inbounds [4 x [20 x i8]], ptr %1408, i64 0, i64 %1410
  %1412 = getelementptr inbounds [20 x i8], ptr %1411, i64 0, i64 0
  %1413 = getelementptr inbounds [4 x [20 x i8]], ptr %35, i64 0, i64 0
  %1414 = getelementptr inbounds [20 x i8], ptr %1413, i64 0, i64 0
  %1415 = call i32 @memcmp(ptr noundef %1412, ptr noundef %1414, i64 noundef 20) #11
  %1416 = icmp ne i32 %1415, 0
  br i1 %1416, label %1417, label %1431

1417:                                             ; preds = %1405
  invoke void @_ZN3Int3NegEv(ptr noundef nonnull align 8 dereferenceable(16) %39)
          to label %1418 unwind label %241

1418:                                             ; preds = %1417
  %1419 = load ptr, ptr @secp, align 8, !tbaa !5
  %1420 = getelementptr inbounds %class.Secp256K1, ptr %1419, i32 0, i32 2
  invoke void @_ZN3Int3AddEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef %1420)
          to label %1421 unwind label %241

1421:                                             ; preds = %1418
  br label %1431

1422:                                             ; preds = %1397
  %1423 = landingpad { ptr, i32 }
          cleanup
  %1424 = extractvalue { ptr, i32 } %1423, 0
  store ptr %1424, ptr %6, align 8
  %1425 = extractvalue { ptr, i32 } %1423, 1
  store i32 %1425, ptr %7, align 4
  br label %1430

1426:                                             ; preds = %1399
  %1427 = landingpad { ptr, i32 }
          cleanup
  %1428 = extractvalue { ptr, i32 } %1427, 0
  store ptr %1428, ptr %6, align 8
  %1429 = extractvalue { ptr, i32 } %1427, 1
  store i32 %1429, ptr %7, align 4
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %48) #8
  br label %1430

1430:                                             ; preds = %1426, %1422
  call void @llvm.lifetime.end.p0(i64 48, ptr %48) #8
  br label %1556

1431:                                             ; preds = %1421, %1405
  br label %1468

1432:                                             ; preds = %1359, %1359
  invoke void @_ZN3Int13ModMulK1orderEPS_(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef @lambda2)
          to label %1433 unwind label %241

1433:                                             ; preds = %1432
  call void @llvm.lifetime.start.p0(i64 48, ptr %49) #8
  %1434 = load ptr, ptr @secp, align 8, !tbaa !5
  invoke void @_ZN9Secp256K116ComputePublicKeyEP3Int(ptr dead_on_unwind writable sret(%class.Point) align 8 %49, ptr noundef nonnull align 8 dereferenceable(393296) %1434, ptr noundef %39)
          to label %1435 unwind label %1458

1435:                                             ; preds = %1433
  %1436 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %29, ptr noundef nonnull align 8 dereferenceable(48) %49)
          to label %1437 unwind label %1462

1437:                                             ; preds = %1435
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %49) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %49) #8
  %1438 = load ptr, ptr @secp, align 8, !tbaa !5
  %1439 = getelementptr inbounds [4 x [20 x i8]], ptr %35, i64 0, i64 0
  %1440 = getelementptr inbounds [20 x i8], ptr %1439, i64 0, i64 0
  invoke void @_ZN9Secp256K110GetHash160EibR5PointPh(ptr noundef nonnull align 8 dereferenceable(393296) %1438, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(48) %29, ptr noundef %1440)
          to label %1441 unwind label %241

1441:                                             ; preds = %1437
  %1442 = load i32, ptr %22, align 4, !tbaa !9
  %1443 = sext i32 %1442 to i64
  %1444 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 %1443
  %1445 = load i32, ptr %32, align 4, !tbaa !9
  %1446 = sext i32 %1445 to i64
  %1447 = getelementptr inbounds [4 x [20 x i8]], ptr %1444, i64 0, i64 %1446
  %1448 = getelementptr inbounds [20 x i8], ptr %1447, i64 0, i64 0
  %1449 = getelementptr inbounds [4 x [20 x i8]], ptr %35, i64 0, i64 0
  %1450 = getelementptr inbounds [20 x i8], ptr %1449, i64 0, i64 0
  %1451 = call i32 @memcmp(ptr noundef %1448, ptr noundef %1450, i64 noundef 20) #11
  %1452 = icmp ne i32 %1451, 0
  br i1 %1452, label %1453, label %1467

1453:                                             ; preds = %1441
  invoke void @_ZN3Int3NegEv(ptr noundef nonnull align 8 dereferenceable(16) %39)
          to label %1454 unwind label %241

1454:                                             ; preds = %1453
  %1455 = load ptr, ptr @secp, align 8, !tbaa !5
  %1456 = getelementptr inbounds %class.Secp256K1, ptr %1455, i32 0, i32 2
  invoke void @_ZN3Int3AddEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef %1456)
          to label %1457 unwind label %241

1457:                                             ; preds = %1454
  br label %1467

1458:                                             ; preds = %1433
  %1459 = landingpad { ptr, i32 }
          cleanup
  %1460 = extractvalue { ptr, i32 } %1459, 0
  store ptr %1460, ptr %6, align 8
  %1461 = extractvalue { ptr, i32 } %1459, 1
  store i32 %1461, ptr %7, align 4
  br label %1466

1462:                                             ; preds = %1435
  %1463 = landingpad { ptr, i32 }
          cleanup
  %1464 = extractvalue { ptr, i32 } %1463, 0
  store ptr %1464, ptr %6, align 8
  %1465 = extractvalue { ptr, i32 } %1463, 1
  store i32 %1465, ptr %7, align 4
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %49) #8
  br label %1466

1466:                                             ; preds = %1462, %1458
  call void @llvm.lifetime.end.p0(i64 48, ptr %49) #8
  br label %1556

1467:                                             ; preds = %1457, %1441
  br label %1468

1468:                                             ; preds = %1467, %1431, %1395, %1359
  invoke void @_Z14writevanitykeybP3Int(i1 noundef zeroext false, ptr noundef %39)
          to label %1469 unwind label %241

1469:                                             ; preds = %1468
  br label %1470

1470:                                             ; preds = %1469, %1354
  br label %1471

1471:                                             ; preds = %1470
  %1472 = load i32, ptr %22, align 4, !tbaa !9
  %1473 = add nsw i32 %1472, 1
  store i32 %1473, ptr %22, align 4, !tbaa !9
  br label %1342, !llvm.loop !27

1474:                                             ; preds = %1342
  br label %1489

1475:                                             ; preds = %1338
  %1476 = load i32, ptr %32, align 4, !tbaa !9
  %1477 = sext i32 %1476 to i64
  %1478 = getelementptr inbounds [4 x [20 x i8]], ptr %35, i64 0, i64 %1477
  %1479 = getelementptr inbounds [20 x i8], ptr %1478, i64 0, i64 0
  %1480 = invoke noundef zeroext i1 @_Z14vanityrmdmatchPh(ptr noundef %1479)
          to label %1481 unwind label %241

1481:                                             ; preds = %1475
  br i1 %1480, label %1482, label %1488

1482:                                             ; preds = %1481
  %1483 = load i32, ptr %32, align 4, !tbaa !9
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) %39, i32 noundef %1483)
          to label %1484 unwind label %241

1484:                                             ; preds = %1482
  invoke void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef @stride)
          to label %1485 unwind label %241

1485:                                             ; preds = %1484
  invoke void @_ZN3Int3AddEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef %37)
          to label %1486 unwind label %241

1486:                                             ; preds = %1485
  invoke void @_Z14writevanitykeybP3Int(i1 noundef zeroext false, ptr noundef %39)
          to label %1487 unwind label %241

1487:                                             ; preds = %1486
  br label %1488

1488:                                             ; preds = %1487, %1481
  br label %1489

1489:                                             ; preds = %1488, %1474
  br label %1490

1490:                                             ; preds = %1489, %1335
  br label %1491

1491:                                             ; preds = %1490
  %1492 = load i32, ptr %32, align 4, !tbaa !9
  %1493 = add nsw i32 %1492, 1
  store i32 %1493, ptr %32, align 4, !tbaa !9
  br label %1158, !llvm.loop !28

1494:                                             ; preds = %1158
  %1495 = load i64, ptr %26, align 8, !tbaa !15
  %1496 = add i64 %1495, 4
  store i64 %1496, ptr %26, align 8, !tbaa !15
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) %38, i32 noundef 4)
          to label %1497 unwind label %241

1497:                                             ; preds = %1494
  invoke void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(16) %38, ptr noundef @stride)
          to label %1498 unwind label %241

1498:                                             ; preds = %1497
  invoke void @_ZN3Int3AddEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %37, ptr noundef %38)
          to label %1499 unwind label %241

1499:                                             ; preds = %1498
  br label %1500

1500:                                             ; preds = %1499
  %1501 = load i64, ptr %25, align 8, !tbaa !15
  %1502 = add i64 %1501, 1
  store i64 %1502, ptr %25, align 8, !tbaa !15
  br label %610, !llvm.loop !29

1503:                                             ; preds = %610
  %1504 = load ptr, ptr @steps, align 8, !tbaa !5
  %1505 = load i32, ptr %30, align 4, !tbaa !9
  %1506 = sext i32 %1505 to i64
  %1507 = getelementptr inbounds i64, ptr %1504, i64 %1506
  %1508 = load i64, ptr %1507, align 8, !tbaa !15
  %1509 = add i64 %1508, 1
  store i64 %1509, ptr %1507, align 8, !tbaa !15
  %1510 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %18, ptr noundef nonnull align 8 dereferenceable(48) %13)
          to label %1511 unwind label %241

1511:                                             ; preds = %1503
  %1512 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 1
  invoke void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef getelementptr inbounds (%class.Point, ptr @_2Gn, i32 0, i32 1), ptr noundef %1512)
          to label %1513 unwind label %241

1513:                                             ; preds = %1511
  %1514 = load i32, ptr %20, align 4, !tbaa !9
  %1515 = add nsw i32 %1514, 1
  %1516 = sext i32 %1515 to i64
  %1517 = getelementptr inbounds [513 x %class.Int], ptr %11, i64 0, i64 %1516
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef %14, ptr noundef %1517)
          to label %1518 unwind label %241

1518:                                             ; preds = %1513
  invoke void @_ZN3Int11ModSquareK1EPS_(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef %16)
          to label %1519 unwind label %241

1519:                                             ; preds = %1518
  %1520 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 0
  invoke void @_ZN3Int6ModNegEv(ptr noundef nonnull align 8 dereferenceable(16) %1520)
          to label %1521 unwind label %241

1521:                                             ; preds = %1519
  %1522 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 0
  invoke void @_ZN3Int6ModAddEPS_(ptr noundef nonnull align 8 dereferenceable(16) %1522, ptr noundef %17)
          to label %1523 unwind label %241

1523:                                             ; preds = %1521
  %1524 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 0
  invoke void @_ZN3Int6ModSubEPS_(ptr noundef nonnull align 8 dereferenceable(16) %1524, ptr noundef @_2Gn)
          to label %1525 unwind label %241

1525:                                             ; preds = %1523
  %1526 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 1
  %1527 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 0
  invoke void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %1526, ptr noundef @_2Gn, ptr noundef %1527)
          to label %1528 unwind label %241

1528:                                             ; preds = %1525
  %1529 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 1
  invoke void @_ZN3Int8ModMulK1EPS_(ptr noundef nonnull align 8 dereferenceable(16) %1529, ptr noundef %16)
          to label %1530 unwind label %241

1530:                                             ; preds = %1528
  %1531 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 1
  invoke void @_ZN3Int6ModSubEPS_(ptr noundef nonnull align 8 dereferenceable(16) %1531, ptr noundef getelementptr inbounds (%class.Point, ptr @_2Gn, i32 0, i32 1))
          to label %1532 unwind label %241

1532:                                             ; preds = %1530
  %1533 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %13, ptr noundef nonnull align 8 dereferenceable(48) %18)
          to label %1534 unwind label %241

1534:                                             ; preds = %1532
  br label %1535

1535:                                             ; preds = %1534
  %1536 = load i64, ptr %26, align 8, !tbaa !15
  %1537 = load i64, ptr @N_SEQUENTIAL_MAX, align 8, !tbaa !15
  %1538 = icmp ult i64 %1536, %1537
  br i1 %1538, label %1539, label %1542

1539:                                             ; preds = %1535
  %1540 = load i32, ptr %31, align 4, !tbaa !9
  %1541 = icmp ne i32 %1540, 0
  br label %1542

1542:                                             ; preds = %1539, %1535
  %1543 = phi i1 [ false, %1535 ], [ %1541, %1539 ]
  br i1 %1543, label %288, label %1544, !llvm.loop !30

1544:                                             ; preds = %1542
  br label %1545

1545:                                             ; preds = %1544, %256
  br label %1546

1546:                                             ; preds = %1545
  %1547 = load i32, ptr %31, align 4, !tbaa !9
  %1548 = icmp ne i32 %1547, 0
  br i1 %1548, label %122, label %1549, !llvm.loop !31

1549:                                             ; preds = %1546
  %1550 = load ptr, ptr @ends, align 8, !tbaa !5
  %1551 = load i32, ptr %30, align 4, !tbaa !9
  %1552 = sext i32 %1551 to i64
  %1553 = getelementptr inbounds i32, ptr %1550, i64 %1552
  store i32 1, ptr %1553, align 4, !tbaa !9
  store ptr null, ptr %2, align 8
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #8
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %39) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #8
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %38) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %38) #8
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 960, ptr %36) #8
  call void @llvm.lifetime.end.p0(i64 80, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 20, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #8
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %29) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %29) #8
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %28) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %28) #8
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %27) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %19) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %19) #8
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %18) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %18) #8
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #8
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #8
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #8
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #8
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %13) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  %1554 = getelementptr inbounds [513 x %class.Int], ptr %11, i32 0, i32 0
  %1555 = getelementptr inbounds %class.Int, ptr %1554, i64 513
  br label %1574

1556:                                             ; preds = %1466, %1430, %1394, %1323, %1202, %1081, %1004, %927, %322, %241
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #8
  br label %1557

1557:                                             ; preds = %1556, %237
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %39) #8
  br label %1558

1558:                                             ; preds = %1557, %233
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #8
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %38) #8
  br label %1559

1559:                                             ; preds = %1558, %229
  call void @llvm.lifetime.end.p0(i64 16, ptr %38) #8
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #8
  br label %1560

1560:                                             ; preds = %1559, %225
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 960, ptr %36) #8
  call void @llvm.lifetime.end.p0(i64 80, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 20, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #8
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %29) #8
  br label %1561

1561:                                             ; preds = %1560, %221
  call void @llvm.lifetime.end.p0(i64 48, ptr %29) #8
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %28) #8
  br label %1562

1562:                                             ; preds = %1561, %217
  call void @llvm.lifetime.end.p0(i64 48, ptr %28) #8
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %27) #8
  br label %1563

1563:                                             ; preds = %1562, %213
  call void @llvm.lifetime.end.p0(i64 48, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %19) #8
  br label %1564

1564:                                             ; preds = %1563, %209
  call void @llvm.lifetime.end.p0(i64 48, ptr %19) #8
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %18) #8
  br label %1565

1565:                                             ; preds = %1564, %205
  call void @llvm.lifetime.end.p0(i64 48, ptr %18) #8
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #8
  br label %1566

1566:                                             ; preds = %1565, %201
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #8
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #8
  br label %1567

1567:                                             ; preds = %1566, %197
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #8
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #8
  br label %1568

1568:                                             ; preds = %1567, %193
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #8
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #8
  br label %1569

1569:                                             ; preds = %1568, %189
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #8
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %13) #8
  br label %1570

1570:                                             ; preds = %1569, %185
  call void @llvm.lifetime.end.p0(i64 48, ptr %13) #8
  br label %1571

1571:                                             ; preds = %1570, %181, %177
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  %1572 = getelementptr inbounds [513 x %class.Int], ptr %11, i32 0, i32 0
  %1573 = getelementptr inbounds %class.Int, ptr %1572, i64 513
  br label %1581

1574:                                             ; preds = %1574, %1549
  %1575 = phi ptr [ %1555, %1549 ], [ %1576, %1574 ]
  %1576 = getelementptr inbounds %class.Int, ptr %1575, i64 -1
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %1576) #8
  %1577 = icmp eq ptr %1576, %1554
  br i1 %1577, label %1578, label %1574

1578:                                             ; preds = %1574
  call void @llvm.lifetime.end.p0(i64 8208, ptr %11) #8
  %1579 = getelementptr inbounds [4 x %class.Point], ptr %10, i32 0, i32 0
  %1580 = getelementptr inbounds %class.Point, ptr %1579, i64 4
  br label %1589

1581:                                             ; preds = %1581, %1571
  %1582 = phi ptr [ %1573, %1571 ], [ %1583, %1581 ]
  %1583 = getelementptr inbounds %class.Int, ptr %1582, i64 -1
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %1583) #8
  %1584 = icmp eq ptr %1583, %1572
  br i1 %1584, label %1585, label %1581

1585:                                             ; preds = %1581
  br label %1586

1586:                                             ; preds = %1585, %176
  call void @llvm.lifetime.end.p0(i64 8208, ptr %11) #8
  %1587 = getelementptr inbounds [4 x %class.Point], ptr %10, i32 0, i32 0
  %1588 = getelementptr inbounds %class.Point, ptr %1587, i64 4
  br label %1596

1589:                                             ; preds = %1589, %1578
  %1590 = phi ptr [ %1580, %1578 ], [ %1591, %1589 ]
  %1591 = getelementptr inbounds %class.Point, ptr %1590, i64 -1
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %1591) #8
  %1592 = icmp eq ptr %1591, %1579
  br i1 %1592, label %1593, label %1589

1593:                                             ; preds = %1589
  call void @llvm.lifetime.end.p0(i64 192, ptr %10) #8
  %1594 = getelementptr inbounds [1024 x %class.Point], ptr %9, i32 0, i32 0
  %1595 = getelementptr inbounds %class.Point, ptr %1594, i64 1024
  br label %1604

1596:                                             ; preds = %1596, %1586
  %1597 = phi ptr [ %1588, %1586 ], [ %1598, %1596 ]
  %1598 = getelementptr inbounds %class.Point, ptr %1597, i64 -1
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %1598) #8
  %1599 = icmp eq ptr %1598, %1587
  br i1 %1599, label %1600, label %1596

1600:                                             ; preds = %1596
  br label %1601

1601:                                             ; preds = %1600, %166
  call void @llvm.lifetime.end.p0(i64 192, ptr %10) #8
  %1602 = getelementptr inbounds [1024 x %class.Point], ptr %9, i32 0, i32 0
  %1603 = getelementptr inbounds %class.Point, ptr %1602, i64 1024
  br label %1611

1604:                                             ; preds = %1604, %1593
  %1605 = phi ptr [ %1595, %1593 ], [ %1606, %1604 ]
  %1606 = getelementptr inbounds %class.Point, ptr %1605, i64 -1
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %1606) #8
  %1607 = icmp eq ptr %1606, %1594
  br i1 %1607, label %1608, label %1604

1608:                                             ; preds = %1604
  call void @llvm.lifetime.end.p0(i64 49152, ptr %9) #8
  %1609 = getelementptr inbounds [1024 x %class.Point], ptr %8, i32 0, i32 0
  %1610 = getelementptr inbounds %class.Point, ptr %1609, i64 1024
  br label %1619

1611:                                             ; preds = %1611, %1601
  %1612 = phi ptr [ %1603, %1601 ], [ %1613, %1611 ]
  %1613 = getelementptr inbounds %class.Point, ptr %1612, i64 -1
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %1613) #8
  %1614 = icmp eq ptr %1613, %1602
  br i1 %1614, label %1615, label %1611

1615:                                             ; preds = %1611
  br label %1616

1616:                                             ; preds = %1615, %156
  call void @llvm.lifetime.end.p0(i64 49152, ptr %9) #8
  %1617 = getelementptr inbounds [1024 x %class.Point], ptr %8, i32 0, i32 0
  %1618 = getelementptr inbounds %class.Point, ptr %1617, i64 1024
  br label %1626

1619:                                             ; preds = %1619, %1608
  %1620 = phi ptr [ %1610, %1608 ], [ %1621, %1619 ]
  %1621 = getelementptr inbounds %class.Point, ptr %1620, i64 -1
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %1621) #8
  %1622 = icmp eq ptr %1621, %1609
  br i1 %1622, label %1623, label %1619

1623:                                             ; preds = %1619
  call void @llvm.lifetime.end.p0(i64 49152, ptr %8) #8
  %1624 = getelementptr inbounds [1024 x %class.Point], ptr %5, i32 0, i32 0
  %1625 = getelementptr inbounds %class.Point, ptr %1624, i64 1024
  br label %1634

1626:                                             ; preds = %1626, %1616
  %1627 = phi ptr [ %1618, %1616 ], [ %1628, %1626 ]
  %1628 = getelementptr inbounds %class.Point, ptr %1627, i64 -1
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %1628) #8
  %1629 = icmp eq ptr %1628, %1617
  br i1 %1629, label %1630, label %1626

1630:                                             ; preds = %1626
  br label %1631

1631:                                             ; preds = %1630, %146
  call void @llvm.lifetime.end.p0(i64 49152, ptr %8) #8
  %1632 = getelementptr inbounds [1024 x %class.Point], ptr %5, i32 0, i32 0
  %1633 = getelementptr inbounds %class.Point, ptr %1632, i64 1024
  br label %1640

1634:                                             ; preds = %1634, %1623
  %1635 = phi ptr [ %1625, %1623 ], [ %1636, %1634 ]
  %1636 = getelementptr inbounds %class.Point, ptr %1635, i64 -1
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %1636) #8
  %1637 = icmp eq ptr %1636, %1624
  br i1 %1637, label %1638, label %1634

1638:                                             ; preds = %1634
  call void @llvm.lifetime.end.p0(i64 49152, ptr %5) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #8
  %1639 = load ptr, ptr %2, align 8
  ret ptr %1639

1640:                                             ; preds = %1640, %1631
  %1641 = phi ptr [ %1633, %1631 ], [ %1642, %1640 ]
  %1642 = getelementptr inbounds %class.Point, ptr %1641, i64 -1
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %1642) #8
  %1643 = icmp eq ptr %1642, %1632
  br i1 %1643, label %1644, label %1640

1644:                                             ; preds = %1640
  br label %1645

1645:                                             ; preds = %1644, %136
  call void @llvm.lifetime.end.p0(i64 49152, ptr %5) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #8
  br label %1646

1646:                                             ; preds = %1645
  %1647 = load ptr, ptr %6, align 8
  %1648 = load i32, ptr %7, align 4
  %1649 = insertvalue { ptr, i32 } poison, ptr %1647, 0
  %1650 = insertvalue { ptr, i32 } %1649, i32 %1648, 1
  resume { ptr, i32 } %1650
}

declare void @_ZN3Int3AddEPKS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) #0

declare void @_ZN9Secp256K110GetHash160EibR5PointS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(393296), i32 noundef, i1 noundef zeroext, ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(48), ptr noundef, ptr noundef, ptr noundef, ptr noundef) #0

declare void @_ZN8IntGroupC1Ei(ptr noundef nonnull align 8 dereferenceable(20), i32 noundef) unnamed_addr #0

declare void @_ZN8IntGroup3SetEP3Int(ptr noundef nonnull align 8 dereferenceable(20), ptr noundef) #0

declare void @_ZN3Int3AddEm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) #0

declare void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, ptr noundef) #0

declare void @_ZN8IntGroup6ModInvEv(ptr noundef nonnull align 8 dereferenceable(20)) #0

declare void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, ptr noundef) #0

declare void @_ZN3Int11ModSquareK1EPS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) #0

declare void @_ZN3Int6ModNegEv(ptr noundef nonnull align 8 dereferenceable(16)) #0

declare void @_ZN3Int6ModAddEPS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) #0

declare void @_ZN3Int6ModSubEPS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) #0

declare void @_ZN3Int8ModMulK1EPS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) #0

declare void @_ZN9Secp256K116GetHash160_fromXEihP3IntS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(393296), i32 noundef, i8 noundef zeroext, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #0

declare noundef zeroext i1 @_ZN3Int5IsOddEv(ptr noundef nonnull align 8 dereferenceable(16)) #0

declare void @_ZN3Int3NegEv(ptr noundef nonnull align 8 dereferenceable(16)) #0

declare noundef zeroext i1 @_ZN3Int6IsEvenEv(ptr noundef nonnull align 8 dereferenceable(16)) #0

declare void @_ZN3Int13ModMulK1orderEPS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) #0

declare void @_ZN9Secp256K110GetHash160EibR5PointPh(ptr noundef nonnull align 8 dereferenceable(393296), i32 noundef, i1 noundef zeroext, ptr noundef nonnull align 8 dereferenceable(48), ptr noundef) #0

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z14vanityrmdmatchPh(ptr noundef) #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z14writevanitykeybP3Int(i1 noundef zeroext, ptr noundef) #7

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

!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 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 0}
!12 = !{!"_ZTS8tothread", !10, i64 0, !6, i64 8, !6, i64 16}
!13 = !{!14, !14, i64 0}
!14 = !{!"bool", !7, i64 0}
!15 = !{!16, !16, i64 0}
!16 = !{!"long", !7, i64 0}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}
!19 = !{i8 0, i8 2}
!20 = !{}
!21 = distinct !{!21, !18}
!22 = distinct !{!22, !18}
!23 = distinct !{!23, !18}
!24 = distinct !{!24, !18}
!25 = distinct !{!25, !18}
!26 = distinct !{!26, !18}
!27 = distinct !{!27, !18}
!28 = distinct !{!28, !18}
!29 = distinct !{!29, !18}
!30 = distinct !{!30, !18}
!31 = distinct !{!31, !18}


; 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.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<Point, std::allocator<Point>>::_Vector_impl" }
%"struct.std::_Vector_base<Point, std::allocator<Point>>::_Vector_impl" = type { %"struct.std::_Vector_base<Point, std::allocator<Point>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Point, std::allocator<Point>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.Point = type { %class.Int, %class.Int, %class.Int }
%class.Int = type { [1 x %struct.__mpz_struct] }
%struct.__mpz_struct = type { i32, i32, ptr }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }

@Gn = external dso_local global %"class.std::vector", align 8
@_2Gn = external dso_local global %class.Point, align 8
@THREADOUTPUT = external dso_local local_unnamed_addr global i32, align 4
@write_random = external dso_local global %union.pthread_mutex_t, align 8
@steps = external dso_local local_unnamed_addr global ptr, align 8
@ends = external dso_local local_unnamed_addr global ptr, align 8
@N_SEQUENTIAL_MAX = external dso_local local_unnamed_addr global i64, align 8
@FLAGENDOMORPHISM = external dso_local local_unnamed_addr global i32, align 4
@FLAGQUIET = external dso_local local_unnamed_addr global i32, align 4
@FLAGMATRIX = external dso_local local_unnamed_addr global i32, align 4
@FLAGSEARCH = external dso_local local_unnamed_addr global i32, align 4
@FLAGRANDOM = external dso_local local_unnamed_addr global i32, align 4
@stride = external dso_local global %class.Int, align 8
@n_range_start = external dso_local global %class.Int, align 8
@n_range_end = external dso_local global %class.Int, align 8
@lambda = external dso_local global %class.Int, align 8
@lambda2 = external dso_local global %class.Int, align 8
@beta = external dso_local global %class.Int, align 8
@beta2 = external dso_local global %class.Int, align 8
@secp = external dso_local local_unnamed_addr global ptr, align 8
@stdout = external local_unnamed_addr global ptr, align 8
@.str.232 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.233 = external hidden unnamed_addr constant [20 x i8], align 1

declare void @_ZN5PointC1Ev(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #0

; Function Attrs: nounwind
declare void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #1

declare void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #0

; Function Attrs: nounwind
declare void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) local_unnamed_addr #3

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) local_unnamed_addr #4

declare void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #0

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

declare void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) local_unnamed_addr #0

declare noundef ptr @_ZN3Int9GetBase16Ev(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #0

declare noundef zeroext i1 @_ZN3Int7IsLowerEPS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite)
declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #6

declare void @_ZN3Int3SubEPS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #7 align 2

declare void @_ZN3Int4RandEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, ptr noundef) local_unnamed_addr #0

declare void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) local_unnamed_addr #0

; Function Attrs: nofree nounwind
declare noundef i32 @fflush(ptr nocapture noundef) local_unnamed_addr #5

declare void @_ZN9Secp256K116ComputePublicKeyEP3Int(ptr dead_on_unwind writable sret(%class.Point) align 8, ptr noundef nonnull align 8 dereferenceable(393296), ptr noundef) local_unnamed_addr #0

declare noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #0

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

declare void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind writable sret(%class.Point) align 8, ptr noundef nonnull align 8 dereferenceable(393296), ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #0

; Function Attrs: nounwind
declare i32 @pthread_mutex_lock(ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind
declare i32 @pthread_mutex_unlock(ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
define dso_local noalias noundef ptr @_Z21thread_process_vanityPv(ptr nocapture noundef %0) local_unnamed_addr #8 personality ptr @__gxx_personality_v0 {
  %2 = alloca [1024 x %class.Point], align 16
  %3 = alloca [1024 x %class.Point], align 16
  %4 = alloca [1024 x %class.Point], align 16
  %5 = alloca [4 x %class.Point], align 16
  %6 = alloca [513 x %class.Int], align 16
  %7 = alloca %class.Point, align 8
  %8 = alloca %class.Int, align 8
  %9 = alloca %class.Int, align 8
  %10 = alloca %class.Int, align 8
  %11 = alloca %class.Int, align 8
  %12 = alloca %class.Point, align 8
  %13 = alloca %class.Point, align 8
  %14 = alloca %class.Point, align 8
  %15 = alloca %class.Point, align 8
  %16 = alloca %class.Point, align 8
  %17 = alloca [20 x i8], align 16
  %18 = alloca [4 x [20 x i8]], align 16
  %19 = alloca [12 x [4 x [20 x i8]]], align 16
  %20 = alloca %class.Int, align 8
  %21 = alloca %class.Int, align 8
  %22 = alloca %class.Int, align 8
  %23 = alloca %class.Point, align 8
  %24 = alloca %class.Point, align 8
  %25 = alloca %class.Point, align 8
  %26 = alloca %class.Point, align 8
  %27 = alloca %class.Point, align 8
  %28 = alloca %class.Point, align 8
  %29 = alloca %class.Point, align 8
  %30 = alloca %class.Point, align 8
  %31 = alloca %class.Point, align 8
  call void @llvm.lifetime.start.p0(i64 49152, ptr nonnull %2) #10
  %32 = getelementptr inbounds i8, ptr %2, i64 49152
  br label %33

33:                                               ; preds = %34, %1
  %.idx = phi i64 [ 0, %1 ], [ %.add, %34 ]
  %.ptr = getelementptr inbounds i8, ptr %2, i64 %.idx
  invoke void @_ZN5PointC1Ev(ptr noundef nonnull align 8 dereferenceable(48) %.ptr)
          to label %34 unwind label %144

34:                                               ; preds = %33
  %.add = add nuw nsw i64 %.idx, 48
  %35 = icmp eq i64 %.add, 49152
  br i1 %35, label %36, label %33

36:                                               ; preds = %34
  call void @llvm.lifetime.start.p0(i64 49152, ptr nonnull %3) #10
  %37 = getelementptr inbounds i8, ptr %3, i64 49152
  br label %38

38:                                               ; preds = %39, %36
  %.idx230 = phi i64 [ 0, %36 ], [ %.add231, %39 ]
  %.ptr232 = getelementptr inbounds i8, ptr %3, i64 %.idx230
  invoke void @_ZN5PointC1Ev(ptr noundef nonnull align 8 dereferenceable(48) %.ptr232)
          to label %39 unwind label %150

39:                                               ; preds = %38
  %.add231 = add nuw nsw i64 %.idx230, 48
  %40 = icmp eq i64 %.add231, 49152
  br i1 %40, label %41, label %38

41:                                               ; preds = %39
  call void @llvm.lifetime.start.p0(i64 49152, ptr nonnull %4) #10
  %42 = getelementptr inbounds i8, ptr %4, i64 49152
  br label %43

43:                                               ; preds = %44, %41
  %.idx234 = phi i64 [ 0, %41 ], [ %.add235, %44 ]
  %.ptr236 = getelementptr inbounds i8, ptr %4, i64 %.idx234
  invoke void @_ZN5PointC1Ev(ptr noundef nonnull align 8 dereferenceable(48) %.ptr236)
          to label %44 unwind label %156

44:                                               ; preds = %43
  %.add235 = add nuw nsw i64 %.idx234, 48
  %45 = icmp eq i64 %.add235, 49152
  br i1 %45, label %46, label %43

46:                                               ; preds = %44
  call void @llvm.lifetime.start.p0(i64 192, ptr nonnull %5) #10
  invoke void @_ZN5PointC1Ev(ptr noundef nonnull align 8 dereferenceable(48) %5)
          to label %47 unwind label %162

47:                                               ; preds = %46
  %.ptr240.1 = getelementptr inbounds i8, ptr %5, i64 48
  invoke void @_ZN5PointC1Ev(ptr noundef nonnull align 8 dereferenceable(48) %.ptr240.1)
          to label %48 unwind label %.preheader338.preheader

48:                                               ; preds = %47
  %.ptr240.2 = getelementptr inbounds i8, ptr %5, i64 96
  invoke void @_ZN5PointC1Ev(ptr noundef nonnull align 8 dereferenceable(48) %.ptr240.2)
          to label %49 unwind label %.preheader338.preheader

49:                                               ; preds = %48
  %.ptr240.3 = getelementptr inbounds i8, ptr %5, i64 144
  invoke void @_ZN5PointC1Ev(ptr noundef nonnull align 8 dereferenceable(48) %.ptr240.3)
          to label %50 unwind label %.preheader338.preheader

50:                                               ; preds = %49
  call void @llvm.lifetime.start.p0(i64 8208, ptr nonnull %6) #10
  %51 = getelementptr inbounds i8, ptr %6, i64 8208
  br label %52

52:                                               ; preds = %53, %50
  %.idx242 = phi i64 [ 0, %50 ], [ %.add243, %53 ]
  %.ptr244 = getelementptr inbounds i8, ptr %6, i64 %.idx242
  invoke void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %.ptr244)
          to label %53 unwind label %166

53:                                               ; preds = %52
  %.add243 = add nuw nsw i64 %.idx242, 16
  %54 = icmp eq i64 %.add243, 8208
  br i1 %54, label %55, label %52

55:                                               ; preds = %53
  %56 = invoke noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #11
          to label %57 unwind label %172

57:                                               ; preds = %55
  invoke void @_ZN8IntGroupC1Ei(ptr noundef nonnull align 8 dereferenceable(20) %56, i32 noundef 513)
          to label %58 unwind label %174

58:                                               ; preds = %57
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %7) #10
  invoke void @_ZN5PointC1Ev(ptr noundef nonnull align 8 dereferenceable(48) %7)
          to label %59 unwind label %176

59:                                               ; preds = %58
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #10
  invoke void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %8)
          to label %60 unwind label %178

60:                                               ; preds = %59
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #10
  invoke void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %9)
          to label %61 unwind label %180

61:                                               ; preds = %60
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #10
  invoke void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %10)
          to label %62 unwind label %182

62:                                               ; preds = %61
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #10
  invoke void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %11)
          to label %63 unwind label %184

63:                                               ; preds = %62
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %12) #10
  invoke void @_ZN5PointC1Ev(ptr noundef nonnull align 8 dereferenceable(48) %12)
          to label %64 unwind label %186

64:                                               ; preds = %63
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %13) #10
  invoke void @_ZN5PointC1Ev(ptr noundef nonnull align 8 dereferenceable(48) %13)
          to label %65 unwind label %188

65:                                               ; preds = %64
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %14) #10
  invoke void @_ZN5PointC1Ev(ptr noundef nonnull align 8 dereferenceable(48) %14)
          to label %66 unwind label %190

66:                                               ; preds = %65
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %15) #10
  invoke void @_ZN5PointC1Ev(ptr noundef nonnull align 8 dereferenceable(48) %15)
          to label %67 unwind label %192

67:                                               ; preds = %66
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %16) #10
  invoke void @_ZN5PointC1Ev(ptr noundef nonnull align 8 dereferenceable(48) %16)
          to label %68 unwind label %194

68:                                               ; preds = %67
  call void @llvm.lifetime.start.p0(i64 20, ptr nonnull %17) #10
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %18) #10
  call void @llvm.lifetime.start.p0(i64 960, ptr nonnull %19) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #10
  invoke void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %20)
          to label %69 unwind label %196

69:                                               ; preds = %68
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #10
  invoke void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %21)
          to label %70 unwind label %198

70:                                               ; preds = %69
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #10
  invoke void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %22)
          to label %71 unwind label %200

71:                                               ; preds = %70
  %72 = load i32, ptr %0, align 8, !tbaa !5
  call void @free(ptr noundef %0) #10
  invoke void @_ZN8IntGroup3SetEP3Int(ptr noundef nonnull align 8 dereferenceable(20) %56, ptr noundef nonnull %6)
          to label %73 unwind label %202

73:                                               ; preds = %71
  %74 = load i32, ptr @FLAGSEARCH, align 4
  %75 = and i32 %74, -3
  %76 = icmp eq i32 %75, 0
  %77 = getelementptr inbounds i8, ptr %2, i64 24576
  %78 = getelementptr inbounds i8, ptr %12, i64 16
  %79 = getelementptr inbounds i8, ptr %13, i64 16
  %80 = getelementptr inbounds i8, ptr %3, i64 24592
  %81 = getelementptr inbounds i8, ptr %2, i64 24592
  %82 = getelementptr inbounds i8, ptr %4, i64 24592
  %83 = getelementptr inbounds i8, ptr %3, i64 24576
  %84 = getelementptr inbounds i8, ptr %4, i64 24576
  %85 = getelementptr inbounds i8, ptr %3, i64 16
  %86 = getelementptr inbounds i8, ptr %4, i64 16
  %87 = getelementptr inbounds i8, ptr %19, i64 20
  %88 = getelementptr inbounds i8, ptr %19, i64 40
  %89 = getelementptr inbounds i8, ptr %19, i64 60
  %90 = getelementptr inbounds i8, ptr %19, i64 80
  %91 = getelementptr inbounds i8, ptr %19, i64 100
  %92 = getelementptr inbounds i8, ptr %19, i64 120
  %93 = getelementptr inbounds i8, ptr %19, i64 140
  %94 = getelementptr inbounds i8, ptr %19, i64 160
  %95 = getelementptr inbounds i8, ptr %19, i64 180
  %96 = getelementptr inbounds i8, ptr %19, i64 200
  %97 = getelementptr inbounds i8, ptr %19, i64 220
  %98 = getelementptr inbounds i8, ptr %19, i64 240
  %99 = getelementptr inbounds i8, ptr %19, i64 260
  %100 = getelementptr inbounds i8, ptr %19, i64 280
  %101 = getelementptr inbounds i8, ptr %19, i64 300
  %102 = getelementptr inbounds i8, ptr %19, i64 320
  %103 = getelementptr inbounds i8, ptr %19, i64 340
  %104 = getelementptr inbounds i8, ptr %19, i64 360
  %105 = getelementptr inbounds i8, ptr %19, i64 380
  %106 = getelementptr inbounds i8, ptr %19, i64 400
  %107 = getelementptr inbounds i8, ptr %19, i64 420
  %108 = getelementptr inbounds i8, ptr %19, i64 440
  %109 = getelementptr inbounds i8, ptr %19, i64 460
  %110 = getelementptr inbounds i8, ptr %19, i64 480
  %111 = getelementptr inbounds i8, ptr %19, i64 500
  %112 = getelementptr inbounds i8, ptr %19, i64 520
  %113 = getelementptr inbounds i8, ptr %19, i64 540
  %114 = getelementptr inbounds i8, ptr %19, i64 560
  %115 = getelementptr inbounds i8, ptr %19, i64 580
  %116 = getelementptr inbounds i8, ptr %19, i64 600
  %117 = getelementptr inbounds i8, ptr %19, i64 620
  %118 = getelementptr inbounds i8, ptr %19, i64 640
  %119 = getelementptr inbounds i8, ptr %19, i64 660
  %120 = getelementptr inbounds i8, ptr %19, i64 680
  %121 = getelementptr inbounds i8, ptr %19, i64 700
  %122 = getelementptr inbounds i8, ptr %19, i64 720
  %123 = getelementptr inbounds i8, ptr %19, i64 740
  %124 = getelementptr inbounds i8, ptr %19, i64 760
  %125 = getelementptr inbounds i8, ptr %19, i64 780
  %126 = getelementptr inbounds i8, ptr %19, i64 800
  %127 = getelementptr inbounds i8, ptr %19, i64 820
  %128 = getelementptr inbounds i8, ptr %19, i64 840
  %129 = getelementptr inbounds i8, ptr %19, i64 860
  %130 = getelementptr inbounds i8, ptr %19, i64 880
  %131 = getelementptr inbounds i8, ptr %19, i64 900
  %132 = getelementptr inbounds i8, ptr %19, i64 920
  %133 = getelementptr inbounds i8, ptr %19, i64 940
  %134 = getelementptr inbounds i8, ptr %18, i64 20
  %135 = getelementptr inbounds i8, ptr %18, i64 40
  %136 = getelementptr inbounds i8, ptr %18, i64 60
  %137 = getelementptr inbounds i8, ptr %16, i64 16
  %138 = sext i32 %72 to i64
  %139 = getelementptr inbounds i8, ptr %6, i64 8176
  %140 = getelementptr inbounds i8, ptr %6, i64 8192
  br label %141

141:                                              ; preds = %689, %73
  %142 = load i32, ptr @FLAGRANDOM, align 4, !tbaa !11
  %.not = icmp eq i32 %142, 0
  br i1 %.not, label %204, label %143

143:                                              ; preds = %141
  invoke void @_ZN3Int4RandEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull @n_range_start, ptr noundef nonnull @n_range_end)
          to label %213 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

144:                                              ; preds = %33
  %145 = landingpad { ptr, i32 }
          cleanup
  %146 = icmp eq i64 %.idx, 0
  br i1 %146, label %.loopexit, label %.preheader344

.preheader344:                                    ; preds = %144, %.preheader344
  %147 = phi ptr [ %148, %.preheader344 ], [ %.ptr, %144 ]
  %148 = getelementptr inbounds i8, ptr %147, i64 -48
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %148) #10
  %149 = icmp eq ptr %148, %2
  br i1 %149, label %.loopexit, label %.preheader344

150:                                              ; preds = %38
  %151 = landingpad { ptr, i32 }
          cleanup
  %152 = icmp eq i64 %.idx230, 0
  br i1 %152, label %.loopexit303, label %.preheader342

.preheader342:                                    ; preds = %150, %.preheader342
  %153 = phi ptr [ %154, %.preheader342 ], [ %.ptr232, %150 ]
  %154 = getelementptr inbounds i8, ptr %153, i64 -48
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %154) #10
  %155 = icmp eq ptr %154, %3
  br i1 %155, label %.loopexit303, label %.preheader342

156:                                              ; preds = %43
  %157 = landingpad { ptr, i32 }
          cleanup
  %158 = icmp eq i64 %.idx234, 0
  br i1 %158, label %.loopexit304, label %.preheader340

.preheader340:                                    ; preds = %156, %.preheader340
  %159 = phi ptr [ %160, %.preheader340 ], [ %.ptr236, %156 ]
  %160 = getelementptr inbounds i8, ptr %159, i64 -48
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %160) #10
  %161 = icmp eq ptr %160, %4
  br i1 %161, label %.loopexit304, label %.preheader340

162:                                              ; preds = %46
  %lpad.thr_comm.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit305

.preheader338.preheader:                          ; preds = %47, %48, %49
  %.ptr240.lcssa.ph = phi ptr [ %.ptr240.3, %49 ], [ %.ptr240.2, %48 ], [ %.ptr240.1, %47 ]
  %lpad.thr_comm = landingpad { ptr, i32 }
          cleanup
  br label %.preheader338

.preheader338:                                    ; preds = %.preheader338.preheader, %.preheader338
  %163 = phi ptr [ %164, %.preheader338 ], [ %.ptr240.lcssa.ph, %.preheader338.preheader ]
  %164 = getelementptr inbounds i8, ptr %163, i64 -48
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %164) #10
  %165 = icmp eq ptr %164, %5
  br i1 %165, label %.loopexit305, label %.preheader338

166:                                              ; preds = %52
  %167 = landingpad { ptr, i32 }
          cleanup
  %168 = icmp eq i64 %.idx242, 0
  br i1 %168, label %.loopexit306, label %.preheader336

.preheader336:                                    ; preds = %166, %.preheader336
  %169 = phi ptr [ %170, %.preheader336 ], [ %.ptr244, %166 ]
  %170 = getelementptr inbounds i8, ptr %169, i64 -16
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %170) #10
  %171 = icmp eq ptr %170, %6
  br i1 %171, label %.loopexit306, label %.preheader336

172:                                              ; preds = %55
  %173 = landingpad { ptr, i32 }
          cleanup
  br label %705

174:                                              ; preds = %57
  %175 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %56, i64 noundef 24) #12
  br label %705

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

178:                                              ; preds = %59
  %179 = landingpad { ptr, i32 }
          cleanup
  br label %703

180:                                              ; preds = %60
  %181 = landingpad { ptr, i32 }
          cleanup
  br label %702

182:                                              ; preds = %61
  %183 = landingpad { ptr, i32 }
          cleanup
  br label %701

184:                                              ; preds = %62
  %185 = landingpad { ptr, i32 }
          cleanup
  br label %700

186:                                              ; preds = %63
  %187 = landingpad { ptr, i32 }
          cleanup
  br label %699

188:                                              ; preds = %64
  %189 = landingpad { ptr, i32 }
          cleanup
  br label %698

190:                                              ; preds = %65
  %191 = landingpad { ptr, i32 }
          cleanup
  br label %697

192:                                              ; preds = %66
  %193 = landingpad { ptr, i32 }
          cleanup
  br label %696

194:                                              ; preds = %67
  %195 = landingpad { ptr, i32 }
          cleanup
  br label %695

196:                                              ; preds = %68
  %197 = landingpad { ptr, i32 }
          cleanup
  br label %694

198:                                              ; preds = %69
  %199 = landingpad { ptr, i32 }
          cleanup
  br label %693

200:                                              ; preds = %70
  %201 = landingpad { ptr, i32 }
          cleanup
  br label %692

202:                                              ; preds = %71
  %203 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit308:                                     ; preds = %.invoke463.invoke, %.invoke, %604, %608, %609, %610, %617, %627, %632, %640, %645, %653
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit:                      ; preds = %598, %595, %594, %591, %586, %585, %583, %579, %578, %570, %569, %566, %561, %560, %558, %.preheader309
  %lpad.loopexit311 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit:    ; preds = %.invoke464.invoke, %.invoke460, %513, %517, %518, %519, %531, %536, %539, %540, %543, %544, %547, %548, %551, %552, %555
  %lpad.loopexit316 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %663, %662, %661, %659, %655
  %lpad.loopexit318 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %.invoke462, %.invoke461, %370, %371, %373, %379, %381, %396, %425, %438, %456, %463, %481, %664, %665, %666
  %lpad.loopexit324 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %315, %313, %311, %309, %307, %305, %303, %301, %294, %290, %287, %286, %284, %281, %280, %279, %278, %277, %276, %275, %272, %269, %268, %266, %263, %262, %261, %260, %258, %255, %253, %.preheader326
  %lpad.loopexit327 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %.preheader330
  %lpad.loopexit331 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %684, %683, %682, %681, %680, %679, %678, %677, %676, %675, %669, %353, %352, %351, %350, %345, %342, %341, %339, %336, %335, %334, %333, %332, %331, %330, %327, %325, %324, %323, %322, %321, %250, %249, %248, %246, %237, %232, %231, %230
  %lpad.loopexit333 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp: ; preds = %224, %215, %209, %207, %204, %143
  %lpad.loopexit.split-lp334 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

204:                                              ; preds = %141
  %205 = invoke noundef zeroext i1 @_ZN3Int7IsLowerEPS_(ptr noundef nonnull align 8 dereferenceable(16) @n_range_start, ptr noundef nonnull @n_range_end)
          to label %206 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

206:                                              ; preds = %204
  br i1 %205, label %207, label %.critedge

207:                                              ; preds = %206
  %208 = call i32 @pthread_mutex_lock(ptr noundef nonnull @write_random) #10
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull @n_range_start)
          to label %209 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

209:                                              ; preds = %207
  %210 = load i64, ptr @N_SEQUENTIAL_MAX, align 8, !tbaa !12
  invoke void @_ZN3Int3AddEm(ptr noundef nonnull align 8 dereferenceable(16) @n_range_start, i64 noundef %210)
          to label %211 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

211:                                              ; preds = %209
  %212 = call i32 @pthread_mutex_unlock(ptr noundef nonnull @write_random) #10
  br label %213

213:                                              ; preds = %143, %211
  %214 = load i32, ptr @FLAGMATRIX, align 4, !tbaa !11
  %.not247 = icmp eq i32 %214, 0
  br i1 %.not247, label %221, label %215

215:                                              ; preds = %213
  %216 = invoke noundef ptr @_ZN3Int9GetBase16Ev(ptr noundef nonnull align 8 dereferenceable(16) %20)
          to label %217 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

217:                                              ; preds = %215
  %218 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.232, ptr noundef %216, i32 noundef %72)
  %219 = load ptr, ptr @stdout, align 8, !tbaa !14
  %220 = call i32 @fflush(ptr noundef %219)
  call void @free(ptr noundef %216) #10
  br label %.preheader478

221:                                              ; preds = %213
  %222 = load i32, ptr @FLAGQUIET, align 4, !tbaa !11
  %223 = icmp eq i32 %222, 0
  br i1 %223, label %224, label %.preheader478

224:                                              ; preds = %221
  %225 = invoke noundef ptr @_ZN3Int9GetBase16Ev(ptr noundef nonnull align 8 dereferenceable(16) %20)
          to label %226 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

226:                                              ; preds = %224
  %227 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.233, ptr noundef %225)
  %228 = load ptr, ptr @stdout, align 8, !tbaa !14
  %229 = call i32 @fflush(ptr noundef %228)
  call void @free(ptr noundef %225) #10
  store i32 1, ptr @THREADOUTPUT, align 4, !tbaa !11
  br label %.preheader478

.preheader478:                                    ; preds = %221, %226, %217
  br label %230

230:                                              ; preds = %.preheader478, %686
  %.0198 = phi i64 [ %355, %686 ], [ 0, %.preheader478 ]
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) %21, i32 noundef 512)
          to label %231 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

231:                                              ; preds = %230
  invoke void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(16) %21, ptr noundef nonnull @stride)
          to label %232 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

232:                                              ; preds = %231
  invoke void @_ZN3Int3AddEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull %21)
          to label %233 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

233:                                              ; preds = %232
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %23) #10
  %234 = load ptr, ptr @secp, align 8, !tbaa !14
  invoke void @_ZN9Secp256K116ComputePublicKeyEP3Int(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %23, ptr noundef nonnull align 8 dereferenceable(393296) %234, ptr noundef nonnull %20)
          to label %235 unwind label %241

235:                                              ; preds = %233
  %236 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %7, ptr noundef nonnull align 8 dereferenceable(48) %23)
          to label %237 unwind label %243

237:                                              ; preds = %235
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %23) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %23) #10
  invoke void @_ZN3Int3SubEPS_(ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull %21)
          to label %.preheader330 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

.preheader330:                                    ; preds = %237, %240
  %indvars.iv = phi i64 [ %indvars.iv.next, %240 ], [ 0, %237 ]
  %238 = getelementptr inbounds [513 x %class.Int], ptr %6, i64 0, i64 %indvars.iv
  %239 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %indvars.iv) #10
  invoke void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %238, ptr noundef nonnull %239, ptr noundef nonnull %7)
          to label %240 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

240:                                              ; preds = %.preheader330
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, 511
  br i1 %exitcond.not, label %246, label %.preheader330, !llvm.loop !15

241:                                              ; preds = %233
  %242 = landingpad { ptr, i32 }
          cleanup
  br label %245

243:                                              ; preds = %235
  %244 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %23) #10
  br label %245

245:                                              ; preds = %243, %241
  %.pn = phi { ptr, i32 } [ %244, %243 ], [ %242, %241 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %23) #10
  br label %.loopexit.split-lp

246:                                              ; preds = %240
  %247 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef 511) #10
  invoke void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %139, ptr noundef nonnull %247, ptr noundef nonnull %7)
          to label %248 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

248:                                              ; preds = %246
  invoke void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %140, ptr noundef nonnull @_2Gn, ptr noundef nonnull %7)
          to label %249 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

249:                                              ; preds = %248
  invoke void @_ZN8IntGroup6ModInvEv(ptr noundef nonnull align 8 dereferenceable(20) %56)
          to label %250 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

250:                                              ; preds = %249
  %251 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %77, ptr noundef nonnull align 8 dereferenceable(48) %7)
          to label %.preheader326 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

.preheader326:                                    ; preds = %250, %317
  %indvars.iv412 = phi i64 [ %indvars.iv.next413, %317 ], [ 0, %250 ]
  %252 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %12, ptr noundef nonnull align 8 dereferenceable(48) %7)
          to label %253 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

253:                                              ; preds = %.preheader326
  %254 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %13, ptr noundef nonnull align 8 dereferenceable(48) %7)
          to label %255 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

255:                                              ; preds = %253
  %256 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %indvars.iv412) #10
  %257 = getelementptr inbounds i8, ptr %256, i64 16
  invoke void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull %257, ptr noundef nonnull %78)
          to label %258 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

258:                                              ; preds = %255
  %259 = getelementptr inbounds [513 x %class.Int], ptr %6, i64 0, i64 %indvars.iv412
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull %8, ptr noundef nonnull %259)
          to label %260 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

260:                                              ; preds = %258
  invoke void @_ZN3Int11ModSquareK1EPS_(ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull %10)
          to label %261 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

261:                                              ; preds = %260
  invoke void @_ZN3Int6ModNegEv(ptr noundef nonnull align 8 dereferenceable(16) %12)
          to label %262 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

262:                                              ; preds = %261
  invoke void @_ZN3Int6ModAddEPS_(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull %11)
          to label %263 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

263:                                              ; preds = %262
  %264 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %indvars.iv412) #10
  invoke void @_ZN3Int6ModSubEPS_(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull %264)
          to label %265 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

265:                                              ; preds = %263
  br i1 %76, label %266, label %272

266:                                              ; preds = %265
  %267 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %indvars.iv412) #10
  invoke void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %78, ptr noundef nonnull %267, ptr noundef nonnull %12)
          to label %268 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

268:                                              ; preds = %266
  invoke void @_ZN3Int8ModMulK1EPS_(ptr noundef nonnull align 8 dereferenceable(16) %78, ptr noundef nonnull %10)
          to label %269 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

269:                                              ; preds = %268
  %270 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %indvars.iv412) #10
  %271 = getelementptr inbounds i8, ptr %270, i64 16
  invoke void @_ZN3Int6ModSubEPS_(ptr noundef nonnull align 8 dereferenceable(16) %78, ptr noundef nonnull %271)
          to label %272 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

272:                                              ; preds = %269, %265
  %273 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %indvars.iv412) #10
  %274 = getelementptr inbounds i8, ptr %273, i64 16
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull %274)
          to label %275 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

275:                                              ; preds = %272
  invoke void @_ZN3Int6ModNegEv(ptr noundef nonnull align 8 dereferenceable(16) %9)
          to label %276 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

276:                                              ; preds = %275
  invoke void @_ZN3Int6ModSubEPS_(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull %79)
          to label %277 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

277:                                              ; preds = %276
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull %9, ptr noundef nonnull %259)
          to label %278 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

278:                                              ; preds = %277
  invoke void @_ZN3Int11ModSquareK1EPS_(ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull %10)
          to label %279 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

279:                                              ; preds = %278
  invoke void @_ZN3Int6ModNegEv(ptr noundef nonnull align 8 dereferenceable(16) %13)
          to label %280 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

280:                                              ; preds = %279
  invoke void @_ZN3Int6ModAddEPS_(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull %11)
          to label %281 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

281:                                              ; preds = %280
  %282 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %indvars.iv412) #10
  invoke void @_ZN3Int6ModSubEPS_(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull %282)
          to label %283 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

283:                                              ; preds = %281
  br i1 %76, label %284, label %290

284:                                              ; preds = %283
  %285 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %indvars.iv412) #10
  invoke void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %79, ptr noundef nonnull %285, ptr noundef nonnull %13)
          to label %286 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

286:                                              ; preds = %284
  invoke void @_ZN3Int8ModMulK1EPS_(ptr noundef nonnull align 8 dereferenceable(16) %79, ptr noundef nonnull %10)
          to label %287 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

287:                                              ; preds = %286
  %288 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %indvars.iv412) #10
  %289 = getelementptr inbounds i8, ptr %288, i64 16
  invoke void @_ZN3Int6ModAddEPS_(ptr noundef nonnull align 8 dereferenceable(16) %79, ptr noundef nonnull %289)
          to label %290 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

290:                                              ; preds = %287, %283
  %indvars.iv.next413 = add nuw nsw i64 %indvars.iv412, 1
  %291 = add nuw nsw i64 %indvars.iv412, 513
  %292 = getelementptr inbounds [1024 x %class.Point], ptr %2, i64 0, i64 %291
  %293 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %292, ptr noundef nonnull align 8 dereferenceable(48) %12)
          to label %294 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

294:                                              ; preds = %290
  %295 = sub nuw nsw i64 511, %indvars.iv412
  %296 = getelementptr inbounds [1024 x %class.Point], ptr %2, i64 0, i64 %295
  %297 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %296, ptr noundef nonnull align 8 dereferenceable(48) %13)
          to label %298 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

298:                                              ; preds = %294
  %299 = load i32, ptr @FLAGENDOMORPHISM, align 4, !tbaa !11
  %.not278 = icmp eq i32 %299, 0
  br i1 %.not278, label %317, label %300

300:                                              ; preds = %298
  br i1 %76, label %301, label %309

301:                                              ; preds = %300
  %302 = getelementptr inbounds [1024 x %class.Point], ptr %3, i64 0, i64 %291, i32 1
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %302, ptr noundef nonnull %78)
          to label %303 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

303:                                              ; preds = %301
  %304 = getelementptr inbounds [1024 x %class.Point], ptr %3, i64 0, i64 %295, i32 1
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %304, ptr noundef nonnull %79)
          to label %305 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

305:                                              ; preds = %303
  %306 = getelementptr inbounds [1024 x %class.Point], ptr %4, i64 0, i64 %291, i32 1
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %306, ptr noundef nonnull %78)
          to label %307 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

307:                                              ; preds = %305
  %308 = getelementptr inbounds [1024 x %class.Point], ptr %4, i64 0, i64 %295, i32 1
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %308, ptr noundef nonnull %79)
          to label %309 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

309:                                              ; preds = %307, %300
  %310 = getelementptr inbounds [1024 x %class.Point], ptr %3, i64 0, i64 %291
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %310, ptr noundef nonnull %12, ptr noundef nonnull @beta)
          to label %311 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

311:                                              ; preds = %309
  %312 = getelementptr inbounds [1024 x %class.Point], ptr %3, i64 0, i64 %295
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %312, ptr noundef nonnull %13, ptr noundef nonnull @beta)
          to label %313 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

313:                                              ; preds = %311
  %314 = getelementptr inbounds [1024 x %class.Point], ptr %4, i64 0, i64 %291
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %314, ptr noundef nonnull %12, ptr noundef nonnull @beta2)
          to label %315 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

315:                                              ; preds = %313
  %316 = getelementptr inbounds [1024 x %class.Point], ptr %4, i64 0, i64 %295
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %316, ptr noundef nonnull %13, ptr noundef nonnull @beta2)
          to label %317 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

317:                                              ; preds = %298, %315
  %exitcond415.not = icmp eq i64 %indvars.iv.next413, 511
  br i1 %exitcond415.not, label %318, label %.preheader326, !llvm.loop !17

318:                                              ; preds = %317
  %319 = load i32, ptr @FLAGENDOMORPHISM, align 4, !tbaa !11
  %.not249 = icmp eq i32 %319, 0
  br i1 %.not249, label %325, label %320

320:                                              ; preds = %318
  br i1 %76, label %321, label %323

321:                                              ; preds = %320
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %80, ptr noundef nonnull %81)
          to label %322 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

322:                                              ; preds = %321
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %82, ptr noundef nonnull %81)
          to label %323 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

323:                                              ; preds = %322, %320
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %83, ptr noundef nonnull %77, ptr noundef nonnull @beta)
          to label %324 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

324:                                              ; preds = %323
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %84, ptr noundef nonnull %77, ptr noundef nonnull @beta2)
          to label %325 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

325:                                              ; preds = %324, %318
  %326 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %13, ptr noundef nonnull align 8 dereferenceable(48) %7)
          to label %327 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

327:                                              ; preds = %325
  %328 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef 511) #10
  %329 = getelementptr inbounds i8, ptr %328, i64 16
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull %329)
          to label %330 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

330:                                              ; preds = %327
  invoke void @_ZN3Int6ModNegEv(ptr noundef nonnull align 8 dereferenceable(16) %9)
          to label %331 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

331:                                              ; preds = %330
  invoke void @_ZN3Int6ModSubEPS_(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull %79)
          to label %332 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

332:                                              ; preds = %331
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull %9, ptr noundef nonnull %139)
          to label %333 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

333:                                              ; preds = %332
  invoke void @_ZN3Int11ModSquareK1EPS_(ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull %10)
          to label %334 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

334:                                              ; preds = %333
  invoke void @_ZN3Int6ModNegEv(ptr noundef nonnull align 8 dereferenceable(16) %13)
          to label %335 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

335:                                              ; preds = %334
  invoke void @_ZN3Int6ModAddEPS_(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull %11)
          to label %336 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

336:                                              ; preds = %335
  %337 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef 511) #10
  invoke void @_ZN3Int6ModSubEPS_(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull %337)
          to label %338 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

338:                                              ; preds = %336
  br i1 %76, label %339, label %345

339:                                              ; preds = %338
  %340 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef 511) #10
  invoke void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %79, ptr noundef nonnull %340, ptr noundef nonnull %13)
          to label %341 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

341:                                              ; preds = %339
  invoke void @_ZN3Int8ModMulK1EPS_(ptr noundef nonnull align 8 dereferenceable(16) %79, ptr noundef nonnull %10)
          to label %342 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

342:                                              ; preds = %341
  %343 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef 511) #10
  %344 = getelementptr inbounds i8, ptr %343, i64 16
  invoke void @_ZN3Int6ModAddEPS_(ptr noundef nonnull align 8 dereferenceable(16) %79, ptr noundef nonnull %344)
          to label %345 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

345:                                              ; preds = %342, %338
  %346 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %2, ptr noundef nonnull align 8 dereferenceable(48) %13)
          to label %347 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

347:                                              ; preds = %345
  %348 = load i32, ptr @FLAGENDOMORPHISM, align 4, !tbaa !11
  %.not250 = icmp eq i32 %348, 0
  br i1 %.not250, label %354, label %349

349:                                              ; preds = %347
  br i1 %76, label %350, label %352

350:                                              ; preds = %349
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %85, ptr noundef nonnull %79)
          to label %351 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

351:                                              ; preds = %350
  invoke void @_ZN3Int3SetEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %86, ptr noundef nonnull %79)
          to label %352 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

352:                                              ; preds = %351, %349
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull %13, ptr noundef nonnull @beta)
          to label %353 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

353:                                              ; preds = %352
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull %13, ptr noundef nonnull @beta2)
          to label %354 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

354:                                              ; preds = %353, %347
  %355 = add i64 %.0198, 1024
  br label %356

356:                                              ; preds = %354, %667
  %.0200389 = phi i64 [ 0, %354 ], [ %668, %667 ]
  %357 = load i32, ptr @FLAGSEARCH, align 4
  %358 = add i32 %357, -1
  %or.cond = icmp ult i32 %358, 2
  br i1 %or.cond, label %359, label %397

359:                                              ; preds = %356
  %360 = load i32, ptr @FLAGENDOMORPHISM, align 4, !tbaa !11
  %.not251 = icmp eq i32 %360, 0
  %361 = load ptr, ptr @secp, align 8, !tbaa !14
  %362 = shl nuw nsw i64 %.0200389, 2
  %363 = getelementptr inbounds [1024 x %class.Point], ptr %2, i64 0, i64 %362
  %364 = or disjoint i64 %362, 1
  %365 = getelementptr inbounds [1024 x %class.Point], ptr %2, i64 0, i64 %364
  %366 = or disjoint i64 %362, 2
  %367 = getelementptr inbounds [1024 x %class.Point], ptr %2, i64 0, i64 %366
  %368 = or disjoint i64 %362, 3
  %369 = getelementptr inbounds [1024 x %class.Point], ptr %2, i64 0, i64 %368
  br i1 %.not251, label %396, label %370

370:                                              ; preds = %359
  invoke void @_ZN9Secp256K116GetHash160_fromXEihP3IntS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(393296) %361, i32 noundef 0, i8 noundef zeroext 2, ptr noundef nonnull %363, ptr noundef nonnull %365, ptr noundef nonnull %367, ptr noundef nonnull %369, ptr noundef nonnull %19, ptr noundef nonnull %87, ptr noundef nonnull %88, ptr noundef nonnull %89)
          to label %371 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

371:                                              ; preds = %370
  %372 = load ptr, ptr @secp, align 8, !tbaa !14
  invoke void @_ZN9Secp256K116GetHash160_fromXEihP3IntS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(393296) %372, i32 noundef 0, i8 noundef zeroext 3, ptr noundef nonnull %363, ptr noundef nonnull %365, ptr noundef nonnull %367, ptr noundef nonnull %369, ptr noundef nonnull %90, ptr noundef nonnull %91, ptr noundef nonnull %92, ptr noundef nonnull %93)
          to label %373 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

373:                                              ; preds = %371
  %374 = load ptr, ptr @secp, align 8, !tbaa !14
  %375 = getelementptr inbounds [1024 x %class.Point], ptr %3, i64 0, i64 %362
  %376 = getelementptr inbounds [1024 x %class.Point], ptr %3, i64 0, i64 %364
  %377 = getelementptr inbounds [1024 x %class.Point], ptr %3, i64 0, i64 %366
  %378 = getelementptr inbounds [1024 x %class.Point], ptr %3, i64 0, i64 %368
  invoke void @_ZN9Secp256K116GetHash160_fromXEihP3IntS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(393296) %374, i32 noundef 0, i8 noundef zeroext 2, ptr noundef nonnull %375, ptr noundef nonnull %376, ptr noundef nonnull %377, ptr noundef nonnull %378, ptr noundef nonnull %94, ptr noundef nonnull %95, ptr noundef nonnull %96, ptr noundef nonnull %97)
          to label %379 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

379:                                              ; preds = %373
  %380 = load ptr, ptr @secp, align 8, !tbaa !14
  invoke void @_ZN9Secp256K116GetHash160_fromXEihP3IntS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(393296) %380, i32 noundef 0, i8 noundef zeroext 3, ptr noundef nonnull %375, ptr noundef nonnull %376, ptr noundef nonnull %377, ptr noundef nonnull %378, ptr noundef nonnull %98, ptr noundef nonnull %99, ptr noundef nonnull %100, ptr noundef nonnull %101)
          to label %381 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

381:                                              ; preds = %379
  %382 = load ptr, ptr @secp, align 8, !tbaa !14
  %383 = getelementptr inbounds [1024 x %class.Point], ptr %4, i64 0, i64 %362
  %384 = getelementptr inbounds [1024 x %class.Point], ptr %4, i64 0, i64 %364
  %385 = getelementptr inbounds [1024 x %class.Point], ptr %4, i64 0, i64 %366
  %386 = getelementptr inbounds [1024 x %class.Point], ptr %4, i64 0, i64 %368
  invoke void @_ZN9Secp256K116GetHash160_fromXEihP3IntS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(393296) %382, i32 noundef 0, i8 noundef zeroext 2, ptr noundef nonnull %383, ptr noundef nonnull %384, ptr noundef nonnull %385, ptr noundef nonnull %386, ptr noundef nonnull %102, ptr noundef nonnull %103, ptr noundef nonnull %104, ptr noundef nonnull %105)
          to label %.invoke461 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

.invoke461:                                       ; preds = %381, %396
  %387 = phi ptr [ %363, %396 ], [ %383, %381 ]
  %388 = phi ptr [ %365, %396 ], [ %384, %381 ]
  %389 = phi ptr [ %367, %396 ], [ %385, %381 ]
  %390 = phi ptr [ %369, %396 ], [ %386, %381 ]
  %391 = phi ptr [ %90, %396 ], [ %106, %381 ]
  %392 = phi ptr [ %91, %396 ], [ %107, %381 ]
  %393 = phi ptr [ %92, %396 ], [ %108, %381 ]
  %394 = phi ptr [ %93, %396 ], [ %109, %381 ]
  %395 = load ptr, ptr @secp, align 8, !tbaa !14
  invoke void @_ZN9Secp256K116GetHash160_fromXEihP3IntS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(393296) %395, i32 noundef 0, i8 noundef zeroext 3, ptr noundef nonnull %387, ptr noundef nonnull %388, ptr noundef nonnull %389, ptr noundef nonnull %390, ptr noundef nonnull %391, ptr noundef nonnull %392, ptr noundef nonnull %393, ptr noundef nonnull %394)
          to label %397 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

396:                                              ; preds = %359
  invoke void @_ZN9Secp256K116GetHash160_fromXEihP3IntS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(393296) %361, i32 noundef 0, i8 noundef zeroext 2, ptr noundef nonnull %363, ptr noundef nonnull %365, ptr noundef nonnull %367, ptr noundef nonnull %369, ptr noundef nonnull %19, ptr noundef nonnull %87, ptr noundef nonnull %88, ptr noundef nonnull %89)
          to label %.invoke461 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

397:                                              ; preds = %.invoke461, %356
  %398 = load i32, ptr @FLAGSEARCH, align 4
  %399 = and i32 %398, -3
  %or.cond3 = icmp eq i32 %399, 0
  br i1 %or.cond3, label %400, label %.preheader477

.preheader477:                                    ; preds = %.invoke462, %397
  br label %505

400:                                              ; preds = %397
  %401 = load i32, ptr @FLAGENDOMORPHISM, align 4, !tbaa !11
  %.not252 = icmp eq i32 %401, 0
  %402 = shl nuw nsw i64 %.0200389, 2
  br i1 %.not252, label %497, label %.preheader323

.preheader323:                                    ; preds = %400
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %24) #10
  %403 = load ptr, ptr @secp, align 8, !tbaa !14
  %404 = getelementptr inbounds [1024 x %class.Point], ptr %2, i64 0, i64 %402
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %24, ptr noundef nonnull align 8 dereferenceable(393296) %403, ptr noundef nonnull align 8 dereferenceable(48) %404)
          to label %405 unwind label %433

405:                                              ; preds = %.preheader323
  %406 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %5, ptr noundef nonnull align 8 dereferenceable(48) %24)
          to label %407 unwind label %435

407:                                              ; preds = %405
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %24) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %24) #10
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %24) #10
  %408 = load ptr, ptr @secp, align 8, !tbaa !14
  %409 = or disjoint i64 %402, 1
  %410 = getelementptr inbounds [1024 x %class.Point], ptr %2, i64 0, i64 %409
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %24, ptr noundef nonnull align 8 dereferenceable(393296) %408, ptr noundef nonnull align 8 dereferenceable(48) %410)
          to label %411 unwind label %433

411:                                              ; preds = %407
  %412 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %.ptr240.1, ptr noundef nonnull align 8 dereferenceable(48) %24)
          to label %413 unwind label %435

413:                                              ; preds = %411
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %24) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %24) #10
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %24) #10
  %414 = load ptr, ptr @secp, align 8, !tbaa !14
  %415 = or disjoint i64 %402, 2
  %416 = getelementptr inbounds [1024 x %class.Point], ptr %2, i64 0, i64 %415
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %24, ptr noundef nonnull align 8 dereferenceable(393296) %414, ptr noundef nonnull align 8 dereferenceable(48) %416)
          to label %417 unwind label %433

417:                                              ; preds = %413
  %418 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %.ptr240.2, ptr noundef nonnull align 8 dereferenceable(48) %24)
          to label %419 unwind label %435

419:                                              ; preds = %417
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %24) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %24) #10
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %24) #10
  %420 = load ptr, ptr @secp, align 8, !tbaa !14
  %421 = or disjoint i64 %402, 3
  %422 = getelementptr inbounds [1024 x %class.Point], ptr %2, i64 0, i64 %421
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %24, ptr noundef nonnull align 8 dereferenceable(393296) %420, ptr noundef nonnull align 8 dereferenceable(48) %422)
          to label %423 unwind label %433

423:                                              ; preds = %419
  %424 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %.ptr240.3, ptr noundef nonnull align 8 dereferenceable(48) %24)
          to label %425 unwind label %435

425:                                              ; preds = %423
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %24) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %24) #10
  %426 = load ptr, ptr @secp, align 8, !tbaa !14
  %427 = or disjoint i64 %402, 1
  %428 = getelementptr inbounds [1024 x %class.Point], ptr %2, i64 0, i64 %427
  %429 = or disjoint i64 %402, 2
  %430 = getelementptr inbounds [1024 x %class.Point], ptr %2, i64 0, i64 %429
  %431 = or disjoint i64 %402, 3
  %432 = getelementptr inbounds [1024 x %class.Point], ptr %2, i64 0, i64 %431
  invoke void @_ZN9Secp256K110GetHash160EibR5PointS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(393296) %426, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(48) %404, ptr noundef nonnull align 8 dereferenceable(48) %428, ptr noundef nonnull align 8 dereferenceable(48) %430, ptr noundef nonnull align 8 dereferenceable(48) %432, ptr noundef nonnull %110, ptr noundef nonnull %111, ptr noundef nonnull %112, ptr noundef nonnull %113)
          to label %438 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

433:                                              ; preds = %419, %413, %407, %.preheader323
  %434 = landingpad { ptr, i32 }
          cleanup
  br label %437

435:                                              ; preds = %423, %417, %411, %405
  %436 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %24) #10
  br label %437

437:                                              ; preds = %435, %433
  %.pn276 = phi { ptr, i32 } [ %436, %435 ], [ %434, %433 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %24) #10
  br label %.loopexit.split-lp

438:                                              ; preds = %425
  %439 = load ptr, ptr @secp, align 8, !tbaa !14
  invoke void @_ZN9Secp256K110GetHash160EibR5PointS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(393296) %439, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(48) %5, ptr noundef nonnull align 8 dereferenceable(48) %.ptr240.1, ptr noundef nonnull align 8 dereferenceable(48) %.ptr240.2, ptr noundef nonnull align 8 dereferenceable(48) %.ptr240.3, ptr noundef nonnull %114, ptr noundef nonnull %115, ptr noundef nonnull %116, ptr noundef nonnull %117)
          to label %.preheader322.preheader unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

.preheader322.preheader:                          ; preds = %438
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %25) #10
  %440 = load ptr, ptr @secp, align 8, !tbaa !14
  %441 = getelementptr inbounds [1024 x %class.Point], ptr %3, i64 0, i64 %402
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %25, ptr noundef nonnull align 8 dereferenceable(393296) %440, ptr noundef nonnull align 8 dereferenceable(48) %441)
          to label %442 unwind label %458

442:                                              ; preds = %.preheader322.preheader
  %443 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %5, ptr noundef nonnull align 8 dereferenceable(48) %25)
          to label %.preheader322.1 unwind label %460

.preheader322.1:                                  ; preds = %442
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %25) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %25) #10
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %25) #10
  %444 = load ptr, ptr @secp, align 8, !tbaa !14
  %445 = getelementptr inbounds [1024 x %class.Point], ptr %3, i64 0, i64 %427
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %25, ptr noundef nonnull align 8 dereferenceable(393296) %444, ptr noundef nonnull align 8 dereferenceable(48) %445)
          to label %446 unwind label %458

446:                                              ; preds = %.preheader322.1
  %447 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %.ptr240.1, ptr noundef nonnull align 8 dereferenceable(48) %25)
          to label %.preheader322.2 unwind label %460

.preheader322.2:                                  ; preds = %446
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %25) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %25) #10
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %25) #10
  %448 = load ptr, ptr @secp, align 8, !tbaa !14
  %449 = getelementptr inbounds [1024 x %class.Point], ptr %3, i64 0, i64 %429
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %25, ptr noundef nonnull align 8 dereferenceable(393296) %448, ptr noundef nonnull align 8 dereferenceable(48) %449)
          to label %450 unwind label %458

450:                                              ; preds = %.preheader322.2
  %451 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %.ptr240.2, ptr noundef nonnull align 8 dereferenceable(48) %25)
          to label %.preheader322.3 unwind label %460

.preheader322.3:                                  ; preds = %450
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %25) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %25) #10
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %25) #10
  %452 = load ptr, ptr @secp, align 8, !tbaa !14
  %453 = getelementptr inbounds [1024 x %class.Point], ptr %3, i64 0, i64 %431
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %25, ptr noundef nonnull align 8 dereferenceable(393296) %452, ptr noundef nonnull align 8 dereferenceable(48) %453)
          to label %454 unwind label %458

454:                                              ; preds = %.preheader322.3
  %455 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %.ptr240.3, ptr noundef nonnull align 8 dereferenceable(48) %25)
          to label %456 unwind label %460

456:                                              ; preds = %454
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %25) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %25) #10
  %457 = load ptr, ptr @secp, align 8, !tbaa !14
  invoke void @_ZN9Secp256K110GetHash160EibR5PointS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(393296) %457, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(48) %441, ptr noundef nonnull align 8 dereferenceable(48) %445, ptr noundef nonnull align 8 dereferenceable(48) %449, ptr noundef nonnull align 8 dereferenceable(48) %453, ptr noundef nonnull %118, ptr noundef nonnull %119, ptr noundef nonnull %120, ptr noundef nonnull %121)
          to label %463 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

458:                                              ; preds = %.preheader322.3, %.preheader322.2, %.preheader322.1, %.preheader322.preheader
  %459 = landingpad { ptr, i32 }
          cleanup
  br label %462

460:                                              ; preds = %454, %450, %446, %442
  %461 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %25) #10
  br label %462

462:                                              ; preds = %460, %458
  %.pn274 = phi { ptr, i32 } [ %461, %460 ], [ %459, %458 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %25) #10
  br label %.loopexit.split-lp

463:                                              ; preds = %456
  %464 = load ptr, ptr @secp, align 8, !tbaa !14
  invoke void @_ZN9Secp256K110GetHash160EibR5PointS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(393296) %464, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(48) %5, ptr noundef nonnull align 8 dereferenceable(48) %.ptr240.1, ptr noundef nonnull align 8 dereferenceable(48) %.ptr240.2, ptr noundef nonnull align 8 dereferenceable(48) %.ptr240.3, ptr noundef nonnull %122, ptr noundef nonnull %123, ptr noundef nonnull %124, ptr noundef nonnull %125)
          to label %.preheader321.preheader unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

.preheader321.preheader:                          ; preds = %463
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %26) #10
  %465 = load ptr, ptr @secp, align 8, !tbaa !14
  %466 = getelementptr inbounds [1024 x %class.Point], ptr %4, i64 0, i64 %402
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %26, ptr noundef nonnull align 8 dereferenceable(393296) %465, ptr noundef nonnull align 8 dereferenceable(48) %466)
          to label %467 unwind label %483

467:                                              ; preds = %.preheader321.preheader
  %468 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %5, ptr noundef nonnull align 8 dereferenceable(48) %26)
          to label %.preheader321.1 unwind label %485

.preheader321.1:                                  ; preds = %467
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %26) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %26) #10
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %26) #10
  %469 = load ptr, ptr @secp, align 8, !tbaa !14
  %470 = getelementptr inbounds [1024 x %class.Point], ptr %4, i64 0, i64 %427
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %26, ptr noundef nonnull align 8 dereferenceable(393296) %469, ptr noundef nonnull align 8 dereferenceable(48) %470)
          to label %471 unwind label %483

471:                                              ; preds = %.preheader321.1
  %472 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %.ptr240.1, ptr noundef nonnull align 8 dereferenceable(48) %26)
          to label %.preheader321.2 unwind label %485

.preheader321.2:                                  ; preds = %471
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %26) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %26) #10
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %26) #10
  %473 = load ptr, ptr @secp, align 8, !tbaa !14
  %474 = getelementptr inbounds [1024 x %class.Point], ptr %4, i64 0, i64 %429
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %26, ptr noundef nonnull align 8 dereferenceable(393296) %473, ptr noundef nonnull align 8 dereferenceable(48) %474)
          to label %475 unwind label %483

475:                                              ; preds = %.preheader321.2
  %476 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %.ptr240.2, ptr noundef nonnull align 8 dereferenceable(48) %26)
          to label %.preheader321.3 unwind label %485

.preheader321.3:                                  ; preds = %475
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %26) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %26) #10
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %26) #10
  %477 = load ptr, ptr @secp, align 8, !tbaa !14
  %478 = getelementptr inbounds [1024 x %class.Point], ptr %4, i64 0, i64 %431
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %26, ptr noundef nonnull align 8 dereferenceable(393296) %477, ptr noundef nonnull align 8 dereferenceable(48) %478)
          to label %479 unwind label %483

479:                                              ; preds = %.preheader321.3
  %480 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %.ptr240.3, ptr noundef nonnull align 8 dereferenceable(48) %26)
          to label %481 unwind label %485

481:                                              ; preds = %479
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %26) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %26) #10
  %482 = load ptr, ptr @secp, align 8, !tbaa !14
  invoke void @_ZN9Secp256K110GetHash160EibR5PointS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(393296) %482, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(48) %466, ptr noundef nonnull align 8 dereferenceable(48) %470, ptr noundef nonnull align 8 dereferenceable(48) %474, ptr noundef nonnull align 8 dereferenceable(48) %478, ptr noundef nonnull %126, ptr noundef nonnull %127, ptr noundef nonnull %128, ptr noundef nonnull %129)
          to label %.invoke462 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

483:                                              ; preds = %.preheader321.3, %.preheader321.2, %.preheader321.1, %.preheader321.preheader
  %484 = landingpad { ptr, i32 }
          cleanup
  br label %487

485:                                              ; preds = %479, %475, %471, %467
  %486 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %26) #10
  br label %487

487:                                              ; preds = %485, %483
  %.pn272 = phi { ptr, i32 } [ %486, %485 ], [ %484, %483 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %26) #10
  br label %.loopexit.split-lp

.invoke462:                                       ; preds = %481, %497
  %488 = phi ptr [ %498, %497 ], [ %5, %481 ]
  %489 = phi ptr [ %500, %497 ], [ %.ptr240.1, %481 ]
  %490 = phi ptr [ %502, %497 ], [ %.ptr240.2, %481 ]
  %491 = phi ptr [ %504, %497 ], [ %.ptr240.3, %481 ]
  %492 = phi ptr [ %18, %497 ], [ %130, %481 ]
  %493 = phi ptr [ %134, %497 ], [ %131, %481 ]
  %494 = phi ptr [ %135, %497 ], [ %132, %481 ]
  %495 = phi ptr [ %136, %497 ], [ %133, %481 ]
  %496 = load ptr, ptr @secp, align 8, !tbaa !14
  invoke void @_ZN9Secp256K110GetHash160EibR5PointS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(393296) %496, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(48) %488, ptr noundef nonnull align 8 dereferenceable(48) %489, ptr noundef nonnull align 8 dereferenceable(48) %490, ptr noundef nonnull align 8 dereferenceable(48) %491, ptr noundef nonnull %492, ptr noundef nonnull %493, ptr noundef nonnull %494, ptr noundef nonnull %495)
          to label %.preheader477 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

497:                                              ; preds = %400
  %498 = getelementptr inbounds [1024 x %class.Point], ptr %2, i64 0, i64 %402
  %499 = or disjoint i64 %402, 1
  %500 = getelementptr inbounds [1024 x %class.Point], ptr %2, i64 0, i64 %499
  %501 = or disjoint i64 %402, 2
  %502 = getelementptr inbounds [1024 x %class.Point], ptr %2, i64 0, i64 %501
  %503 = or disjoint i64 %402, 3
  %504 = getelementptr inbounds [1024 x %class.Point], ptr %2, i64 0, i64 %503
  br label %.invoke462

505:                                              ; preds = %.preheader477, %.loopexit307
  %indvars.iv439 = phi i64 [ %indvars.iv.next440, %.loopexit307 ], [ 0, %.preheader477 ]
  %506 = load i32, ptr @FLAGSEARCH, align 4
  %507 = add i32 %506, -1
  %or.cond5 = icmp ult i32 %507, 2
  br i1 %or.cond5, label %508, label %.loopexit310

508:                                              ; preds = %505
  %509 = load i32, ptr @FLAGENDOMORPHISM, align 4, !tbaa !11
  %.not253 = icmp eq i32 %509, 0
  br i1 %.not253, label %.preheader309, label %.preheader314

.preheader314:                                    ; preds = %508
  %510 = trunc nuw nsw i64 %indvars.iv439 to i32
  br label %513

.preheader309:                                    ; preds = %508
  %511 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %19, i64 0, i64 0, i64 %indvars.iv439
  %512 = invoke noundef zeroext i1 @_Z14vanityrmdmatchPh(ptr noundef nonnull %511)
          to label %557 unwind label %.loopexit.split-lp.loopexit

513:                                              ; preds = %.preheader314, %556
  %indvars.iv428 = phi i64 [ 0, %.preheader314 ], [ %indvars.iv.next429, %556 ]
  %514 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %19, i64 0, i64 %indvars.iv428, i64 %indvars.iv439
  %515 = invoke noundef zeroext i1 @_Z14vanityrmdmatchPh(ptr noundef nonnull %514)
          to label %516 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

516:                                              ; preds = %513
  br i1 %515, label %517, label %556

517:                                              ; preds = %516
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) %22, i32 noundef %510)
          to label %518 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

518:                                              ; preds = %517
  invoke void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull @stride)
          to label %519 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

519:                                              ; preds = %518
  invoke void @_ZN3Int3AddEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull %20)
          to label %520 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

520:                                              ; preds = %519
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %27) #10
  %521 = load ptr, ptr @secp, align 8, !tbaa !14
  invoke void @_ZN9Secp256K116ComputePublicKeyEP3Int(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %27, ptr noundef nonnull align 8 dereferenceable(393296) %521, ptr noundef nonnull %22)
          to label %522 unwind label %526

522:                                              ; preds = %520
  %523 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %16, ptr noundef nonnull align 8 dereferenceable(48) %27)
          to label %524 unwind label %528

524:                                              ; preds = %522
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %27) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %27) #10
  %525 = trunc nuw nsw i64 %indvars.iv428 to i32
  switch i32 %525, label %default.unreachable [
    i32 0, label %531
    i32 1, label %536
    i32 2, label %539
    i32 3, label %543
    i32 4, label %547
    i32 5, label %551
  ]

526:                                              ; preds = %520
  %527 = landingpad { ptr, i32 }
          cleanup
  br label %530

528:                                              ; preds = %522
  %529 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %27) #10
  br label %530

530:                                              ; preds = %528, %526
  %.pn270 = phi { ptr, i32 } [ %529, %528 ], [ %527, %526 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %27) #10
  br label %.loopexit.split-lp

531:                                              ; preds = %524
  %532 = invoke noundef zeroext i1 @_ZN3Int5IsOddEv(ptr noundef nonnull align 8 dereferenceable(16) %137)
          to label %533 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

533:                                              ; preds = %531
  br i1 %532, label %.invoke464.invoke, label %555

.invoke460:                                       ; preds = %.invoke464.invoke
  %534 = load ptr, ptr @secp, align 8, !tbaa !14
  %535 = getelementptr inbounds i8, ptr %534, i64 64
  invoke void @_ZN3Int3AddEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull %535)
          to label %555 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

536:                                              ; preds = %524
  %537 = invoke noundef zeroext i1 @_ZN3Int6IsEvenEv(ptr noundef nonnull align 8 dereferenceable(16) %137)
          to label %538 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

538:                                              ; preds = %536
  br i1 %537, label %.invoke464.invoke, label %555

.invoke464.invoke:                                ; preds = %538, %542, %546, %550, %554, %533
  invoke void @_ZN3Int3NegEv(ptr noundef nonnull align 8 dereferenceable(16) %22)
          to label %.invoke460 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

539:                                              ; preds = %524
  invoke void @_ZN3Int13ModMulK1orderEPS_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull @lambda)
          to label %540 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

540:                                              ; preds = %539
  %541 = invoke noundef zeroext i1 @_ZN3Int5IsOddEv(ptr noundef nonnull align 8 dereferenceable(16) %137)
          to label %542 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

542:                                              ; preds = %540
  br i1 %541, label %.invoke464.invoke, label %555

543:                                              ; preds = %524
  invoke void @_ZN3Int13ModMulK1orderEPS_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull @lambda)
          to label %544 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

544:                                              ; preds = %543
  %545 = invoke noundef zeroext i1 @_ZN3Int6IsEvenEv(ptr noundef nonnull align 8 dereferenceable(16) %137)
          to label %546 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

546:                                              ; preds = %544
  br i1 %545, label %.invoke464.invoke, label %555

547:                                              ; preds = %524
  invoke void @_ZN3Int13ModMulK1orderEPS_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull @lambda2)
          to label %548 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

548:                                              ; preds = %547
  %549 = invoke noundef zeroext i1 @_ZN3Int5IsOddEv(ptr noundef nonnull align 8 dereferenceable(16) %137)
          to label %550 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

550:                                              ; preds = %548
  br i1 %549, label %.invoke464.invoke, label %555

551:                                              ; preds = %524
  invoke void @_ZN3Int13ModMulK1orderEPS_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull @lambda2)
          to label %552 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

552:                                              ; preds = %551
  %553 = invoke noundef zeroext i1 @_ZN3Int6IsEvenEv(ptr noundef nonnull align 8 dereferenceable(16) %137)
          to label %554 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

554:                                              ; preds = %552
  br i1 %553, label %.invoke464.invoke, label %555

default.unreachable:                              ; preds = %524
  unreachable

555:                                              ; preds = %.invoke460, %554, %550, %546, %542, %538, %533
  invoke void @_Z14writevanitykeybP3Int(i1 noundef zeroext true, ptr noundef nonnull %22)
          to label %556 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

556:                                              ; preds = %516, %555
  %indvars.iv.next429 = add nuw nsw i64 %indvars.iv428, 1
  %exitcond431.not = icmp eq i64 %indvars.iv.next429, 6
  br i1 %exitcond431.not, label %.loopexit310, label %513, !llvm.loop !18

557:                                              ; preds = %.preheader309
  br i1 %512, label %558, label %579

558:                                              ; preds = %557
  %559 = trunc nuw nsw i64 %indvars.iv439 to i32
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) %22, i32 noundef %559)
          to label %560 unwind label %.loopexit.split-lp.loopexit

560:                                              ; preds = %558
  invoke void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull @stride)
          to label %561 unwind label %.loopexit.split-lp.loopexit

561:                                              ; preds = %560
  invoke void @_ZN3Int3AddEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull %20)
          to label %562 unwind label %.loopexit.split-lp.loopexit

562:                                              ; preds = %561
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %28) #10
  %563 = load ptr, ptr @secp, align 8, !tbaa !14
  invoke void @_ZN9Secp256K116ComputePublicKeyEP3Int(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %28, ptr noundef nonnull align 8 dereferenceable(393296) %563, ptr noundef nonnull %22)
          to label %564 unwind label %573

564:                                              ; preds = %562
  %565 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %16, ptr noundef nonnull align 8 dereferenceable(48) %28)
          to label %566 unwind label %575

566:                                              ; preds = %564
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %28) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %28) #10
  %567 = load ptr, ptr @secp, align 8, !tbaa !14
  invoke void @_ZN9Secp256K110GetHash160EibR5PointPh(ptr noundef nonnull align 8 dereferenceable(393296) %567, i32 noundef 0, i1 noundef zeroext true, ptr noundef nonnull align 8 dereferenceable(48) %16, ptr noundef nonnull %17)
          to label %568 unwind label %.loopexit.split-lp.loopexit

568:                                              ; preds = %566
  %bcmp = call i32 @bcmp(ptr noundef nonnull dereferenceable(20) %511, ptr noundef nonnull dereferenceable(20) %17, i64 20)
  %.not256 = icmp eq i32 %bcmp, 0
  br i1 %.not256, label %578, label %569

569:                                              ; preds = %568
  invoke void @_ZN3Int3NegEv(ptr noundef nonnull align 8 dereferenceable(16) %22)
          to label %570 unwind label %.loopexit.split-lp.loopexit

570:                                              ; preds = %569
  %571 = load ptr, ptr @secp, align 8, !tbaa !14
  %572 = getelementptr inbounds i8, ptr %571, i64 64
  invoke void @_ZN3Int3AddEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull %572)
          to label %578 unwind label %.loopexit.split-lp.loopexit

573:                                              ; preds = %587, %562
  %574 = landingpad { ptr, i32 }
          cleanup
  br label %577

575:                                              ; preds = %589, %564
  %576 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %28) #10
  br label %577

577:                                              ; preds = %575, %573
  %.pn254 = phi { ptr, i32 } [ %576, %575 ], [ %574, %573 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %28) #10
  br label %.loopexit.split-lp

578:                                              ; preds = %570, %568
  invoke void @_Z14writevanitykeybP3Int(i1 noundef zeroext true, ptr noundef nonnull %22)
          to label %579 unwind label %.loopexit.split-lp.loopexit

579:                                              ; preds = %557, %578
  %580 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %19, i64 0, i64 1, i64 %indvars.iv439
  %581 = invoke noundef zeroext i1 @_Z14vanityrmdmatchPh(ptr noundef nonnull %580)
          to label %582 unwind label %.loopexit.split-lp.loopexit

582:                                              ; preds = %579
  br i1 %581, label %583, label %.loopexit310

583:                                              ; preds = %582
  %584 = trunc nuw nsw i64 %indvars.iv439 to i32
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) %22, i32 noundef %584)
          to label %585 unwind label %.loopexit.split-lp.loopexit

585:                                              ; preds = %583
  invoke void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull @stride)
          to label %586 unwind label %.loopexit.split-lp.loopexit

586:                                              ; preds = %585
  invoke void @_ZN3Int3AddEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull %20)
          to label %587 unwind label %.loopexit.split-lp.loopexit

587:                                              ; preds = %586
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %28) #10
  %588 = load ptr, ptr @secp, align 8, !tbaa !14
  invoke void @_ZN9Secp256K116ComputePublicKeyEP3Int(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %28, ptr noundef nonnull align 8 dereferenceable(393296) %588, ptr noundef nonnull %22)
          to label %589 unwind label %573

589:                                              ; preds = %587
  %590 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %16, ptr noundef nonnull align 8 dereferenceable(48) %28)
          to label %591 unwind label %575

591:                                              ; preds = %589
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %28) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %28) #10
  %592 = load ptr, ptr @secp, align 8, !tbaa !14
  invoke void @_ZN9Secp256K110GetHash160EibR5PointPh(ptr noundef nonnull align 8 dereferenceable(393296) %592, i32 noundef 0, i1 noundef zeroext true, ptr noundef nonnull align 8 dereferenceable(48) %16, ptr noundef nonnull %17)
          to label %593 unwind label %.loopexit.split-lp.loopexit

593:                                              ; preds = %591
  %bcmp.1 = call i32 @bcmp(ptr noundef nonnull dereferenceable(20) %580, ptr noundef nonnull dereferenceable(20) %17, i64 20)
  %.not256.1 = icmp eq i32 %bcmp.1, 0
  br i1 %.not256.1, label %598, label %594

594:                                              ; preds = %593
  invoke void @_ZN3Int3NegEv(ptr noundef nonnull align 8 dereferenceable(16) %22)
          to label %595 unwind label %.loopexit.split-lp.loopexit

595:                                              ; preds = %594
  %596 = load ptr, ptr @secp, align 8, !tbaa !14
  %597 = getelementptr inbounds i8, ptr %596, i64 64
  invoke void @_ZN3Int3AddEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull %597)
          to label %598 unwind label %.loopexit.split-lp.loopexit

598:                                              ; preds = %595, %593
  invoke void @_Z14writevanitykeybP3Int(i1 noundef zeroext true, ptr noundef nonnull %22)
          to label %.loopexit310 unwind label %.loopexit.split-lp.loopexit

.loopexit310:                                     ; preds = %556, %582, %598, %505
  %599 = load i32, ptr @FLAGSEARCH, align 4
  %600 = and i32 %599, -3
  %or.cond7 = icmp eq i32 %600, 0
  br i1 %or.cond7, label %601, label %.loopexit307

601:                                              ; preds = %.loopexit310
  %602 = load i32, ptr @FLAGENDOMORPHISM, align 4, !tbaa !11
  %.not257 = icmp eq i32 %602, 0
  br i1 %.not257, label %655, label %.preheader

.preheader:                                       ; preds = %601
  %603 = trunc nuw nsw i64 %indvars.iv439 to i32
  br label %604

604:                                              ; preds = %.preheader, %654
  %indvars.iv435 = phi i64 [ 6, %.preheader ], [ %indvars.iv.next436, %654 ]
  %605 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %19, i64 0, i64 %indvars.iv435, i64 %indvars.iv439
  %606 = invoke noundef zeroext i1 @_Z14vanityrmdmatchPh(ptr noundef nonnull %605)
          to label %607 unwind label %.loopexit308

607:                                              ; preds = %604
  br i1 %606, label %608, label %654

608:                                              ; preds = %607
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) %22, i32 noundef %603)
          to label %609 unwind label %.loopexit308

609:                                              ; preds = %608
  invoke void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull @stride)
          to label %610 unwind label %.loopexit308

610:                                              ; preds = %609
  invoke void @_ZN3Int3AddEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull %20)
          to label %611 unwind label %.loopexit308

611:                                              ; preds = %610
  %612 = trunc nuw nsw i64 %indvars.iv435 to i32
  switch i32 %612, label %653 [
    i32 6, label %613
    i32 7, label %613
    i32 8, label %627
    i32 9, label %627
    i32 10, label %640
    i32 11, label %640
  ]

613:                                              ; preds = %611, %611
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %29) #10
  %614 = load ptr, ptr @secp, align 8, !tbaa !14
  invoke void @_ZN9Secp256K116ComputePublicKeyEP3Int(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %29, ptr noundef nonnull align 8 dereferenceable(393296) %614, ptr noundef nonnull %22)
          to label %615 unwind label %622

615:                                              ; preds = %613
  %616 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %16, ptr noundef nonnull align 8 dereferenceable(48) %29)
          to label %617 unwind label %624

617:                                              ; preds = %615
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %29) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %29) #10
  %618 = load ptr, ptr @secp, align 8, !tbaa !14
  invoke void @_ZN9Secp256K110GetHash160EibR5PointPh(ptr noundef nonnull align 8 dereferenceable(393296) %618, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(48) %16, ptr noundef nonnull %18)
          to label %619 unwind label %.loopexit308

619:                                              ; preds = %617
  %bcmp268 = call i32 @bcmp(ptr noundef nonnull dereferenceable(20) %605, ptr noundef nonnull dereferenceable(20) %18, i64 20)
  %.not269 = icmp eq i32 %bcmp268, 0
  br i1 %.not269, label %653, label %.invoke463.invoke

.invoke:                                          ; preds = %.invoke463.invoke
  %620 = load ptr, ptr @secp, align 8, !tbaa !14
  %621 = getelementptr inbounds i8, ptr %620, i64 64
  invoke void @_ZN3Int3AddEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull %621)
          to label %653 unwind label %.loopexit308

622:                                              ; preds = %613
  %623 = landingpad { ptr, i32 }
          cleanup
  br label %626

624:                                              ; preds = %615
  %625 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %29) #10
  br label %626

626:                                              ; preds = %624, %622
  %.pn266 = phi { ptr, i32 } [ %625, %624 ], [ %623, %622 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %29) #10
  br label %.loopexit.split-lp

627:                                              ; preds = %611, %611
  invoke void @_ZN3Int13ModMulK1orderEPS_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull @lambda)
          to label %628 unwind label %.loopexit308

628:                                              ; preds = %627
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %30) #10
  %629 = load ptr, ptr @secp, align 8, !tbaa !14
  invoke void @_ZN9Secp256K116ComputePublicKeyEP3Int(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %30, ptr noundef nonnull align 8 dereferenceable(393296) %629, ptr noundef nonnull %22)
          to label %630 unwind label %635

630:                                              ; preds = %628
  %631 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %16, ptr noundef nonnull align 8 dereferenceable(48) %30)
          to label %632 unwind label %637

632:                                              ; preds = %630
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %30) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %30) #10
  %633 = load ptr, ptr @secp, align 8, !tbaa !14
  invoke void @_ZN9Secp256K110GetHash160EibR5PointPh(ptr noundef nonnull align 8 dereferenceable(393296) %633, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(48) %16, ptr noundef nonnull %18)
          to label %634 unwind label %.loopexit308

634:                                              ; preds = %632
  %bcmp264 = call i32 @bcmp(ptr noundef nonnull dereferenceable(20) %605, ptr noundef nonnull dereferenceable(20) %18, i64 20)
  %.not265 = icmp eq i32 %bcmp264, 0
  br i1 %.not265, label %653, label %.invoke463.invoke

.invoke463.invoke:                                ; preds = %634, %647, %619
  invoke void @_ZN3Int3NegEv(ptr noundef nonnull align 8 dereferenceable(16) %22)
          to label %.invoke unwind label %.loopexit308

635:                                              ; preds = %628
  %636 = landingpad { ptr, i32 }
          cleanup
  br label %639

637:                                              ; preds = %630
  %638 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %30) #10
  br label %639

639:                                              ; preds = %637, %635
  %.pn262 = phi { ptr, i32 } [ %638, %637 ], [ %636, %635 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %30) #10
  br label %.loopexit.split-lp

640:                                              ; preds = %611, %611
  invoke void @_ZN3Int13ModMulK1orderEPS_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull @lambda2)
          to label %641 unwind label %.loopexit308

641:                                              ; preds = %640
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %31) #10
  %642 = load ptr, ptr @secp, align 8, !tbaa !14
  invoke void @_ZN9Secp256K116ComputePublicKeyEP3Int(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %31, ptr noundef nonnull align 8 dereferenceable(393296) %642, ptr noundef nonnull %22)
          to label %643 unwind label %648

643:                                              ; preds = %641
  %644 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %16, ptr noundef nonnull align 8 dereferenceable(48) %31)
          to label %645 unwind label %650

645:                                              ; preds = %643
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %31) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %31) #10
  %646 = load ptr, ptr @secp, align 8, !tbaa !14
  invoke void @_ZN9Secp256K110GetHash160EibR5PointPh(ptr noundef nonnull align 8 dereferenceable(393296) %646, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(48) %16, ptr noundef nonnull %18)
          to label %647 unwind label %.loopexit308

647:                                              ; preds = %645
  %bcmp260 = call i32 @bcmp(ptr noundef nonnull dereferenceable(20) %605, ptr noundef nonnull dereferenceable(20) %18, i64 20)
  %.not261 = icmp eq i32 %bcmp260, 0
  br i1 %.not261, label %653, label %.invoke463.invoke

648:                                              ; preds = %641
  %649 = landingpad { ptr, i32 }
          cleanup
  br label %652

650:                                              ; preds = %643
  %651 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %31) #10
  br label %652

652:                                              ; preds = %650, %648
  %.pn258 = phi { ptr, i32 } [ %651, %650 ], [ %649, %648 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %31) #10
  br label %.loopexit.split-lp

653:                                              ; preds = %.invoke, %647, %634, %619, %611
  invoke void @_Z14writevanitykeybP3Int(i1 noundef zeroext false, ptr noundef nonnull %22)
          to label %654 unwind label %.loopexit308

654:                                              ; preds = %607, %653
  %indvars.iv.next436 = add nuw nsw i64 %indvars.iv435, 1
  %exitcond438.not = icmp eq i64 %indvars.iv.next436, 12
  br i1 %exitcond438.not, label %.loopexit307, label %604, !llvm.loop !19

655:                                              ; preds = %601
  %656 = getelementptr inbounds [4 x [20 x i8]], ptr %18, i64 0, i64 %indvars.iv439
  %657 = invoke noundef zeroext i1 @_Z14vanityrmdmatchPh(ptr noundef nonnull %656)
          to label %658 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

658:                                              ; preds = %655
  br i1 %657, label %659, label %.loopexit307

659:                                              ; preds = %658
  %660 = trunc nuw nsw i64 %indvars.iv439 to i32
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) %22, i32 noundef %660)
          to label %661 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

661:                                              ; preds = %659
  invoke void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull @stride)
          to label %662 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

662:                                              ; preds = %661
  invoke void @_ZN3Int3AddEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull %20)
          to label %663 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

663:                                              ; preds = %662
  invoke void @_Z14writevanitykeybP3Int(i1 noundef zeroext false, ptr noundef nonnull %22)
          to label %.loopexit307 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

.loopexit307:                                     ; preds = %654, %.loopexit310, %658, %663
  %indvars.iv.next440 = add nuw nsw i64 %indvars.iv439, 1
  %exitcond442.not = icmp eq i64 %indvars.iv.next440, 4
  br i1 %exitcond442.not, label %664, label %505, !llvm.loop !20

664:                                              ; preds = %.loopexit307
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(16) %21, i32 noundef 4)
          to label %665 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

665:                                              ; preds = %664
  invoke void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(16) %21, ptr noundef nonnull @stride)
          to label %666 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

666:                                              ; preds = %665
  invoke void @_ZN3Int3AddEPKS_(ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull %21)
          to label %667 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

667:                                              ; preds = %666
  %668 = add nuw nsw i64 %.0200389, 1
  %exitcond443.not = icmp eq i64 %668, 256
  br i1 %exitcond443.not, label %669, label %356, !llvm.loop !21

669:                                              ; preds = %667
  %670 = load ptr, ptr @steps, align 8, !tbaa !14
  %671 = getelementptr inbounds i64, ptr %670, i64 %138
  %672 = load i64, ptr %671, align 8, !tbaa !12
  %673 = add i64 %672, 1
  store i64 %673, ptr %671, align 8, !tbaa !12
  %674 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %12, ptr noundef nonnull align 8 dereferenceable(48) %7)
          to label %675 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

675:                                              ; preds = %669
  invoke void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull getelementptr inbounds (i8, ptr @_2Gn, i64 16), ptr noundef nonnull %78)
          to label %676 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

676:                                              ; preds = %675
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull %8, ptr noundef nonnull %140)
          to label %677 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

677:                                              ; preds = %676
  invoke void @_ZN3Int11ModSquareK1EPS_(ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull %10)
          to label %678 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

678:                                              ; preds = %677
  invoke void @_ZN3Int6ModNegEv(ptr noundef nonnull align 8 dereferenceable(16) %12)
          to label %679 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

679:                                              ; preds = %678
  invoke void @_ZN3Int6ModAddEPS_(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull %11)
          to label %680 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

680:                                              ; preds = %679
  invoke void @_ZN3Int6ModSubEPS_(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull @_2Gn)
          to label %681 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

681:                                              ; preds = %680
  invoke void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16) %78, ptr noundef nonnull @_2Gn, ptr noundef nonnull %12)
          to label %682 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

682:                                              ; preds = %681
  invoke void @_ZN3Int8ModMulK1EPS_(ptr noundef nonnull align 8 dereferenceable(16) %78, ptr noundef nonnull %10)
          to label %683 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

683:                                              ; preds = %682
  invoke void @_ZN3Int6ModSubEPS_(ptr noundef nonnull align 8 dereferenceable(16) %78, ptr noundef nonnull getelementptr inbounds (i8, ptr @_2Gn, i64 16))
          to label %684 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

684:                                              ; preds = %683
  %685 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN5PointaSERKS_(ptr noundef nonnull align 8 dereferenceable(48) %7, ptr noundef nonnull align 8 dereferenceable(48) %12)
          to label %686 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

686:                                              ; preds = %684
  %687 = load i64, ptr @N_SEQUENTIAL_MAX, align 8, !tbaa !12
  %688 = icmp ult i64 %355, %687
  br i1 %688, label %230, label %689, !llvm.loop !22

689:                                              ; preds = %686
  br label %141, !llvm.loop !23

.critedge:                                        ; preds = %206
  %690 = load ptr, ptr @ends, align 8, !tbaa !14
  %691 = getelementptr inbounds i32, ptr %690, i64 %138
  store i32 1, ptr %691, align 4, !tbaa !11
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #10
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #10
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #10
  call void @llvm.lifetime.end.p0(i64 960, ptr nonnull %19) #10
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %18) #10
  call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %17) #10
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %16) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %16) #10
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %15) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %15) #10
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %14) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %14) #10
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %13) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %13) #10
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %12) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %12) #10
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #10
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #10
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #10
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #10
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %7) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %7) #10
  br label %706

.loopexit.split-lp:                               ; preds = %.loopexit308, %.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit, %245, %437, %462, %487, %530, %577, %626, %639, %652, %202
  %.pn279.pn = phi { ptr, i32 } [ %203, %202 ], [ %.pn276, %437 ], [ %.pn274, %462 ], [ %.pn272, %487 ], [ %.pn270, %530 ], [ %.pn258, %652 ], [ %.pn262, %639 ], [ %.pn266, %626 ], [ %.pn254, %577 ], [ %.pn, %245 ], [ %lpad.loopexit, %.loopexit308 ], [ %lpad.loopexit311, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit316, %.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit318, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit324, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit327, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit331, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit333, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp334, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ]
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #10
  br label %692

692:                                              ; preds = %.loopexit.split-lp, %200
  %.pn279.pn.pn = phi { ptr, i32 } [ %.pn279.pn, %.loopexit.split-lp ], [ %201, %200 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #10
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #10
  br label %693

693:                                              ; preds = %692, %198
  %.pn279.pn.pn.pn = phi { ptr, i32 } [ %.pn279.pn.pn, %692 ], [ %199, %198 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #10
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #10
  br label %694

694:                                              ; preds = %693, %196
  %.pn279.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn279.pn.pn.pn, %693 ], [ %197, %196 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #10
  call void @llvm.lifetime.end.p0(i64 960, ptr nonnull %19) #10
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %18) #10
  call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %17) #10
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %16) #10
  br label %695

695:                                              ; preds = %694, %194
  %.pn279.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn279.pn.pn.pn.pn, %694 ], [ %195, %194 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %16) #10
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %15) #10
  br label %696

696:                                              ; preds = %695, %192
  %.pn279.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn279.pn.pn.pn.pn.pn, %695 ], [ %193, %192 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %15) #10
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %14) #10
  br label %697

697:                                              ; preds = %696, %190
  %.pn279.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn279.pn.pn.pn.pn.pn.pn, %696 ], [ %191, %190 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %14) #10
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %13) #10
  br label %698

698:                                              ; preds = %697, %188
  %.pn279.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn279.pn.pn.pn.pn.pn.pn.pn, %697 ], [ %189, %188 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %13) #10
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %12) #10
  br label %699

699:                                              ; preds = %698, %186
  %.pn279.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn279.pn.pn.pn.pn.pn.pn.pn.pn, %698 ], [ %187, %186 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %12) #10
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #10
  br label %700

700:                                              ; preds = %699, %184
  %.pn279.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn279.pn.pn.pn.pn.pn.pn.pn.pn.pn, %699 ], [ %185, %184 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #10
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #10
  br label %701

701:                                              ; preds = %700, %182
  %.pn279.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn279.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %700 ], [ %183, %182 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #10
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #10
  br label %702

702:                                              ; preds = %701, %180
  %.pn279.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn279.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %701 ], [ %181, %180 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #10
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #10
  br label %703

703:                                              ; preds = %702, %178
  %.pn279.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn279.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %702 ], [ %179, %178 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #10
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %7) #10
  br label %704

704:                                              ; preds = %703, %176
  %.pn279.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn279.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %703 ], [ %177, %176 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %7) #10
  br label %705

705:                                              ; preds = %704, %174, %172
  %.pn279.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn279.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %704 ], [ %175, %174 ], [ %173, %172 ]
  br label %714

706:                                              ; preds = %706, %.critedge
  %707 = phi ptr [ %51, %.critedge ], [ %708, %706 ]
  %708 = getelementptr inbounds i8, ptr %707, i64 -16
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %708) #10
  %709 = icmp eq ptr %708, %6
  br i1 %709, label %710, label %706

710:                                              ; preds = %706
  call void @llvm.lifetime.end.p0(i64 8208, ptr nonnull %6) #10
  %711 = getelementptr inbounds i8, ptr %5, i64 144
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %711) #10
  %712 = getelementptr inbounds i8, ptr %5, i64 96
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %712) #10
  %713 = getelementptr inbounds i8, ptr %5, i64 48
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %713) #10
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %5) #10
  call void @llvm.lifetime.end.p0(i64 192, ptr nonnull %5) #10
  br label %721

714:                                              ; preds = %714, %705
  %715 = phi ptr [ %51, %705 ], [ %716, %714 ]
  %716 = getelementptr inbounds i8, ptr %715, i64 -16
  call void @_ZN3IntD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %716) #10
  %717 = icmp eq ptr %716, %6
  br i1 %717, label %.loopexit306, label %714

.loopexit306:                                     ; preds = %.preheader336, %714, %166
  %.pn279.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %167, %166 ], [ %.pn279.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %714 ], [ %167, %.preheader336 ]
  call void @llvm.lifetime.end.p0(i64 8208, ptr nonnull %6) #10
  %718 = getelementptr inbounds i8, ptr %5, i64 144
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %718) #10
  %719 = getelementptr inbounds i8, ptr %5, i64 96
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %719) #10
  %720 = getelementptr inbounds i8, ptr %5, i64 48
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %720) #10
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %5) #10
  br label %.loopexit305

.loopexit305:                                     ; preds = %.preheader338, %162, %.loopexit306
  %.pn279.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %lpad.thr_comm.split-lp, %162 ], [ %.pn279.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %.loopexit306 ], [ %lpad.thr_comm, %.preheader338 ]
  call void @llvm.lifetime.end.p0(i64 192, ptr nonnull %5) #10
  br label %726

721:                                              ; preds = %721, %710
  %722 = phi ptr [ %42, %710 ], [ %723, %721 ]
  %723 = getelementptr inbounds i8, ptr %722, i64 -48
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %723) #10
  %724 = icmp eq ptr %723, %4
  br i1 %724, label %725, label %721

725:                                              ; preds = %721
  call void @llvm.lifetime.end.p0(i64 49152, ptr nonnull %4) #10
  br label %730

726:                                              ; preds = %726, %.loopexit305
  %727 = phi ptr [ %42, %.loopexit305 ], [ %728, %726 ]
  %728 = getelementptr inbounds i8, ptr %727, i64 -48
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %728) #10
  %729 = icmp eq ptr %728, %4
  br i1 %729, label %.loopexit304, label %726

.loopexit304:                                     ; preds = %.preheader340, %726, %156
  %.pn279.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %157, %156 ], [ %.pn279.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %726 ], [ %157, %.preheader340 ]
  call void @llvm.lifetime.end.p0(i64 49152, ptr nonnull %4) #10
  br label %735

730:                                              ; preds = %730, %725
  %731 = phi ptr [ %37, %725 ], [ %732, %730 ]
  %732 = getelementptr inbounds i8, ptr %731, i64 -48
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %732) #10
  %733 = icmp eq ptr %732, %3
  br i1 %733, label %734, label %730

734:                                              ; preds = %730
  call void @llvm.lifetime.end.p0(i64 49152, ptr nonnull %3) #10
  br label %739

735:                                              ; preds = %735, %.loopexit304
  %736 = phi ptr [ %37, %.loopexit304 ], [ %737, %735 ]
  %737 = getelementptr inbounds i8, ptr %736, i64 -48
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %737) #10
  %738 = icmp eq ptr %737, %3
  br i1 %738, label %.loopexit303, label %735

.loopexit303:                                     ; preds = %.preheader342, %735, %150
  %.pn279.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %151, %150 ], [ %.pn279.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %735 ], [ %151, %.preheader342 ]
  call void @llvm.lifetime.end.p0(i64 49152, ptr nonnull %3) #10
  br label %744

739:                                              ; preds = %739, %734
  %740 = phi ptr [ %32, %734 ], [ %741, %739 ]
  %741 = getelementptr inbounds i8, ptr %740, i64 -48
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %741) #10
  %742 = icmp eq ptr %741, %2
  br i1 %742, label %743, label %739

743:                                              ; preds = %739
  call void @llvm.lifetime.end.p0(i64 49152, ptr nonnull %2) #10
  ret ptr null

744:                                              ; preds = %744, %.loopexit303
  %745 = phi ptr [ %32, %.loopexit303 ], [ %746, %744 ]
  %746 = getelementptr inbounds i8, ptr %745, i64 -48
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %746) #10
  %747 = icmp eq ptr %746, %2
  br i1 %747, label %.loopexit, label %744

.loopexit:                                        ; preds = %.preheader344, %744, %144
  %.pn279.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %145, %144 ], [ %.pn279.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %744 ], [ %145, %.preheader344 ]
  call void @llvm.lifetime.end.p0(i64 49152, ptr nonnull %2) #10
  resume { ptr, i32 } %.pn279.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn
}

declare void @_ZN3Int3AddEPKS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) local_unnamed_addr #0

declare void @_ZN9Secp256K110GetHash160EibR5PointS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(393296), i32 noundef, i1 noundef zeroext, ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(48), ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

declare void @_ZN8IntGroupC1Ei(ptr noundef nonnull align 8 dereferenceable(20), i32 noundef) unnamed_addr #0

declare void @_ZN8IntGroup3SetEP3Int(ptr noundef nonnull align 8 dereferenceable(20), ptr noundef) local_unnamed_addr #0

declare void @_ZN3Int3AddEm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) local_unnamed_addr #0

declare void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, ptr noundef) local_unnamed_addr #0

declare void @_ZN8IntGroup6ModInvEv(ptr noundef nonnull align 8 dereferenceable(20)) local_unnamed_addr #0

declare void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, ptr noundef) local_unnamed_addr #0

declare void @_ZN3Int11ModSquareK1EPS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) local_unnamed_addr #0

declare void @_ZN3Int6ModNegEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #0

declare void @_ZN3Int6ModAddEPS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) local_unnamed_addr #0

declare void @_ZN3Int6ModSubEPS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) local_unnamed_addr #0

declare void @_ZN3Int8ModMulK1EPS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) local_unnamed_addr #0

declare void @_ZN9Secp256K116GetHash160_fromXEihP3IntS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(393296), i32 noundef, i8 noundef zeroext, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

declare noundef zeroext i1 @_ZN3Int5IsOddEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #0

declare void @_ZN3Int3NegEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #0

declare noundef zeroext i1 @_ZN3Int6IsEvenEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #0

declare void @_ZN3Int13ModMulK1orderEPS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) local_unnamed_addr #0

declare void @_ZN9Secp256K110GetHash160EibR5PointPh(ptr noundef nonnull align 8 dereferenceable(393296), i32 noundef, i1 noundef zeroext, ptr noundef nonnull align 8 dereferenceable(48), ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z14vanityrmdmatchPh(ptr noundef) local_unnamed_addr #8

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z14writevanitykeybP3Int(i1 noundef zeroext, ptr noundef) local_unnamed_addr #8

; Function Attrs: nofree nounwind willreturn memory(argmem: read)
declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #9

attributes #0 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { 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 #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nobuiltin 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 = { 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 #6 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "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 = { 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 #8 = { 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 #9 = { nofree nounwind willreturn memory(argmem: read) }
attributes #10 = { nounwind }
attributes #11 = { builtin allocsize(0) }
attributes #12 = { builtin nounwind }

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

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


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