; LLVM IR from albertobsd/keyhunt :: keyhunt.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 { %union.anon }
%union.anon = type { [5 x i64] }
%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.233 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.234 = external hidden unnamed_addr constant [20 x i8], align 1

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

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

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

; 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

declare i32 @__gxx_personality_v0(...)

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

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

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

declare void @_ZN3Int3SetEPS_(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef) #0

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(120) 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(40), ptr noundef, ptr noundef) #0

declare void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(40), 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(983240), ptr noundef) #0

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

; 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(983240), ptr noundef nonnull align 8 dereferenceable(120)) #0

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

; 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) #8 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) #9
  call void @llvm.lifetime.start.p0(i64 122880, ptr %5) #9
  %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(120) %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 122880, ptr %8) #9
  %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(120) %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 122880, ptr %9) #9
  %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(120) %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 480, ptr %10) #9
  %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(120) %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 20520, ptr %11) #9
  %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(40) %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) #9
  %90 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 24) #10
          to label %91 unwind label %171

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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) #9
  %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 %227

113:                                              ; preds = %105
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #9
  %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 = %1455, %119
  %123 = load i32, ptr @FLAGRANDOM, align 4, !tbaa !9
  %124 = icmp ne i32 %123, 0
  br i1 %124, label %125, label %235

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

126:                                              ; preds = %125
  br label %246

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(120) %134) #9
  %135 = icmp eq ptr %134, %50
  br i1 %135, label %136, label %132

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

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(120) %144) #9
  %145 = icmp eq ptr %144, %58
  br i1 %145, label %146, label %142

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

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(120) %154) #9
  %155 = icmp eq ptr %154, %66
  br i1 %155, label %156, label %152

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

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(120) %164) #9
  %165 = icmp eq ptr %164, %74
  br i1 %165, label %166, label %162

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

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
  br label %1480

171:                                              ; preds = %89
  %172 = landingpad { ptr, i32 }
          cleanup
  %173 = extractvalue { ptr, i32 } %172, 0
  store ptr %173, ptr %6, align 8
  %174 = extractvalue { ptr, i32 } %172, 1
  store i32 %174, ptr %7, align 4
  br label %1479

175:                                              ; preds = %91
  %176 = landingpad { ptr, i32 }
          cleanup
  %177 = extractvalue { ptr, i32 } %176, 0
  store ptr %177, ptr %6, align 8
  %178 = extractvalue { ptr, i32 } %176, 1
  store i32 %178, ptr %7, align 4
  call void @_ZdlPvm(ptr noundef %90, i64 noundef 24) #11
  br label %1479

179:                                              ; preds = %92
  %180 = landingpad { ptr, i32 }
          cleanup
  %181 = extractvalue { ptr, i32 } %180, 0
  store ptr %181, ptr %6, align 8
  %182 = extractvalue { ptr, i32 } %180, 1
  store i32 %182, ptr %7, align 4
  br label %1478

183:                                              ; preds = %93
  %184 = landingpad { ptr, i32 }
          cleanup
  %185 = extractvalue { ptr, i32 } %184, 0
  store ptr %185, ptr %6, align 8
  %186 = extractvalue { ptr, i32 } %184, 1
  store i32 %186, ptr %7, align 4
  br label %1477

187:                                              ; preds = %94
  %188 = landingpad { ptr, i32 }
          cleanup
  %189 = extractvalue { ptr, i32 } %188, 0
  store ptr %189, ptr %6, align 8
  %190 = extractvalue { ptr, i32 } %188, 1
  store i32 %190, ptr %7, align 4
  br label %1476

191:                                              ; preds = %95
  %192 = landingpad { ptr, i32 }
          cleanup
  %193 = extractvalue { ptr, i32 } %192, 0
  store ptr %193, ptr %6, align 8
  %194 = extractvalue { ptr, i32 } %192, 1
  store i32 %194, ptr %7, align 4
  br label %1475

195:                                              ; preds = %96
  %196 = landingpad { ptr, i32 }
          cleanup
  %197 = extractvalue { ptr, i32 } %196, 0
  store ptr %197, ptr %6, align 8
  %198 = extractvalue { ptr, i32 } %196, 1
  store i32 %198, ptr %7, align 4
  br label %1474

199:                                              ; preds = %97
  %200 = landingpad { ptr, i32 }
          cleanup
  %201 = extractvalue { ptr, i32 } %200, 0
  store ptr %201, ptr %6, align 8
  %202 = extractvalue { ptr, i32 } %200, 1
  store i32 %202, ptr %7, align 4
  br label %1473

203:                                              ; preds = %98
  %204 = landingpad { ptr, i32 }
          cleanup
  %205 = extractvalue { ptr, i32 } %204, 0
  store ptr %205, ptr %6, align 8
  %206 = extractvalue { ptr, i32 } %204, 1
  store i32 %206, ptr %7, align 4
  br label %1472

207:                                              ; preds = %99
  %208 = landingpad { ptr, i32 }
          cleanup
  %209 = extractvalue { ptr, i32 } %208, 0
  store ptr %209, ptr %6, align 8
  %210 = extractvalue { ptr, i32 } %208, 1
  store i32 %210, ptr %7, align 4
  br label %1471

211:                                              ; preds = %100
  %212 = landingpad { ptr, i32 }
          cleanup
  %213 = extractvalue { ptr, i32 } %212, 0
  store ptr %213, ptr %6, align 8
  %214 = extractvalue { ptr, i32 } %212, 1
  store i32 %214, ptr %7, align 4
  br label %1470

215:                                              ; preds = %101
  %216 = landingpad { ptr, i32 }
          cleanup
  %217 = extractvalue { ptr, i32 } %216, 0
  store ptr %217, ptr %6, align 8
  %218 = extractvalue { ptr, i32 } %216, 1
  store i32 %218, ptr %7, align 4
  br label %1469

219:                                              ; preds = %102
  %220 = landingpad { ptr, i32 }
          cleanup
  %221 = extractvalue { ptr, i32 } %220, 0
  store ptr %221, ptr %6, align 8
  %222 = extractvalue { ptr, i32 } %220, 1
  store i32 %222, ptr %7, align 4
  br label %1468

223:                                              ; preds = %103
  %224 = landingpad { ptr, i32 }
          cleanup
  %225 = extractvalue { ptr, i32 } %224, 0
  store ptr %225, ptr %6, align 8
  %226 = extractvalue { ptr, i32 } %224, 1
  store i32 %226, ptr %7, align 4
  br label %1467

227:                                              ; preds = %105, %104
  %228 = landingpad { ptr, i32 }
          cleanup
  %229 = extractvalue { ptr, i32 } %228, 0
  store ptr %229, ptr %6, align 8
  %230 = extractvalue { ptr, i32 } %228, 1
  store i32 %230, ptr %7, align 4
  br label %1466

231:                                              ; preds = %1441, %1439, %1436, %1434, %1432, %1430, %1429, %1424, %1416, %1411, %1410, %1407, %1399, %1398, %1397, %1395, %1388, %1381, %1372, %1371, %1355, %1352, %1343, %1342, %1326, %1323, %1314, %1313, %1297, %1292, %1291, %1289, %1279, %1258, %1250, %1249, %1235, %1232, %1231, %1229, %1219, %1208, %1203, %1202, %1198, %1197, %1192, %1191, %1187, %1186, %1181, %1180, %1176, %1175, %1170, %1169, %1165, %1164, %1159, %1158, %1154, %1149, %1148, %1144, %1135, %1134, %1132, %1122, %1078, %1059, %1030, %989, %960, %919, %890, %823, %790, %756, %723, %690, %657, %624, %591, %573, %569, %564, %560, %546, %544, %537, %528, %526, %524, %523, %519, %517, %516, %511, %505, %500, %494, %489, %472, %466, %460, %454, %447, %441, %435, %429, %404, %402, %395, %386, %384, %382, %381, %377, %375, %374, %369, %362, %360, %353, %344, %342, %340, %339, %335, %329, %321, %315, %306, %289, %283, %280, %279, %278, %271, %268, %266, %258, %254, %252, %240, %238, %235, %125
  %232 = landingpad { ptr, i32 }
          cleanup
  %233 = extractvalue { ptr, i32 } %232, 0
  store ptr %233, ptr %6, align 8
  %234 = extractvalue { ptr, i32 } %232, 1
  store i32 %234, ptr %7, align 4
  br label %1465

235:                                              ; preds = %122
  %236 = invoke noundef zeroext i1 @_ZN3Int7IsLowerEPS_(ptr noundef nonnull align 8 dereferenceable(40) @n_range_start, ptr noundef @n_range_end)
          to label %237 unwind label %231

237:                                              ; preds = %235
  br i1 %236, label %238, label %244

238:                                              ; preds = %237
  %239 = call i32 @pthread_mutex_lock(ptr noundef @write_random) #9
  invoke void @_ZN3Int3SetEPS_(ptr noundef nonnull align 8 dereferenceable(40) %37, ptr noundef @n_range_start)
          to label %240 unwind label %231

240:                                              ; preds = %238
  %241 = load i64, ptr @N_SEQUENTIAL_MAX, align 8, !tbaa !15
  invoke void @_ZN3Int3AddEm(ptr noundef nonnull align 8 dereferenceable(40) @n_range_start, i64 noundef %241)
          to label %242 unwind label %231

242:                                              ; preds = %240
  %243 = call i32 @pthread_mutex_unlock(ptr noundef @write_random) #9
  br label %245

244:                                              ; preds = %237
  store i32 0, ptr %31, align 4, !tbaa !9
  br label %245

245:                                              ; preds = %244, %242
  br label %246

246:                                              ; preds = %245, %126
  %247 = load i32, ptr %31, align 4, !tbaa !9
  %248 = icmp ne i32 %247, 0
  br i1 %248, label %249, label %1454

249:                                              ; preds = %246
  store i64 0, ptr %26, align 8, !tbaa !15
  %250 = load i32, ptr @FLAGMATRIX, align 4, !tbaa !9
  %251 = icmp ne i32 %250, 0
  br i1 %251, label %252, label %263

252:                                              ; preds = %249
  %253 = invoke noundef ptr @_ZN3Int9GetBase16Ev(ptr noundef nonnull align 8 dereferenceable(40) %37)
          to label %254 unwind label %231

254:                                              ; preds = %252
  store ptr %253, ptr %33, align 8, !tbaa !5
  %255 = load ptr, ptr %33, align 8, !tbaa !5
  %256 = load i32, ptr %30, align 4, !tbaa !9
  %257 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.233, ptr noundef %255, i32 noundef %256)
          to label %258 unwind label %231

258:                                              ; preds = %254
  %259 = load ptr, ptr @stdout, align 8, !tbaa !5
  %260 = invoke i32 @fflush(ptr noundef %259)
          to label %261 unwind label %231

261:                                              ; preds = %258
  %262 = load ptr, ptr %33, align 8, !tbaa !5
  call void @free(ptr noundef %262) #9
  br label %277

263:                                              ; preds = %249
  %264 = load i32, ptr @FLAGQUIET, align 4, !tbaa !9
  %265 = icmp eq i32 %264, 0
  br i1 %265, label %266, label %276

266:                                              ; preds = %263
  %267 = invoke noundef ptr @_ZN3Int9GetBase16Ev(ptr noundef nonnull align 8 dereferenceable(40) %37)
          to label %268 unwind label %231

268:                                              ; preds = %266
  store ptr %267, ptr %33, align 8, !tbaa !5
  %269 = load ptr, ptr %33, align 8, !tbaa !5
  %270 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.234, ptr noundef %269)
          to label %271 unwind label %231

271:                                              ; preds = %268
  %272 = load ptr, ptr @stdout, align 8, !tbaa !5
  %273 = invoke i32 @fflush(ptr noundef %272)
          to label %274 unwind label %231

274:                                              ; preds = %271
  %275 = load ptr, ptr %33, align 8, !tbaa !5
  call void @free(ptr noundef %275) #9
  store i32 1, ptr @THREADOUTPUT, align 4, !tbaa !9
  br label %276

276:                                              ; preds = %274, %263
  br label %277

277:                                              ; preds = %276, %261
  br label %278

278:                                              ; preds = %1451, %277
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(40) %38, i32 noundef 512)
          to label %279 unwind label %231

279:                                              ; preds = %278
  invoke void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(40) %38, ptr noundef @stride)
          to label %280 unwind label %231

280:                                              ; preds = %279
  invoke void @_ZN3Int3AddEPS_(ptr noundef nonnull align 8 dereferenceable(40) %37, ptr noundef %38)
          to label %281 unwind label %231

281:                                              ; preds = %280
  call void @llvm.lifetime.start.p0(i64 120, ptr %41) #9
  %282 = 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(983240) %282, ptr noundef %37)
          to label %283 unwind label %302

283:                                              ; preds = %281
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %13, ptr align 8 %41, i64 120, i1 false), !tbaa.struct !17
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %41) #9
  call void @llvm.lifetime.end.p0(i64 120, ptr %41) #9
  invoke void @_ZN3Int3SubEPS_(ptr noundef nonnull align 8 dereferenceable(40) %37, ptr noundef %38)
          to label %284 unwind label %231

284:                                              ; preds = %283
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %285

285:                                              ; preds = %299, %284
  %286 = load i32, ptr %23, align 4, !tbaa !9
  %287 = load i32, ptr %24, align 4, !tbaa !9
  %288 = icmp slt i32 %286, %287
  br i1 %288, label %289, label %306

289:                                              ; preds = %285
  %290 = load i32, ptr %23, align 4, !tbaa !9
  %291 = sext i32 %290 to i64
  %292 = getelementptr inbounds [513 x %class.Int], ptr %11, i64 0, i64 %291
  %293 = load i32, ptr %23, align 4, !tbaa !9
  %294 = sext i32 %293 to i64
  %295 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %294) #9
  %296 = getelementptr inbounds %class.Point, ptr %295, i32 0, i32 0
  %297 = getelementptr inbounds %class.Point, ptr %13, i32 0, i32 0
  invoke void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %292, ptr noundef %296, ptr noundef %297)
          to label %298 unwind label %231

298:                                              ; preds = %289
  br label %299

299:                                              ; preds = %298
  %300 = load i32, ptr %23, align 4, !tbaa !9
  %301 = add nsw i32 %300, 1
  store i32 %301, ptr %23, align 4, !tbaa !9
  br label %285, !llvm.loop !19

302:                                              ; preds = %281
  %303 = landingpad { ptr, i32 }
          cleanup
  %304 = extractvalue { ptr, i32 } %303, 0
  store ptr %304, ptr %6, align 8
  %305 = extractvalue { ptr, i32 } %303, 1
  store i32 %305, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 120, ptr %41) #9
  br label %1465

306:                                              ; preds = %285
  %307 = load i32, ptr %23, align 4, !tbaa !9
  %308 = sext i32 %307 to i64
  %309 = getelementptr inbounds [513 x %class.Int], ptr %11, i64 0, i64 %308
  %310 = load i32, ptr %23, align 4, !tbaa !9
  %311 = sext i32 %310 to i64
  %312 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %311) #9
  %313 = getelementptr inbounds %class.Point, ptr %312, i32 0, i32 0
  %314 = getelementptr inbounds %class.Point, ptr %13, i32 0, i32 0
  invoke void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %309, ptr noundef %313, ptr noundef %314)
          to label %315 unwind label %231

315:                                              ; preds = %306
  %316 = load i32, ptr %23, align 4, !tbaa !9
  %317 = add nsw i32 %316, 1
  %318 = sext i32 %317 to i64
  %319 = getelementptr inbounds [513 x %class.Int], ptr %11, i64 0, i64 %318
  %320 = getelementptr inbounds %class.Point, ptr %13, i32 0, i32 0
  invoke void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %319, ptr noundef @_2Gn, ptr noundef %320)
          to label %321 unwind label %231

321:                                              ; preds = %315
  %322 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN8IntGroup6ModInvEv(ptr noundef nonnull align 8 dereferenceable(20) %322)
          to label %323 unwind label %231

323:                                              ; preds = %321
  %324 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 512
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %324, ptr align 8 %13, i64 120, i1 false), !tbaa.struct !17
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %325

325:                                              ; preds = %480, %323
  %326 = load i32, ptr %23, align 4, !tbaa !9
  %327 = load i32, ptr %24, align 4, !tbaa !9
  %328 = icmp slt i32 %326, %327
  br i1 %328, label %329, label %483

329:                                              ; preds = %325
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %18, ptr align 8 %13, i64 120, i1 false), !tbaa.struct !17
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %19, ptr align 8 %13, i64 120, i1 false), !tbaa.struct !17
  %330 = load i32, ptr %23, align 4, !tbaa !9
  %331 = sext i32 %330 to i64
  %332 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %331) #9
  %333 = getelementptr inbounds %class.Point, ptr %332, i32 0, i32 1
  %334 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 1
  invoke void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef %333, ptr noundef %334)
          to label %335 unwind label %231

335:                                              ; preds = %329
  %336 = load i32, ptr %23, align 4, !tbaa !9
  %337 = sext i32 %336 to i64
  %338 = getelementptr inbounds [513 x %class.Int], ptr %11, i64 0, i64 %337
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %16, ptr noundef %14, ptr noundef %338)
          to label %339 unwind label %231

339:                                              ; preds = %335
  invoke void @_ZN3Int11ModSquareK1EPS_(ptr noundef nonnull align 8 dereferenceable(40) %17, ptr noundef %16)
          to label %340 unwind label %231

340:                                              ; preds = %339
  %341 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 0
  invoke void @_ZN3Int6ModNegEv(ptr noundef nonnull align 8 dereferenceable(40) %341)
          to label %342 unwind label %231

342:                                              ; preds = %340
  %343 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 0
  invoke void @_ZN3Int6ModAddEPS_(ptr noundef nonnull align 8 dereferenceable(40) %343, ptr noundef %17)
          to label %344 unwind label %231

344:                                              ; preds = %342
  %345 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 0
  %346 = load i32, ptr %23, align 4, !tbaa !9
  %347 = sext i32 %346 to i64
  %348 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %347) #9
  %349 = getelementptr inbounds %class.Point, ptr %348, i32 0, i32 0
  invoke void @_ZN3Int6ModSubEPS_(ptr noundef nonnull align 8 dereferenceable(40) %345, ptr noundef %349)
          to label %350 unwind label %231

350:                                              ; preds = %344
  %351 = load i8, ptr %40, align 1, !tbaa !13, !range !21, !noundef !22
  %352 = trunc i8 %351 to i1
  br i1 %352, label %353, label %369

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

360:                                              ; preds = %353
  %361 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 1
  invoke void @_ZN3Int8ModMulK1EPS_(ptr noundef nonnull align 8 dereferenceable(40) %361, ptr noundef %16)
          to label %362 unwind label %231

362:                                              ; preds = %360
  %363 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 1
  %364 = load i32, ptr %23, align 4, !tbaa !9
  %365 = sext i32 %364 to i64
  %366 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %365) #9
  %367 = getelementptr inbounds %class.Point, ptr %366, i32 0, i32 1
  invoke void @_ZN3Int6ModSubEPS_(ptr noundef nonnull align 8 dereferenceable(40) %363, ptr noundef %367)
          to label %368 unwind label %231

368:                                              ; preds = %362
  br label %369

369:                                              ; preds = %368, %350
  %370 = load i32, ptr %23, align 4, !tbaa !9
  %371 = sext i32 %370 to i64
  %372 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %371) #9
  %373 = getelementptr inbounds %class.Point, ptr %372, i32 0, i32 1
  invoke void @_ZN3Int3SetEPS_(ptr noundef nonnull align 8 dereferenceable(40) %15, ptr noundef %373)
          to label %374 unwind label %231

374:                                              ; preds = %369
  invoke void @_ZN3Int6ModNegEv(ptr noundef nonnull align 8 dereferenceable(40) %15)
          to label %375 unwind label %231

375:                                              ; preds = %374
  %376 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 1
  invoke void @_ZN3Int6ModSubEPS_(ptr noundef nonnull align 8 dereferenceable(40) %15, ptr noundef %376)
          to label %377 unwind label %231

377:                                              ; preds = %375
  %378 = load i32, ptr %23, align 4, !tbaa !9
  %379 = sext i32 %378 to i64
  %380 = getelementptr inbounds [513 x %class.Int], ptr %11, i64 0, i64 %379
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %16, ptr noundef %15, ptr noundef %380)
          to label %381 unwind label %231

381:                                              ; preds = %377
  invoke void @_ZN3Int11ModSquareK1EPS_(ptr noundef nonnull align 8 dereferenceable(40) %17, ptr noundef %16)
          to label %382 unwind label %231

382:                                              ; preds = %381
  %383 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 0
  invoke void @_ZN3Int6ModNegEv(ptr noundef nonnull align 8 dereferenceable(40) %383)
          to label %384 unwind label %231

384:                                              ; preds = %382
  %385 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 0
  invoke void @_ZN3Int6ModAddEPS_(ptr noundef nonnull align 8 dereferenceable(40) %385, ptr noundef %17)
          to label %386 unwind label %231

386:                                              ; preds = %384
  %387 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 0
  %388 = load i32, ptr %23, align 4, !tbaa !9
  %389 = sext i32 %388 to i64
  %390 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %389) #9
  %391 = getelementptr inbounds %class.Point, ptr %390, i32 0, i32 0
  invoke void @_ZN3Int6ModSubEPS_(ptr noundef nonnull align 8 dereferenceable(40) %387, ptr noundef %391)
          to label %392 unwind label %231

392:                                              ; preds = %386
  %393 = load i8, ptr %40, align 1, !tbaa !13, !range !21, !noundef !22
  %394 = trunc i8 %393 to i1
  br i1 %394, label %395, label %411

395:                                              ; preds = %392
  %396 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 1
  %397 = load i32, ptr %23, align 4, !tbaa !9
  %398 = sext i32 %397 to i64
  %399 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %398) #9
  %400 = getelementptr inbounds %class.Point, ptr %399, i32 0, i32 0
  %401 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 0
  invoke void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %396, ptr noundef %400, ptr noundef %401)
          to label %402 unwind label %231

402:                                              ; preds = %395
  %403 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 1
  invoke void @_ZN3Int8ModMulK1EPS_(ptr noundef nonnull align 8 dereferenceable(40) %403, ptr noundef %16)
          to label %404 unwind label %231

404:                                              ; preds = %402
  %405 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 1
  %406 = load i32, ptr %23, align 4, !tbaa !9
  %407 = sext i32 %406 to i64
  %408 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %407) #9
  %409 = getelementptr inbounds %class.Point, ptr %408, i32 0, i32 1
  invoke void @_ZN3Int6ModAddEPS_(ptr noundef nonnull align 8 dereferenceable(40) %405, ptr noundef %409)
          to label %410 unwind label %231

410:                                              ; preds = %404
  br label %411

411:                                              ; preds = %410, %392
  %412 = load i32, ptr %23, align 4, !tbaa !9
  %413 = add nsw i32 %412, 1
  %414 = add nsw i32 512, %413
  store i32 %414, ptr %21, align 4, !tbaa !9
  %415 = load i32, ptr %23, align 4, !tbaa !9
  %416 = add nsw i32 %415, 1
  %417 = sub nsw i32 512, %416
  store i32 %417, ptr %22, align 4, !tbaa !9
  %418 = load i32, ptr %21, align 4, !tbaa !9
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %419
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %420, ptr align 8 %18, i64 120, i1 false), !tbaa.struct !17
  %421 = load i32, ptr %22, align 4, !tbaa !9
  %422 = sext i32 %421 to i64
  %423 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %422
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %423, ptr align 8 %19, i64 120, i1 false), !tbaa.struct !17
  %424 = load i32, ptr @FLAGENDOMORPHISM, align 4, !tbaa !9
  %425 = icmp ne i32 %424, 0
  br i1 %425, label %426, label %479

426:                                              ; preds = %411
  %427 = load i8, ptr %40, align 1, !tbaa !13, !range !21, !noundef !22
  %428 = trunc i8 %427 to i1
  br i1 %428, label %429, label %454

429:                                              ; preds = %426
  %430 = load i32, ptr %21, align 4, !tbaa !9
  %431 = sext i32 %430 to i64
  %432 = getelementptr inbounds [1024 x %class.Point], ptr %8, i64 0, i64 %431
  %433 = getelementptr inbounds %class.Point, ptr %432, i32 0, i32 1
  %434 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 1
  invoke void @_ZN3Int3SetEPS_(ptr noundef nonnull align 8 dereferenceable(40) %433, ptr noundef %434)
          to label %435 unwind label %231

435:                                              ; preds = %429
  %436 = load i32, ptr %22, align 4, !tbaa !9
  %437 = sext i32 %436 to i64
  %438 = getelementptr inbounds [1024 x %class.Point], ptr %8, i64 0, i64 %437
  %439 = getelementptr inbounds %class.Point, ptr %438, i32 0, i32 1
  %440 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 1
  invoke void @_ZN3Int3SetEPS_(ptr noundef nonnull align 8 dereferenceable(40) %439, ptr noundef %440)
          to label %441 unwind label %231

441:                                              ; preds = %435
  %442 = load i32, ptr %21, align 4, !tbaa !9
  %443 = sext i32 %442 to i64
  %444 = getelementptr inbounds [1024 x %class.Point], ptr %9, i64 0, i64 %443
  %445 = getelementptr inbounds %class.Point, ptr %444, i32 0, i32 1
  %446 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 1
  invoke void @_ZN3Int3SetEPS_(ptr noundef nonnull align 8 dereferenceable(40) %445, ptr noundef %446)
          to label %447 unwind label %231

447:                                              ; preds = %441
  %448 = load i32, ptr %22, align 4, !tbaa !9
  %449 = sext i32 %448 to i64
  %450 = getelementptr inbounds [1024 x %class.Point], ptr %9, i64 0, i64 %449
  %451 = getelementptr inbounds %class.Point, ptr %450, i32 0, i32 1
  %452 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 1
  invoke void @_ZN3Int3SetEPS_(ptr noundef nonnull align 8 dereferenceable(40) %451, ptr noundef %452)
          to label %453 unwind label %231

453:                                              ; preds = %447
  br label %454

454:                                              ; preds = %453, %426
  %455 = load i32, ptr %21, align 4, !tbaa !9
  %456 = sext i32 %455 to i64
  %457 = getelementptr inbounds [1024 x %class.Point], ptr %8, i64 0, i64 %456
  %458 = getelementptr inbounds %class.Point, ptr %457, i32 0, i32 0
  %459 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 0
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %458, ptr noundef %459, ptr noundef @beta)
          to label %460 unwind label %231

460:                                              ; preds = %454
  %461 = load i32, ptr %22, align 4, !tbaa !9
  %462 = sext i32 %461 to i64
  %463 = getelementptr inbounds [1024 x %class.Point], ptr %8, i64 0, i64 %462
  %464 = getelementptr inbounds %class.Point, ptr %463, i32 0, i32 0
  %465 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 0
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %464, ptr noundef %465, ptr noundef @beta)
          to label %466 unwind label %231

466:                                              ; preds = %460
  %467 = load i32, ptr %21, align 4, !tbaa !9
  %468 = sext i32 %467 to i64
  %469 = getelementptr inbounds [1024 x %class.Point], ptr %9, i64 0, i64 %468
  %470 = getelementptr inbounds %class.Point, ptr %469, i32 0, i32 0
  %471 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 0
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %470, ptr noundef %471, ptr noundef @beta2)
          to label %472 unwind label %231

472:                                              ; preds = %466
  %473 = load i32, ptr %22, align 4, !tbaa !9
  %474 = sext i32 %473 to i64
  %475 = getelementptr inbounds [1024 x %class.Point], ptr %9, i64 0, i64 %474
  %476 = getelementptr inbounds %class.Point, ptr %475, i32 0, i32 0
  %477 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 0
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %476, ptr noundef %477, ptr noundef @beta2)
          to label %478 unwind label %231

478:                                              ; preds = %472
  br label %479

479:                                              ; preds = %478, %411
  br label %480

480:                                              ; preds = %479
  %481 = load i32, ptr %23, align 4, !tbaa !9
  %482 = add nsw i32 %481, 1
  store i32 %482, ptr %23, align 4, !tbaa !9
  br label %325, !llvm.loop !23

483:                                              ; preds = %325
  %484 = load i32, ptr @FLAGENDOMORPHISM, align 4, !tbaa !9
  %485 = icmp ne i32 %484, 0
  br i1 %485, label %486, label %511

486:                                              ; preds = %483
  %487 = load i8, ptr %40, align 1, !tbaa !13, !range !21, !noundef !22
  %488 = trunc i8 %487 to i1
  br i1 %488, label %489, label %500

489:                                              ; preds = %486
  %490 = getelementptr inbounds [1024 x %class.Point], ptr %8, i64 0, i64 512
  %491 = getelementptr inbounds %class.Point, ptr %490, i32 0, i32 1
  %492 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 512
  %493 = getelementptr inbounds %class.Point, ptr %492, i32 0, i32 1
  invoke void @_ZN3Int3SetEPS_(ptr noundef nonnull align 8 dereferenceable(40) %491, ptr noundef %493)
          to label %494 unwind label %231

494:                                              ; preds = %489
  %495 = getelementptr inbounds [1024 x %class.Point], ptr %9, i64 0, i64 512
  %496 = getelementptr inbounds %class.Point, ptr %495, i32 0, i32 1
  %497 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 512
  %498 = getelementptr inbounds %class.Point, ptr %497, i32 0, i32 1
  invoke void @_ZN3Int3SetEPS_(ptr noundef nonnull align 8 dereferenceable(40) %496, ptr noundef %498)
          to label %499 unwind label %231

499:                                              ; preds = %494
  br label %500

500:                                              ; preds = %499, %486
  %501 = getelementptr inbounds [1024 x %class.Point], ptr %8, i64 0, i64 512
  %502 = getelementptr inbounds %class.Point, ptr %501, i32 0, i32 0
  %503 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 512
  %504 = getelementptr inbounds %class.Point, ptr %503, i32 0, i32 0
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %502, ptr noundef %504, ptr noundef @beta)
          to label %505 unwind label %231

505:                                              ; preds = %500
  %506 = getelementptr inbounds [1024 x %class.Point], ptr %9, i64 0, i64 512
  %507 = getelementptr inbounds %class.Point, ptr %506, i32 0, i32 0
  %508 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 512
  %509 = getelementptr inbounds %class.Point, ptr %508, i32 0, i32 0
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %507, ptr noundef %509, ptr noundef @beta2)
          to label %510 unwind label %231

510:                                              ; preds = %505
  br label %511

511:                                              ; preds = %510, %483
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %19, ptr align 8 %13, i64 120, i1 false), !tbaa.struct !17
  %512 = load i32, ptr %23, align 4, !tbaa !9
  %513 = sext i32 %512 to i64
  %514 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %513) #9
  %515 = getelementptr inbounds %class.Point, ptr %514, i32 0, i32 1
  invoke void @_ZN3Int3SetEPS_(ptr noundef nonnull align 8 dereferenceable(40) %15, ptr noundef %515)
          to label %516 unwind label %231

516:                                              ; preds = %511
  invoke void @_ZN3Int6ModNegEv(ptr noundef nonnull align 8 dereferenceable(40) %15)
          to label %517 unwind label %231

517:                                              ; preds = %516
  %518 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 1
  invoke void @_ZN3Int6ModSubEPS_(ptr noundef nonnull align 8 dereferenceable(40) %15, ptr noundef %518)
          to label %519 unwind label %231

519:                                              ; preds = %517
  %520 = load i32, ptr %23, align 4, !tbaa !9
  %521 = sext i32 %520 to i64
  %522 = getelementptr inbounds [513 x %class.Int], ptr %11, i64 0, i64 %521
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %16, ptr noundef %15, ptr noundef %522)
          to label %523 unwind label %231

523:                                              ; preds = %519
  invoke void @_ZN3Int11ModSquareK1EPS_(ptr noundef nonnull align 8 dereferenceable(40) %17, ptr noundef %16)
          to label %524 unwind label %231

524:                                              ; preds = %523
  %525 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 0
  invoke void @_ZN3Int6ModNegEv(ptr noundef nonnull align 8 dereferenceable(40) %525)
          to label %526 unwind label %231

526:                                              ; preds = %524
  %527 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 0
  invoke void @_ZN3Int6ModAddEPS_(ptr noundef nonnull align 8 dereferenceable(40) %527, ptr noundef %17)
          to label %528 unwind label %231

528:                                              ; preds = %526
  %529 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 0
  %530 = load i32, ptr %23, align 4, !tbaa !9
  %531 = sext i32 %530 to i64
  %532 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %531) #9
  %533 = getelementptr inbounds %class.Point, ptr %532, i32 0, i32 0
  invoke void @_ZN3Int6ModSubEPS_(ptr noundef nonnull align 8 dereferenceable(40) %529, ptr noundef %533)
          to label %534 unwind label %231

534:                                              ; preds = %528
  %535 = load i8, ptr %40, align 1, !tbaa !13, !range !21, !noundef !22
  %536 = trunc i8 %535 to i1
  br i1 %536, label %537, label %553

537:                                              ; preds = %534
  %538 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 1
  %539 = load i32, ptr %23, align 4, !tbaa !9
  %540 = sext i32 %539 to i64
  %541 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %540) #9
  %542 = getelementptr inbounds %class.Point, ptr %541, i32 0, i32 0
  %543 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 0
  invoke void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %538, ptr noundef %542, ptr noundef %543)
          to label %544 unwind label %231

544:                                              ; preds = %537
  %545 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 1
  invoke void @_ZN3Int8ModMulK1EPS_(ptr noundef nonnull align 8 dereferenceable(40) %545, ptr noundef %16)
          to label %546 unwind label %231

546:                                              ; preds = %544
  %547 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 1
  %548 = load i32, ptr %23, align 4, !tbaa !9
  %549 = sext i32 %548 to i64
  %550 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %549) #9
  %551 = getelementptr inbounds %class.Point, ptr %550, i32 0, i32 1
  invoke void @_ZN3Int6ModAddEPS_(ptr noundef nonnull align 8 dereferenceable(40) %547, ptr noundef %551)
          to label %552 unwind label %231

552:                                              ; preds = %546
  br label %553

553:                                              ; preds = %552, %534
  %554 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %554, ptr align 8 %19, i64 120, i1 false), !tbaa.struct !17
  %555 = load i32, ptr @FLAGENDOMORPHISM, align 4, !tbaa !9
  %556 = icmp ne i32 %555, 0
  br i1 %556, label %557, label %578

557:                                              ; preds = %553
  %558 = load i8, ptr %40, align 1, !tbaa !13, !range !21, !noundef !22
  %559 = trunc i8 %558 to i1
  br i1 %559, label %560, label %569

560:                                              ; preds = %557
  %561 = getelementptr inbounds [1024 x %class.Point], ptr %8, i64 0, i64 0
  %562 = getelementptr inbounds %class.Point, ptr %561, i32 0, i32 1
  %563 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 1
  invoke void @_ZN3Int3SetEPS_(ptr noundef nonnull align 8 dereferenceable(40) %562, ptr noundef %563)
          to label %564 unwind label %231

564:                                              ; preds = %560
  %565 = getelementptr inbounds [1024 x %class.Point], ptr %9, i64 0, i64 0
  %566 = getelementptr inbounds %class.Point, ptr %565, i32 0, i32 1
  %567 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 1
  invoke void @_ZN3Int3SetEPS_(ptr noundef nonnull align 8 dereferenceable(40) %566, ptr noundef %567)
          to label %568 unwind label %231

568:                                              ; preds = %564
  br label %569

569:                                              ; preds = %568, %557
  %570 = getelementptr inbounds [1024 x %class.Point], ptr %8, i64 0, i64 0
  %571 = getelementptr inbounds %class.Point, ptr %570, i32 0, i32 0
  %572 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 0
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %571, ptr noundef %572, ptr noundef @beta)
          to label %573 unwind label %231

573:                                              ; preds = %569
  %574 = getelementptr inbounds [1024 x %class.Point], ptr %9, i64 0, i64 0
  %575 = getelementptr inbounds %class.Point, ptr %574, i32 0, i32 0
  %576 = getelementptr inbounds %class.Point, ptr %19, i32 0, i32 0
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %575, ptr noundef %576, ptr noundef @beta2)
          to label %577 unwind label %231

577:                                              ; preds = %573
  br label %578

578:                                              ; preds = %577, %553
  store i64 0, ptr %25, align 8, !tbaa !15
  br label %579

579:                                              ; preds = %1413, %578
  %580 = load i64, ptr %25, align 8, !tbaa !15
  %581 = icmp ult i64 %580, 256
  br i1 %581, label %582, label %1416

582:                                              ; preds = %579
  %583 = load i32, ptr @FLAGSEARCH, align 4, !tbaa !9
  %584 = icmp eq i32 %583, 1
  br i1 %584, label %588, label %585

585:                                              ; preds = %582
  %586 = load i32, ptr @FLAGSEARCH, align 4, !tbaa !9
  %587 = icmp eq i32 %586, 2
  br i1 %587, label %588, label %858

588:                                              ; preds = %585, %582
  %589 = load i32, ptr @FLAGENDOMORPHISM, align 4, !tbaa !9
  %590 = icmp ne i32 %589, 0
  br i1 %590, label %591, label %790

591:                                              ; preds = %588
  %592 = load ptr, ptr @secp, align 8, !tbaa !5
  %593 = load i64, ptr %25, align 8, !tbaa !15
  %594 = mul i64 %593, 4
  %595 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %594
  %596 = getelementptr inbounds %class.Point, ptr %595, i32 0, i32 0
  %597 = load i64, ptr %25, align 8, !tbaa !15
  %598 = mul i64 %597, 4
  %599 = add i64 %598, 1
  %600 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %599
  %601 = getelementptr inbounds %class.Point, ptr %600, i32 0, i32 0
  %602 = load i64, ptr %25, align 8, !tbaa !15
  %603 = mul i64 %602, 4
  %604 = add i64 %603, 2
  %605 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %604
  %606 = getelementptr inbounds %class.Point, ptr %605, i32 0, i32 0
  %607 = load i64, ptr %25, align 8, !tbaa !15
  %608 = mul i64 %607, 4
  %609 = add i64 %608, 3
  %610 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %609
  %611 = getelementptr inbounds %class.Point, ptr %610, i32 0, i32 0
  %612 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 0
  %613 = getelementptr inbounds [4 x [20 x i8]], ptr %612, i64 0, i64 0
  %614 = getelementptr inbounds [20 x i8], ptr %613, i64 0, i64 0
  %615 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 0
  %616 = getelementptr inbounds [4 x [20 x i8]], ptr %615, i64 0, i64 1
  %617 = getelementptr inbounds [20 x i8], ptr %616, i64 0, i64 0
  %618 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 0
  %619 = getelementptr inbounds [4 x [20 x i8]], ptr %618, i64 0, i64 2
  %620 = getelementptr inbounds [20 x i8], ptr %619, i64 0, i64 0
  %621 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 0
  %622 = getelementptr inbounds [4 x [20 x i8]], ptr %621, i64 0, i64 3
  %623 = getelementptr inbounds [20 x i8], ptr %622, i64 0, i64 0
  invoke void @_ZN9Secp256K116GetHash160_fromXEihP3IntS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(983240) %592, i32 noundef 0, i8 noundef zeroext 2, ptr noundef %596, ptr noundef %601, ptr noundef %606, ptr noundef %611, ptr noundef %614, ptr noundef %617, ptr noundef %620, ptr noundef %623)
          to label %624 unwind label %231

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

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

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

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

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

789:                                              ; preds = %756
  br label %857

790:                                              ; preds = %588
  %791 = load ptr, ptr @secp, align 8, !tbaa !5
  %792 = load i64, ptr %25, align 8, !tbaa !15
  %793 = mul i64 %792, 4
  %794 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %793
  %795 = getelementptr inbounds %class.Point, ptr %794, i32 0, i32 0
  %796 = load i64, ptr %25, align 8, !tbaa !15
  %797 = mul i64 %796, 4
  %798 = add i64 %797, 1
  %799 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %798
  %800 = getelementptr inbounds %class.Point, ptr %799, i32 0, i32 0
  %801 = load i64, ptr %25, align 8, !tbaa !15
  %802 = mul i64 %801, 4
  %803 = add i64 %802, 2
  %804 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %803
  %805 = getelementptr inbounds %class.Point, ptr %804, i32 0, i32 0
  %806 = load i64, ptr %25, align 8, !tbaa !15
  %807 = mul i64 %806, 4
  %808 = add i64 %807, 3
  %809 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %808
  %810 = getelementptr inbounds %class.Point, ptr %809, i32 0, i32 0
  %811 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 0
  %812 = getelementptr inbounds [4 x [20 x i8]], ptr %811, i64 0, i64 0
  %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 0
  %815 = getelementptr inbounds [4 x [20 x i8]], ptr %814, i64 0, i64 1
  %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 0
  %818 = getelementptr inbounds [4 x [20 x i8]], ptr %817, i64 0, i64 2
  %819 = getelementptr inbounds [20 x i8], ptr %818, i64 0, i64 0
  %820 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 0
  %821 = getelementptr inbounds [4 x [20 x i8]], ptr %820, i64 0, i64 3
  %822 = getelementptr inbounds [20 x i8], ptr %821, i64 0, i64 0
  invoke void @_ZN9Secp256K116GetHash160_fromXEihP3IntS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(983240) %791, i32 noundef 0, i8 noundef zeroext 2, ptr noundef %795, ptr noundef %800, ptr noundef %805, ptr noundef %810, ptr noundef %813, ptr noundef %816, ptr noundef %819, ptr noundef %822)
          to label %823 unwind label %231

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

856:                                              ; preds = %823
  br label %857

857:                                              ; preds = %856, %789
  br label %858

858:                                              ; preds = %857, %585
  %859 = load i32, ptr @FLAGSEARCH, align 4, !tbaa !9
  %860 = icmp eq i32 %859, 0
  br i1 %860, label %864, label %861

861:                                              ; preds = %858
  %862 = load i32, ptr @FLAGSEARCH, align 4, !tbaa !9
  %863 = icmp eq i32 %862, 2
  br i1 %863, label %864, label %1105

864:                                              ; preds = %861, %858
  %865 = load i32, ptr @FLAGENDOMORPHISM, align 4, !tbaa !9
  %866 = icmp ne i32 %865, 0
  br i1 %866, label %867, label %1078

867:                                              ; preds = %864
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %868

868:                                              ; preds = %883, %867
  %869 = load i32, ptr %20, align 4, !tbaa !9
  %870 = icmp slt i32 %869, 4
  br i1 %870, label %871, label %890

871:                                              ; preds = %868
  call void @llvm.lifetime.start.p0(i64 120, ptr %42) #9
  %872 = load ptr, ptr @secp, align 8, !tbaa !5
  %873 = load i64, ptr %25, align 8, !tbaa !15
  %874 = mul i64 %873, 4
  %875 = load i32, ptr %20, align 4, !tbaa !9
  %876 = sext i32 %875 to i64
  %877 = add i64 %874, %876
  %878 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %877
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind writable sret(%class.Point) align 8 %42, ptr noundef nonnull align 8 dereferenceable(983240) %872, ptr noundef nonnull align 8 dereferenceable(120) %878)
          to label %879 unwind label %886

879:                                              ; preds = %871
  %880 = load i32, ptr %20, align 4, !tbaa !9
  %881 = sext i32 %880 to i64
  %882 = getelementptr inbounds [4 x %class.Point], ptr %10, i64 0, i64 %881
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %882, ptr align 8 %42, i64 120, i1 false), !tbaa.struct !17
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %42) #9
  call void @llvm.lifetime.end.p0(i64 120, ptr %42) #9
  br label %883

883:                                              ; preds = %879
  %884 = load i32, ptr %20, align 4, !tbaa !9
  %885 = add nsw i32 %884, 1
  store i32 %885, ptr %20, align 4, !tbaa !9
  br label %868, !llvm.loop !24

886:                                              ; preds = %871
  %887 = landingpad { ptr, i32 }
          cleanup
  %888 = extractvalue { ptr, i32 } %887, 0
  store ptr %888, ptr %6, align 8
  %889 = extractvalue { ptr, i32 } %887, 1
  store i32 %889, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 120, ptr %42) #9
  br label %1465

890:                                              ; preds = %868
  %891 = load ptr, ptr @secp, align 8, !tbaa !5
  %892 = load i64, ptr %25, align 8, !tbaa !15
  %893 = mul i64 %892, 4
  %894 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %893
  %895 = load i64, ptr %25, align 8, !tbaa !15
  %896 = mul i64 %895, 4
  %897 = add i64 %896, 1
  %898 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %897
  %899 = load i64, ptr %25, align 8, !tbaa !15
  %900 = mul i64 %899, 4
  %901 = add i64 %900, 2
  %902 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %901
  %903 = load i64, ptr %25, align 8, !tbaa !15
  %904 = mul i64 %903, 4
  %905 = add i64 %904, 3
  %906 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %905
  %907 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 6
  %908 = getelementptr inbounds [4 x [20 x i8]], ptr %907, i64 0, i64 0
  %909 = getelementptr inbounds [20 x i8], ptr %908, i64 0, i64 0
  %910 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 6
  %911 = getelementptr inbounds [4 x [20 x i8]], ptr %910, i64 0, i64 1
  %912 = getelementptr inbounds [20 x i8], ptr %911, i64 0, i64 0
  %913 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 6
  %914 = getelementptr inbounds [4 x [20 x i8]], ptr %913, i64 0, i64 2
  %915 = getelementptr inbounds [20 x i8], ptr %914, i64 0, i64 0
  %916 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 6
  %917 = getelementptr inbounds [4 x [20 x i8]], ptr %916, i64 0, i64 3
  %918 = getelementptr inbounds [20 x i8], ptr %917, i64 0, i64 0
  invoke void @_ZN9Secp256K110GetHash160EibR5PointS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(983240) %891, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(120) %894, ptr noundef nonnull align 8 dereferenceable(120) %898, ptr noundef nonnull align 8 dereferenceable(120) %902, ptr noundef nonnull align 8 dereferenceable(120) %906, ptr noundef %909, ptr noundef %912, ptr noundef %915, ptr noundef %918)
          to label %919 unwind label %231

919:                                              ; preds = %890
  %920 = load ptr, ptr @secp, align 8, !tbaa !5
  %921 = getelementptr inbounds [4 x %class.Point], ptr %10, i64 0, i64 0
  %922 = getelementptr inbounds [4 x %class.Point], ptr %10, i64 0, i64 1
  %923 = getelementptr inbounds [4 x %class.Point], ptr %10, i64 0, i64 2
  %924 = getelementptr inbounds [4 x %class.Point], ptr %10, i64 0, i64 3
  %925 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 7
  %926 = getelementptr inbounds [4 x [20 x i8]], ptr %925, i64 0, i64 0
  %927 = getelementptr inbounds [20 x i8], ptr %926, i64 0, i64 0
  %928 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 7
  %929 = getelementptr inbounds [4 x [20 x i8]], ptr %928, i64 0, i64 1
  %930 = getelementptr inbounds [20 x i8], ptr %929, i64 0, i64 0
  %931 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 7
  %932 = getelementptr inbounds [4 x [20 x i8]], ptr %931, i64 0, i64 2
  %933 = getelementptr inbounds [20 x i8], ptr %932, i64 0, i64 0
  %934 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 7
  %935 = getelementptr inbounds [4 x [20 x i8]], ptr %934, i64 0, i64 3
  %936 = getelementptr inbounds [20 x i8], ptr %935, i64 0, i64 0
  invoke void @_ZN9Secp256K110GetHash160EibR5PointS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(983240) %920, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(120) %921, ptr noundef nonnull align 8 dereferenceable(120) %922, ptr noundef nonnull align 8 dereferenceable(120) %923, ptr noundef nonnull align 8 dereferenceable(120) %924, ptr noundef %927, ptr noundef %930, ptr noundef %933, ptr noundef %936)
          to label %937 unwind label %231

937:                                              ; preds = %919
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %938

938:                                              ; preds = %953, %937
  %939 = load i32, ptr %20, align 4, !tbaa !9
  %940 = icmp slt i32 %939, 4
  br i1 %940, label %941, label %960

941:                                              ; preds = %938
  call void @llvm.lifetime.start.p0(i64 120, ptr %43) #9
  %942 = load ptr, ptr @secp, align 8, !tbaa !5
  %943 = load i64, ptr %25, align 8, !tbaa !15
  %944 = mul i64 %943, 4
  %945 = load i32, ptr %20, align 4, !tbaa !9
  %946 = sext i32 %945 to i64
  %947 = add i64 %944, %946
  %948 = getelementptr inbounds [1024 x %class.Point], ptr %8, i64 0, i64 %947
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind writable sret(%class.Point) align 8 %43, ptr noundef nonnull align 8 dereferenceable(983240) %942, ptr noundef nonnull align 8 dereferenceable(120) %948)
          to label %949 unwind label %956

949:                                              ; preds = %941
  %950 = load i32, ptr %20, align 4, !tbaa !9
  %951 = sext i32 %950 to i64
  %952 = getelementptr inbounds [4 x %class.Point], ptr %10, i64 0, i64 %951
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %952, ptr align 8 %43, i64 120, i1 false), !tbaa.struct !17
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %43) #9
  call void @llvm.lifetime.end.p0(i64 120, ptr %43) #9
  br label %953

953:                                              ; preds = %949
  %954 = load i32, ptr %20, align 4, !tbaa !9
  %955 = add nsw i32 %954, 1
  store i32 %955, ptr %20, align 4, !tbaa !9
  br label %938, !llvm.loop !25

956:                                              ; preds = %941
  %957 = landingpad { ptr, i32 }
          cleanup
  %958 = extractvalue { ptr, i32 } %957, 0
  store ptr %958, ptr %6, align 8
  %959 = extractvalue { ptr, i32 } %957, 1
  store i32 %959, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 120, ptr %43) #9
  br label %1465

960:                                              ; preds = %938
  %961 = load ptr, ptr @secp, align 8, !tbaa !5
  %962 = load i64, ptr %25, align 8, !tbaa !15
  %963 = mul i64 %962, 4
  %964 = getelementptr inbounds [1024 x %class.Point], ptr %8, i64 0, i64 %963
  %965 = load i64, ptr %25, align 8, !tbaa !15
  %966 = mul i64 %965, 4
  %967 = add i64 %966, 1
  %968 = getelementptr inbounds [1024 x %class.Point], ptr %8, i64 0, i64 %967
  %969 = load i64, ptr %25, align 8, !tbaa !15
  %970 = mul i64 %969, 4
  %971 = add i64 %970, 2
  %972 = getelementptr inbounds [1024 x %class.Point], ptr %8, i64 0, i64 %971
  %973 = load i64, ptr %25, align 8, !tbaa !15
  %974 = mul i64 %973, 4
  %975 = add i64 %974, 3
  %976 = getelementptr inbounds [1024 x %class.Point], ptr %8, i64 0, i64 %975
  %977 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 8
  %978 = getelementptr inbounds [4 x [20 x i8]], ptr %977, i64 0, i64 0
  %979 = getelementptr inbounds [20 x i8], ptr %978, i64 0, i64 0
  %980 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 8
  %981 = getelementptr inbounds [4 x [20 x i8]], ptr %980, i64 0, i64 1
  %982 = getelementptr inbounds [20 x i8], ptr %981, i64 0, i64 0
  %983 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 8
  %984 = getelementptr inbounds [4 x [20 x i8]], ptr %983, i64 0, i64 2
  %985 = getelementptr inbounds [20 x i8], ptr %984, i64 0, i64 0
  %986 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 8
  %987 = getelementptr inbounds [4 x [20 x i8]], ptr %986, i64 0, i64 3
  %988 = getelementptr inbounds [20 x i8], ptr %987, i64 0, i64 0
  invoke void @_ZN9Secp256K110GetHash160EibR5PointS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(983240) %961, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(120) %964, ptr noundef nonnull align 8 dereferenceable(120) %968, ptr noundef nonnull align 8 dereferenceable(120) %972, ptr noundef nonnull align 8 dereferenceable(120) %976, ptr noundef %979, ptr noundef %982, ptr noundef %985, ptr noundef %988)
          to label %989 unwind label %231

989:                                              ; preds = %960
  %990 = load ptr, ptr @secp, align 8, !tbaa !5
  %991 = getelementptr inbounds [4 x %class.Point], ptr %10, i64 0, i64 0
  %992 = getelementptr inbounds [4 x %class.Point], ptr %10, i64 0, i64 1
  %993 = getelementptr inbounds [4 x %class.Point], ptr %10, i64 0, i64 2
  %994 = getelementptr inbounds [4 x %class.Point], ptr %10, i64 0, i64 3
  %995 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 9
  %996 = getelementptr inbounds [4 x [20 x i8]], ptr %995, i64 0, i64 0
  %997 = getelementptr inbounds [20 x i8], ptr %996, i64 0, i64 0
  %998 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 9
  %999 = getelementptr inbounds [4 x [20 x i8]], ptr %998, i64 0, i64 1
  %1000 = getelementptr inbounds [20 x i8], ptr %999, i64 0, i64 0
  %1001 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 9
  %1002 = getelementptr inbounds [4 x [20 x i8]], ptr %1001, i64 0, i64 2
  %1003 = getelementptr inbounds [20 x i8], ptr %1002, i64 0, i64 0
  %1004 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 9
  %1005 = getelementptr inbounds [4 x [20 x i8]], ptr %1004, i64 0, i64 3
  %1006 = getelementptr inbounds [20 x i8], ptr %1005, i64 0, i64 0
  invoke void @_ZN9Secp256K110GetHash160EibR5PointS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(983240) %990, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(120) %991, ptr noundef nonnull align 8 dereferenceable(120) %992, ptr noundef nonnull align 8 dereferenceable(120) %993, ptr noundef nonnull align 8 dereferenceable(120) %994, ptr noundef %997, ptr noundef %1000, ptr noundef %1003, ptr noundef %1006)
          to label %1007 unwind label %231

1007:                                             ; preds = %989
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %1008

1008:                                             ; preds = %1023, %1007
  %1009 = load i32, ptr %20, align 4, !tbaa !9
  %1010 = icmp slt i32 %1009, 4
  br i1 %1010, label %1011, label %1030

1011:                                             ; preds = %1008
  call void @llvm.lifetime.start.p0(i64 120, ptr %44) #9
  %1012 = load ptr, ptr @secp, align 8, !tbaa !5
  %1013 = load i64, ptr %25, align 8, !tbaa !15
  %1014 = mul i64 %1013, 4
  %1015 = load i32, ptr %20, align 4, !tbaa !9
  %1016 = sext i32 %1015 to i64
  %1017 = add i64 %1014, %1016
  %1018 = getelementptr inbounds [1024 x %class.Point], ptr %9, i64 0, i64 %1017
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind writable sret(%class.Point) align 8 %44, ptr noundef nonnull align 8 dereferenceable(983240) %1012, ptr noundef nonnull align 8 dereferenceable(120) %1018)
          to label %1019 unwind label %1026

1019:                                             ; preds = %1011
  %1020 = load i32, ptr %20, align 4, !tbaa !9
  %1021 = sext i32 %1020 to i64
  %1022 = getelementptr inbounds [4 x %class.Point], ptr %10, i64 0, i64 %1021
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1022, ptr align 8 %44, i64 120, i1 false), !tbaa.struct !17
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %44) #9
  call void @llvm.lifetime.end.p0(i64 120, ptr %44) #9
  br label %1023

1023:                                             ; preds = %1019
  %1024 = load i32, ptr %20, align 4, !tbaa !9
  %1025 = add nsw i32 %1024, 1
  store i32 %1025, ptr %20, align 4, !tbaa !9
  br label %1008, !llvm.loop !26

1026:                                             ; preds = %1011
  %1027 = landingpad { ptr, i32 }
          cleanup
  %1028 = extractvalue { ptr, i32 } %1027, 0
  store ptr %1028, ptr %6, align 8
  %1029 = extractvalue { ptr, i32 } %1027, 1
  store i32 %1029, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 120, ptr %44) #9
  br label %1465

1030:                                             ; preds = %1008
  %1031 = load ptr, ptr @secp, align 8, !tbaa !5
  %1032 = load i64, ptr %25, align 8, !tbaa !15
  %1033 = mul i64 %1032, 4
  %1034 = getelementptr inbounds [1024 x %class.Point], ptr %9, i64 0, i64 %1033
  %1035 = load i64, ptr %25, align 8, !tbaa !15
  %1036 = mul i64 %1035, 4
  %1037 = add i64 %1036, 1
  %1038 = getelementptr inbounds [1024 x %class.Point], ptr %9, i64 0, i64 %1037
  %1039 = load i64, ptr %25, align 8, !tbaa !15
  %1040 = mul i64 %1039, 4
  %1041 = add i64 %1040, 2
  %1042 = getelementptr inbounds [1024 x %class.Point], ptr %9, i64 0, i64 %1041
  %1043 = load i64, ptr %25, align 8, !tbaa !15
  %1044 = mul i64 %1043, 4
  %1045 = add i64 %1044, 3
  %1046 = getelementptr inbounds [1024 x %class.Point], ptr %9, i64 0, i64 %1045
  %1047 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 10
  %1048 = getelementptr inbounds [4 x [20 x i8]], ptr %1047, i64 0, i64 0
  %1049 = getelementptr inbounds [20 x i8], ptr %1048, i64 0, i64 0
  %1050 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 10
  %1051 = getelementptr inbounds [4 x [20 x i8]], ptr %1050, i64 0, i64 1
  %1052 = getelementptr inbounds [20 x i8], ptr %1051, i64 0, i64 0
  %1053 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 10
  %1054 = getelementptr inbounds [4 x [20 x i8]], ptr %1053, i64 0, i64 2
  %1055 = getelementptr inbounds [20 x i8], ptr %1054, i64 0, i64 0
  %1056 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 10
  %1057 = getelementptr inbounds [4 x [20 x i8]], ptr %1056, i64 0, i64 3
  %1058 = getelementptr inbounds [20 x i8], ptr %1057, i64 0, i64 0
  invoke void @_ZN9Secp256K110GetHash160EibR5PointS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(983240) %1031, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(120) %1034, ptr noundef nonnull align 8 dereferenceable(120) %1038, ptr noundef nonnull align 8 dereferenceable(120) %1042, ptr noundef nonnull align 8 dereferenceable(120) %1046, ptr noundef %1049, ptr noundef %1052, ptr noundef %1055, ptr noundef %1058)
          to label %1059 unwind label %231

1059:                                             ; preds = %1030
  %1060 = load ptr, ptr @secp, align 8, !tbaa !5
  %1061 = getelementptr inbounds [4 x %class.Point], ptr %10, i64 0, i64 0
  %1062 = getelementptr inbounds [4 x %class.Point], ptr %10, i64 0, i64 1
  %1063 = getelementptr inbounds [4 x %class.Point], ptr %10, i64 0, i64 2
  %1064 = getelementptr inbounds [4 x %class.Point], ptr %10, i64 0, i64 3
  %1065 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 11
  %1066 = getelementptr inbounds [4 x [20 x i8]], ptr %1065, i64 0, i64 0
  %1067 = getelementptr inbounds [20 x i8], ptr %1066, i64 0, i64 0
  %1068 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 11
  %1069 = getelementptr inbounds [4 x [20 x i8]], ptr %1068, i64 0, i64 1
  %1070 = getelementptr inbounds [20 x i8], ptr %1069, i64 0, i64 0
  %1071 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 11
  %1072 = getelementptr inbounds [4 x [20 x i8]], ptr %1071, i64 0, i64 2
  %1073 = getelementptr inbounds [20 x i8], ptr %1072, i64 0, i64 0
  %1074 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 11
  %1075 = getelementptr inbounds [4 x [20 x i8]], ptr %1074, i64 0, i64 3
  %1076 = getelementptr inbounds [20 x i8], ptr %1075, i64 0, i64 0
  invoke void @_ZN9Secp256K110GetHash160EibR5PointS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(983240) %1060, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(120) %1061, ptr noundef nonnull align 8 dereferenceable(120) %1062, ptr noundef nonnull align 8 dereferenceable(120) %1063, ptr noundef nonnull align 8 dereferenceable(120) %1064, ptr noundef %1067, ptr noundef %1070, ptr noundef %1073, ptr noundef %1076)
          to label %1077 unwind label %231

1077:                                             ; preds = %1059
  br label %1104

1078:                                             ; preds = %864
  %1079 = load ptr, ptr @secp, align 8, !tbaa !5
  %1080 = load i64, ptr %25, align 8, !tbaa !15
  %1081 = mul i64 %1080, 4
  %1082 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %1081
  %1083 = load i64, ptr %25, align 8, !tbaa !15
  %1084 = mul i64 %1083, 4
  %1085 = add i64 %1084, 1
  %1086 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %1085
  %1087 = load i64, ptr %25, align 8, !tbaa !15
  %1088 = mul i64 %1087, 4
  %1089 = add i64 %1088, 2
  %1090 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %1089
  %1091 = load i64, ptr %25, align 8, !tbaa !15
  %1092 = mul i64 %1091, 4
  %1093 = add i64 %1092, 3
  %1094 = getelementptr inbounds [1024 x %class.Point], ptr %5, i64 0, i64 %1093
  %1095 = getelementptr inbounds [4 x [20 x i8]], ptr %35, i64 0, i64 0
  %1096 = getelementptr inbounds [20 x i8], ptr %1095, i64 0, i64 0
  %1097 = getelementptr inbounds [4 x [20 x i8]], ptr %35, i64 0, i64 1
  %1098 = getelementptr inbounds [20 x i8], ptr %1097, i64 0, i64 0
  %1099 = getelementptr inbounds [4 x [20 x i8]], ptr %35, i64 0, i64 2
  %1100 = getelementptr inbounds [20 x i8], ptr %1099, i64 0, i64 0
  %1101 = getelementptr inbounds [4 x [20 x i8]], ptr %35, i64 0, i64 3
  %1102 = getelementptr inbounds [20 x i8], ptr %1101, i64 0, i64 0
  invoke void @_ZN9Secp256K110GetHash160EibR5PointS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(983240) %1079, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(120) %1082, ptr noundef nonnull align 8 dereferenceable(120) %1086, ptr noundef nonnull align 8 dereferenceable(120) %1090, ptr noundef nonnull align 8 dereferenceable(120) %1094, ptr noundef %1096, ptr noundef %1098, ptr noundef %1100, ptr noundef %1102)
          to label %1103 unwind label %231

1103:                                             ; preds = %1078
  br label %1104

1104:                                             ; preds = %1103, %1077
  br label %1105

1105:                                             ; preds = %1104, %861
  store i32 0, ptr %32, align 4, !tbaa !9
  br label %1106

1106:                                             ; preds = %1404, %1105
  %1107 = load i32, ptr %32, align 4, !tbaa !9
  %1108 = icmp slt i32 %1107, 4
  br i1 %1108, label %1109, label %1407

1109:                                             ; preds = %1106
  %1110 = load i32, ptr @FLAGSEARCH, align 4, !tbaa !9
  %1111 = icmp eq i32 %1110, 1
  br i1 %1111, label %1115, label %1112

1112:                                             ; preds = %1109
  %1113 = load i32, ptr @FLAGSEARCH, align 4, !tbaa !9
  %1114 = icmp eq i32 %1113, 2
  br i1 %1114, label %1115, label %1266

1115:                                             ; preds = %1112, %1109
  %1116 = load i32, ptr @FLAGENDOMORPHISM, align 4, !tbaa !9
  %1117 = icmp ne i32 %1116, 0
  br i1 %1117, label %1118, label %1215

1118:                                             ; preds = %1115
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %1119

1119:                                             ; preds = %1211, %1118
  %1120 = load i32, ptr %20, align 4, !tbaa !9
  %1121 = icmp slt i32 %1120, 6
  br i1 %1121, label %1122, label %1214

1122:                                             ; preds = %1119
  %1123 = load i32, ptr %20, align 4, !tbaa !9
  %1124 = sext i32 %1123 to i64
  %1125 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 %1124
  %1126 = load i32, ptr %32, align 4, !tbaa !9
  %1127 = sext i32 %1126 to i64
  %1128 = getelementptr inbounds [4 x [20 x i8]], ptr %1125, i64 0, i64 %1127
  %1129 = getelementptr inbounds [20 x i8], ptr %1128, i64 0, i64 0
  %1130 = invoke noundef zeroext i1 @_Z14vanityrmdmatchPh(ptr noundef %1129)
          to label %1131 unwind label %231

1131:                                             ; preds = %1122
  br i1 %1130, label %1132, label %1210

1132:                                             ; preds = %1131
  %1133 = load i32, ptr %32, align 4, !tbaa !9
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(40) %39, i32 noundef %1133)
          to label %1134 unwind label %231

1134:                                             ; preds = %1132
  invoke void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(40) %39, ptr noundef @stride)
          to label %1135 unwind label %231

1135:                                             ; preds = %1134
  invoke void @_ZN3Int3AddEPS_(ptr noundef nonnull align 8 dereferenceable(40) %39, ptr noundef %37)
          to label %1136 unwind label %231

1136:                                             ; preds = %1135
  call void @llvm.lifetime.start.p0(i64 120, ptr %45) #9
  %1137 = 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(983240) %1137, ptr noundef %39)
          to label %1138 unwind label %1140

1138:                                             ; preds = %1136
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %29, ptr align 8 %45, i64 120, i1 false), !tbaa.struct !17
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %45) #9
  call void @llvm.lifetime.end.p0(i64 120, ptr %45) #9
  %1139 = load i32, ptr %20, align 4, !tbaa !9
  switch i32 %1139, label %1208 [
    i32 0, label %1144
    i32 1, label %1154
    i32 2, label %1164
    i32 3, label %1175
    i32 4, label %1186
    i32 5, label %1197
  ]

1140:                                             ; preds = %1136
  %1141 = landingpad { ptr, i32 }
          cleanup
  %1142 = extractvalue { ptr, i32 } %1141, 0
  store ptr %1142, ptr %6, align 8
  %1143 = extractvalue { ptr, i32 } %1141, 1
  store i32 %1143, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 120, ptr %45) #9
  br label %1465

1144:                                             ; preds = %1138
  %1145 = getelementptr inbounds %class.Point, ptr %29, i32 0, i32 1
  %1146 = invoke noundef zeroext i1 @_ZN3Int5IsOddEv(ptr noundef nonnull align 8 dereferenceable(40) %1145)
          to label %1147 unwind label %231

1147:                                             ; preds = %1144
  br i1 %1146, label %1148, label %1153

1148:                                             ; preds = %1147
  invoke void @_ZN3Int3NegEv(ptr noundef nonnull align 8 dereferenceable(40) %39)
          to label %1149 unwind label %231

1149:                                             ; preds = %1148
  %1150 = load ptr, ptr @secp, align 8, !tbaa !5
  %1151 = getelementptr inbounds %class.Secp256K1, ptr %1150, i32 0, i32 2
  invoke void @_ZN3Int3AddEPS_(ptr noundef nonnull align 8 dereferenceable(40) %39, ptr noundef %1151)
          to label %1152 unwind label %231

1152:                                             ; preds = %1149
  br label %1153

1153:                                             ; preds = %1152, %1147
  br label %1208

1154:                                             ; preds = %1138
  %1155 = getelementptr inbounds %class.Point, ptr %29, i32 0, i32 1
  %1156 = invoke noundef zeroext i1 @_ZN3Int6IsEvenEv(ptr noundef nonnull align 8 dereferenceable(40) %1155)
          to label %1157 unwind label %231

1157:                                             ; preds = %1154
  br i1 %1156, label %1158, label %1163

1158:                                             ; preds = %1157
  invoke void @_ZN3Int3NegEv(ptr noundef nonnull align 8 dereferenceable(40) %39)
          to label %1159 unwind label %231

1159:                                             ; preds = %1158
  %1160 = load ptr, ptr @secp, align 8, !tbaa !5
  %1161 = getelementptr inbounds %class.Secp256K1, ptr %1160, i32 0, i32 2
  invoke void @_ZN3Int3AddEPS_(ptr noundef nonnull align 8 dereferenceable(40) %39, ptr noundef %1161)
          to label %1162 unwind label %231

1162:                                             ; preds = %1159
  br label %1163

1163:                                             ; preds = %1162, %1157
  br label %1208

1164:                                             ; preds = %1138
  invoke void @_ZN3Int13ModMulK1orderEPS_(ptr noundef nonnull align 8 dereferenceable(40) %39, ptr noundef @lambda)
          to label %1165 unwind label %231

1165:                                             ; preds = %1164
  %1166 = getelementptr inbounds %class.Point, ptr %29, i32 0, i32 1
  %1167 = invoke noundef zeroext i1 @_ZN3Int5IsOddEv(ptr noundef nonnull align 8 dereferenceable(40) %1166)
          to label %1168 unwind label %231

1168:                                             ; preds = %1165
  br i1 %1167, label %1169, label %1174

1169:                                             ; preds = %1168
  invoke void @_ZN3Int3NegEv(ptr noundef nonnull align 8 dereferenceable(40) %39)
          to label %1170 unwind label %231

1170:                                             ; preds = %1169
  %1171 = load ptr, ptr @secp, align 8, !tbaa !5
  %1172 = getelementptr inbounds %class.Secp256K1, ptr %1171, i32 0, i32 2
  invoke void @_ZN3Int3AddEPS_(ptr noundef nonnull align 8 dereferenceable(40) %39, ptr noundef %1172)
          to label %1173 unwind label %231

1173:                                             ; preds = %1170
  br label %1174

1174:                                             ; preds = %1173, %1168
  br label %1208

1175:                                             ; preds = %1138
  invoke void @_ZN3Int13ModMulK1orderEPS_(ptr noundef nonnull align 8 dereferenceable(40) %39, ptr noundef @lambda)
          to label %1176 unwind label %231

1176:                                             ; preds = %1175
  %1177 = getelementptr inbounds %class.Point, ptr %29, i32 0, i32 1
  %1178 = invoke noundef zeroext i1 @_ZN3Int6IsEvenEv(ptr noundef nonnull align 8 dereferenceable(40) %1177)
          to label %1179 unwind label %231

1179:                                             ; preds = %1176
  br i1 %1178, label %1180, label %1185

1180:                                             ; preds = %1179
  invoke void @_ZN3Int3NegEv(ptr noundef nonnull align 8 dereferenceable(40) %39)
          to label %1181 unwind label %231

1181:                                             ; preds = %1180
  %1182 = load ptr, ptr @secp, align 8, !tbaa !5
  %1183 = getelementptr inbounds %class.Secp256K1, ptr %1182, i32 0, i32 2
  invoke void @_ZN3Int3AddEPS_(ptr noundef nonnull align 8 dereferenceable(40) %39, ptr noundef %1183)
          to label %1184 unwind label %231

1184:                                             ; preds = %1181
  br label %1185

1185:                                             ; preds = %1184, %1179
  br label %1208

1186:                                             ; preds = %1138
  invoke void @_ZN3Int13ModMulK1orderEPS_(ptr noundef nonnull align 8 dereferenceable(40) %39, ptr noundef @lambda2)
          to label %1187 unwind label %231

1187:                                             ; preds = %1186
  %1188 = getelementptr inbounds %class.Point, ptr %29, i32 0, i32 1
  %1189 = invoke noundef zeroext i1 @_ZN3Int5IsOddEv(ptr noundef nonnull align 8 dereferenceable(40) %1188)
          to label %1190 unwind label %231

1190:                                             ; preds = %1187
  br i1 %1189, label %1191, label %1196

1191:                                             ; preds = %1190
  invoke void @_ZN3Int3NegEv(ptr noundef nonnull align 8 dereferenceable(40) %39)
          to label %1192 unwind label %231

1192:                                             ; preds = %1191
  %1193 = load ptr, ptr @secp, align 8, !tbaa !5
  %1194 = getelementptr inbounds %class.Secp256K1, ptr %1193, i32 0, i32 2
  invoke void @_ZN3Int3AddEPS_(ptr noundef nonnull align 8 dereferenceable(40) %39, ptr noundef %1194)
          to label %1195 unwind label %231

1195:                                             ; preds = %1192
  br label %1196

1196:                                             ; preds = %1195, %1190
  br label %1208

1197:                                             ; preds = %1138
  invoke void @_ZN3Int13ModMulK1orderEPS_(ptr noundef nonnull align 8 dereferenceable(40) %39, ptr noundef @lambda2)
          to label %1198 unwind label %231

1198:                                             ; preds = %1197
  %1199 = getelementptr inbounds %class.Point, ptr %29, i32 0, i32 1
  %1200 = invoke noundef zeroext i1 @_ZN3Int6IsEvenEv(ptr noundef nonnull align 8 dereferenceable(40) %1199)
          to label %1201 unwind label %231

1201:                                             ; preds = %1198
  br i1 %1200, label %1202, label %1207

1202:                                             ; preds = %1201
  invoke void @_ZN3Int3NegEv(ptr noundef nonnull align 8 dereferenceable(40) %39)
          to label %1203 unwind label %231

1203:                                             ; preds = %1202
  %1204 = load ptr, ptr @secp, align 8, !tbaa !5
  %1205 = getelementptr inbounds %class.Secp256K1, ptr %1204, i32 0, i32 2
  invoke void @_ZN3Int3AddEPS_(ptr noundef nonnull align 8 dereferenceable(40) %39, ptr noundef %1205)
          to label %1206 unwind label %231

1206:                                             ; preds = %1203
  br label %1207

1207:                                             ; preds = %1206, %1201
  br label %1208

1208:                                             ; preds = %1207, %1196, %1185, %1174, %1163, %1153, %1138
  invoke void @_Z14writevanitykeybP3Int(i1 noundef zeroext true, ptr noundef %39)
          to label %1209 unwind label %231

1209:                                             ; preds = %1208
  br label %1210

1210:                                             ; preds = %1209, %1131
  br label %1211

1211:                                             ; preds = %1210
  %1212 = load i32, ptr %20, align 4, !tbaa !9
  %1213 = add nsw i32 %1212, 1
  store i32 %1213, ptr %20, align 4, !tbaa !9
  br label %1119, !llvm.loop !27

1214:                                             ; preds = %1119
  br label %1265

1215:                                             ; preds = %1115
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %1216

1216:                                             ; preds = %1261, %1215
  %1217 = load i32, ptr %20, align 4, !tbaa !9
  %1218 = icmp slt i32 %1217, 2
  br i1 %1218, label %1219, label %1264

1219:                                             ; preds = %1216
  %1220 = load i32, ptr %20, align 4, !tbaa !9
  %1221 = sext i32 %1220 to i64
  %1222 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 %1221
  %1223 = load i32, ptr %32, align 4, !tbaa !9
  %1224 = sext i32 %1223 to i64
  %1225 = getelementptr inbounds [4 x [20 x i8]], ptr %1222, i64 0, i64 %1224
  %1226 = getelementptr inbounds [20 x i8], ptr %1225, i64 0, i64 0
  %1227 = invoke noundef zeroext i1 @_Z14vanityrmdmatchPh(ptr noundef %1226)
          to label %1228 unwind label %231

1228:                                             ; preds = %1219
  br i1 %1227, label %1229, label %1260

1229:                                             ; preds = %1228
  %1230 = load i32, ptr %32, align 4, !tbaa !9
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(40) %39, i32 noundef %1230)
          to label %1231 unwind label %231

1231:                                             ; preds = %1229
  invoke void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(40) %39, ptr noundef @stride)
          to label %1232 unwind label %231

1232:                                             ; preds = %1231
  invoke void @_ZN3Int3AddEPS_(ptr noundef nonnull align 8 dereferenceable(40) %39, ptr noundef %37)
          to label %1233 unwind label %231

1233:                                             ; preds = %1232
  call void @llvm.lifetime.start.p0(i64 120, ptr %46) #9
  %1234 = 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(983240) %1234, ptr noundef %39)
          to label %1235 unwind label %1254

1235:                                             ; preds = %1233
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %29, ptr align 8 %46, i64 120, i1 false), !tbaa.struct !17
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %46) #9
  call void @llvm.lifetime.end.p0(i64 120, ptr %46) #9
  %1236 = load ptr, ptr @secp, align 8, !tbaa !5
  %1237 = getelementptr inbounds [20 x i8], ptr %34, i64 0, i64 0
  invoke void @_ZN9Secp256K110GetHash160EibR5PointPh(ptr noundef nonnull align 8 dereferenceable(983240) %1236, i32 noundef 0, i1 noundef zeroext true, ptr noundef nonnull align 8 dereferenceable(120) %29, ptr noundef %1237)
          to label %1238 unwind label %231

1238:                                             ; preds = %1235
  %1239 = load i32, ptr %20, align 4, !tbaa !9
  %1240 = sext i32 %1239 to i64
  %1241 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 %1240
  %1242 = load i32, ptr %32, align 4, !tbaa !9
  %1243 = sext i32 %1242 to i64
  %1244 = getelementptr inbounds [4 x [20 x i8]], ptr %1241, i64 0, i64 %1243
  %1245 = getelementptr inbounds [20 x i8], ptr %1244, i64 0, i64 0
  %1246 = getelementptr inbounds [20 x i8], ptr %34, i64 0, i64 0
  %1247 = call i32 @memcmp(ptr noundef %1245, ptr noundef %1246, i64 noundef 20) #12
  %1248 = icmp ne i32 %1247, 0
  br i1 %1248, label %1249, label %1258

1249:                                             ; preds = %1238
  invoke void @_ZN3Int3NegEv(ptr noundef nonnull align 8 dereferenceable(40) %39)
          to label %1250 unwind label %231

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

1253:                                             ; preds = %1250
  br label %1258

1254:                                             ; preds = %1233
  %1255 = landingpad { ptr, i32 }
          cleanup
  %1256 = extractvalue { ptr, i32 } %1255, 0
  store ptr %1256, ptr %6, align 8
  %1257 = extractvalue { ptr, i32 } %1255, 1
  store i32 %1257, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 120, ptr %46) #9
  br label %1465

1258:                                             ; preds = %1253, %1238
  invoke void @_Z14writevanitykeybP3Int(i1 noundef zeroext true, ptr noundef %39)
          to label %1259 unwind label %231

1259:                                             ; preds = %1258
  br label %1260

1260:                                             ; preds = %1259, %1228
  br label %1261

1261:                                             ; preds = %1260
  %1262 = load i32, ptr %20, align 4, !tbaa !9
  %1263 = add nsw i32 %1262, 1
  store i32 %1263, ptr %20, align 4, !tbaa !9
  br label %1216, !llvm.loop !28

1264:                                             ; preds = %1216
  br label %1265

1265:                                             ; preds = %1264, %1214
  br label %1266

1266:                                             ; preds = %1265, %1112
  %1267 = load i32, ptr @FLAGSEARCH, align 4, !tbaa !9
  %1268 = icmp eq i32 %1267, 0
  br i1 %1268, label %1272, label %1269

1269:                                             ; preds = %1266
  %1270 = load i32, ptr @FLAGSEARCH, align 4, !tbaa !9
  %1271 = icmp eq i32 %1270, 2
  br i1 %1271, label %1272, label %1403

1272:                                             ; preds = %1269, %1266
  %1273 = load i32, ptr @FLAGENDOMORPHISM, align 4, !tbaa !9
  %1274 = icmp ne i32 %1273, 0
  br i1 %1274, label %1275, label %1388

1275:                                             ; preds = %1272
  store i32 6, ptr %20, align 4, !tbaa !9
  br label %1276

1276:                                             ; preds = %1384, %1275
  %1277 = load i32, ptr %20, align 4, !tbaa !9
  %1278 = icmp slt i32 %1277, 12
  br i1 %1278, label %1279, label %1387

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

1288:                                             ; preds = %1279
  br i1 %1287, label %1289, label %1383

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

1291:                                             ; preds = %1289
  invoke void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(40) %39, ptr noundef @stride)
          to label %1292 unwind label %231

1292:                                             ; preds = %1291
  invoke void @_ZN3Int3AddEPS_(ptr noundef nonnull align 8 dereferenceable(40) %39, ptr noundef %37)
          to label %1293 unwind label %231

1293:                                             ; preds = %1292
  %1294 = load i32, ptr %20, align 4, !tbaa !9
  switch i32 %1294, label %1381 [
    i32 6, label %1295
    i32 7, label %1295
    i32 8, label %1323
    i32 9, label %1323
    i32 10, label %1352
    i32 11, label %1352
  ]

1295:                                             ; preds = %1293, %1293
  call void @llvm.lifetime.start.p0(i64 120, ptr %47) #9
  %1296 = 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(983240) %1296, ptr noundef %39)
          to label %1297 unwind label %1318

1297:                                             ; preds = %1295
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %29, ptr align 8 %47, i64 120, i1 false), !tbaa.struct !17
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %47) #9
  call void @llvm.lifetime.end.p0(i64 120, ptr %47) #9
  %1298 = load ptr, ptr @secp, align 8, !tbaa !5
  %1299 = getelementptr inbounds [4 x [20 x i8]], ptr %35, i64 0, i64 0
  %1300 = getelementptr inbounds [20 x i8], ptr %1299, i64 0, i64 0
  invoke void @_ZN9Secp256K110GetHash160EibR5PointPh(ptr noundef nonnull align 8 dereferenceable(983240) %1298, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(120) %29, ptr noundef %1300)
          to label %1301 unwind label %231

1301:                                             ; preds = %1297
  %1302 = load i32, ptr %20, align 4, !tbaa !9
  %1303 = sext i32 %1302 to i64
  %1304 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 %1303
  %1305 = load i32, ptr %32, align 4, !tbaa !9
  %1306 = sext i32 %1305 to i64
  %1307 = getelementptr inbounds [4 x [20 x i8]], ptr %1304, i64 0, i64 %1306
  %1308 = getelementptr inbounds [20 x i8], ptr %1307, i64 0, i64 0
  %1309 = getelementptr inbounds [4 x [20 x i8]], ptr %35, i64 0, i64 0
  %1310 = getelementptr inbounds [20 x i8], ptr %1309, i64 0, i64 0
  %1311 = call i32 @memcmp(ptr noundef %1308, ptr noundef %1310, i64 noundef 20) #12
  %1312 = icmp ne i32 %1311, 0
  br i1 %1312, label %1313, label %1322

1313:                                             ; preds = %1301
  invoke void @_ZN3Int3NegEv(ptr noundef nonnull align 8 dereferenceable(40) %39)
          to label %1314 unwind label %231

1314:                                             ; preds = %1313
  %1315 = load ptr, ptr @secp, align 8, !tbaa !5
  %1316 = getelementptr inbounds %class.Secp256K1, ptr %1315, i32 0, i32 2
  invoke void @_ZN3Int3AddEPS_(ptr noundef nonnull align 8 dereferenceable(40) %39, ptr noundef %1316)
          to label %1317 unwind label %231

1317:                                             ; preds = %1314
  br label %1322

1318:                                             ; preds = %1295
  %1319 = landingpad { ptr, i32 }
          cleanup
  %1320 = extractvalue { ptr, i32 } %1319, 0
  store ptr %1320, ptr %6, align 8
  %1321 = extractvalue { ptr, i32 } %1319, 1
  store i32 %1321, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 120, ptr %47) #9
  br label %1465

1322:                                             ; preds = %1317, %1301
  br label %1381

1323:                                             ; preds = %1293, %1293
  invoke void @_ZN3Int13ModMulK1orderEPS_(ptr noundef nonnull align 8 dereferenceable(40) %39, ptr noundef @lambda)
          to label %1324 unwind label %231

1324:                                             ; preds = %1323
  call void @llvm.lifetime.start.p0(i64 120, ptr %48) #9
  %1325 = 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(983240) %1325, ptr noundef %39)
          to label %1326 unwind label %1347

1326:                                             ; preds = %1324
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %29, ptr align 8 %48, i64 120, i1 false), !tbaa.struct !17
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %48) #9
  call void @llvm.lifetime.end.p0(i64 120, ptr %48) #9
  %1327 = load ptr, ptr @secp, align 8, !tbaa !5
  %1328 = getelementptr inbounds [4 x [20 x i8]], ptr %35, i64 0, i64 0
  %1329 = getelementptr inbounds [20 x i8], ptr %1328, i64 0, i64 0
  invoke void @_ZN9Secp256K110GetHash160EibR5PointPh(ptr noundef nonnull align 8 dereferenceable(983240) %1327, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(120) %29, ptr noundef %1329)
          to label %1330 unwind label %231

1330:                                             ; preds = %1326
  %1331 = load i32, ptr %20, align 4, !tbaa !9
  %1332 = sext i32 %1331 to i64
  %1333 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 %1332
  %1334 = load i32, ptr %32, align 4, !tbaa !9
  %1335 = sext i32 %1334 to i64
  %1336 = getelementptr inbounds [4 x [20 x i8]], ptr %1333, i64 0, i64 %1335
  %1337 = getelementptr inbounds [20 x i8], ptr %1336, i64 0, i64 0
  %1338 = getelementptr inbounds [4 x [20 x i8]], ptr %35, i64 0, i64 0
  %1339 = getelementptr inbounds [20 x i8], ptr %1338, i64 0, i64 0
  %1340 = call i32 @memcmp(ptr noundef %1337, ptr noundef %1339, i64 noundef 20) #12
  %1341 = icmp ne i32 %1340, 0
  br i1 %1341, label %1342, label %1351

1342:                                             ; preds = %1330
  invoke void @_ZN3Int3NegEv(ptr noundef nonnull align 8 dereferenceable(40) %39)
          to label %1343 unwind label %231

1343:                                             ; preds = %1342
  %1344 = load ptr, ptr @secp, align 8, !tbaa !5
  %1345 = getelementptr inbounds %class.Secp256K1, ptr %1344, i32 0, i32 2
  invoke void @_ZN3Int3AddEPS_(ptr noundef nonnull align 8 dereferenceable(40) %39, ptr noundef %1345)
          to label %1346 unwind label %231

1346:                                             ; preds = %1343
  br label %1351

1347:                                             ; preds = %1324
  %1348 = landingpad { ptr, i32 }
          cleanup
  %1349 = extractvalue { ptr, i32 } %1348, 0
  store ptr %1349, ptr %6, align 8
  %1350 = extractvalue { ptr, i32 } %1348, 1
  store i32 %1350, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 120, ptr %48) #9
  br label %1465

1351:                                             ; preds = %1346, %1330
  br label %1381

1352:                                             ; preds = %1293, %1293
  invoke void @_ZN3Int13ModMulK1orderEPS_(ptr noundef nonnull align 8 dereferenceable(40) %39, ptr noundef @lambda2)
          to label %1353 unwind label %231

1353:                                             ; preds = %1352
  call void @llvm.lifetime.start.p0(i64 120, ptr %49) #9
  %1354 = 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(983240) %1354, ptr noundef %39)
          to label %1355 unwind label %1376

1355:                                             ; preds = %1353
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %29, ptr align 8 %49, i64 120, i1 false), !tbaa.struct !17
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %49) #9
  call void @llvm.lifetime.end.p0(i64 120, ptr %49) #9
  %1356 = load ptr, ptr @secp, align 8, !tbaa !5
  %1357 = getelementptr inbounds [4 x [20 x i8]], ptr %35, i64 0, i64 0
  %1358 = getelementptr inbounds [20 x i8], ptr %1357, i64 0, i64 0
  invoke void @_ZN9Secp256K110GetHash160EibR5PointPh(ptr noundef nonnull align 8 dereferenceable(983240) %1356, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(120) %29, ptr noundef %1358)
          to label %1359 unwind label %231

1359:                                             ; preds = %1355
  %1360 = load i32, ptr %20, align 4, !tbaa !9
  %1361 = sext i32 %1360 to i64
  %1362 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %36, i64 0, i64 %1361
  %1363 = load i32, ptr %32, align 4, !tbaa !9
  %1364 = sext i32 %1363 to i64
  %1365 = getelementptr inbounds [4 x [20 x i8]], ptr %1362, i64 0, i64 %1364
  %1366 = getelementptr inbounds [20 x i8], ptr %1365, i64 0, i64 0
  %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
  %1369 = call i32 @memcmp(ptr noundef %1366, ptr noundef %1368, i64 noundef 20) #12
  %1370 = icmp ne i32 %1369, 0
  br i1 %1370, label %1371, label %1380

1371:                                             ; preds = %1359
  invoke void @_ZN3Int3NegEv(ptr noundef nonnull align 8 dereferenceable(40) %39)
          to label %1372 unwind label %231

1372:                                             ; preds = %1371
  %1373 = load ptr, ptr @secp, align 8, !tbaa !5
  %1374 = getelementptr inbounds %class.Secp256K1, ptr %1373, i32 0, i32 2
  invoke void @_ZN3Int3AddEPS_(ptr noundef nonnull align 8 dereferenceable(40) %39, ptr noundef %1374)
          to label %1375 unwind label %231

1375:                                             ; preds = %1372
  br label %1380

1376:                                             ; preds = %1353
  %1377 = landingpad { ptr, i32 }
          cleanup
  %1378 = extractvalue { ptr, i32 } %1377, 0
  store ptr %1378, ptr %6, align 8
  %1379 = extractvalue { ptr, i32 } %1377, 1
  store i32 %1379, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 120, ptr %49) #9
  br label %1465

1380:                                             ; preds = %1375, %1359
  br label %1381

1381:                                             ; preds = %1380, %1351, %1322, %1293
  invoke void @_Z14writevanitykeybP3Int(i1 noundef zeroext false, ptr noundef %39)
          to label %1382 unwind label %231

1382:                                             ; preds = %1381
  br label %1383

1383:                                             ; preds = %1382, %1288
  br label %1384

1384:                                             ; preds = %1383
  %1385 = load i32, ptr %20, align 4, !tbaa !9
  %1386 = add nsw i32 %1385, 1
  store i32 %1386, ptr %20, align 4, !tbaa !9
  br label %1276, !llvm.loop !29

1387:                                             ; preds = %1276
  br label %1402

1388:                                             ; preds = %1272
  %1389 = load i32, ptr %32, align 4, !tbaa !9
  %1390 = sext i32 %1389 to i64
  %1391 = getelementptr inbounds [4 x [20 x i8]], ptr %35, i64 0, i64 %1390
  %1392 = getelementptr inbounds [20 x i8], ptr %1391, i64 0, i64 0
  %1393 = invoke noundef zeroext i1 @_Z14vanityrmdmatchPh(ptr noundef %1392)
          to label %1394 unwind label %231

1394:                                             ; preds = %1388
  br i1 %1393, label %1395, label %1401

1395:                                             ; preds = %1394
  %1396 = load i32, ptr %32, align 4, !tbaa !9
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(40) %39, i32 noundef %1396)
          to label %1397 unwind label %231

1397:                                             ; preds = %1395
  invoke void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(40) %39, ptr noundef @stride)
          to label %1398 unwind label %231

1398:                                             ; preds = %1397
  invoke void @_ZN3Int3AddEPS_(ptr noundef nonnull align 8 dereferenceable(40) %39, ptr noundef %37)
          to label %1399 unwind label %231

1399:                                             ; preds = %1398
  invoke void @_Z14writevanitykeybP3Int(i1 noundef zeroext false, ptr noundef %39)
          to label %1400 unwind label %231

1400:                                             ; preds = %1399
  br label %1401

1401:                                             ; preds = %1400, %1394
  br label %1402

1402:                                             ; preds = %1401, %1387
  br label %1403

1403:                                             ; preds = %1402, %1269
  br label %1404

1404:                                             ; preds = %1403
  %1405 = load i32, ptr %32, align 4, !tbaa !9
  %1406 = add nsw i32 %1405, 1
  store i32 %1406, ptr %32, align 4, !tbaa !9
  br label %1106, !llvm.loop !30

1407:                                             ; preds = %1106
  %1408 = load i64, ptr %26, align 8, !tbaa !15
  %1409 = add i64 %1408, 4
  store i64 %1409, ptr %26, align 8, !tbaa !15
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(40) %38, i32 noundef 4)
          to label %1410 unwind label %231

1410:                                             ; preds = %1407
  invoke void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(40) %38, ptr noundef @stride)
          to label %1411 unwind label %231

1411:                                             ; preds = %1410
  invoke void @_ZN3Int3AddEPS_(ptr noundef nonnull align 8 dereferenceable(40) %37, ptr noundef %38)
          to label %1412 unwind label %231

1412:                                             ; preds = %1411
  br label %1413

1413:                                             ; preds = %1412
  %1414 = load i64, ptr %25, align 8, !tbaa !15
  %1415 = add i64 %1414, 1
  store i64 %1415, ptr %25, align 8, !tbaa !15
  br label %579, !llvm.loop !31

1416:                                             ; preds = %579
  %1417 = load ptr, ptr @steps, align 8, !tbaa !5
  %1418 = load i32, ptr %30, align 4, !tbaa !9
  %1419 = sext i32 %1418 to i64
  %1420 = getelementptr inbounds i64, ptr %1417, i64 %1419
  %1421 = load i64, ptr %1420, align 8, !tbaa !15
  %1422 = add i64 %1421, 1
  store i64 %1422, ptr %1420, align 8, !tbaa !15
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %18, ptr align 8 %13, i64 120, i1 false), !tbaa.struct !17
  %1423 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 1
  invoke void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef getelementptr inbounds (%class.Point, ptr @_2Gn, i32 0, i32 1), ptr noundef %1423)
          to label %1424 unwind label %231

1424:                                             ; preds = %1416
  %1425 = load i32, ptr %23, align 4, !tbaa !9
  %1426 = add nsw i32 %1425, 1
  %1427 = sext i32 %1426 to i64
  %1428 = getelementptr inbounds [513 x %class.Int], ptr %11, i64 0, i64 %1427
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %16, ptr noundef %14, ptr noundef %1428)
          to label %1429 unwind label %231

1429:                                             ; preds = %1424
  invoke void @_ZN3Int11ModSquareK1EPS_(ptr noundef nonnull align 8 dereferenceable(40) %17, ptr noundef %16)
          to label %1430 unwind label %231

1430:                                             ; preds = %1429
  %1431 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 0
  invoke void @_ZN3Int6ModNegEv(ptr noundef nonnull align 8 dereferenceable(40) %1431)
          to label %1432 unwind label %231

1432:                                             ; preds = %1430
  %1433 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 0
  invoke void @_ZN3Int6ModAddEPS_(ptr noundef nonnull align 8 dereferenceable(40) %1433, ptr noundef %17)
          to label %1434 unwind label %231

1434:                                             ; preds = %1432
  %1435 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 0
  invoke void @_ZN3Int6ModSubEPS_(ptr noundef nonnull align 8 dereferenceable(40) %1435, ptr noundef @_2Gn)
          to label %1436 unwind label %231

1436:                                             ; preds = %1434
  %1437 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 1
  %1438 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 0
  invoke void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %1437, ptr noundef @_2Gn, ptr noundef %1438)
          to label %1439 unwind label %231

1439:                                             ; preds = %1436
  %1440 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 1
  invoke void @_ZN3Int8ModMulK1EPS_(ptr noundef nonnull align 8 dereferenceable(40) %1440, ptr noundef %16)
          to label %1441 unwind label %231

1441:                                             ; preds = %1439
  %1442 = getelementptr inbounds %class.Point, ptr %18, i32 0, i32 1
  invoke void @_ZN3Int6ModSubEPS_(ptr noundef nonnull align 8 dereferenceable(40) %1442, ptr noundef getelementptr inbounds (%class.Point, ptr @_2Gn, i32 0, i32 1))
          to label %1443 unwind label %231

1443:                                             ; preds = %1441
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %13, ptr align 8 %18, i64 120, i1 false), !tbaa.struct !17
  br label %1444

1444:                                             ; preds = %1443
  %1445 = load i64, ptr %26, align 8, !tbaa !15
  %1446 = load i64, ptr @N_SEQUENTIAL_MAX, align 8, !tbaa !15
  %1447 = icmp ult i64 %1445, %1446
  br i1 %1447, label %1448, label %1451

1448:                                             ; preds = %1444
  %1449 = load i32, ptr %31, align 4, !tbaa !9
  %1450 = icmp ne i32 %1449, 0
  br label %1451

1451:                                             ; preds = %1448, %1444
  %1452 = phi i1 [ false, %1444 ], [ %1450, %1448 ]
  br i1 %1452, label %278, label %1453, !llvm.loop !32

1453:                                             ; preds = %1451
  br label %1454

1454:                                             ; preds = %1453, %246
  br label %1455

1455:                                             ; preds = %1454
  %1456 = load i32, ptr %31, align 4, !tbaa !9
  %1457 = icmp ne i32 %1456, 0
  br i1 %1457, label %122, label %1458, !llvm.loop !33

1458:                                             ; preds = %1455
  %1459 = load ptr, ptr @ends, align 8, !tbaa !5
  %1460 = load i32, ptr %30, align 4, !tbaa !9
  %1461 = sext i32 %1460 to i64
  %1462 = getelementptr inbounds i32, ptr %1459, i64 %1461
  store i32 1, ptr %1462, align 4, !tbaa !9
  store ptr null, ptr %2, align 8
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr %39) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr %38) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr %37) #9
  call void @llvm.lifetime.end.p0(i64 960, ptr %36) #9
  call void @llvm.lifetime.end.p0(i64 80, ptr %35) #9
  call void @llvm.lifetime.end.p0(i64 20, ptr %34) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #9
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %29) #9
  call void @llvm.lifetime.end.p0(i64 120, ptr %29) #9
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %28) #9
  call void @llvm.lifetime.end.p0(i64 120, ptr %28) #9
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %27) #9
  call void @llvm.lifetime.end.p0(i64 120, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #9
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %19) #9
  call void @llvm.lifetime.end.p0(i64 120, ptr %19) #9
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %18) #9
  call void @llvm.lifetime.end.p0(i64 120, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr %14) #9
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %13) #9
  call void @llvm.lifetime.end.p0(i64 120, ptr %13) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #9
  call void @llvm.lifetime.end.p0(i64 20520, ptr %11) #9
  %1463 = getelementptr inbounds [4 x %class.Point], ptr %10, i32 0, i32 0
  %1464 = getelementptr inbounds %class.Point, ptr %1463, i64 4
  br label %1483

1465:                                             ; preds = %1376, %1347, %1318, %1254, %1140, %1026, %956, %886, %302, %231
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #9
  br label %1466

1466:                                             ; preds = %1465, %227
  call void @llvm.lifetime.end.p0(i64 40, ptr %39) #9
  br label %1467

1467:                                             ; preds = %1466, %223
  call void @llvm.lifetime.end.p0(i64 40, ptr %38) #9
  br label %1468

1468:                                             ; preds = %1467, %219
  call void @llvm.lifetime.end.p0(i64 40, ptr %37) #9
  call void @llvm.lifetime.end.p0(i64 960, ptr %36) #9
  call void @llvm.lifetime.end.p0(i64 80, ptr %35) #9
  call void @llvm.lifetime.end.p0(i64 20, ptr %34) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #9
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %29) #9
  br label %1469

1469:                                             ; preds = %1468, %215
  call void @llvm.lifetime.end.p0(i64 120, ptr %29) #9
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %28) #9
  br label %1470

1470:                                             ; preds = %1469, %211
  call void @llvm.lifetime.end.p0(i64 120, ptr %28) #9
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %27) #9
  br label %1471

1471:                                             ; preds = %1470, %207
  call void @llvm.lifetime.end.p0(i64 120, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #9
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %19) #9
  br label %1472

1472:                                             ; preds = %1471, %203
  call void @llvm.lifetime.end.p0(i64 120, ptr %19) #9
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %18) #9
  br label %1473

1473:                                             ; preds = %1472, %199
  call void @llvm.lifetime.end.p0(i64 120, ptr %18) #9
  br label %1474

1474:                                             ; preds = %1473, %195
  call void @llvm.lifetime.end.p0(i64 40, ptr %17) #9
  br label %1475

1475:                                             ; preds = %1474, %191
  call void @llvm.lifetime.end.p0(i64 40, ptr %16) #9
  br label %1476

1476:                                             ; preds = %1475, %187
  call void @llvm.lifetime.end.p0(i64 40, ptr %15) #9
  br label %1477

1477:                                             ; preds = %1476, %183
  call void @llvm.lifetime.end.p0(i64 40, ptr %14) #9
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %13) #9
  br label %1478

1478:                                             ; preds = %1477, %179
  call void @llvm.lifetime.end.p0(i64 120, ptr %13) #9
  br label %1479

1479:                                             ; preds = %1478, %175, %171
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #9
  br label %1480

1480:                                             ; preds = %1479, %167
  call void @llvm.lifetime.end.p0(i64 20520, ptr %11) #9
  %1481 = getelementptr inbounds [4 x %class.Point], ptr %10, i32 0, i32 0
  %1482 = getelementptr inbounds %class.Point, ptr %1481, i64 4
  br label %1490

1483:                                             ; preds = %1483, %1458
  %1484 = phi ptr [ %1464, %1458 ], [ %1485, %1483 ]
  %1485 = getelementptr inbounds %class.Point, ptr %1484, i64 -1
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %1485) #9
  %1486 = icmp eq ptr %1485, %1463
  br i1 %1486, label %1487, label %1483

1487:                                             ; preds = %1483
  call void @llvm.lifetime.end.p0(i64 480, ptr %10) #9
  %1488 = getelementptr inbounds [1024 x %class.Point], ptr %9, i32 0, i32 0
  %1489 = getelementptr inbounds %class.Point, ptr %1488, i64 1024
  br label %1498

1490:                                             ; preds = %1490, %1480
  %1491 = phi ptr [ %1482, %1480 ], [ %1492, %1490 ]
  %1492 = getelementptr inbounds %class.Point, ptr %1491, i64 -1
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %1492) #9
  %1493 = icmp eq ptr %1492, %1481
  br i1 %1493, label %1494, label %1490

1494:                                             ; preds = %1490
  br label %1495

1495:                                             ; preds = %1494, %166
  call void @llvm.lifetime.end.p0(i64 480, ptr %10) #9
  %1496 = getelementptr inbounds [1024 x %class.Point], ptr %9, i32 0, i32 0
  %1497 = getelementptr inbounds %class.Point, ptr %1496, i64 1024
  br label %1505

1498:                                             ; preds = %1498, %1487
  %1499 = phi ptr [ %1489, %1487 ], [ %1500, %1498 ]
  %1500 = getelementptr inbounds %class.Point, ptr %1499, i64 -1
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %1500) #9
  %1501 = icmp eq ptr %1500, %1488
  br i1 %1501, label %1502, label %1498

1502:                                             ; preds = %1498
  call void @llvm.lifetime.end.p0(i64 122880, ptr %9) #9
  %1503 = getelementptr inbounds [1024 x %class.Point], ptr %8, i32 0, i32 0
  %1504 = getelementptr inbounds %class.Point, ptr %1503, i64 1024
  br label %1513

1505:                                             ; preds = %1505, %1495
  %1506 = phi ptr [ %1497, %1495 ], [ %1507, %1505 ]
  %1507 = getelementptr inbounds %class.Point, ptr %1506, i64 -1
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %1507) #9
  %1508 = icmp eq ptr %1507, %1496
  br i1 %1508, label %1509, label %1505

1509:                                             ; preds = %1505
  br label %1510

1510:                                             ; preds = %1509, %156
  call void @llvm.lifetime.end.p0(i64 122880, ptr %9) #9
  %1511 = getelementptr inbounds [1024 x %class.Point], ptr %8, i32 0, i32 0
  %1512 = getelementptr inbounds %class.Point, ptr %1511, i64 1024
  br label %1520

1513:                                             ; preds = %1513, %1502
  %1514 = phi ptr [ %1504, %1502 ], [ %1515, %1513 ]
  %1515 = getelementptr inbounds %class.Point, ptr %1514, i64 -1
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %1515) #9
  %1516 = icmp eq ptr %1515, %1503
  br i1 %1516, label %1517, label %1513

1517:                                             ; preds = %1513
  call void @llvm.lifetime.end.p0(i64 122880, ptr %8) #9
  %1518 = getelementptr inbounds [1024 x %class.Point], ptr %5, i32 0, i32 0
  %1519 = getelementptr inbounds %class.Point, ptr %1518, i64 1024
  br label %1528

1520:                                             ; preds = %1520, %1510
  %1521 = phi ptr [ %1512, %1510 ], [ %1522, %1520 ]
  %1522 = getelementptr inbounds %class.Point, ptr %1521, i64 -1
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %1522) #9
  %1523 = icmp eq ptr %1522, %1511
  br i1 %1523, label %1524, label %1520

1524:                                             ; preds = %1520
  br label %1525

1525:                                             ; preds = %1524, %146
  call void @llvm.lifetime.end.p0(i64 122880, ptr %8) #9
  %1526 = getelementptr inbounds [1024 x %class.Point], ptr %5, i32 0, i32 0
  %1527 = getelementptr inbounds %class.Point, ptr %1526, i64 1024
  br label %1534

1528:                                             ; preds = %1528, %1517
  %1529 = phi ptr [ %1519, %1517 ], [ %1530, %1528 ]
  %1530 = getelementptr inbounds %class.Point, ptr %1529, i64 -1
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %1530) #9
  %1531 = icmp eq ptr %1530, %1518
  br i1 %1531, label %1532, label %1528

1532:                                             ; preds = %1528
  call void @llvm.lifetime.end.p0(i64 122880, ptr %5) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #9
  %1533 = load ptr, ptr %2, align 8
  ret ptr %1533

1534:                                             ; preds = %1534, %1525
  %1535 = phi ptr [ %1527, %1525 ], [ %1536, %1534 ]
  %1536 = getelementptr inbounds %class.Point, ptr %1535, i64 -1
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %1536) #9
  %1537 = icmp eq ptr %1536, %1526
  br i1 %1537, label %1538, label %1534

1538:                                             ; preds = %1534
  br label %1539

1539:                                             ; preds = %1538, %136
  call void @llvm.lifetime.end.p0(i64 122880, ptr %5) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #9
  br label %1540

1540:                                             ; preds = %1539
  %1541 = load ptr, ptr %6, align 8
  %1542 = load i32, ptr %7, align 4
  %1543 = insertvalue { ptr, i32 } poison, ptr %1541, 0
  %1544 = insertvalue { ptr, i32 } %1543, i32 %1542, 1
  resume { ptr, i32 } %1544
}

declare void @_ZN3Int3AddEPS_(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef) #0

declare void @_ZN9Secp256K110GetHash160EibR5PointS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(983240), i32 noundef, i1 noundef zeroext, ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(120), 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(40), i64 noundef) #0

declare void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(40), 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(40), ptr noundef, ptr noundef) #0

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

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

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

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

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

declare void @_ZN9Secp256K116GetHash160_fromXEihP3IntS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(983240), 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(40)) #0

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

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

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

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

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

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

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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #7 = { 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 #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 = { nounwind }
attributes #10 = { builtin allocsize(0) }
attributes #11 = { builtin nounwind }
attributes #12 = { 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 = !{i64 0, i64 40, !18, i64 40, i64 40, !18, i64 80, i64 40, !18}
!18 = !{!7, !7, i64 0}
!19 = distinct !{!19, !20}
!20 = !{!"llvm.loop.mustprogress"}
!21 = !{i8 0, i8 2}
!22 = !{}
!23 = distinct !{!23, !20}
!24 = distinct !{!24, !20}
!25 = distinct !{!25, !20}
!26 = distinct !{!26, !20}
!27 = distinct !{!27, !20}
!28 = distinct !{!28, !20}
!29 = distinct !{!29, !20}
!30 = distinct !{!30, !20}
!31 = distinct !{!31, !20}
!32 = distinct !{!32, !20}
!33 = distinct !{!33, !20}


; 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 { %union.anon }
%union.anon = type { [5 x i64] }
%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.233 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.234 = external hidden unnamed_addr constant [20 x i8], align 1

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

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

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

; 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

declare i32 @__gxx_personality_v0(...)

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

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

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

declare void @_ZN3Int3SetEPS_(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef) local_unnamed_addr #0

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

declare noundef zeroext i1 @_ZN3Int7IsLowerEPS_(ptr noundef nonnull align 8 dereferenceable(40), 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(40), ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(120) 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(40), ptr noundef, ptr noundef) local_unnamed_addr #0

declare void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(40), 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(983240), ptr noundef) local_unnamed_addr #0

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

; 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(983240), ptr noundef nonnull align 8 dereferenceable(120)) 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 #9 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 122880, ptr nonnull %2) #11
  %32 = getelementptr inbounds i8, ptr %2, i64 122880
  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(120) %.ptr)
          to label %34 unwind label %143

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

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

38:                                               ; preds = %39, %36
  %.idx217 = phi i64 [ 0, %36 ], [ %.add218, %39 ]
  %.ptr219 = getelementptr inbounds i8, ptr %3, i64 %.idx217
  invoke void @_ZN5PointC1Ev(ptr noundef nonnull align 8 dereferenceable(120) %.ptr219)
          to label %39 unwind label %149

39:                                               ; preds = %38
  %.add218 = add nuw nsw i64 %.idx217, 120
  %40 = icmp eq i64 %.add218, 122880
  br i1 %40, label %41, label %38

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

43:                                               ; preds = %44, %41
  %.idx221 = phi i64 [ 0, %41 ], [ %.add222, %44 ]
  %.ptr223 = getelementptr inbounds i8, ptr %4, i64 %.idx221
  invoke void @_ZN5PointC1Ev(ptr noundef nonnull align 8 dereferenceable(120) %.ptr223)
          to label %44 unwind label %155

44:                                               ; preds = %43
  %.add222 = add nuw nsw i64 %.idx221, 120
  %45 = icmp eq i64 %.add222, 122880
  br i1 %45, label %46, label %43

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

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

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

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

50:                                               ; preds = %49
  call void @llvm.lifetime.start.p0(i64 20520, ptr nonnull %6) #11
  br label %51

51:                                               ; preds = %52, %50
  %.idx229 = phi i64 [ 0, %50 ], [ %.add230, %52 ]
  %.ptr231 = getelementptr inbounds i8, ptr %6, i64 %.idx229
  invoke void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(40) %.ptr231)
          to label %52 unwind label %165

52:                                               ; preds = %51
  %.add230 = add nuw nsw i64 %.idx229, 40
  %53 = icmp eq i64 %.add230, 20520
  br i1 %53, label %54, label %51

54:                                               ; preds = %52
  %55 = invoke noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #12
          to label %56 unwind label %167

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

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

58:                                               ; preds = %57
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %8) #11
  invoke void @_ZN3IntC1Ev(ptr noundef nonnull align 8 dereferenceable(40) %8)
          to label %59 unwind label %173

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

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

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

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

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

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

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

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

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

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

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

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

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

140:                                              ; preds = %600, %72
  %141 = load i32, ptr @FLAGRANDOM, align 4, !tbaa !11
  %.not = icmp eq i32 %141, 0
  br i1 %.not, label %197, label %142

142:                                              ; preds = %140
  invoke void @_ZN3Int4RandEPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %20, ptr noundef nonnull @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

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

.preheader311:                                    ; preds = %143, %.preheader311
  %146 = phi ptr [ %147, %.preheader311 ], [ %.ptr, %143 ]
  %147 = getelementptr inbounds i8, ptr %146, i64 -120
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %147) #11
  %148 = icmp eq ptr %147, %2
  br i1 %148, label %.loopexit, label %.preheader311

149:                                              ; preds = %38
  %150 = landingpad { ptr, i32 }
          cleanup
  %151 = icmp eq i64 %.idx217, 0
  br i1 %151, label %.loopexit274, label %.preheader309

.preheader309:                                    ; preds = %149, %.preheader309
  %152 = phi ptr [ %153, %.preheader309 ], [ %.ptr219, %149 ]
  %153 = getelementptr inbounds i8, ptr %152, i64 -120
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %153) #11
  %154 = icmp eq ptr %153, %3
  br i1 %154, label %.loopexit274, label %.preheader309

155:                                              ; preds = %43
  %156 = landingpad { ptr, i32 }
          cleanup
  %157 = icmp eq i64 %.idx221, 0
  br i1 %157, label %.loopexit275, label %.preheader307

.preheader307:                                    ; preds = %155, %.preheader307
  %158 = phi ptr [ %159, %.preheader307 ], [ %.ptr223, %155 ]
  %159 = getelementptr inbounds i8, ptr %158, i64 -120
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %159) #11
  %160 = icmp eq ptr %159, %4
  br i1 %160, label %.loopexit275, label %.preheader307

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

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

.preheader305:                                    ; preds = %.preheader305.preheader, %.preheader305
  %162 = phi ptr [ %163, %.preheader305 ], [ %.ptr227.lcssa.ph, %.preheader305.preheader ]
  %163 = getelementptr inbounds i8, ptr %162, i64 -120
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %163) #11
  %164 = icmp eq ptr %163, %5
  br i1 %164, label %.loopexit276, label %.preheader305

165:                                              ; preds = %51
  %166 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit276.loopexit

167:                                              ; preds = %54
  %168 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit276.loopexit

169:                                              ; preds = %56
  %170 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %55, i64 noundef 24) #13
  br label %.loopexit276.loopexit

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

173:                                              ; preds = %58
  %174 = landingpad { ptr, i32 }
          cleanup
  br label %616

175:                                              ; preds = %59
  %176 = landingpad { ptr, i32 }
          cleanup
  br label %615

177:                                              ; preds = %60
  %178 = landingpad { ptr, i32 }
          cleanup
  br label %614

179:                                              ; preds = %61
  %180 = landingpad { ptr, i32 }
          cleanup
  br label %613

181:                                              ; preds = %62
  %182 = landingpad { ptr, i32 }
          cleanup
  br label %612

183:                                              ; preds = %63
  %184 = landingpad { ptr, i32 }
          cleanup
  br label %611

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

187:                                              ; preds = %65
  %188 = landingpad { ptr, i32 }
          cleanup
  br label %609

189:                                              ; preds = %66
  %190 = landingpad { ptr, i32 }
          cleanup
  br label %608

191:                                              ; preds = %67
  %192 = landingpad { ptr, i32 }
          cleanup
  br label %607

193:                                              ; preds = %68
  %194 = landingpad { ptr, i32 }
          cleanup
  br label %606

195:                                              ; preds = %70, %69
  %196 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit278:                                     ; preds = %.invoke415.invoke, %.invoke, %534, %538, %539, %540, %545, %552, %555, %560, %563, %568
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit:                      ; preds = %528, %525, %524, %521, %518, %517, %515, %511, %510, %505, %504, %501, %498, %497, %495, %.preheader279
  %lpad.loopexit281 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit:    ; preds = %.invoke416.invoke, %.invoke412, %455, %459, %460, %461, %468, %473, %476, %477, %480, %481, %484, %485, %488, %489, %492
  %lpad.loopexit286 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %578, %577, %576, %574, %570
  %lpad.loopexit288 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %.invoke414, %.invoke413, %345, %346, %348, %354, %356, %371, %392, %402, %412, %416, %426, %579, %580, %581
  %lpad.loopexit294 = 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 = %295, %293, %291, %289, %287, %285, %283, %281, %271, %270, %268, %265, %264, %263, %262, %261, %260, %259, %256, %253, %252, %250, %247, %246, %245, %244, %242, %239
  %lpad.loopexit296 = 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 = %.preheader299
  %lpad.loopexit300 = 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 = %596, %595, %594, %593, %592, %591, %590, %589, %584, %328, %.thread273, %327, %326, %320, %319, %317, %314, %313, %312, %311, %310, %309, %308, %305, %304, %303, %302, %301, %237, %236, %234, %228, %225, %224, %223
  %lpad.loopexit302 = 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 = %217, %208, %202, %200, %197, %142
  %lpad.loopexit.split-lp303 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

197:                                              ; preds = %140
  %198 = invoke noundef zeroext i1 @_ZN3Int7IsLowerEPS_(ptr noundef nonnull align 8 dereferenceable(40) @n_range_start, ptr noundef nonnull @n_range_end)
          to label %199 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

199:                                              ; preds = %197
  br i1 %198, label %200, label %.critedge

200:                                              ; preds = %199
  %201 = call i32 @pthread_mutex_lock(ptr noundef nonnull @write_random) #11
  invoke void @_ZN3Int3SetEPS_(ptr noundef nonnull align 8 dereferenceable(40) %20, ptr noundef nonnull @n_range_start)
          to label %202 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

202:                                              ; preds = %200
  %203 = load i64, ptr @N_SEQUENTIAL_MAX, align 8, !tbaa !12
  invoke void @_ZN3Int3AddEm(ptr noundef nonnull align 8 dereferenceable(40) @n_range_start, i64 noundef %203)
          to label %204 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

204:                                              ; preds = %202
  %205 = call i32 @pthread_mutex_unlock(ptr noundef nonnull @write_random) #11
  br label %206

206:                                              ; preds = %142, %204
  %207 = load i32, ptr @FLAGMATRIX, align 4, !tbaa !11
  %.not234 = icmp eq i32 %207, 0
  br i1 %.not234, label %214, label %208

208:                                              ; preds = %206
  %209 = invoke noundef ptr @_ZN3Int9GetBase16Ev(ptr noundef nonnull align 8 dereferenceable(40) %20)
          to label %210 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

210:                                              ; preds = %208
  %211 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.233, ptr noundef %209, i32 noundef %71)
  %212 = load ptr, ptr @stdout, align 8, !tbaa !14
  %213 = call i32 @fflush(ptr noundef %212)
  call void @free(ptr noundef %209) #11
  br label %.preheader428

214:                                              ; preds = %206
  %215 = load i32, ptr @FLAGQUIET, align 4, !tbaa !11
  %216 = icmp eq i32 %215, 0
  br i1 %216, label %217, label %.preheader428

217:                                              ; preds = %214
  %218 = invoke noundef ptr @_ZN3Int9GetBase16Ev(ptr noundef nonnull align 8 dereferenceable(40) %20)
          to label %219 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

219:                                              ; preds = %217
  %220 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.234, ptr noundef %218)
  %221 = load ptr, ptr @stdout, align 8, !tbaa !14
  %222 = call i32 @fflush(ptr noundef %221)
  call void @free(ptr noundef %218) #11
  store i32 1, ptr @THREADOUTPUT, align 4, !tbaa !11
  br label %.preheader428

.preheader428:                                    ; preds = %214, %219, %210
  br label %223

223:                                              ; preds = %.preheader428, %597
  %.0188 = phi i64 [ %330, %597 ], [ 0, %.preheader428 ]
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(40) %21, i32 noundef 512)
          to label %224 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

224:                                              ; preds = %223
  invoke void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull @stride)
          to label %225 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

225:                                              ; preds = %224
  invoke void @_ZN3Int3AddEPS_(ptr noundef nonnull align 8 dereferenceable(40) %20, ptr noundef nonnull %21)
          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

226:                                              ; preds = %225
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %23) #11
  %227 = 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(983240) %227, ptr noundef nonnull %20)
          to label %228 unwind label %232

228:                                              ; preds = %226
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(120) %7, ptr noundef nonnull align 8 dereferenceable(120) %23, i64 120, i1 false), !tbaa.struct !15
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %23) #11
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %23) #11
  invoke void @_ZN3Int3SubEPS_(ptr noundef nonnull align 8 dereferenceable(40) %20, ptr noundef nonnull %21)
          to label %.preheader299 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

.preheader299:                                    ; preds = %228, %231
  %indvars.iv = phi i64 [ %indvars.iv.next, %231 ], [ 0, %228 ]
  %229 = getelementptr inbounds [513 x %class.Int], ptr %6, i64 0, i64 %indvars.iv
  %230 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %indvars.iv) #11
  invoke void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %229, ptr noundef nonnull %230, ptr noundef nonnull %7)
          to label %231 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

231:                                              ; preds = %.preheader299
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, 511
  br i1 %exitcond.not, label %234, label %.preheader299, !llvm.loop !17

232:                                              ; preds = %226
  %233 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %23) #11
  br label %.loopexit.split-lp

234:                                              ; preds = %231
  %235 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef 511) #11
  invoke void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %138, ptr noundef nonnull %235, ptr noundef nonnull %7)
          to label %236 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

236:                                              ; preds = %234
  invoke void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %139, ptr noundef nonnull @_2Gn, ptr noundef nonnull %7)
          to label %237 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

237:                                              ; preds = %236
  invoke void @_ZN8IntGroup6ModInvEv(ptr noundef nonnull align 8 dereferenceable(20) %55)
          to label %238 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

238:                                              ; preds = %237
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(120) %76, ptr noundef nonnull align 8 dereferenceable(120) %7, i64 120, i1 false), !tbaa.struct !15
  br label %239

239:                                              ; preds = %238, %297
  %indvars.iv366 = phi i64 [ 0, %238 ], [ %indvars.iv.next367, %297 ]
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(120) %12, ptr noundef nonnull align 8 dereferenceable(120) %7, i64 120, i1 false), !tbaa.struct !15
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(120) %13, ptr noundef nonnull align 8 dereferenceable(120) %7, i64 120, i1 false), !tbaa.struct !15
  %240 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %indvars.iv366) #11
  %241 = getelementptr inbounds i8, ptr %240, i64 40
  invoke void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %8, ptr noundef nonnull %241, ptr noundef nonnull %77)
          to label %242 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

242:                                              ; preds = %239
  %243 = getelementptr inbounds [513 x %class.Int], ptr %6, i64 0, i64 %indvars.iv366
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %10, ptr noundef nonnull %8, ptr noundef nonnull %243)
          to label %244 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

244:                                              ; preds = %242
  invoke void @_ZN3Int11ModSquareK1EPS_(ptr noundef nonnull align 8 dereferenceable(40) %11, ptr noundef nonnull %10)
          to label %245 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

245:                                              ; preds = %244
  invoke void @_ZN3Int6ModNegEv(ptr noundef nonnull align 8 dereferenceable(40) %12)
          to label %246 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

246:                                              ; preds = %245
  invoke void @_ZN3Int6ModAddEPS_(ptr noundef nonnull align 8 dereferenceable(40) %12, ptr noundef nonnull %11)
          to label %247 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

247:                                              ; preds = %246
  %248 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %indvars.iv366) #11
  invoke void @_ZN3Int6ModSubEPS_(ptr noundef nonnull align 8 dereferenceable(40) %12, ptr noundef nonnull %248)
          to label %249 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

249:                                              ; preds = %247
  br i1 %75, label %250, label %256

250:                                              ; preds = %249
  %251 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %indvars.iv366) #11
  invoke void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %77, ptr noundef nonnull %251, ptr noundef nonnull %12)
          to label %252 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

252:                                              ; preds = %250
  invoke void @_ZN3Int8ModMulK1EPS_(ptr noundef nonnull align 8 dereferenceable(40) %77, ptr noundef nonnull %10)
          to label %253 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

253:                                              ; preds = %252
  %254 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %indvars.iv366) #11
  %255 = getelementptr inbounds i8, ptr %254, i64 40
  invoke void @_ZN3Int6ModSubEPS_(ptr noundef nonnull align 8 dereferenceable(40) %77, ptr noundef nonnull %255)
          to label %256 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

256:                                              ; preds = %253, %249
  %257 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %indvars.iv366) #11
  %258 = getelementptr inbounds i8, ptr %257, i64 40
  invoke void @_ZN3Int3SetEPS_(ptr noundef nonnull align 8 dereferenceable(40) %9, ptr noundef nonnull %258)
          to label %259 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

259:                                              ; preds = %256
  invoke void @_ZN3Int6ModNegEv(ptr noundef nonnull align 8 dereferenceable(40) %9)
          to label %260 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

260:                                              ; preds = %259
  invoke void @_ZN3Int6ModSubEPS_(ptr noundef nonnull align 8 dereferenceable(40) %9, ptr noundef nonnull %78)
          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 @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %10, ptr noundef nonnull %9, ptr noundef nonnull %243)
          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 @_ZN3Int11ModSquareK1EPS_(ptr noundef nonnull align 8 dereferenceable(40) %11, ptr noundef nonnull %10)
          to label %263 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

263:                                              ; preds = %262
  invoke void @_ZN3Int6ModNegEv(ptr noundef nonnull align 8 dereferenceable(40) %13)
          to label %264 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

264:                                              ; preds = %263
  invoke void @_ZN3Int6ModAddEPS_(ptr noundef nonnull align 8 dereferenceable(40) %13, ptr noundef nonnull %11)
          to label %265 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

265:                                              ; preds = %264
  %266 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %indvars.iv366) #11
  invoke void @_ZN3Int6ModSubEPS_(ptr noundef nonnull align 8 dereferenceable(40) %13, ptr noundef nonnull %266)
          to label %267 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

267:                                              ; preds = %265
  br i1 %75, label %268, label %274

268:                                              ; preds = %267
  %269 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %indvars.iv366) #11
  invoke void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %78, ptr noundef nonnull %269, ptr noundef nonnull %13)
          to label %270 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

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

271:                                              ; preds = %270
  %272 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef %indvars.iv366) #11
  %273 = getelementptr inbounds i8, ptr %272, i64 40
  invoke void @_ZN3Int6ModAddEPS_(ptr noundef nonnull align 8 dereferenceable(40) %78, ptr noundef nonnull %273)
          to label %274 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

274:                                              ; preds = %271, %267
  %indvars.iv.next367 = add nuw nsw i64 %indvars.iv366, 1
  %275 = add nuw nsw i64 %indvars.iv366, 513
  %276 = sub nuw nsw i64 511, %indvars.iv366
  %277 = getelementptr inbounds [1024 x %class.Point], ptr %2, i64 0, i64 %275
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(120) %277, ptr noundef nonnull align 8 dereferenceable(120) %12, i64 120, i1 false), !tbaa.struct !15
  %278 = getelementptr inbounds [1024 x %class.Point], ptr %2, i64 0, i64 %276
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(120) %278, ptr noundef nonnull align 8 dereferenceable(120) %13, i64 120, i1 false), !tbaa.struct !15
  %279 = load i32, ptr @FLAGENDOMORPHISM, align 4, !tbaa !11
  %.not248 = icmp eq i32 %279, 0
  br i1 %.not248, label %297, label %280

280:                                              ; preds = %274
  br i1 %75, label %281, label %289

281:                                              ; preds = %280
  %282 = getelementptr inbounds [1024 x %class.Point], ptr %3, i64 0, i64 %275, i32 1
  invoke void @_ZN3Int3SetEPS_(ptr noundef nonnull align 8 dereferenceable(40) %282, ptr noundef nonnull %77)
          to label %283 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

283:                                              ; preds = %281
  %284 = getelementptr inbounds [1024 x %class.Point], ptr %3, i64 0, i64 %276, i32 1
  invoke void @_ZN3Int3SetEPS_(ptr noundef nonnull align 8 dereferenceable(40) %284, ptr noundef nonnull %78)
          to label %285 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

285:                                              ; preds = %283
  %286 = getelementptr inbounds [1024 x %class.Point], ptr %4, i64 0, i64 %275, i32 1
  invoke void @_ZN3Int3SetEPS_(ptr noundef nonnull align 8 dereferenceable(40) %286, ptr noundef nonnull %77)
          to label %287 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

287:                                              ; preds = %285
  %288 = getelementptr inbounds [1024 x %class.Point], ptr %4, i64 0, i64 %276, i32 1
  invoke void @_ZN3Int3SetEPS_(ptr noundef nonnull align 8 dereferenceable(40) %288, ptr noundef nonnull %78)
          to label %289 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

289:                                              ; preds = %287, %280
  %290 = getelementptr inbounds [1024 x %class.Point], ptr %3, i64 0, i64 %275
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %290, ptr noundef nonnull %12, ptr noundef nonnull @beta)
          to label %291 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

291:                                              ; preds = %289
  %292 = getelementptr inbounds [1024 x %class.Point], ptr %3, i64 0, i64 %276
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %292, ptr noundef nonnull %13, ptr noundef nonnull @beta)
          to label %293 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

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

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

297:                                              ; preds = %274, %295
  %exitcond369.not = icmp eq i64 %indvars.iv.next367, 511
  br i1 %exitcond369.not, label %298, label %239, !llvm.loop !19

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

300:                                              ; preds = %298
  br i1 %75, label %301, label %303

301:                                              ; preds = %300
  invoke void @_ZN3Int3SetEPS_(ptr noundef nonnull align 8 dereferenceable(40) %79, ptr noundef nonnull %80)
          to label %302 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

302:                                              ; preds = %301
  invoke void @_ZN3Int3SetEPS_(ptr noundef nonnull align 8 dereferenceable(40) %81, ptr noundef nonnull %80)
          to label %303 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

303:                                              ; preds = %302, %300
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %82, ptr noundef nonnull %76, ptr noundef nonnull @beta)
          to label %304 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

304:                                              ; preds = %303
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %83, ptr noundef nonnull %76, ptr noundef nonnull @beta2)
          to label %305 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

305:                                              ; preds = %304, %298
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(120) %13, ptr noundef nonnull align 8 dereferenceable(120) %7, i64 120, i1 false), !tbaa.struct !15
  %306 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef 511) #11
  %307 = getelementptr inbounds i8, ptr %306, i64 40
  invoke void @_ZN3Int3SetEPS_(ptr noundef nonnull align 8 dereferenceable(40) %9, ptr noundef nonnull %307)
          to label %308 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

308:                                              ; preds = %305
  invoke void @_ZN3Int6ModNegEv(ptr noundef nonnull align 8 dereferenceable(40) %9)
          to label %309 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

309:                                              ; preds = %308
  invoke void @_ZN3Int6ModSubEPS_(ptr noundef nonnull align 8 dereferenceable(40) %9, ptr noundef nonnull %78)
          to label %310 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

310:                                              ; preds = %309
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %10, ptr noundef nonnull %9, ptr noundef nonnull %138)
          to label %311 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

311:                                              ; preds = %310
  invoke void @_ZN3Int11ModSquareK1EPS_(ptr noundef nonnull align 8 dereferenceable(40) %11, ptr noundef nonnull %10)
          to label %312 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

312:                                              ; preds = %311
  invoke void @_ZN3Int6ModNegEv(ptr noundef nonnull align 8 dereferenceable(40) %13)
          to label %313 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

313:                                              ; preds = %312
  invoke void @_ZN3Int6ModAddEPS_(ptr noundef nonnull align 8 dereferenceable(40) %13, ptr noundef nonnull %11)
          to label %314 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

314:                                              ; preds = %313
  %315 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef 511) #11
  invoke void @_ZN3Int6ModSubEPS_(ptr noundef nonnull align 8 dereferenceable(40) %13, ptr noundef nonnull %315)
          to label %316 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

316:                                              ; preds = %314
  br i1 %75, label %317, label %.thread271

317:                                              ; preds = %316
  %318 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef 511) #11
  invoke void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %78, ptr noundef nonnull %318, ptr noundef nonnull %13)
          to label %319 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

319:                                              ; preds = %317
  invoke void @_ZN3Int8ModMulK1EPS_(ptr noundef nonnull align 8 dereferenceable(40) %78, ptr noundef nonnull %10)
          to label %320 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

320:                                              ; preds = %319
  %321 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorI5PointSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @Gn, i64 noundef 511) #11
  %322 = getelementptr inbounds i8, ptr %321, i64 40
  invoke void @_ZN3Int6ModAddEPS_(ptr noundef nonnull align 8 dereferenceable(40) %78, ptr noundef nonnull %322)
          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 = %320
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(120) %2, ptr noundef nonnull align 8 dereferenceable(120) %13, i64 120, i1 false), !tbaa.struct !15
  %324 = load i32, ptr @FLAGENDOMORPHISM, align 4, !tbaa !11
  %.not236 = icmp eq i32 %324, 0
  br i1 %.not236, label %329, label %326

.thread271:                                       ; preds = %316
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(120) %2, ptr noundef nonnull align 8 dereferenceable(120) %13, i64 120, i1 false), !tbaa.struct !15
  %325 = load i32, ptr @FLAGENDOMORPHISM, align 4, !tbaa !11
  %.not236272 = icmp eq i32 %325, 0
  br i1 %.not236272, label %329, label %.thread273

326:                                              ; preds = %323
  invoke void @_ZN3Int3SetEPS_(ptr noundef nonnull align 8 dereferenceable(40) %84, ptr noundef nonnull %78)
          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 = %326
  invoke void @_ZN3Int3SetEPS_(ptr noundef nonnull align 8 dereferenceable(40) %85, ptr noundef nonnull %78)
          to label %.thread273 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

.thread273:                                       ; preds = %.thread271, %327
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %3, ptr noundef nonnull %13, ptr noundef nonnull @beta)
          to label %328 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

328:                                              ; preds = %.thread273
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %4, ptr noundef nonnull %13, ptr noundef nonnull @beta2)
          to label %329 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

329:                                              ; preds = %.thread271, %328, %323
  %330 = add i64 %.0188, 1024
  br label %331

331:                                              ; preds = %329, %582
  %.0190346 = phi i64 [ 0, %329 ], [ %583, %582 ]
  %332 = load i32, ptr @FLAGSEARCH, align 4
  %333 = add i32 %332, -1
  %or.cond = icmp ult i32 %333, 2
  br i1 %or.cond, label %334, label %372

334:                                              ; preds = %331
  %335 = load i32, ptr @FLAGENDOMORPHISM, align 4, !tbaa !11
  %.not237 = icmp eq i32 %335, 0
  %336 = load ptr, ptr @secp, align 8, !tbaa !14
  %337 = shl nuw nsw i64 %.0190346, 2
  %338 = getelementptr inbounds [1024 x %class.Point], ptr %2, i64 0, i64 %337
  %339 = or disjoint i64 %337, 1
  %340 = getelementptr inbounds [1024 x %class.Point], ptr %2, i64 0, i64 %339
  %341 = or disjoint i64 %337, 2
  %342 = getelementptr inbounds [1024 x %class.Point], ptr %2, i64 0, i64 %341
  %343 = or disjoint i64 %337, 3
  %344 = getelementptr inbounds [1024 x %class.Point], ptr %2, i64 0, i64 %343
  br i1 %.not237, label %371, label %345

345:                                              ; preds = %334
  invoke void @_ZN9Secp256K116GetHash160_fromXEihP3IntS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(983240) %336, i32 noundef 0, i8 noundef zeroext 2, ptr noundef nonnull %338, ptr noundef nonnull %340, ptr noundef nonnull %342, ptr noundef nonnull %344, ptr noundef nonnull %19, ptr noundef nonnull %86, ptr noundef nonnull %87, ptr noundef nonnull %88)
          to label %346 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

346:                                              ; preds = %345
  %347 = load ptr, ptr @secp, align 8, !tbaa !14
  invoke void @_ZN9Secp256K116GetHash160_fromXEihP3IntS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(983240) %347, i32 noundef 0, i8 noundef zeroext 3, ptr noundef nonnull %338, ptr noundef nonnull %340, ptr noundef nonnull %342, ptr noundef nonnull %344, ptr noundef nonnull %89, ptr noundef nonnull %90, ptr noundef nonnull %91, ptr noundef nonnull %92)
          to label %348 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

348:                                              ; preds = %346
  %349 = load ptr, ptr @secp, align 8, !tbaa !14
  %350 = getelementptr inbounds [1024 x %class.Point], ptr %3, i64 0, i64 %337
  %351 = getelementptr inbounds [1024 x %class.Point], ptr %3, i64 0, i64 %339
  %352 = getelementptr inbounds [1024 x %class.Point], ptr %3, i64 0, i64 %341
  %353 = getelementptr inbounds [1024 x %class.Point], ptr %3, i64 0, i64 %343
  invoke void @_ZN9Secp256K116GetHash160_fromXEihP3IntS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(983240) %349, i32 noundef 0, i8 noundef zeroext 2, ptr noundef nonnull %350, ptr noundef nonnull %351, ptr noundef nonnull %352, ptr noundef nonnull %353, ptr noundef nonnull %93, ptr noundef nonnull %94, ptr noundef nonnull %95, ptr noundef nonnull %96)
          to label %354 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

354:                                              ; preds = %348
  %355 = load ptr, ptr @secp, align 8, !tbaa !14
  invoke void @_ZN9Secp256K116GetHash160_fromXEihP3IntS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(983240) %355, i32 noundef 0, i8 noundef zeroext 3, ptr noundef nonnull %350, ptr noundef nonnull %351, ptr noundef nonnull %352, ptr noundef nonnull %353, ptr noundef nonnull %97, ptr noundef nonnull %98, ptr noundef nonnull %99, ptr noundef nonnull %100)
          to label %356 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

356:                                              ; preds = %354
  %357 = load ptr, ptr @secp, align 8, !tbaa !14
  %358 = getelementptr inbounds [1024 x %class.Point], ptr %4, i64 0, i64 %337
  %359 = getelementptr inbounds [1024 x %class.Point], ptr %4, i64 0, i64 %339
  %360 = getelementptr inbounds [1024 x %class.Point], ptr %4, i64 0, i64 %341
  %361 = getelementptr inbounds [1024 x %class.Point], ptr %4, i64 0, i64 %343
  invoke void @_ZN9Secp256K116GetHash160_fromXEihP3IntS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(983240) %357, i32 noundef 0, i8 noundef zeroext 2, ptr noundef nonnull %358, ptr noundef nonnull %359, ptr noundef nonnull %360, ptr noundef nonnull %361, ptr noundef nonnull %101, ptr noundef nonnull %102, ptr noundef nonnull %103, ptr noundef nonnull %104)
          to label %.invoke413 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

.invoke413:                                       ; preds = %356, %371
  %362 = phi ptr [ %338, %371 ], [ %358, %356 ]
  %363 = phi ptr [ %340, %371 ], [ %359, %356 ]
  %364 = phi ptr [ %342, %371 ], [ %360, %356 ]
  %365 = phi ptr [ %344, %371 ], [ %361, %356 ]
  %366 = phi ptr [ %89, %371 ], [ %105, %356 ]
  %367 = phi ptr [ %90, %371 ], [ %106, %356 ]
  %368 = phi ptr [ %91, %371 ], [ %107, %356 ]
  %369 = phi ptr [ %92, %371 ], [ %108, %356 ]
  %370 = load ptr, ptr @secp, align 8, !tbaa !14
  invoke void @_ZN9Secp256K116GetHash160_fromXEihP3IntS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(983240) %370, i32 noundef 0, i8 noundef zeroext 3, ptr noundef nonnull %362, ptr noundef nonnull %363, ptr noundef nonnull %364, ptr noundef nonnull %365, ptr noundef nonnull %366, ptr noundef nonnull %367, ptr noundef nonnull %368, ptr noundef nonnull %369)
          to label %372 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

371:                                              ; preds = %334
  invoke void @_ZN9Secp256K116GetHash160_fromXEihP3IntS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(983240) %336, i32 noundef 0, i8 noundef zeroext 2, ptr noundef nonnull %338, ptr noundef nonnull %340, ptr noundef nonnull %342, ptr noundef nonnull %344, ptr noundef nonnull %19, ptr noundef nonnull %86, ptr noundef nonnull %87, ptr noundef nonnull %88)
          to label %.invoke413 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

372:                                              ; preds = %.invoke413, %331
  %373 = load i32, ptr @FLAGSEARCH, align 4
  %374 = and i32 %373, -3
  %or.cond3 = icmp eq i32 %374, 0
  br i1 %or.cond3, label %375, label %.preheader427

.preheader427:                                    ; preds = %.invoke414, %372
  br label %447

375:                                              ; preds = %372
  %376 = load i32, ptr @FLAGENDOMORPHISM, align 4, !tbaa !11
  %.not238 = icmp eq i32 %376, 0
  %377 = shl nuw nsw i64 %.0190346, 2
  br i1 %.not238, label %439, label %.preheader293

.preheader293:                                    ; preds = %375
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %24) #11
  %378 = load ptr, ptr @secp, align 8, !tbaa !14
  %379 = getelementptr inbounds [1024 x %class.Point], ptr %2, i64 0, i64 %377
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %24, ptr noundef nonnull align 8 dereferenceable(983240) %378, ptr noundef nonnull align 8 dereferenceable(120) %379)
          to label %380 unwind label %400

380:                                              ; preds = %.preheader293
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(120) %5, ptr noundef nonnull align 8 dereferenceable(120) %24, i64 120, i1 false), !tbaa.struct !15
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %24) #11
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %24) #11
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %24) #11
  %381 = load ptr, ptr @secp, align 8, !tbaa !14
  %382 = or disjoint i64 %377, 1
  %383 = getelementptr inbounds [1024 x %class.Point], ptr %2, i64 0, i64 %382
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %24, ptr noundef nonnull align 8 dereferenceable(983240) %381, ptr noundef nonnull align 8 dereferenceable(120) %383)
          to label %384 unwind label %400

384:                                              ; preds = %380
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(120) %.ptr227.1, ptr noundef nonnull align 8 dereferenceable(120) %24, i64 120, i1 false), !tbaa.struct !15
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %24) #11
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %24) #11
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %24) #11
  %385 = load ptr, ptr @secp, align 8, !tbaa !14
  %386 = or disjoint i64 %377, 2
  %387 = getelementptr inbounds [1024 x %class.Point], ptr %2, i64 0, i64 %386
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %24, ptr noundef nonnull align 8 dereferenceable(983240) %385, ptr noundef nonnull align 8 dereferenceable(120) %387)
          to label %388 unwind label %400

388:                                              ; preds = %384
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(120) %.ptr227.2, ptr noundef nonnull align 8 dereferenceable(120) %24, i64 120, i1 false), !tbaa.struct !15
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %24) #11
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %24) #11
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %24) #11
  %389 = load ptr, ptr @secp, align 8, !tbaa !14
  %390 = or disjoint i64 %377, 3
  %391 = getelementptr inbounds [1024 x %class.Point], ptr %2, i64 0, i64 %390
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %24, ptr noundef nonnull align 8 dereferenceable(983240) %389, ptr noundef nonnull align 8 dereferenceable(120) %391)
          to label %392 unwind label %400

392:                                              ; preds = %388
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(120) %.ptr227.3, ptr noundef nonnull align 8 dereferenceable(120) %24, i64 120, i1 false), !tbaa.struct !15
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %24) #11
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %24) #11
  %393 = load ptr, ptr @secp, align 8, !tbaa !14
  %394 = or disjoint i64 %377, 1
  %395 = getelementptr inbounds [1024 x %class.Point], ptr %2, i64 0, i64 %394
  %396 = or disjoint i64 %377, 2
  %397 = getelementptr inbounds [1024 x %class.Point], ptr %2, i64 0, i64 %396
  %398 = or disjoint i64 %377, 3
  %399 = getelementptr inbounds [1024 x %class.Point], ptr %2, i64 0, i64 %398
  invoke void @_ZN9Secp256K110GetHash160EibR5PointS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(983240) %393, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(120) %379, ptr noundef nonnull align 8 dereferenceable(120) %395, ptr noundef nonnull align 8 dereferenceable(120) %397, ptr noundef nonnull align 8 dereferenceable(120) %399, ptr noundef nonnull %109, ptr noundef nonnull %110, ptr noundef nonnull %111, ptr noundef nonnull %112)
          to label %402 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

400:                                              ; preds = %388, %384, %380, %.preheader293
  %401 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %24) #11
  br label %.loopexit.split-lp

402:                                              ; preds = %392
  %403 = load ptr, ptr @secp, align 8, !tbaa !14
  invoke void @_ZN9Secp256K110GetHash160EibR5PointS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(983240) %403, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(120) %5, ptr noundef nonnull align 8 dereferenceable(120) %.ptr227.1, ptr noundef nonnull align 8 dereferenceable(120) %.ptr227.2, ptr noundef nonnull align 8 dereferenceable(120) %.ptr227.3, ptr noundef nonnull %113, ptr noundef nonnull %114, ptr noundef nonnull %115, ptr noundef nonnull %116)
          to label %.preheader292.preheader unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

.preheader292.preheader:                          ; preds = %402
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %25) #11
  %404 = load ptr, ptr @secp, align 8, !tbaa !14
  %405 = getelementptr inbounds [1024 x %class.Point], ptr %3, i64 0, i64 %377
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %25, ptr noundef nonnull align 8 dereferenceable(983240) %404, ptr noundef nonnull align 8 dereferenceable(120) %405)
          to label %.preheader292.1 unwind label %414

.preheader292.1:                                  ; preds = %.preheader292.preheader
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(120) %5, ptr noundef nonnull align 8 dereferenceable(120) %25, i64 120, i1 false), !tbaa.struct !15
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %25) #11
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %25) #11
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %25) #11
  %406 = load ptr, ptr @secp, align 8, !tbaa !14
  %407 = getelementptr inbounds [1024 x %class.Point], ptr %3, i64 0, i64 %394
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %25, ptr noundef nonnull align 8 dereferenceable(983240) %406, ptr noundef nonnull align 8 dereferenceable(120) %407)
          to label %.preheader292.2 unwind label %414

.preheader292.2:                                  ; preds = %.preheader292.1
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(120) %.ptr227.1, ptr noundef nonnull align 8 dereferenceable(120) %25, i64 120, i1 false), !tbaa.struct !15
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %25) #11
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %25) #11
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %25) #11
  %408 = load ptr, ptr @secp, align 8, !tbaa !14
  %409 = getelementptr inbounds [1024 x %class.Point], ptr %3, i64 0, i64 %396
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %25, ptr noundef nonnull align 8 dereferenceable(983240) %408, ptr noundef nonnull align 8 dereferenceable(120) %409)
          to label %.preheader292.3 unwind label %414

.preheader292.3:                                  ; preds = %.preheader292.2
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(120) %.ptr227.2, ptr noundef nonnull align 8 dereferenceable(120) %25, i64 120, i1 false), !tbaa.struct !15
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %25) #11
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %25) #11
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %25) #11
  %410 = load ptr, ptr @secp, align 8, !tbaa !14
  %411 = getelementptr inbounds [1024 x %class.Point], ptr %3, i64 0, i64 %398
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %25, ptr noundef nonnull align 8 dereferenceable(983240) %410, ptr noundef nonnull align 8 dereferenceable(120) %411)
          to label %412 unwind label %414

412:                                              ; preds = %.preheader292.3
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(120) %.ptr227.3, ptr noundef nonnull align 8 dereferenceable(120) %25, i64 120, i1 false), !tbaa.struct !15
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %25) #11
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %25) #11
  %413 = load ptr, ptr @secp, align 8, !tbaa !14
  invoke void @_ZN9Secp256K110GetHash160EibR5PointS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(983240) %413, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(120) %405, ptr noundef nonnull align 8 dereferenceable(120) %407, ptr noundef nonnull align 8 dereferenceable(120) %409, ptr noundef nonnull align 8 dereferenceable(120) %411, ptr noundef nonnull %117, ptr noundef nonnull %118, ptr noundef nonnull %119, ptr noundef nonnull %120)
          to label %416 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

414:                                              ; preds = %.preheader292.3, %.preheader292.2, %.preheader292.1, %.preheader292.preheader
  %415 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %25) #11
  br label %.loopexit.split-lp

416:                                              ; preds = %412
  %417 = load ptr, ptr @secp, align 8, !tbaa !14
  invoke void @_ZN9Secp256K110GetHash160EibR5PointS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(983240) %417, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(120) %5, ptr noundef nonnull align 8 dereferenceable(120) %.ptr227.1, ptr noundef nonnull align 8 dereferenceable(120) %.ptr227.2, ptr noundef nonnull align 8 dereferenceable(120) %.ptr227.3, ptr noundef nonnull %121, ptr noundef nonnull %122, ptr noundef nonnull %123, ptr noundef nonnull %124)
          to label %.preheader291.preheader unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

.preheader291.preheader:                          ; preds = %416
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %26) #11
  %418 = load ptr, ptr @secp, align 8, !tbaa !14
  %419 = getelementptr inbounds [1024 x %class.Point], ptr %4, i64 0, i64 %377
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %26, ptr noundef nonnull align 8 dereferenceable(983240) %418, ptr noundef nonnull align 8 dereferenceable(120) %419)
          to label %.preheader291.1 unwind label %428

.preheader291.1:                                  ; preds = %.preheader291.preheader
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(120) %5, ptr noundef nonnull align 8 dereferenceable(120) %26, i64 120, i1 false), !tbaa.struct !15
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %26) #11
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %26) #11
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %26) #11
  %420 = load ptr, ptr @secp, align 8, !tbaa !14
  %421 = getelementptr inbounds [1024 x %class.Point], ptr %4, i64 0, i64 %394
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %26, ptr noundef nonnull align 8 dereferenceable(983240) %420, ptr noundef nonnull align 8 dereferenceable(120) %421)
          to label %.preheader291.2 unwind label %428

.preheader291.2:                                  ; preds = %.preheader291.1
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(120) %.ptr227.1, ptr noundef nonnull align 8 dereferenceable(120) %26, i64 120, i1 false), !tbaa.struct !15
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %26) #11
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %26) #11
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %26) #11
  %422 = load ptr, ptr @secp, align 8, !tbaa !14
  %423 = getelementptr inbounds [1024 x %class.Point], ptr %4, i64 0, i64 %396
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %26, ptr noundef nonnull align 8 dereferenceable(983240) %422, ptr noundef nonnull align 8 dereferenceable(120) %423)
          to label %.preheader291.3 unwind label %428

.preheader291.3:                                  ; preds = %.preheader291.2
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(120) %.ptr227.2, ptr noundef nonnull align 8 dereferenceable(120) %26, i64 120, i1 false), !tbaa.struct !15
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %26) #11
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %26) #11
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %26) #11
  %424 = load ptr, ptr @secp, align 8, !tbaa !14
  %425 = getelementptr inbounds [1024 x %class.Point], ptr %4, i64 0, i64 %398
  invoke void @_ZN9Secp256K18NegationER5Point(ptr dead_on_unwind nonnull writable sret(%class.Point) align 8 %26, ptr noundef nonnull align 8 dereferenceable(983240) %424, ptr noundef nonnull align 8 dereferenceable(120) %425)
          to label %426 unwind label %428

426:                                              ; preds = %.preheader291.3
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(120) %.ptr227.3, ptr noundef nonnull align 8 dereferenceable(120) %26, i64 120, i1 false), !tbaa.struct !15
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %26) #11
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %26) #11
  %427 = load ptr, ptr @secp, align 8, !tbaa !14
  invoke void @_ZN9Secp256K110GetHash160EibR5PointS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(983240) %427, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(120) %419, ptr noundef nonnull align 8 dereferenceable(120) %421, ptr noundef nonnull align 8 dereferenceable(120) %423, ptr noundef nonnull align 8 dereferenceable(120) %425, ptr noundef nonnull %125, ptr noundef nonnull %126, ptr noundef nonnull %127, ptr noundef nonnull %128)
          to label %.invoke414 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

428:                                              ; preds = %.preheader291.3, %.preheader291.2, %.preheader291.1, %.preheader291.preheader
  %429 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %26) #11
  br label %.loopexit.split-lp

.invoke414:                                       ; preds = %426, %439
  %430 = phi ptr [ %440, %439 ], [ %5, %426 ]
  %431 = phi ptr [ %442, %439 ], [ %.ptr227.1, %426 ]
  %432 = phi ptr [ %444, %439 ], [ %.ptr227.2, %426 ]
  %433 = phi ptr [ %446, %439 ], [ %.ptr227.3, %426 ]
  %434 = phi ptr [ %18, %439 ], [ %129, %426 ]
  %435 = phi ptr [ %133, %439 ], [ %130, %426 ]
  %436 = phi ptr [ %134, %439 ], [ %131, %426 ]
  %437 = phi ptr [ %135, %439 ], [ %132, %426 ]
  %438 = load ptr, ptr @secp, align 8, !tbaa !14
  invoke void @_ZN9Secp256K110GetHash160EibR5PointS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(983240) %438, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(120) %430, ptr noundef nonnull align 8 dereferenceable(120) %431, ptr noundef nonnull align 8 dereferenceable(120) %432, ptr noundef nonnull align 8 dereferenceable(120) %433, ptr noundef nonnull %434, ptr noundef nonnull %435, ptr noundef nonnull %436, ptr noundef nonnull %437)
          to label %.preheader427 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

439:                                              ; preds = %375
  %440 = getelementptr inbounds [1024 x %class.Point], ptr %2, i64 0, i64 %377
  %441 = or disjoint i64 %377, 1
  %442 = getelementptr inbounds [1024 x %class.Point], ptr %2, i64 0, i64 %441
  %443 = or disjoint i64 %377, 2
  %444 = getelementptr inbounds [1024 x %class.Point], ptr %2, i64 0, i64 %443
  %445 = or disjoint i64 %377, 3
  %446 = getelementptr inbounds [1024 x %class.Point], ptr %2, i64 0, i64 %445
  br label %.invoke414

447:                                              ; preds = %.preheader427, %.loopexit277
  %indvars.iv393 = phi i64 [ %indvars.iv.next394, %.loopexit277 ], [ 0, %.preheader427 ]
  %448 = load i32, ptr @FLAGSEARCH, align 4
  %449 = add i32 %448, -1
  %or.cond5 = icmp ult i32 %449, 2
  br i1 %or.cond5, label %450, label %.loopexit280

450:                                              ; preds = %447
  %451 = load i32, ptr @FLAGENDOMORPHISM, align 4, !tbaa !11
  %.not239 = icmp eq i32 %451, 0
  br i1 %.not239, label %.preheader279, label %.preheader284

.preheader284:                                    ; preds = %450
  %452 = trunc nuw nsw i64 %indvars.iv393 to i32
  br label %455

.preheader279:                                    ; preds = %450
  %453 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %19, i64 0, i64 0, i64 %indvars.iv393
  %454 = invoke noundef zeroext i1 @_Z14vanityrmdmatchPh(ptr noundef nonnull %453)
          to label %494 unwind label %.loopexit.split-lp.loopexit

455:                                              ; preds = %.preheader284, %493
  %indvars.iv382 = phi i64 [ 0, %.preheader284 ], [ %indvars.iv.next383, %493 ]
  %456 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %19, i64 0, i64 %indvars.iv382, i64 %indvars.iv393
  %457 = invoke noundef zeroext i1 @_Z14vanityrmdmatchPh(ptr noundef nonnull %456)
          to label %458 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

458:                                              ; preds = %455
  br i1 %457, label %459, label %493

459:                                              ; preds = %458
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(40) %22, i32 noundef %452)
          to label %460 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

460:                                              ; preds = %459
  invoke void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(40) %22, ptr noundef nonnull @stride)
          to label %461 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

461:                                              ; preds = %460
  invoke void @_ZN3Int3AddEPS_(ptr noundef nonnull align 8 dereferenceable(40) %22, ptr noundef nonnull %20)
          to label %462 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

462:                                              ; preds = %461
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %27) #11
  %463 = 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(983240) %463, ptr noundef nonnull %22)
          to label %464 unwind label %466

464:                                              ; preds = %462
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(120) %16, ptr noundef nonnull align 8 dereferenceable(120) %27, i64 120, i1 false), !tbaa.struct !15
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %27) #11
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %27) #11
  %465 = trunc nuw nsw i64 %indvars.iv382 to i32
  switch i32 %465, label %default.unreachable [
    i32 0, label %468
    i32 1, label %473
    i32 2, label %476
    i32 3, label %480
    i32 4, label %484
    i32 5, label %488
  ]

466:                                              ; preds = %462
  %467 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %27) #11
  br label %.loopexit.split-lp

468:                                              ; preds = %464
  %469 = invoke noundef zeroext i1 @_ZN3Int5IsOddEv(ptr noundef nonnull align 8 dereferenceable(40) %136)
          to label %470 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

470:                                              ; preds = %468
  br i1 %469, label %.invoke416.invoke, label %492

.invoke412:                                       ; preds = %.invoke416.invoke
  %471 = load ptr, ptr @secp, align 8, !tbaa !14
  %472 = getelementptr inbounds i8, ptr %471, i64 160
  invoke void @_ZN3Int3AddEPS_(ptr noundef nonnull align 8 dereferenceable(40) %22, ptr noundef nonnull %472)
          to label %492 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

473:                                              ; preds = %464
  %474 = invoke noundef zeroext i1 @_ZN3Int6IsEvenEv(ptr noundef nonnull align 8 dereferenceable(40) %136)
          to label %475 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

475:                                              ; preds = %473
  br i1 %474, label %.invoke416.invoke, label %492

.invoke416.invoke:                                ; preds = %475, %479, %483, %487, %491, %470
  invoke void @_ZN3Int3NegEv(ptr noundef nonnull align 8 dereferenceable(40) %22)
          to label %.invoke412 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

476:                                              ; preds = %464
  invoke void @_ZN3Int13ModMulK1orderEPS_(ptr noundef nonnull align 8 dereferenceable(40) %22, ptr noundef nonnull @lambda)
          to label %477 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

477:                                              ; preds = %476
  %478 = invoke noundef zeroext i1 @_ZN3Int5IsOddEv(ptr noundef nonnull align 8 dereferenceable(40) %136)
          to label %479 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

479:                                              ; preds = %477
  br i1 %478, label %.invoke416.invoke, label %492

480:                                              ; preds = %464
  invoke void @_ZN3Int13ModMulK1orderEPS_(ptr noundef nonnull align 8 dereferenceable(40) %22, ptr noundef nonnull @lambda)
          to label %481 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

481:                                              ; preds = %480
  %482 = invoke noundef zeroext i1 @_ZN3Int6IsEvenEv(ptr noundef nonnull align 8 dereferenceable(40) %136)
          to label %483 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

483:                                              ; preds = %481
  br i1 %482, label %.invoke416.invoke, label %492

484:                                              ; preds = %464
  invoke void @_ZN3Int13ModMulK1orderEPS_(ptr noundef nonnull align 8 dereferenceable(40) %22, ptr noundef nonnull @lambda2)
          to label %485 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

485:                                              ; preds = %484
  %486 = invoke noundef zeroext i1 @_ZN3Int5IsOddEv(ptr noundef nonnull align 8 dereferenceable(40) %136)
          to label %487 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

487:                                              ; preds = %485
  br i1 %486, label %.invoke416.invoke, label %492

488:                                              ; preds = %464
  invoke void @_ZN3Int13ModMulK1orderEPS_(ptr noundef nonnull align 8 dereferenceable(40) %22, ptr noundef nonnull @lambda2)
          to label %489 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

489:                                              ; preds = %488
  %490 = invoke noundef zeroext i1 @_ZN3Int6IsEvenEv(ptr noundef nonnull align 8 dereferenceable(40) %136)
          to label %491 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

491:                                              ; preds = %489
  br i1 %490, label %.invoke416.invoke, label %492

default.unreachable:                              ; preds = %464
  unreachable

492:                                              ; preds = %.invoke412, %491, %487, %483, %479, %475, %470
  invoke void @_Z14writevanitykeybP3Int(i1 noundef zeroext true, ptr noundef nonnull %22)
          to label %493 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

493:                                              ; preds = %458, %492
  %indvars.iv.next383 = add nuw nsw i64 %indvars.iv382, 1
  %exitcond385.not = icmp eq i64 %indvars.iv.next383, 6
  br i1 %exitcond385.not, label %.loopexit280, label %455, !llvm.loop !20

494:                                              ; preds = %.preheader279
  br i1 %454, label %495, label %511

495:                                              ; preds = %494
  %496 = trunc nuw nsw i64 %indvars.iv393 to i32
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(40) %22, i32 noundef %496)
          to label %497 unwind label %.loopexit.split-lp.loopexit

497:                                              ; preds = %495
  invoke void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(40) %22, ptr noundef nonnull @stride)
          to label %498 unwind label %.loopexit.split-lp.loopexit

498:                                              ; preds = %497
  invoke void @_ZN3Int3AddEPS_(ptr noundef nonnull align 8 dereferenceable(40) %22, ptr noundef nonnull %20)
          to label %499 unwind label %.loopexit.split-lp.loopexit

499:                                              ; preds = %498
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %28) #11
  %500 = 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(983240) %500, ptr noundef nonnull %22)
          to label %501 unwind label %508

501:                                              ; preds = %499
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(120) %16, ptr noundef nonnull align 8 dereferenceable(120) %28, i64 120, i1 false), !tbaa.struct !15
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %28) #11
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %28) #11
  %502 = load ptr, ptr @secp, align 8, !tbaa !14
  invoke void @_ZN9Secp256K110GetHash160EibR5PointPh(ptr noundef nonnull align 8 dereferenceable(983240) %502, i32 noundef 0, i1 noundef zeroext true, ptr noundef nonnull align 8 dereferenceable(120) %16, ptr noundef nonnull %17)
          to label %503 unwind label %.loopexit.split-lp.loopexit

503:                                              ; preds = %501
  %bcmp = call i32 @bcmp(ptr noundef nonnull dereferenceable(20) %453, ptr noundef nonnull dereferenceable(20) %17, i64 20)
  %.not240 = icmp eq i32 %bcmp, 0
  br i1 %.not240, label %510, label %504

504:                                              ; preds = %503
  invoke void @_ZN3Int3NegEv(ptr noundef nonnull align 8 dereferenceable(40) %22)
          to label %505 unwind label %.loopexit.split-lp.loopexit

505:                                              ; preds = %504
  %506 = load ptr, ptr @secp, align 8, !tbaa !14
  %507 = getelementptr inbounds i8, ptr %506, i64 160
  invoke void @_ZN3Int3AddEPS_(ptr noundef nonnull align 8 dereferenceable(40) %22, ptr noundef nonnull %507)
          to label %510 unwind label %.loopexit.split-lp.loopexit

508:                                              ; preds = %519, %499
  %509 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %28) #11
  br label %.loopexit.split-lp

510:                                              ; preds = %505, %503
  invoke void @_Z14writevanitykeybP3Int(i1 noundef zeroext true, ptr noundef nonnull %22)
          to label %511 unwind label %.loopexit.split-lp.loopexit

511:                                              ; preds = %494, %510
  %512 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %19, i64 0, i64 1, i64 %indvars.iv393
  %513 = invoke noundef zeroext i1 @_Z14vanityrmdmatchPh(ptr noundef nonnull %512)
          to label %514 unwind label %.loopexit.split-lp.loopexit

514:                                              ; preds = %511
  br i1 %513, label %515, label %.loopexit280

515:                                              ; preds = %514
  %516 = trunc nuw nsw i64 %indvars.iv393 to i32
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(40) %22, i32 noundef %516)
          to label %517 unwind label %.loopexit.split-lp.loopexit

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

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

519:                                              ; preds = %518
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %28) #11
  %520 = 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(983240) %520, ptr noundef nonnull %22)
          to label %521 unwind label %508

521:                                              ; preds = %519
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(120) %16, ptr noundef nonnull align 8 dereferenceable(120) %28, i64 120, i1 false), !tbaa.struct !15
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %28) #11
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %28) #11
  %522 = load ptr, ptr @secp, align 8, !tbaa !14
  invoke void @_ZN9Secp256K110GetHash160EibR5PointPh(ptr noundef nonnull align 8 dereferenceable(983240) %522, i32 noundef 0, i1 noundef zeroext true, ptr noundef nonnull align 8 dereferenceable(120) %16, ptr noundef nonnull %17)
          to label %523 unwind label %.loopexit.split-lp.loopexit

523:                                              ; preds = %521
  %bcmp.1 = call i32 @bcmp(ptr noundef nonnull dereferenceable(20) %512, ptr noundef nonnull dereferenceable(20) %17, i64 20)
  %.not240.1 = icmp eq i32 %bcmp.1, 0
  br i1 %.not240.1, label %528, label %524

524:                                              ; preds = %523
  invoke void @_ZN3Int3NegEv(ptr noundef nonnull align 8 dereferenceable(40) %22)
          to label %525 unwind label %.loopexit.split-lp.loopexit

525:                                              ; preds = %524
  %526 = load ptr, ptr @secp, align 8, !tbaa !14
  %527 = getelementptr inbounds i8, ptr %526, i64 160
  invoke void @_ZN3Int3AddEPS_(ptr noundef nonnull align 8 dereferenceable(40) %22, ptr noundef nonnull %527)
          to label %528 unwind label %.loopexit.split-lp.loopexit

528:                                              ; preds = %525, %523
  invoke void @_Z14writevanitykeybP3Int(i1 noundef zeroext true, ptr noundef nonnull %22)
          to label %.loopexit280 unwind label %.loopexit.split-lp.loopexit

.loopexit280:                                     ; preds = %493, %514, %528, %447
  %529 = load i32, ptr @FLAGSEARCH, align 4
  %530 = and i32 %529, -3
  %or.cond7 = icmp eq i32 %530, 0
  br i1 %or.cond7, label %531, label %.loopexit277

531:                                              ; preds = %.loopexit280
  %532 = load i32, ptr @FLAGENDOMORPHISM, align 4, !tbaa !11
  %.not241 = icmp eq i32 %532, 0
  br i1 %.not241, label %570, label %.preheader

.preheader:                                       ; preds = %531
  %533 = trunc nuw nsw i64 %indvars.iv393 to i32
  br label %534

534:                                              ; preds = %.preheader, %569
  %indvars.iv389 = phi i64 [ 6, %.preheader ], [ %indvars.iv.next390, %569 ]
  %535 = getelementptr inbounds [12 x [4 x [20 x i8]]], ptr %19, i64 0, i64 %indvars.iv389, i64 %indvars.iv393
  %536 = invoke noundef zeroext i1 @_Z14vanityrmdmatchPh(ptr noundef nonnull %535)
          to label %537 unwind label %.loopexit278

537:                                              ; preds = %534
  br i1 %536, label %538, label %569

538:                                              ; preds = %537
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(40) %22, i32 noundef %533)
          to label %539 unwind label %.loopexit278

539:                                              ; preds = %538
  invoke void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(40) %22, ptr noundef nonnull @stride)
          to label %540 unwind label %.loopexit278

540:                                              ; preds = %539
  invoke void @_ZN3Int3AddEPS_(ptr noundef nonnull align 8 dereferenceable(40) %22, ptr noundef nonnull %20)
          to label %541 unwind label %.loopexit278

541:                                              ; preds = %540
  %542 = trunc nuw nsw i64 %indvars.iv389 to i32
  switch i32 %542, label %568 [
    i32 6, label %543
    i32 7, label %543
    i32 8, label %552
    i32 9, label %552
    i32 10, label %560
    i32 11, label %560
  ]

543:                                              ; preds = %541, %541
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %29) #11
  %544 = 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(983240) %544, ptr noundef nonnull %22)
          to label %545 unwind label %550

545:                                              ; preds = %543
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(120) %16, ptr noundef nonnull align 8 dereferenceable(120) %29, i64 120, i1 false), !tbaa.struct !15
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %29) #11
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %29) #11
  %546 = load ptr, ptr @secp, align 8, !tbaa !14
  invoke void @_ZN9Secp256K110GetHash160EibR5PointPh(ptr noundef nonnull align 8 dereferenceable(983240) %546, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(120) %16, ptr noundef nonnull %18)
          to label %547 unwind label %.loopexit278

547:                                              ; preds = %545
  %bcmp246 = call i32 @bcmp(ptr noundef nonnull dereferenceable(20) %535, ptr noundef nonnull dereferenceable(20) %18, i64 20)
  %.not247 = icmp eq i32 %bcmp246, 0
  br i1 %.not247, label %568, label %.invoke415.invoke

.invoke:                                          ; preds = %.invoke415.invoke
  %548 = load ptr, ptr @secp, align 8, !tbaa !14
  %549 = getelementptr inbounds i8, ptr %548, i64 160
  invoke void @_ZN3Int3AddEPS_(ptr noundef nonnull align 8 dereferenceable(40) %22, ptr noundef nonnull %549)
          to label %568 unwind label %.loopexit278

550:                                              ; preds = %543
  %551 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %29) #11
  br label %.loopexit.split-lp

552:                                              ; preds = %541, %541
  invoke void @_ZN3Int13ModMulK1orderEPS_(ptr noundef nonnull align 8 dereferenceable(40) %22, ptr noundef nonnull @lambda)
          to label %553 unwind label %.loopexit278

553:                                              ; preds = %552
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %30) #11
  %554 = 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(983240) %554, ptr noundef nonnull %22)
          to label %555 unwind label %558

555:                                              ; preds = %553
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(120) %16, ptr noundef nonnull align 8 dereferenceable(120) %30, i64 120, i1 false), !tbaa.struct !15
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %30) #11
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %30) #11
  %556 = load ptr, ptr @secp, align 8, !tbaa !14
  invoke void @_ZN9Secp256K110GetHash160EibR5PointPh(ptr noundef nonnull align 8 dereferenceable(983240) %556, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(120) %16, ptr noundef nonnull %18)
          to label %557 unwind label %.loopexit278

557:                                              ; preds = %555
  %bcmp244 = call i32 @bcmp(ptr noundef nonnull dereferenceable(20) %535, ptr noundef nonnull dereferenceable(20) %18, i64 20)
  %.not245 = icmp eq i32 %bcmp244, 0
  br i1 %.not245, label %568, label %.invoke415.invoke

.invoke415.invoke:                                ; preds = %557, %565, %547
  invoke void @_ZN3Int3NegEv(ptr noundef nonnull align 8 dereferenceable(40) %22)
          to label %.invoke unwind label %.loopexit278

558:                                              ; preds = %553
  %559 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %30) #11
  br label %.loopexit.split-lp

560:                                              ; preds = %541, %541
  invoke void @_ZN3Int13ModMulK1orderEPS_(ptr noundef nonnull align 8 dereferenceable(40) %22, ptr noundef nonnull @lambda2)
          to label %561 unwind label %.loopexit278

561:                                              ; preds = %560
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %31) #11
  %562 = 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(983240) %562, ptr noundef nonnull %22)
          to label %563 unwind label %566

563:                                              ; preds = %561
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(120) %16, ptr noundef nonnull align 8 dereferenceable(120) %31, i64 120, i1 false), !tbaa.struct !15
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %31) #11
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %31) #11
  %564 = load ptr, ptr @secp, align 8, !tbaa !14
  invoke void @_ZN9Secp256K110GetHash160EibR5PointPh(ptr noundef nonnull align 8 dereferenceable(983240) %564, i32 noundef 0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(120) %16, ptr noundef nonnull %18)
          to label %565 unwind label %.loopexit278

565:                                              ; preds = %563
  %bcmp242 = call i32 @bcmp(ptr noundef nonnull dereferenceable(20) %535, ptr noundef nonnull dereferenceable(20) %18, i64 20)
  %.not243 = icmp eq i32 %bcmp242, 0
  br i1 %.not243, label %568, label %.invoke415.invoke

566:                                              ; preds = %561
  %567 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %31) #11
  br label %.loopexit.split-lp

568:                                              ; preds = %.invoke, %565, %557, %547, %541
  invoke void @_Z14writevanitykeybP3Int(i1 noundef zeroext false, ptr noundef nonnull %22)
          to label %569 unwind label %.loopexit278

569:                                              ; preds = %537, %568
  %indvars.iv.next390 = add nuw nsw i64 %indvars.iv389, 1
  %exitcond392.not = icmp eq i64 %indvars.iv.next390, 12
  br i1 %exitcond392.not, label %.loopexit277, label %534, !llvm.loop !21

570:                                              ; preds = %531
  %571 = getelementptr inbounds [4 x [20 x i8]], ptr %18, i64 0, i64 %indvars.iv393
  %572 = invoke noundef zeroext i1 @_Z14vanityrmdmatchPh(ptr noundef nonnull %571)
          to label %573 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

573:                                              ; preds = %570
  br i1 %572, label %574, label %.loopexit277

574:                                              ; preds = %573
  %575 = trunc nuw nsw i64 %indvars.iv393 to i32
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(40) %22, i32 noundef %575)
          to label %576 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

576:                                              ; preds = %574
  invoke void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(40) %22, ptr noundef nonnull @stride)
          to label %577 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

577:                                              ; preds = %576
  invoke void @_ZN3Int3AddEPS_(ptr noundef nonnull align 8 dereferenceable(40) %22, ptr noundef nonnull %20)
          to label %578 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

578:                                              ; preds = %577
  invoke void @_Z14writevanitykeybP3Int(i1 noundef zeroext false, ptr noundef nonnull %22)
          to label %.loopexit277 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

.loopexit277:                                     ; preds = %569, %.loopexit280, %573, %578
  %indvars.iv.next394 = add nuw nsw i64 %indvars.iv393, 1
  %exitcond396.not = icmp eq i64 %indvars.iv.next394, 4
  br i1 %exitcond396.not, label %579, label %447, !llvm.loop !22

579:                                              ; preds = %.loopexit277
  invoke void @_ZN3Int8SetInt32Ej(ptr noundef nonnull align 8 dereferenceable(40) %21, i32 noundef 4)
          to label %580 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

580:                                              ; preds = %579
  invoke void @_ZN3Int4MultEPS_(ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull @stride)
          to label %581 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

581:                                              ; preds = %580
  invoke void @_ZN3Int3AddEPS_(ptr noundef nonnull align 8 dereferenceable(40) %20, ptr noundef nonnull %21)
          to label %582 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

582:                                              ; preds = %581
  %583 = add nuw nsw i64 %.0190346, 1
  %exitcond397.not = icmp eq i64 %583, 256
  br i1 %exitcond397.not, label %584, label %331, !llvm.loop !23

584:                                              ; preds = %582
  %585 = load ptr, ptr @steps, align 8, !tbaa !14
  %586 = getelementptr inbounds i64, ptr %585, i64 %137
  %587 = load i64, ptr %586, align 8, !tbaa !12
  %588 = add i64 %587, 1
  store i64 %588, ptr %586, align 8, !tbaa !12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(120) %12, ptr noundef nonnull align 8 dereferenceable(120) %7, i64 120, i1 false), !tbaa.struct !15
  invoke void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %8, ptr noundef nonnull getelementptr inbounds (i8, ptr @_2Gn, i64 40), ptr noundef nonnull %77)
          to label %589 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

589:                                              ; preds = %584
  invoke void @_ZN3Int8ModMulK1EPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %10, ptr noundef nonnull %8, ptr noundef nonnull %139)
          to label %590 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

590:                                              ; preds = %589
  invoke void @_ZN3Int11ModSquareK1EPS_(ptr noundef nonnull align 8 dereferenceable(40) %11, ptr noundef nonnull %10)
          to label %591 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

591:                                              ; preds = %590
  invoke void @_ZN3Int6ModNegEv(ptr noundef nonnull align 8 dereferenceable(40) %12)
          to label %592 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

592:                                              ; preds = %591
  invoke void @_ZN3Int6ModAddEPS_(ptr noundef nonnull align 8 dereferenceable(40) %12, ptr noundef nonnull %11)
          to label %593 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

593:                                              ; preds = %592
  invoke void @_ZN3Int6ModSubEPS_(ptr noundef nonnull align 8 dereferenceable(40) %12, ptr noundef nonnull @_2Gn)
          to label %594 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

594:                                              ; preds = %593
  invoke void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(40) %77, ptr noundef nonnull @_2Gn, ptr noundef nonnull %12)
          to label %595 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

595:                                              ; preds = %594
  invoke void @_ZN3Int8ModMulK1EPS_(ptr noundef nonnull align 8 dereferenceable(40) %77, ptr noundef nonnull %10)
          to label %596 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

596:                                              ; preds = %595
  invoke void @_ZN3Int6ModSubEPS_(ptr noundef nonnull align 8 dereferenceable(40) %77, ptr noundef nonnull getelementptr inbounds (i8, ptr @_2Gn, i64 40))
          to label %597 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

597:                                              ; preds = %596
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(120) %7, ptr noundef nonnull align 8 dereferenceable(120) %12, i64 120, i1 false), !tbaa.struct !15
  %598 = load i64, ptr @N_SEQUENTIAL_MAX, align 8, !tbaa !12
  %599 = icmp ult i64 %330, %598
  br i1 %599, label %223, label %600, !llvm.loop !24

600:                                              ; preds = %597
  br label %140, !llvm.loop !25

.critedge:                                        ; preds = %199
  %601 = load ptr, ptr @ends, align 8, !tbaa !14
  %602 = getelementptr inbounds i32, ptr %601, i64 %137
  store i32 1, ptr %602, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %22) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %21) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %20) #11
  call void @llvm.lifetime.end.p0(i64 960, ptr nonnull %19) #11
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %18) #11
  call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %17) #11
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %16) #11
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %16) #11
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %15) #11
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %15) #11
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %14) #11
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %14) #11
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %13) #11
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %13) #11
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %12) #11
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %12) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %11) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %10) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %9) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %8) #11
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %7) #11
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %7) #11
  call void @llvm.lifetime.end.p0(i64 20520, ptr nonnull %6) #11
  %603 = getelementptr inbounds i8, ptr %5, i64 360
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %603) #11
  %604 = getelementptr inbounds i8, ptr %5, i64 240
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %604) #11
  %605 = getelementptr inbounds i8, ptr %5, i64 120
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %605) #11
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %5) #11
  call void @llvm.lifetime.end.p0(i64 480, ptr nonnull %5) #11
  br label %621

.loopexit.split-lp:                               ; preds = %.loopexit278, %.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, %232, %400, %414, %428, %466, %508, %550, %558, %566, %195
  %.pn.pn = phi { ptr, i32 } [ %196, %195 ], [ %401, %400 ], [ %415, %414 ], [ %429, %428 ], [ %467, %466 ], [ %567, %566 ], [ %559, %558 ], [ %551, %550 ], [ %509, %508 ], [ %233, %232 ], [ %lpad.loopexit, %.loopexit278 ], [ %lpad.loopexit281, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit286, %.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit288, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit294, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit296, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit300, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit302, %.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-lp303, %.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 @llvm.lifetime.end.p0(i64 40, ptr nonnull %22) #11
  br label %606

606:                                              ; preds = %.loopexit.split-lp, %193
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %.loopexit.split-lp ], [ %194, %193 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %21) #11
  br label %607

607:                                              ; preds = %606, %191
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %606 ], [ %192, %191 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %20) #11
  call void @llvm.lifetime.end.p0(i64 960, ptr nonnull %19) #11
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %18) #11
  call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %17) #11
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %16) #11
  br label %608

608:                                              ; preds = %607, %189
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %607 ], [ %190, %189 ]
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %16) #11
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %15) #11
  br label %609

609:                                              ; preds = %608, %187
  %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn, %608 ], [ %188, %187 ]
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %15) #11
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %14) #11
  br label %610

610:                                              ; preds = %609, %185
  %.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn, %609 ], [ %186, %185 ]
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %14) #11
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %13) #11
  br label %611

611:                                              ; preds = %610, %183
  %.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn, %610 ], [ %184, %183 ]
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %13) #11
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %12) #11
  br label %612

612:                                              ; preds = %611, %181
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn, %611 ], [ %182, %181 ]
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %12) #11
  br label %613

613:                                              ; preds = %612, %179
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn, %612 ], [ %180, %179 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %11) #11
  br label %614

614:                                              ; preds = %613, %177
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %613 ], [ %178, %177 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %10) #11
  br label %615

615:                                              ; preds = %614, %175
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %614 ], [ %176, %175 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %9) #11
  br label %616

616:                                              ; preds = %615, %173
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %615 ], [ %174, %173 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %8) #11
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %7) #11
  br label %617

617:                                              ; preds = %616, %171
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %616 ], [ %172, %171 ]
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %7) #11
  br label %.loopexit276.loopexit

.loopexit276.loopexit:                            ; preds = %167, %169, %617, %165
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %166, %165 ], [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %617 ], [ %170, %169 ], [ %168, %167 ]
  call void @llvm.lifetime.end.p0(i64 20520, ptr nonnull %6) #11
  %618 = getelementptr inbounds i8, ptr %5, i64 360
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %618) #11
  %619 = getelementptr inbounds i8, ptr %5, i64 240
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %619) #11
  %620 = getelementptr inbounds i8, ptr %5, i64 120
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %620) #11
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %5) #11
  br label %.loopexit276

.loopexit276:                                     ; preds = %.preheader305, %161, %.loopexit276.loopexit
  %.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, %161 ], [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %.loopexit276.loopexit ], [ %lpad.thr_comm, %.preheader305 ]
  call void @llvm.lifetime.end.p0(i64 480, ptr nonnull %5) #11
  br label %626

621:                                              ; preds = %621, %.critedge
  %622 = phi ptr [ %42, %.critedge ], [ %623, %621 ]
  %623 = getelementptr inbounds i8, ptr %622, i64 -120
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %623) #11
  %624 = icmp eq ptr %623, %4
  br i1 %624, label %625, label %621

625:                                              ; preds = %621
  call void @llvm.lifetime.end.p0(i64 122880, ptr nonnull %4) #11
  br label %630

626:                                              ; preds = %626, %.loopexit276
  %627 = phi ptr [ %42, %.loopexit276 ], [ %628, %626 ]
  %628 = getelementptr inbounds i8, ptr %627, i64 -120
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %628) #11
  %629 = icmp eq ptr %628, %4
  br i1 %629, label %.loopexit275, label %626

.loopexit275:                                     ; preds = %.preheader307, %626, %155
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %156, %155 ], [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %626 ], [ %156, %.preheader307 ]
  call void @llvm.lifetime.end.p0(i64 122880, ptr nonnull %4) #11
  br label %635

630:                                              ; preds = %630, %625
  %631 = phi ptr [ %37, %625 ], [ %632, %630 ]
  %632 = getelementptr inbounds i8, ptr %631, i64 -120
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %632) #11
  %633 = icmp eq ptr %632, %3
  br i1 %633, label %634, label %630

634:                                              ; preds = %630
  call void @llvm.lifetime.end.p0(i64 122880, ptr nonnull %3) #11
  br label %639

635:                                              ; preds = %635, %.loopexit275
  %636 = phi ptr [ %37, %.loopexit275 ], [ %637, %635 ]
  %637 = getelementptr inbounds i8, ptr %636, i64 -120
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %637) #11
  %638 = icmp eq ptr %637, %3
  br i1 %638, label %.loopexit274, label %635

.loopexit274:                                     ; preds = %.preheader309, %635, %149
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %150, %149 ], [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %635 ], [ %150, %.preheader309 ]
  call void @llvm.lifetime.end.p0(i64 122880, ptr nonnull %3) #11
  br label %644

639:                                              ; preds = %639, %634
  %640 = phi ptr [ %32, %634 ], [ %641, %639 ]
  %641 = getelementptr inbounds i8, ptr %640, i64 -120
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %641) #11
  %642 = icmp eq ptr %641, %2
  br i1 %642, label %643, label %639

643:                                              ; preds = %639
  call void @llvm.lifetime.end.p0(i64 122880, ptr nonnull %2) #11
  ret ptr null

644:                                              ; preds = %644, %.loopexit274
  %645 = phi ptr [ %32, %.loopexit274 ], [ %646, %644 ]
  %646 = getelementptr inbounds i8, ptr %645, i64 -120
  call void @_ZN5PointD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %646) #11
  %647 = icmp eq ptr %646, %2
  br i1 %647, label %.loopexit, label %644

.loopexit:                                        ; preds = %.preheader311, %644, %143
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %144, %143 ], [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %644 ], [ %144, %.preheader311 ]
  call void @llvm.lifetime.end.p0(i64 122880, ptr nonnull %2) #11
  resume { ptr, i32 } %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn
}

declare void @_ZN3Int3AddEPS_(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef) local_unnamed_addr #0

declare void @_ZN9Secp256K110GetHash160EibR5PointS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(983240), i32 noundef, i1 noundef zeroext, ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(120), 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(40), i64 noundef) local_unnamed_addr #0

declare void @_ZN3Int6ModSubEPS_S0_(ptr noundef nonnull align 8 dereferenceable(40), 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(40), ptr noundef, ptr noundef) local_unnamed_addr #0

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

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

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

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

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

declare void @_ZN9Secp256K116GetHash160_fromXEihP3IntS1_S1_S1_PhS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(983240), 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(40)) local_unnamed_addr #0

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

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

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

declare void @_ZN9Secp256K110GetHash160EibR5PointPh(ptr noundef nonnull align 8 dereferenceable(983240), i32 noundef, i1 noundef zeroext, ptr noundef nonnull align 8 dereferenceable(120), ptr noundef) local_unnamed_addr #0

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

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

; Function Attrs: nofree nounwind willreturn memory(argmem: read)
declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #10

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 nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #9 = { 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 #10 = { nofree nounwind willreturn memory(argmem: read) }
attributes #11 = { nounwind }
attributes #12 = { builtin allocsize(0) }
attributes #13 = { 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 = !{i64 0, i64 40, !16, i64 40, i64 40, !16, i64 80, i64 40, !16}
!16 = !{!8, !8, i64 0}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}
!19 = distinct !{!19, !18}
!20 = distinct !{!20, !18}
!21 = distinct !{!21, !18}
!22 = distinct !{!22, !18}
!23 = distinct !{!23, !18}
!24 = distinct !{!24, !18}
!25 = distinct !{!25, !18}


; Effective O3 passes: ConstraintEliminationPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass