; LLVM IR from fcimeson/cbTSP :: cbLKH/SRC (ReadParameters)

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

@TourFileName = external dso_local global ptr, align 8
@OutputTourFileName = external dso_local global ptr, align 8
@InputTourFileName = external dso_local global ptr, align 8
@PiFileName = external dso_local global ptr, align 8
@ProblemFileName = external dso_local global ptr, align 8
@MergeTourFiles = external dso_local global i32, align 4
@CandidateFiles = external dso_local global i32, align 4
@AscentCandidates = external dso_local global i32, align 4
@BackboneTrials = external dso_local global i32, align 4
@Backtracking = external dso_local global i32, align 4
@CandidateSetSymmetric = external dso_local global i32, align 4
@CandidateSetType = external dso_local global i32, align 4
@Crossover = external dso_local global ptr, align 8
@DelaunayPartitioning = external dso_local global i32, align 4
@DelaunayPure = external dso_local global i32, align 4
@Excess = external dso_local global double, align 8
@ExtraCandidates = external dso_local global i32, align 4
@ExtraCandidateSetSymmetric = external dso_local global i32, align 4
@ExtraCandidateSetType = external dso_local global i32, align 4
@Gain23Used = external dso_local global i32, align 4
@GainCriterionUsed = external dso_local global i32, align 4
@InitialPeriod = external dso_local global i32, align 4
@InitialStepSize = external dso_local global i32, align 4
@InitialTourAlgorithm = external dso_local global i32, align 4
@InitialTourFraction = external dso_local global double, align 8
@KarpPartitioning = external dso_local global i32, align 4
@KCenterPartitioning = external dso_local global i32, align 4
@KMeansPartitioning = external dso_local global i32, align 4
@Kicks = external dso_local global i32, align 4
@KickType = external dso_local global i32, align 4
@MaxBreadth = external dso_local global i32, align 4
@MaxCandidates = external dso_local global i32, align 4
@MaxPopulationSize = external dso_local global i32, align 4
@MaxSwaps = external dso_local global i32, align 4
@MaxTrials = external dso_local global i32, align 4
@MoorePartitioning = external dso_local global i32, align 4
@MoveType = external dso_local global i32, align 4
@NonsequentialMoveType = external dso_local global i32, align 4
@Optimum = external dso_local global i64, align 8
@PatchingA = external dso_local global i32, align 4
@PatchingC = external dso_local global i32, align 4
@PatchingAExtended = external dso_local global i32, align 4
@PatchingARestricted = external dso_local global i32, align 4
@PatchingCExtended = external dso_local global i32, align 4
@PatchingCRestricted = external dso_local global i32, align 4
@Precision = external dso_local global i32, align 4
@RestrictedSearch = external dso_local global i32, align 4
@RohePartitioning = external dso_local global i32, align 4
@Runs = external dso_local global i32, align 4
@Seed = external dso_local global i32, align 4
@SierpinskiPartitioning = external dso_local global i32, align 4
@StopAtOptimum = external dso_local global i32, align 4
@StopAtMaxCost = external dso_local global i32, align 4
@Subgradient = external dso_local global i32, align 4
@SubproblemBorders = external dso_local global i32, align 4
@SubproblemsCompressed = external dso_local global i32, align 4
@SubproblemSize = external dso_local global i32, align 4
@SubsequentMoveType = external dso_local global i32, align 4
@SubsequentPatching = external dso_local global i32, align 4
@TimeLimit = external dso_local global double, align 8
@TraceLevel = external dso_local global i32, align 4
@MaxCost = external dso_local global i64, align 8
@ParameterFileName = external dso_local global ptr, align 8
@.str = external hidden unnamed_addr constant [2 x i8], align 1
@ParameterFile = external dso_local global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [18 x i8], align 1
@stdin = external global ptr, align 8
@.str.4 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [37 x i8], align 1
@Delimiters = external hidden global [11 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [32 x i8], align 1
@CandidateFileName = external dso_local global ptr, align 8
@.str.17 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [75 x i8], align 1
@__PRETTY_FUNCTION__.ReadParameters = external hidden unnamed_addr constant [22 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [110 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [18 x i8], align 1
@InitialTourFileName = external dso_local global ptr, align 8
@.str.63 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [33 x i8], align 1
@MergeTourFileName = external dso_local global ptr, align 8
@.str.90 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.110 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.111 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.112 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.113 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.114 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.115 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.116 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.117 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.118 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.119 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.120 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.121 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.122 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.123 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.124 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.125 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.126 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.127 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.128 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.129 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.130 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.131 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.132 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.133 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.134 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.135 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.136 = external hidden unnamed_addr constant [21 x i8], align 1
@SubproblemTourFileName = external dso_local global ptr, align 8
@.str.137 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.138 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.139 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.140 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.141 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.142 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.143 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.144 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.145 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.146 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.147 = external hidden unnamed_addr constant [123 x i8], align 1
@.str.148 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.149 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.150 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.151 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.152 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.153 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.154 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.155 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.156 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.157 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.158 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.159 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.160 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.161 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.162 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.163 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.164 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.165 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.166 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.167 = external hidden unnamed_addr constant [46 x i8], align 1
@LastLine = external dso_local global ptr, align 8

; Function Attrs: nounwind uwtable
define dso_local void @ReadParameters() #0 {
  %1 = alloca ptr, align 8
  %2 = alloca ptr, align 8
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %1) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %2) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #9
  store ptr null, ptr @TourFileName, align 8, !tbaa !5
  store ptr null, ptr @OutputTourFileName, align 8, !tbaa !5
  store ptr null, ptr @InputTourFileName, align 8, !tbaa !5
  store ptr null, ptr @PiFileName, align 8, !tbaa !5
  store ptr null, ptr @ProblemFileName, align 8, !tbaa !5
  store i32 0, ptr @MergeTourFiles, align 4, !tbaa !9
  store i32 0, ptr @CandidateFiles, align 4, !tbaa !9
  store i32 50, ptr @AscentCandidates, align 4, !tbaa !9
  store i32 0, ptr @BackboneTrials, align 4, !tbaa !9
  store i32 0, ptr @Backtracking, align 4, !tbaa !9
  store i32 0, ptr @CandidateSetSymmetric, align 4, !tbaa !9
  store i32 0, ptr @CandidateSetType, align 4, !tbaa !9
  store ptr @ERXT, ptr @Crossover, align 8, !tbaa !5
  store i32 0, ptr @DelaunayPartitioning, align 4, !tbaa !9
  store i32 0, ptr @DelaunayPure, align 4, !tbaa !9
  store double -1.000000e+00, ptr @Excess, align 8, !tbaa !11
  store i32 0, ptr @ExtraCandidates, align 4, !tbaa !9
  store i32 0, ptr @ExtraCandidateSetSymmetric, align 4, !tbaa !9
  store i32 3, ptr @ExtraCandidateSetType, align 4, !tbaa !9
  store i32 1, ptr @Gain23Used, align 4, !tbaa !9
  store i32 1, ptr @GainCriterionUsed, align 4, !tbaa !9
  store i32 -1, ptr @InitialPeriod, align 4, !tbaa !9
  store i32 0, ptr @InitialStepSize, align 4, !tbaa !9
  store i32 6, ptr @InitialTourAlgorithm, align 4, !tbaa !9
  store double 1.000000e+00, ptr @InitialTourFraction, align 8, !tbaa !11
  store i32 0, ptr @KarpPartitioning, align 4, !tbaa !9
  store i32 0, ptr @KCenterPartitioning, align 4, !tbaa !9
  store i32 0, ptr @KMeansPartitioning, align 4, !tbaa !9
  store i32 1, ptr @Kicks, align 4, !tbaa !9
  store i32 0, ptr @KickType, align 4, !tbaa !9
  store i32 2147483647, ptr @MaxBreadth, align 4, !tbaa !9
  store i32 5, ptr @MaxCandidates, align 4, !tbaa !9
  store i32 0, ptr @MaxPopulationSize, align 4, !tbaa !9
  store i32 -1, ptr @MaxSwaps, align 4, !tbaa !9
  store i32 -1, ptr @MaxTrials, align 4, !tbaa !9
  store i32 0, ptr @MoorePartitioning, align 4, !tbaa !9
  store i32 5, ptr @MoveType, align 4, !tbaa !9
  store i32 -1, ptr @NonsequentialMoveType, align 4, !tbaa !9
  store i64 -9223372036854775808, ptr @Optimum, align 8, !tbaa !13
  store i32 1, ptr @PatchingA, align 4, !tbaa !9
  store i32 0, ptr @PatchingC, align 4, !tbaa !9
  store i32 0, ptr @PatchingAExtended, align 4, !tbaa !9
  store i32 0, ptr @PatchingARestricted, align 4, !tbaa !9
  store i32 0, ptr @PatchingCExtended, align 4, !tbaa !9
  store i32 0, ptr @PatchingCRestricted, align 4, !tbaa !9
  store i32 100, ptr @Precision, align 4, !tbaa !9
  store i32 1, ptr @RestrictedSearch, align 4, !tbaa !9
  store i32 0, ptr @RohePartitioning, align 4, !tbaa !9
  store i32 0, ptr @Runs, align 4, !tbaa !9
  store i32 1, ptr @Seed, align 4, !tbaa !9
  store i32 0, ptr @SierpinskiPartitioning, align 4, !tbaa !9
  store i32 1, ptr @StopAtOptimum, align 4, !tbaa !9
  store i32 0, ptr @StopAtMaxCost, align 4, !tbaa !9
  store i32 1, ptr @Subgradient, align 4, !tbaa !9
  store i32 0, ptr @SubproblemBorders, align 4, !tbaa !9
  store i32 0, ptr @SubproblemsCompressed, align 4, !tbaa !9
  store i32 0, ptr @SubproblemSize, align 4, !tbaa !9
  store i32 0, ptr @SubsequentMoveType, align 4, !tbaa !9
  store i32 1, ptr @SubsequentPatching, align 4, !tbaa !9
  store double 0x7FEFFFFFFFFFFFFF, ptr @TimeLimit, align 8, !tbaa !11
  store i32 1, ptr @TraceLevel, align 4, !tbaa !9
  store i64 -9223372036854775808, ptr @MaxCost, align 8, !tbaa !13
  %31 = load ptr, ptr @ParameterFileName, align 8, !tbaa !5
  %32 = icmp ne ptr %31, null
  br i1 %32, label %33, label %41

33:                                               ; preds = %0
  %34 = load ptr, ptr @ParameterFileName, align 8, !tbaa !5
  %35 = call noalias ptr @fopen(ptr noundef %34, ptr noundef @.str)
  store ptr %35, ptr @ParameterFile, align 8, !tbaa !5
  %36 = icmp ne ptr %35, null
  br i1 %36, label %39, label %37

37:                                               ; preds = %33
  %38 = load ptr, ptr @ParameterFileName, align 8, !tbaa !5
  call void (ptr, ...) @eprintf(ptr noundef @.str.1, ptr noundef %38)
  br label %39

39:                                               ; preds = %37, %33
  %40 = load ptr, ptr @ParameterFileName, align 8, !tbaa !5
  call void (ptr, ...) @printff(ptr noundef @.str.2, ptr noundef %40)
  br label %68

41:                                               ; preds = %0
  br label %42

42:                                               ; preds = %66, %41
  br label %43

43:                                               ; preds = %42
  call void (ptr, ...) @printff(ptr noundef @.str.3)
  %44 = load ptr, ptr @stdin, align 8, !tbaa !5
  %45 = call ptr @ReadLine(ptr noundef %44)
  %46 = call ptr @GetFileName(ptr noundef %45)
  store ptr %46, ptr @ParameterFileName, align 8, !tbaa !5
  %47 = icmp ne ptr %46, null
  br i1 %47, label %58, label %48

48:                                               ; preds = %43
  br label %49

49:                                               ; preds = %53, %48
  call void (ptr, ...) @printff(ptr noundef @.str.4)
  %50 = load ptr, ptr @stdin, align 8, !tbaa !5
  %51 = call ptr @ReadLine(ptr noundef %50)
  %52 = call ptr @GetFileName(ptr noundef %51)
  store ptr %52, ptr @ProblemFileName, align 8, !tbaa !5
  br label %53

53:                                               ; preds = %49
  %54 = load ptr, ptr @ProblemFileName, align 8, !tbaa !5
  %55 = icmp ne ptr %54, null
  %56 = xor i1 %55, true
  br i1 %56, label %49, label %57, !llvm.loop !15

57:                                               ; preds = %53
  store i32 1, ptr %6, align 4
  br label %1516

58:                                               ; preds = %43
  %59 = load ptr, ptr @ParameterFileName, align 8, !tbaa !5
  %60 = call noalias ptr @fopen(ptr noundef %59, ptr noundef @.str)
  store ptr %60, ptr @ParameterFile, align 8, !tbaa !5
  %61 = icmp ne ptr %60, null
  br i1 %61, label %64, label %62

62:                                               ; preds = %58
  %63 = load ptr, ptr @ParameterFileName, align 8, !tbaa !5
  call void (ptr, ...) @printff(ptr noundef @.str.5, ptr noundef %63)
  br label %65

64:                                               ; preds = %58
  br label %67

65:                                               ; preds = %62
  br label %66

66:                                               ; preds = %65
  br label %42

67:                                               ; preds = %64
  br label %68

68:                                               ; preds = %67, %39
  br label %69

69:                                               ; preds = %1493, %340, %84, %77, %68
  %70 = load ptr, ptr @ParameterFile, align 8, !tbaa !5
  %71 = call ptr @ReadLine(ptr noundef %70)
  store ptr %71, ptr %1, align 8, !tbaa !5
  %72 = icmp ne ptr %71, null
  br i1 %72, label %73, label %1494

73:                                               ; preds = %69
  %74 = load ptr, ptr %1, align 8, !tbaa !5
  %75 = call ptr @strtok(ptr noundef %74, ptr noundef @Delimiters) #9
  store ptr %75, ptr %2, align 8, !tbaa !5
  %76 = icmp ne ptr %75, null
  br i1 %76, label %78, label %77

77:                                               ; preds = %73
  br label %69, !llvm.loop !17

78:                                               ; preds = %73
  %79 = load ptr, ptr %2, align 8, !tbaa !5
  %80 = getelementptr inbounds i8, ptr %79, i64 0
  %81 = load i8, ptr %80, align 1, !tbaa !18
  %82 = sext i8 %81 to i32
  %83 = icmp eq i32 %82, 35
  br i1 %83, label %84, label %85

84:                                               ; preds = %78
  br label %69, !llvm.loop !17

85:                                               ; preds = %78
  store i32 0, ptr %5, align 4, !tbaa !9
  br label %86

86:                                               ; preds = %111, %85
  %87 = load i32, ptr %5, align 4, !tbaa !9
  %88 = zext i32 %87 to i64
  %89 = load ptr, ptr %2, align 8, !tbaa !5
  %90 = call i64 @strlen(ptr noundef %89) #10
  %91 = icmp ult i64 %88, %90
  br i1 %91, label %92, label %114

92:                                               ; preds = %86
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #9
  %93 = call ptr @__ctype_toupper_loc() #11
  %94 = load ptr, ptr %93, align 8, !tbaa !5
  %95 = load ptr, ptr %2, align 8, !tbaa !5
  %96 = load i32, ptr %5, align 4, !tbaa !9
  %97 = zext i32 %96 to i64
  %98 = getelementptr inbounds i8, ptr %95, i64 %97
  %99 = load i8, ptr %98, align 1, !tbaa !18
  %100 = sext i8 %99 to i32
  %101 = sext i32 %100 to i64
  %102 = getelementptr inbounds i32, ptr %94, i64 %101
  %103 = load i32, ptr %102, align 4, !tbaa !9
  store i32 %103, ptr %7, align 4, !tbaa !9
  %104 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %104, ptr %8, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #9
  %105 = load i32, ptr %8, align 4, !tbaa !9
  %106 = trunc i32 %105 to i8
  %107 = load ptr, ptr %2, align 8, !tbaa !5
  %108 = load i32, ptr %5, align 4, !tbaa !9
  %109 = zext i32 %108 to i64
  %110 = getelementptr inbounds i8, ptr %107, i64 %109
  store i8 %106, ptr %110, align 1, !tbaa !18
  br label %111

111:                                              ; preds = %92
  %112 = load i32, ptr %5, align 4, !tbaa !9
  %113 = add i32 %112, 1
  store i32 %113, ptr %5, align 4, !tbaa !9
  br label %86, !llvm.loop !19

114:                                              ; preds = %86
  %115 = load ptr, ptr %2, align 8, !tbaa !5
  %116 = call i32 @strcmp(ptr noundef %115, ptr noundef @.str.6) #10
  %117 = icmp ne i32 %116, 0
  br i1 %117, label %131, label %118

118:                                              ; preds = %114
  %119 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %119, ptr %3, align 8, !tbaa !5
  %120 = icmp ne ptr %119, null
  br i1 %120, label %121, label %125

121:                                              ; preds = %118
  %122 = load ptr, ptr %3, align 8, !tbaa !5
  %123 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %122, ptr noundef @.str.7, ptr noundef @AscentCandidates) #9
  %124 = icmp ne i32 %123, 0
  br i1 %124, label %126, label %125

125:                                              ; preds = %121, %118
  call void (ptr, ...) @eprintf(ptr noundef @.str.8)
  br label %126

126:                                              ; preds = %125, %121
  %127 = load i32, ptr @AscentCandidates, align 4, !tbaa !9
  %128 = icmp slt i32 %127, 2
  br i1 %128, label %129, label %130

129:                                              ; preds = %126
  call void (ptr, ...) @eprintf(ptr noundef @.str.9)
  br label %130

130:                                              ; preds = %129, %126
  br label %1482

131:                                              ; preds = %114
  %132 = load ptr, ptr %2, align 8, !tbaa !5
  %133 = call i32 @strcmp(ptr noundef %132, ptr noundef @.str.10) #10
  %134 = icmp ne i32 %133, 0
  br i1 %134, label %148, label %135

135:                                              ; preds = %131
  %136 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %136, ptr %3, align 8, !tbaa !5
  %137 = icmp ne ptr %136, null
  br i1 %137, label %138, label %142

138:                                              ; preds = %135
  %139 = load ptr, ptr %3, align 8, !tbaa !5
  %140 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %139, ptr noundef @.str.7, ptr noundef @BackboneTrials) #9
  %141 = icmp ne i32 %140, 0
  br i1 %141, label %143, label %142

142:                                              ; preds = %138, %135
  call void (ptr, ...) @eprintf(ptr noundef @.str.11)
  br label %143

143:                                              ; preds = %142, %138
  %144 = load i32, ptr @BackboneTrials, align 4, !tbaa !9
  %145 = icmp slt i32 %144, 0
  br i1 %145, label %146, label %147

146:                                              ; preds = %143
  call void (ptr, ...) @eprintf(ptr noundef @.str.12)
  br label %147

147:                                              ; preds = %146, %143
  br label %1481

148:                                              ; preds = %131
  %149 = load ptr, ptr %2, align 8, !tbaa !5
  %150 = call i32 @strcmp(ptr noundef %149, ptr noundef @.str.13) #10
  %151 = icmp ne i32 %150, 0
  br i1 %151, label %157, label %152

152:                                              ; preds = %148
  %153 = call ptr @ReadYesOrNo(ptr noundef @Backtracking)
  %154 = icmp ne ptr %153, null
  br i1 %154, label %156, label %155

155:                                              ; preds = %152
  call void (ptr, ...) @eprintf(ptr noundef @.str.14)
  br label %156

156:                                              ; preds = %155, %152
  br label %1480

157:                                              ; preds = %148
  %158 = load ptr, ptr %2, align 8, !tbaa !5
  %159 = call i32 @strcmp(ptr noundef %158, ptr noundef @.str.15) #10
  %160 = icmp ne i32 %159, 0
  br i1 %160, label %222, label %161

161:                                              ; preds = %157
  %162 = call ptr @GetFileName(ptr noundef null)
  store ptr %162, ptr %4, align 8, !tbaa !5
  %163 = icmp ne ptr %162, null
  br i1 %163, label %165, label %164

164:                                              ; preds = %161
  call void (ptr, ...) @eprintf(ptr noundef @.str.16)
  br label %165

165:                                              ; preds = %164, %161
  %166 = load i32, ptr @CandidateFiles, align 4, !tbaa !9
  %167 = icmp eq i32 %166, 0
  br i1 %167, label %168, label %180

168:                                              ; preds = %165
  %169 = call noalias ptr @malloc(i64 noundef 8) #12
  store ptr %169, ptr @CandidateFileName, align 8, !tbaa !5
  %170 = icmp ne ptr %169, null
  br i1 %170, label %171, label %172

171:                                              ; preds = %168
  br label %173

172:                                              ; preds = %168
  call void @__assert_fail(ptr noundef @.str.17, ptr noundef @.str.18, i32 noundef 467, ptr noundef @__PRETTY_FUNCTION__.ReadParameters) #13
  unreachable

173:                                              ; preds = %171
  %174 = load ptr, ptr %4, align 8, !tbaa !5
  %175 = load ptr, ptr @CandidateFileName, align 8, !tbaa !5
  %176 = load i32, ptr @CandidateFiles, align 4, !tbaa !9
  %177 = add nsw i32 %176, 1
  store i32 %177, ptr @CandidateFiles, align 4, !tbaa !9
  %178 = sext i32 %176 to i64
  %179 = getelementptr inbounds ptr, ptr %175, i64 %178
  store ptr %174, ptr %179, align 8, !tbaa !5
  br label %221

180:                                              ; preds = %165
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #9
  store i32 0, ptr %9, align 4, !tbaa !9
  br label %181

181:                                              ; preds = %196, %180
  %182 = load i32, ptr %9, align 4, !tbaa !9
  %183 = load i32, ptr @CandidateFiles, align 4, !tbaa !9
  %184 = icmp slt i32 %182, %183
  br i1 %184, label %185, label %199

185:                                              ; preds = %181
  %186 = load ptr, ptr %4, align 8, !tbaa !5
  %187 = load ptr, ptr @CandidateFileName, align 8, !tbaa !5
  %188 = load i32, ptr %9, align 4, !tbaa !9
  %189 = sext i32 %188 to i64
  %190 = getelementptr inbounds ptr, ptr %187, i64 %189
  %191 = load ptr, ptr %190, align 8, !tbaa !5
  %192 = call i32 @strcmp(ptr noundef %186, ptr noundef %191) #10
  %193 = icmp ne i32 %192, 0
  br i1 %193, label %195, label %194

194:                                              ; preds = %185
  br label %199

195:                                              ; preds = %185
  br label %196

196:                                              ; preds = %195
  %197 = load i32, ptr %9, align 4, !tbaa !9
  %198 = add nsw i32 %197, 1
  store i32 %198, ptr %9, align 4, !tbaa !9
  br label %181, !llvm.loop !20

199:                                              ; preds = %194, %181
  %200 = load i32, ptr %9, align 4, !tbaa !9
  %201 = load i32, ptr @CandidateFiles, align 4, !tbaa !9
  %202 = icmp eq i32 %200, %201
  br i1 %202, label %203, label %220

203:                                              ; preds = %199
  %204 = load ptr, ptr @CandidateFileName, align 8, !tbaa !5
  %205 = load i32, ptr @CandidateFiles, align 4, !tbaa !9
  %206 = add nsw i32 %205, 1
  %207 = sext i32 %206 to i64
  %208 = mul i64 %207, 8
  %209 = call ptr @realloc(ptr noundef %204, i64 noundef %208) #14
  store ptr %209, ptr @CandidateFileName, align 8, !tbaa !5
  %210 = icmp ne ptr %209, null
  br i1 %210, label %211, label %212

211:                                              ; preds = %203
  br label %213

212:                                              ; preds = %203
  call void @__assert_fail(ptr noundef @.str.19, ptr noundef @.str.18, i32 noundef 478, ptr noundef @__PRETTY_FUNCTION__.ReadParameters) #13
  unreachable

213:                                              ; preds = %211
  %214 = load ptr, ptr %4, align 8, !tbaa !5
  %215 = load ptr, ptr @CandidateFileName, align 8, !tbaa !5
  %216 = load i32, ptr @CandidateFiles, align 4, !tbaa !9
  %217 = add nsw i32 %216, 1
  store i32 %217, ptr @CandidateFiles, align 4, !tbaa !9
  %218 = sext i32 %216 to i64
  %219 = getelementptr inbounds ptr, ptr %215, i64 %218
  store ptr %214, ptr %219, align 8, !tbaa !5
  br label %220

220:                                              ; preds = %213, %199
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #9
  br label %221

221:                                              ; preds = %220, %173
  br label %1479

222:                                              ; preds = %157
  %223 = load ptr, ptr %2, align 8, !tbaa !5
  %224 = call i32 @strcmp(ptr noundef %223, ptr noundef @.str.20) #10
  %225 = icmp ne i32 %224, 0
  br i1 %225, label %336, label %226

226:                                              ; preds = %222
  %227 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %227, ptr %3, align 8, !tbaa !5
  %228 = icmp ne ptr %227, null
  br i1 %228, label %230, label %229

229:                                              ; preds = %226
  call void (ptr, ...) @eprintf(ptr noundef @.str.21, ptr noundef @.str.22)
  br label %230

230:                                              ; preds = %229, %226
  store i32 0, ptr %5, align 4, !tbaa !9
  br label %231

231:                                              ; preds = %256, %230
  %232 = load i32, ptr %5, align 4, !tbaa !9
  %233 = zext i32 %232 to i64
  %234 = load ptr, ptr %3, align 8, !tbaa !5
  %235 = call i64 @strlen(ptr noundef %234) #10
  %236 = icmp ult i64 %233, %235
  br i1 %236, label %237, label %259

237:                                              ; preds = %231
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #9
  %238 = call ptr @__ctype_toupper_loc() #11
  %239 = load ptr, ptr %238, align 8, !tbaa !5
  %240 = load ptr, ptr %3, align 8, !tbaa !5
  %241 = load i32, ptr %5, align 4, !tbaa !9
  %242 = zext i32 %241 to i64
  %243 = getelementptr inbounds i8, ptr %240, i64 %242
  %244 = load i8, ptr %243, align 1, !tbaa !18
  %245 = sext i8 %244 to i32
  %246 = sext i32 %245 to i64
  %247 = getelementptr inbounds i32, ptr %239, i64 %246
  %248 = load i32, ptr %247, align 4, !tbaa !9
  store i32 %248, ptr %10, align 4, !tbaa !9
  %249 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %249, ptr %11, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #9
  %250 = load i32, ptr %11, align 4, !tbaa !9
  %251 = trunc i32 %250 to i8
  %252 = load ptr, ptr %3, align 8, !tbaa !5
  %253 = load i32, ptr %5, align 4, !tbaa !9
  %254 = zext i32 %253 to i64
  %255 = getelementptr inbounds i8, ptr %252, i64 %254
  store i8 %251, ptr %255, align 1, !tbaa !18
  br label %256

256:                                              ; preds = %237
  %257 = load i32, ptr %5, align 4, !tbaa !9
  %258 = add i32 %257, 1
  store i32 %258, ptr %5, align 4, !tbaa !9
  br label %231, !llvm.loop !21

259:                                              ; preds = %231
  %260 = load ptr, ptr %3, align 8, !tbaa !5
  %261 = load ptr, ptr %3, align 8, !tbaa !5
  %262 = call i64 @strlen(ptr noundef %261) #10
  %263 = call i32 @strncmp(ptr noundef %260, ptr noundef @.str.23, i64 noundef %262) #10
  %264 = icmp ne i32 %263, 0
  br i1 %264, label %266, label %265

265:                                              ; preds = %259
  store i32 0, ptr @CandidateSetType, align 4, !tbaa !9
  br label %291

266:                                              ; preds = %259
  %267 = load ptr, ptr %3, align 8, !tbaa !5
  %268 = load ptr, ptr %3, align 8, !tbaa !5
  %269 = call i64 @strlen(ptr noundef %268) #10
  %270 = call i32 @strncmp(ptr noundef %267, ptr noundef @.str.24, i64 noundef %269) #10
  %271 = icmp ne i32 %270, 0
  br i1 %271, label %273, label %272

272:                                              ; preds = %266
  store i32 1, ptr @CandidateSetType, align 4, !tbaa !9
  br label %290

273:                                              ; preds = %266
  %274 = load ptr, ptr %3, align 8, !tbaa !5
  %275 = load ptr, ptr %3, align 8, !tbaa !5
  %276 = call i64 @strlen(ptr noundef %275) #10
  %277 = call i32 @strncmp(ptr noundef %274, ptr noundef @.str.25, i64 noundef %276) #10
  %278 = icmp ne i32 %277, 0
  br i1 %278, label %280, label %279

279:                                              ; preds = %273
  store i32 2, ptr @CandidateSetType, align 4, !tbaa !9
  br label %289

280:                                              ; preds = %273
  %281 = load ptr, ptr %3, align 8, !tbaa !5
  %282 = load ptr, ptr %3, align 8, !tbaa !5
  %283 = call i64 @strlen(ptr noundef %282) #10
  %284 = call i32 @strncmp(ptr noundef %281, ptr noundef @.str.26, i64 noundef %283) #10
  %285 = icmp ne i32 %284, 0
  br i1 %285, label %287, label %286

286:                                              ; preds = %280
  store i32 3, ptr @CandidateSetType, align 4, !tbaa !9
  br label %288

287:                                              ; preds = %280
  call void (ptr, ...) @eprintf(ptr noundef @.str.21, ptr noundef @.str.22)
  br label %288

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

289:                                              ; preds = %288, %279
  br label %290

290:                                              ; preds = %289, %272
  br label %291

291:                                              ; preds = %290, %265
  %292 = load i32, ptr @CandidateSetType, align 4, !tbaa !9
  %293 = icmp eq i32 %292, 1
  br i1 %293, label %294, label %335

294:                                              ; preds = %291
  %295 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %295, ptr %3, align 8, !tbaa !5
  %296 = icmp ne ptr %295, null
  br i1 %296, label %297, label %334

297:                                              ; preds = %294
  store i32 0, ptr %5, align 4, !tbaa !9
  br label %298

298:                                              ; preds = %323, %297
  %299 = load i32, ptr %5, align 4, !tbaa !9
  %300 = zext i32 %299 to i64
  %301 = load ptr, ptr %3, align 8, !tbaa !5
  %302 = call i64 @strlen(ptr noundef %301) #10
  %303 = icmp ult i64 %300, %302
  br i1 %303, label %304, label %326

304:                                              ; preds = %298
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #9
  %305 = call ptr @__ctype_toupper_loc() #11
  %306 = load ptr, ptr %305, align 8, !tbaa !5
  %307 = load ptr, ptr %3, align 8, !tbaa !5
  %308 = load i32, ptr %5, align 4, !tbaa !9
  %309 = zext i32 %308 to i64
  %310 = getelementptr inbounds i8, ptr %307, i64 %309
  %311 = load i8, ptr %310, align 1, !tbaa !18
  %312 = sext i8 %311 to i32
  %313 = sext i32 %312 to i64
  %314 = getelementptr inbounds i32, ptr %306, i64 %313
  %315 = load i32, ptr %314, align 4, !tbaa !9
  store i32 %315, ptr %12, align 4, !tbaa !9
  %316 = load i32, ptr %12, align 4, !tbaa !9
  store i32 %316, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #9
  %317 = load i32, ptr %13, align 4, !tbaa !9
  %318 = trunc i32 %317 to i8
  %319 = load ptr, ptr %3, align 8, !tbaa !5
  %320 = load i32, ptr %5, align 4, !tbaa !9
  %321 = zext i32 %320 to i64
  %322 = getelementptr inbounds i8, ptr %319, i64 %321
  store i8 %318, ptr %322, align 1, !tbaa !18
  br label %323

323:                                              ; preds = %304
  %324 = load i32, ptr %5, align 4, !tbaa !9
  %325 = add i32 %324, 1
  store i32 %325, ptr %5, align 4, !tbaa !9
  br label %298, !llvm.loop !22

326:                                              ; preds = %298
  %327 = load ptr, ptr %3, align 8, !tbaa !5
  %328 = load ptr, ptr %3, align 8, !tbaa !5
  %329 = call i64 @strlen(ptr noundef %328) #10
  %330 = call i32 @strncmp(ptr noundef %327, ptr noundef @.str.27, i64 noundef %329) #10
  %331 = icmp ne i32 %330, 0
  br i1 %331, label %332, label %333

332:                                              ; preds = %326
  call void (ptr, ...) @eprintf(ptr noundef @.str.21, ptr noundef @.str.28)
  br label %333

333:                                              ; preds = %332, %326
  store i32 1, ptr @DelaunayPure, align 4, !tbaa !9
  br label %334

334:                                              ; preds = %333, %294
  br label %335

335:                                              ; preds = %334, %291
  br label %1478

336:                                              ; preds = %222
  %337 = load ptr, ptr %2, align 8, !tbaa !5
  %338 = call i32 @strcmp(ptr noundef %337, ptr noundef @.str.29) #10
  %339 = icmp ne i32 %338, 0
  br i1 %339, label %341, label %340

340:                                              ; preds = %336
  br label %69, !llvm.loop !17

341:                                              ; preds = %336
  %342 = load ptr, ptr %2, align 8, !tbaa !5
  %343 = call i32 @strcmp(ptr noundef %342, ptr noundef @.str.30) #10
  %344 = icmp ne i32 %343, 0
  br i1 %344, label %346, label %345

345:                                              ; preds = %341
  br label %1494

346:                                              ; preds = %341
  %347 = load ptr, ptr %2, align 8, !tbaa !5
  %348 = call i32 @strcmp(ptr noundef %347, ptr noundef @.str.31) #10
  %349 = icmp ne i32 %348, 0
  br i1 %349, label %363, label %350

350:                                              ; preds = %346
  %351 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %351, ptr %3, align 8, !tbaa !5
  %352 = icmp ne ptr %351, null
  br i1 %352, label %353, label %357

353:                                              ; preds = %350
  %354 = load ptr, ptr %3, align 8, !tbaa !5
  %355 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %354, ptr noundef @.str.32, ptr noundef @Excess) #9
  %356 = icmp ne i32 %355, 0
  br i1 %356, label %358, label %357

357:                                              ; preds = %353, %350
  call void (ptr, ...) @eprintf(ptr noundef @.str.33)
  br label %358

358:                                              ; preds = %357, %353
  %359 = load double, ptr @Excess, align 8, !tbaa !11
  %360 = fcmp olt double %359, 0.000000e+00
  br i1 %360, label %361, label %362

361:                                              ; preds = %358
  call void (ptr, ...) @eprintf(ptr noundef @.str.34)
  br label %362

362:                                              ; preds = %361, %358
  br label %1475

363:                                              ; preds = %346
  %364 = load ptr, ptr %2, align 8, !tbaa !5
  %365 = call i32 @strcmp(ptr noundef %364, ptr noundef @.str.35) #10
  %366 = icmp ne i32 %365, 0
  br i1 %366, label %420, label %367

367:                                              ; preds = %363
  %368 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %368, ptr %3, align 8, !tbaa !5
  %369 = icmp ne ptr %368, null
  br i1 %369, label %370, label %374

370:                                              ; preds = %367
  %371 = load ptr, ptr %3, align 8, !tbaa !5
  %372 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %371, ptr noundef @.str.7, ptr noundef @ExtraCandidates) #9
  %373 = icmp ne i32 %372, 0
  br i1 %373, label %375, label %374

374:                                              ; preds = %370, %367
  call void (ptr, ...) @eprintf(ptr noundef @.str.36)
  br label %375

375:                                              ; preds = %374, %370
  %376 = load i32, ptr @ExtraCandidates, align 4, !tbaa !9
  %377 = icmp slt i32 %376, 0
  br i1 %377, label %378, label %379

378:                                              ; preds = %375
  call void (ptr, ...) @eprintf(ptr noundef @.str.37)
  br label %379

379:                                              ; preds = %378, %375
  %380 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %380, ptr %3, align 8, !tbaa !5
  %381 = icmp ne ptr %380, null
  br i1 %381, label %382, label %419

382:                                              ; preds = %379
  store i32 0, ptr %5, align 4, !tbaa !9
  br label %383

383:                                              ; preds = %408, %382
  %384 = load i32, ptr %5, align 4, !tbaa !9
  %385 = zext i32 %384 to i64
  %386 = load ptr, ptr %3, align 8, !tbaa !5
  %387 = call i64 @strlen(ptr noundef %386) #10
  %388 = icmp ult i64 %385, %387
  br i1 %388, label %389, label %411

389:                                              ; preds = %383
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #9
  %390 = call ptr @__ctype_toupper_loc() #11
  %391 = load ptr, ptr %390, align 8, !tbaa !5
  %392 = load ptr, ptr %3, align 8, !tbaa !5
  %393 = load i32, ptr %5, align 4, !tbaa !9
  %394 = zext i32 %393 to i64
  %395 = getelementptr inbounds i8, ptr %392, i64 %394
  %396 = load i8, ptr %395, align 1, !tbaa !18
  %397 = sext i8 %396 to i32
  %398 = sext i32 %397 to i64
  %399 = getelementptr inbounds i32, ptr %391, i64 %398
  %400 = load i32, ptr %399, align 4, !tbaa !9
  store i32 %400, ptr %14, align 4, !tbaa !9
  %401 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %401, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #9
  %402 = load i32, ptr %15, align 4, !tbaa !9
  %403 = trunc i32 %402 to i8
  %404 = load ptr, ptr %3, align 8, !tbaa !5
  %405 = load i32, ptr %5, align 4, !tbaa !9
  %406 = zext i32 %405 to i64
  %407 = getelementptr inbounds i8, ptr %404, i64 %406
  store i8 %403, ptr %407, align 1, !tbaa !18
  br label %408

408:                                              ; preds = %389
  %409 = load i32, ptr %5, align 4, !tbaa !9
  %410 = add i32 %409, 1
  store i32 %410, ptr %5, align 4, !tbaa !9
  br label %383, !llvm.loop !23

411:                                              ; preds = %383
  %412 = load ptr, ptr %3, align 8, !tbaa !5
  %413 = load ptr, ptr %3, align 8, !tbaa !5
  %414 = call i64 @strlen(ptr noundef %413) #10
  %415 = call i32 @strncmp(ptr noundef %412, ptr noundef @.str.38, i64 noundef %414) #10
  %416 = icmp ne i32 %415, 0
  br i1 %416, label %417, label %418

417:                                              ; preds = %411
  call void (ptr, ...) @eprintf(ptr noundef @.str.39)
  br label %418

418:                                              ; preds = %417, %411
  store i32 1, ptr @ExtraCandidateSetSymmetric, align 4, !tbaa !9
  br label %419

419:                                              ; preds = %418, %379
  br label %1474

420:                                              ; preds = %363
  %421 = load ptr, ptr %2, align 8, !tbaa !5
  %422 = call i32 @strcmp(ptr noundef %421, ptr noundef @.str.40) #10
  %423 = icmp ne i32 %422, 0
  br i1 %423, label %474, label %424

424:                                              ; preds = %420
  %425 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %425, ptr %3, align 8, !tbaa !5
  %426 = icmp ne ptr %425, null
  br i1 %426, label %428, label %427

427:                                              ; preds = %424
  call void (ptr, ...) @eprintf(ptr noundef @.str.21, ptr noundef @.str.41)
  br label %428

428:                                              ; preds = %427, %424
  store i32 0, ptr %5, align 4, !tbaa !9
  br label %429

429:                                              ; preds = %454, %428
  %430 = load i32, ptr %5, align 4, !tbaa !9
  %431 = zext i32 %430 to i64
  %432 = load ptr, ptr %3, align 8, !tbaa !5
  %433 = call i64 @strlen(ptr noundef %432) #10
  %434 = icmp ult i64 %431, %433
  br i1 %434, label %435, label %457

435:                                              ; preds = %429
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #9
  %436 = call ptr @__ctype_toupper_loc() #11
  %437 = load ptr, ptr %436, align 8, !tbaa !5
  %438 = load ptr, ptr %3, align 8, !tbaa !5
  %439 = load i32, ptr %5, align 4, !tbaa !9
  %440 = zext i32 %439 to i64
  %441 = getelementptr inbounds i8, ptr %438, i64 %440
  %442 = load i8, ptr %441, align 1, !tbaa !18
  %443 = sext i8 %442 to i32
  %444 = sext i32 %443 to i64
  %445 = getelementptr inbounds i32, ptr %437, i64 %444
  %446 = load i32, ptr %445, align 4, !tbaa !9
  store i32 %446, ptr %16, align 4, !tbaa !9
  %447 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %447, ptr %17, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #9
  %448 = load i32, ptr %17, align 4, !tbaa !9
  %449 = trunc i32 %448 to i8
  %450 = load ptr, ptr %3, align 8, !tbaa !5
  %451 = load i32, ptr %5, align 4, !tbaa !9
  %452 = zext i32 %451 to i64
  %453 = getelementptr inbounds i8, ptr %450, i64 %452
  store i8 %449, ptr %453, align 1, !tbaa !18
  br label %454

454:                                              ; preds = %435
  %455 = load i32, ptr %5, align 4, !tbaa !9
  %456 = add i32 %455, 1
  store i32 %456, ptr %5, align 4, !tbaa !9
  br label %429, !llvm.loop !24

457:                                              ; preds = %429
  %458 = load ptr, ptr %3, align 8, !tbaa !5
  %459 = load ptr, ptr %3, align 8, !tbaa !5
  %460 = call i64 @strlen(ptr noundef %459) #10
  %461 = call i32 @strncmp(ptr noundef %458, ptr noundef @.str.25, i64 noundef %460) #10
  %462 = icmp ne i32 %461, 0
  br i1 %462, label %464, label %463

463:                                              ; preds = %457
  store i32 2, ptr @ExtraCandidateSetType, align 4, !tbaa !9
  br label %473

464:                                              ; preds = %457
  %465 = load ptr, ptr %3, align 8, !tbaa !5
  %466 = load ptr, ptr %3, align 8, !tbaa !5
  %467 = call i64 @strlen(ptr noundef %466) #10
  %468 = call i32 @strncmp(ptr noundef %465, ptr noundef @.str.26, i64 noundef %467) #10
  %469 = icmp ne i32 %468, 0
  br i1 %469, label %471, label %470

470:                                              ; preds = %464
  store i32 3, ptr @ExtraCandidateSetType, align 4, !tbaa !9
  br label %472

471:                                              ; preds = %464
  call void (ptr, ...) @eprintf(ptr noundef @.str.21, ptr noundef @.str.42)
  br label %472

472:                                              ; preds = %471, %470
  br label %473

473:                                              ; preds = %472, %463
  br label %1473

474:                                              ; preds = %420
  %475 = load ptr, ptr %2, align 8, !tbaa !5
  %476 = call i32 @strcmp(ptr noundef %475, ptr noundef @.str.43) #10
  %477 = icmp ne i32 %476, 0
  br i1 %477, label %483, label %478

478:                                              ; preds = %474
  %479 = call ptr @ReadYesOrNo(ptr noundef @Gain23Used)
  %480 = icmp ne ptr %479, null
  br i1 %480, label %482, label %481

481:                                              ; preds = %478
  call void (ptr, ...) @eprintf(ptr noundef @.str.44)
  br label %482

482:                                              ; preds = %481, %478
  br label %1472

483:                                              ; preds = %474
  %484 = load ptr, ptr %2, align 8, !tbaa !5
  %485 = call i32 @strcmp(ptr noundef %484, ptr noundef @.str.45) #10
  %486 = icmp ne i32 %485, 0
  br i1 %486, label %492, label %487

487:                                              ; preds = %483
  %488 = call ptr @ReadYesOrNo(ptr noundef @GainCriterionUsed)
  %489 = icmp ne ptr %488, null
  br i1 %489, label %491, label %490

490:                                              ; preds = %487
  call void (ptr, ...) @eprintf(ptr noundef @.str.46)
  br label %491

491:                                              ; preds = %490, %487
  br label %1471

492:                                              ; preds = %483
  %493 = load ptr, ptr %2, align 8, !tbaa !5
  %494 = call i32 @strcmp(ptr noundef %493, ptr noundef @.str.47) #10
  %495 = icmp ne i32 %494, 0
  br i1 %495, label %509, label %496

496:                                              ; preds = %492
  %497 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %497, ptr %3, align 8, !tbaa !5
  %498 = icmp ne ptr %497, null
  br i1 %498, label %499, label %503

499:                                              ; preds = %496
  %500 = load ptr, ptr %3, align 8, !tbaa !5
  %501 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %500, ptr noundef @.str.7, ptr noundef @InitialPeriod) #9
  %502 = icmp ne i32 %501, 0
  br i1 %502, label %504, label %503

503:                                              ; preds = %499, %496
  call void (ptr, ...) @eprintf(ptr noundef @.str.48)
  br label %504

504:                                              ; preds = %503, %499
  %505 = load i32, ptr @InitialPeriod, align 4, !tbaa !9
  %506 = icmp slt i32 %505, 0
  br i1 %506, label %507, label %508

507:                                              ; preds = %504
  call void (ptr, ...) @eprintf(ptr noundef @.str.49)
  br label %508

508:                                              ; preds = %507, %504
  br label %1470

509:                                              ; preds = %492
  %510 = load ptr, ptr %2, align 8, !tbaa !5
  %511 = call i32 @strcmp(ptr noundef %510, ptr noundef @.str.50) #10
  %512 = icmp ne i32 %511, 0
  br i1 %512, label %526, label %513

513:                                              ; preds = %509
  %514 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %514, ptr %3, align 8, !tbaa !5
  %515 = icmp ne ptr %514, null
  br i1 %515, label %516, label %520

516:                                              ; preds = %513
  %517 = load ptr, ptr %3, align 8, !tbaa !5
  %518 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %517, ptr noundef @.str.7, ptr noundef @InitialStepSize) #9
  %519 = icmp ne i32 %518, 0
  br i1 %519, label %521, label %520

520:                                              ; preds = %516, %513
  call void (ptr, ...) @eprintf(ptr noundef @.str.51)
  br label %521

521:                                              ; preds = %520, %516
  %522 = load i32, ptr @InitialStepSize, align 4, !tbaa !9
  %523 = icmp sle i32 %522, 0
  br i1 %523, label %524, label %525

524:                                              ; preds = %521
  call void (ptr, ...) @eprintf(ptr noundef @.str.52)
  br label %525

525:                                              ; preds = %524, %521
  br label %1469

526:                                              ; preds = %509
  %527 = load ptr, ptr %2, align 8, !tbaa !5
  %528 = call i32 @strcmp(ptr noundef %527, ptr noundef @.str.53) #10
  %529 = icmp ne i32 %528, 0
  br i1 %529, label %620, label %530

530:                                              ; preds = %526
  %531 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %531, ptr %3, align 8, !tbaa !5
  %532 = icmp ne ptr %531, null
  br i1 %532, label %534, label %533

533:                                              ; preds = %530
  call void (ptr, ...) @eprintf(ptr noundef @.str.54)
  br label %534

534:                                              ; preds = %533, %530
  store i32 0, ptr %5, align 4, !tbaa !9
  br label %535

535:                                              ; preds = %560, %534
  %536 = load i32, ptr %5, align 4, !tbaa !9
  %537 = zext i32 %536 to i64
  %538 = load ptr, ptr %3, align 8, !tbaa !5
  %539 = call i64 @strlen(ptr noundef %538) #10
  %540 = icmp ult i64 %537, %539
  br i1 %540, label %541, label %563

541:                                              ; preds = %535
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #9
  %542 = call ptr @__ctype_toupper_loc() #11
  %543 = load ptr, ptr %542, align 8, !tbaa !5
  %544 = load ptr, ptr %3, align 8, !tbaa !5
  %545 = load i32, ptr %5, align 4, !tbaa !9
  %546 = zext i32 %545 to i64
  %547 = getelementptr inbounds i8, ptr %544, i64 %546
  %548 = load i8, ptr %547, align 1, !tbaa !18
  %549 = sext i8 %548 to i32
  %550 = sext i32 %549 to i64
  %551 = getelementptr inbounds i32, ptr %543, i64 %550
  %552 = load i32, ptr %551, align 4, !tbaa !9
  store i32 %552, ptr %18, align 4, !tbaa !9
  %553 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %553, ptr %19, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #9
  %554 = load i32, ptr %19, align 4, !tbaa !9
  %555 = trunc i32 %554 to i8
  %556 = load ptr, ptr %3, align 8, !tbaa !5
  %557 = load i32, ptr %5, align 4, !tbaa !9
  %558 = zext i32 %557 to i64
  %559 = getelementptr inbounds i8, ptr %556, i64 %558
  store i8 %555, ptr %559, align 1, !tbaa !18
  br label %560

560:                                              ; preds = %541
  %561 = load i32, ptr %5, align 4, !tbaa !9
  %562 = add i32 %561, 1
  store i32 %562, ptr %5, align 4, !tbaa !9
  br label %535, !llvm.loop !25

563:                                              ; preds = %535
  %564 = load ptr, ptr %3, align 8, !tbaa !5
  %565 = load ptr, ptr %3, align 8, !tbaa !5
  %566 = call i64 @strlen(ptr noundef %565) #10
  %567 = call i32 @strncmp(ptr noundef %564, ptr noundef @.str.55, i64 noundef %566) #10
  %568 = icmp ne i32 %567, 0
  br i1 %568, label %570, label %569

569:                                              ; preds = %563
  store i32 0, ptr @InitialTourAlgorithm, align 4, !tbaa !9
  br label %619

570:                                              ; preds = %563
  %571 = load ptr, ptr %3, align 8, !tbaa !5
  %572 = load ptr, ptr %3, align 8, !tbaa !5
  %573 = call i64 @strlen(ptr noundef %572) #10
  %574 = call i32 @strncmp(ptr noundef %571, ptr noundef @.str.56, i64 noundef %573) #10
  %575 = icmp ne i32 %574, 0
  br i1 %575, label %577, label %576

576:                                              ; preds = %570
  store i32 1, ptr @InitialTourAlgorithm, align 4, !tbaa !9
  br label %618

577:                                              ; preds = %570
  %578 = load ptr, ptr %3, align 8, !tbaa !5
  %579 = load ptr, ptr %3, align 8, !tbaa !5
  %580 = call i64 @strlen(ptr noundef %579) #10
  %581 = call i32 @strncmp(ptr noundef %578, ptr noundef @.str.57, i64 noundef %580) #10
  %582 = icmp ne i32 %581, 0
  br i1 %582, label %584, label %583

583:                                              ; preds = %577
  store i32 2, ptr @InitialTourAlgorithm, align 4, !tbaa !9
  br label %617

584:                                              ; preds = %577
  %585 = load ptr, ptr %3, align 8, !tbaa !5
  %586 = load ptr, ptr %3, align 8, !tbaa !5
  %587 = call i64 @strlen(ptr noundef %586) #10
  %588 = call i32 @strncmp(ptr noundef %585, ptr noundef @.str.25, i64 noundef %587) #10
  %589 = icmp ne i32 %588, 0
  br i1 %589, label %591, label %590

590:                                              ; preds = %584
  store i32 3, ptr @InitialTourAlgorithm, align 4, !tbaa !9
  br label %616

591:                                              ; preds = %584
  %592 = load ptr, ptr %3, align 8, !tbaa !5
  %593 = load ptr, ptr %3, align 8, !tbaa !5
  %594 = call i64 @strlen(ptr noundef %593) #10
  %595 = call i32 @strncmp(ptr noundef %592, ptr noundef @.str.58, i64 noundef %594) #10
  %596 = icmp ne i32 %595, 0
  br i1 %596, label %598, label %597

597:                                              ; preds = %591
  store i32 4, ptr @InitialTourAlgorithm, align 4, !tbaa !9
  br label %615

598:                                              ; preds = %591
  %599 = load ptr, ptr %3, align 8, !tbaa !5
  %600 = load ptr, ptr %3, align 8, !tbaa !5
  %601 = call i64 @strlen(ptr noundef %600) #10
  %602 = call i32 @strncmp(ptr noundef %599, ptr noundef @.str.59, i64 noundef %601) #10
  %603 = icmp ne i32 %602, 0
  br i1 %603, label %605, label %604

604:                                              ; preds = %598
  store i32 5, ptr @InitialTourAlgorithm, align 4, !tbaa !9
  br label %614

605:                                              ; preds = %598
  %606 = load ptr, ptr %3, align 8, !tbaa !5
  %607 = load ptr, ptr %3, align 8, !tbaa !5
  %608 = call i64 @strlen(ptr noundef %607) #10
  %609 = call i32 @strncmp(ptr noundef %606, ptr noundef @.str.60, i64 noundef %608) #10
  %610 = icmp ne i32 %609, 0
  br i1 %610, label %612, label %611

611:                                              ; preds = %605
  store i32 6, ptr @InitialTourAlgorithm, align 4, !tbaa !9
  br label %613

612:                                              ; preds = %605
  call void (ptr, ...) @eprintf(ptr noundef @.str.61)
  br label %613

613:                                              ; preds = %612, %611
  br label %614

614:                                              ; preds = %613, %604
  br label %615

615:                                              ; preds = %614, %597
  br label %616

616:                                              ; preds = %615, %590
  br label %617

617:                                              ; preds = %616, %583
  br label %618

618:                                              ; preds = %617, %576
  br label %619

619:                                              ; preds = %618, %569
  br label %1468

620:                                              ; preds = %526
  %621 = load ptr, ptr %2, align 8, !tbaa !5
  %622 = call i32 @strcmp(ptr noundef %621, ptr noundef @.str.62) #10
  %623 = icmp ne i32 %622, 0
  br i1 %623, label %629, label %624

624:                                              ; preds = %620
  %625 = call ptr @GetFileName(ptr noundef null)
  store ptr %625, ptr @InitialTourFileName, align 8, !tbaa !5
  %626 = icmp ne ptr %625, null
  br i1 %626, label %628, label %627

627:                                              ; preds = %624
  call void (ptr, ...) @eprintf(ptr noundef @.str.63)
  br label %628

628:                                              ; preds = %627, %624
  br label %1467

629:                                              ; preds = %620
  %630 = load ptr, ptr %2, align 8, !tbaa !5
  %631 = call i32 @strcmp(ptr noundef %630, ptr noundef @.str.64) #10
  %632 = icmp ne i32 %631, 0
  br i1 %632, label %649, label %633

633:                                              ; preds = %629
  %634 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %634, ptr %3, align 8, !tbaa !5
  %635 = icmp ne ptr %634, null
  br i1 %635, label %636, label %640

636:                                              ; preds = %633
  %637 = load ptr, ptr %3, align 8, !tbaa !5
  %638 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %637, ptr noundef @.str.32, ptr noundef @InitialTourFraction) #9
  %639 = icmp ne i32 %638, 0
  br i1 %639, label %641, label %640

640:                                              ; preds = %636, %633
  call void (ptr, ...) @eprintf(ptr noundef @.str.65)
  br label %641

641:                                              ; preds = %640, %636
  %642 = load double, ptr @InitialTourFraction, align 8, !tbaa !11
  %643 = fcmp olt double %642, 0.000000e+00
  br i1 %643, label %647, label %644

644:                                              ; preds = %641
  %645 = load double, ptr @InitialTourFraction, align 8, !tbaa !11
  %646 = fcmp ogt double %645, 1.000000e+00
  br i1 %646, label %647, label %648

647:                                              ; preds = %644, %641
  call void (ptr, ...) @eprintf(ptr noundef @.str.66)
  br label %648

648:                                              ; preds = %647, %644
  br label %1466

649:                                              ; preds = %629
  %650 = load ptr, ptr %2, align 8, !tbaa !5
  %651 = call i32 @strcmp(ptr noundef %650, ptr noundef @.str.67) #10
  %652 = icmp ne i32 %651, 0
  br i1 %652, label %658, label %653

653:                                              ; preds = %649
  %654 = call ptr @GetFileName(ptr noundef null)
  store ptr %654, ptr @InputTourFileName, align 8, !tbaa !5
  %655 = icmp ne ptr %654, null
  br i1 %655, label %657, label %656

656:                                              ; preds = %653
  call void (ptr, ...) @eprintf(ptr noundef @.str.68)
  br label %657

657:                                              ; preds = %656, %653
  br label %1465

658:                                              ; preds = %649
  %659 = load ptr, ptr %2, align 8, !tbaa !5
  %660 = call i32 @strcmp(ptr noundef %659, ptr noundef @.str.69) #10
  %661 = icmp ne i32 %660, 0
  br i1 %661, label %678, label %662

662:                                              ; preds = %658
  %663 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %663, ptr %3, align 8, !tbaa !5
  %664 = icmp ne ptr %663, null
  br i1 %664, label %665, label %669

665:                                              ; preds = %662
  %666 = load ptr, ptr %3, align 8, !tbaa !5
  %667 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %666, ptr noundef @.str.7, ptr noundef @KickType) #9
  %668 = icmp ne i32 %667, 0
  br i1 %668, label %670, label %669

669:                                              ; preds = %665, %662
  call void (ptr, ...) @eprintf(ptr noundef @.str.70)
  br label %670

670:                                              ; preds = %669, %665
  %671 = load i32, ptr @KickType, align 4, !tbaa !9
  %672 = icmp ne i32 %671, 0
  br i1 %672, label %673, label %677

673:                                              ; preds = %670
  %674 = load i32, ptr @KickType, align 4, !tbaa !9
  %675 = icmp slt i32 %674, 4
  br i1 %675, label %676, label %677

676:                                              ; preds = %673
  call void (ptr, ...) @eprintf(ptr noundef @.str.71)
  br label %677

677:                                              ; preds = %676, %673, %670
  br label %1464

678:                                              ; preds = %658
  %679 = load ptr, ptr %2, align 8, !tbaa !5
  %680 = call i32 @strcmp(ptr noundef %679, ptr noundef @.str.72) #10
  %681 = icmp ne i32 %680, 0
  br i1 %681, label %695, label %682

682:                                              ; preds = %678
  %683 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %683, ptr %3, align 8, !tbaa !5
  %684 = icmp ne ptr %683, null
  br i1 %684, label %685, label %689

685:                                              ; preds = %682
  %686 = load ptr, ptr %3, align 8, !tbaa !5
  %687 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %686, ptr noundef @.str.7, ptr noundef @Kicks) #9
  %688 = icmp ne i32 %687, 0
  br i1 %688, label %690, label %689

689:                                              ; preds = %685, %682
  call void (ptr, ...) @eprintf(ptr noundef @.str.73)
  br label %690

690:                                              ; preds = %689, %685
  %691 = load i32, ptr @Kicks, align 4, !tbaa !9
  %692 = icmp slt i32 %691, 0
  br i1 %692, label %693, label %694

693:                                              ; preds = %690
  call void (ptr, ...) @eprintf(ptr noundef @.str.74)
  br label %694

694:                                              ; preds = %693, %690
  br label %1463

695:                                              ; preds = %678
  %696 = load ptr, ptr %2, align 8, !tbaa !5
  %697 = call i32 @strcmp(ptr noundef %696, ptr noundef @.str.75) #10
  %698 = icmp ne i32 %697, 0
  br i1 %698, label %712, label %699

699:                                              ; preds = %695
  %700 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %700, ptr %3, align 8, !tbaa !5
  %701 = icmp ne ptr %700, null
  br i1 %701, label %702, label %706

702:                                              ; preds = %699
  %703 = load ptr, ptr %3, align 8, !tbaa !5
  %704 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %703, ptr noundef @.str.7, ptr noundef @MaxBreadth) #9
  %705 = icmp ne i32 %704, 0
  br i1 %705, label %707, label %706

706:                                              ; preds = %702, %699
  call void (ptr, ...) @eprintf(ptr noundef @.str.76)
  br label %707

707:                                              ; preds = %706, %702
  %708 = load i32, ptr @MaxBreadth, align 4, !tbaa !9
  %709 = icmp slt i32 %708, 0
  br i1 %709, label %710, label %711

710:                                              ; preds = %707
  call void (ptr, ...) @eprintf(ptr noundef @.str.77)
  br label %711

711:                                              ; preds = %710, %707
  br label %1462

712:                                              ; preds = %695
  %713 = load ptr, ptr %2, align 8, !tbaa !5
  %714 = call i32 @strcmp(ptr noundef %713, ptr noundef @.str.78) #10
  %715 = icmp ne i32 %714, 0
  br i1 %715, label %770, label %716

716:                                              ; preds = %712
  %717 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %717, ptr %3, align 8, !tbaa !5
  %718 = icmp ne ptr %717, null
  br i1 %718, label %719, label %723

719:                                              ; preds = %716
  %720 = load ptr, ptr %3, align 8, !tbaa !5
  %721 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %720, ptr noundef @.str.7, ptr noundef @MaxCandidates) #9
  %722 = icmp ne i32 %721, 0
  br i1 %722, label %724, label %723

723:                                              ; preds = %719, %716
  call void (ptr, ...) @eprintf(ptr noundef @.str.79)
  br label %724

724:                                              ; preds = %723, %719
  %725 = load i32, ptr @MaxCandidates, align 4, !tbaa !9
  %726 = icmp slt i32 %725, 0
  br i1 %726, label %727, label %728

727:                                              ; preds = %724
  call void (ptr, ...) @eprintf(ptr noundef @.str.80)
  br label %728

728:                                              ; preds = %727, %724
  %729 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %729, ptr %3, align 8, !tbaa !5
  %730 = icmp ne ptr %729, null
  br i1 %730, label %731, label %769

731:                                              ; preds = %728
  store i32 0, ptr %5, align 4, !tbaa !9
  br label %732

732:                                              ; preds = %757, %731
  %733 = load i32, ptr %5, align 4, !tbaa !9
  %734 = zext i32 %733 to i64
  %735 = load ptr, ptr %3, align 8, !tbaa !5
  %736 = call i64 @strlen(ptr noundef %735) #10
  %737 = icmp ult i64 %734, %736
  br i1 %737, label %738, label %760

738:                                              ; preds = %732
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #9
  %739 = call ptr @__ctype_toupper_loc() #11
  %740 = load ptr, ptr %739, align 8, !tbaa !5
  %741 = load ptr, ptr %3, align 8, !tbaa !5
  %742 = load i32, ptr %5, align 4, !tbaa !9
  %743 = zext i32 %742 to i64
  %744 = getelementptr inbounds i8, ptr %741, i64 %743
  %745 = load i8, ptr %744, align 1, !tbaa !18
  %746 = sext i8 %745 to i32
  %747 = sext i32 %746 to i64
  %748 = getelementptr inbounds i32, ptr %740, i64 %747
  %749 = load i32, ptr %748, align 4, !tbaa !9
  store i32 %749, ptr %20, align 4, !tbaa !9
  %750 = load i32, ptr %20, align 4, !tbaa !9
  store i32 %750, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #9
  %751 = load i32, ptr %21, align 4, !tbaa !9
  %752 = trunc i32 %751 to i8
  %753 = load ptr, ptr %3, align 8, !tbaa !5
  %754 = load i32, ptr %5, align 4, !tbaa !9
  %755 = zext i32 %754 to i64
  %756 = getelementptr inbounds i8, ptr %753, i64 %755
  store i8 %752, ptr %756, align 1, !tbaa !18
  br label %757

757:                                              ; preds = %738
  %758 = load i32, ptr %5, align 4, !tbaa !9
  %759 = add i32 %758, 1
  store i32 %759, ptr %5, align 4, !tbaa !9
  br label %732, !llvm.loop !26

760:                                              ; preds = %732
  %761 = load ptr, ptr %3, align 8, !tbaa !5
  %762 = load ptr, ptr %3, align 8, !tbaa !5
  %763 = call i64 @strlen(ptr noundef %762) #10
  %764 = call i32 @strncmp(ptr noundef %761, ptr noundef @.str.38, i64 noundef %763) #10
  %765 = icmp ne i32 %764, 0
  br i1 %765, label %767, label %766

766:                                              ; preds = %760
  store i32 1, ptr @CandidateSetSymmetric, align 4, !tbaa !9
  br label %768

767:                                              ; preds = %760
  call void (ptr, ...) @eprintf(ptr noundef @.str.81)
  br label %768

768:                                              ; preds = %767, %766
  br label %769

769:                                              ; preds = %768, %728
  br label %1461

770:                                              ; preds = %712
  %771 = load ptr, ptr %2, align 8, !tbaa !5
  %772 = call i32 @strcmp(ptr noundef %771, ptr noundef @.str.82) #10
  %773 = icmp ne i32 %772, 0
  br i1 %773, label %787, label %774

774:                                              ; preds = %770
  %775 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %775, ptr %3, align 8, !tbaa !5
  %776 = icmp ne ptr %775, null
  br i1 %776, label %777, label %781

777:                                              ; preds = %774
  %778 = load ptr, ptr %3, align 8, !tbaa !5
  %779 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %778, ptr noundef @.str.7, ptr noundef @MaxSwaps) #9
  %780 = icmp ne i32 %779, 0
  br i1 %780, label %782, label %781

781:                                              ; preds = %777, %774
  call void (ptr, ...) @eprintf(ptr noundef @.str.83)
  br label %782

782:                                              ; preds = %781, %777
  %783 = load i32, ptr @MaxSwaps, align 4, !tbaa !9
  %784 = icmp slt i32 %783, 0
  br i1 %784, label %785, label %786

785:                                              ; preds = %782
  call void (ptr, ...) @eprintf(ptr noundef @.str.84)
  br label %786

786:                                              ; preds = %785, %782
  br label %1460

787:                                              ; preds = %770
  %788 = load ptr, ptr %2, align 8, !tbaa !5
  %789 = call i32 @strcmp(ptr noundef %788, ptr noundef @.str.85) #10
  %790 = icmp ne i32 %789, 0
  br i1 %790, label %804, label %791

791:                                              ; preds = %787
  %792 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %792, ptr %3, align 8, !tbaa !5
  %793 = icmp ne ptr %792, null
  br i1 %793, label %794, label %798

794:                                              ; preds = %791
  %795 = load ptr, ptr %3, align 8, !tbaa !5
  %796 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %795, ptr noundef @.str.7, ptr noundef @MaxTrials) #9
  %797 = icmp ne i32 %796, 0
  br i1 %797, label %799, label %798

798:                                              ; preds = %794, %791
  call void (ptr, ...) @eprintf(ptr noundef @.str.86)
  br label %799

799:                                              ; preds = %798, %794
  %800 = load i32, ptr @MaxTrials, align 4, !tbaa !9
  %801 = icmp slt i32 %800, 0
  br i1 %801, label %802, label %803

802:                                              ; preds = %799
  call void (ptr, ...) @eprintf(ptr noundef @.str.87)
  br label %803

803:                                              ; preds = %802, %799
  br label %1459

804:                                              ; preds = %787
  %805 = load ptr, ptr %2, align 8, !tbaa !5
  %806 = call i32 @strcmp(ptr noundef %805, ptr noundef @.str.88) #10
  %807 = icmp ne i32 %806, 0
  br i1 %807, label %869, label %808

808:                                              ; preds = %804
  %809 = call ptr @GetFileName(ptr noundef null)
  store ptr %809, ptr %4, align 8, !tbaa !5
  %810 = icmp ne ptr %809, null
  br i1 %810, label %812, label %811

811:                                              ; preds = %808
  call void (ptr, ...) @eprintf(ptr noundef @.str.89)
  br label %812

812:                                              ; preds = %811, %808
  %813 = load i32, ptr @MergeTourFiles, align 4, !tbaa !9
  %814 = icmp eq i32 %813, 0
  br i1 %814, label %815, label %827

815:                                              ; preds = %812
  %816 = call noalias ptr @malloc(i64 noundef 8) #12
  store ptr %816, ptr @MergeTourFileName, align 8, !tbaa !5
  %817 = icmp ne ptr %816, null
  br i1 %817, label %818, label %819

818:                                              ; preds = %815
  br label %820

819:                                              ; preds = %815
  call void @__assert_fail(ptr noundef @.str.90, ptr noundef @.str.18, i32 noundef 653, ptr noundef @__PRETTY_FUNCTION__.ReadParameters) #13
  unreachable

820:                                              ; preds = %818
  %821 = load ptr, ptr %4, align 8, !tbaa !5
  %822 = load ptr, ptr @MergeTourFileName, align 8, !tbaa !5
  %823 = load i32, ptr @MergeTourFiles, align 4, !tbaa !9
  %824 = add nsw i32 %823, 1
  store i32 %824, ptr @MergeTourFiles, align 4, !tbaa !9
  %825 = sext i32 %823 to i64
  %826 = getelementptr inbounds ptr, ptr %822, i64 %825
  store ptr %821, ptr %826, align 8, !tbaa !5
  br label %868

827:                                              ; preds = %812
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #9
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %828

828:                                              ; preds = %843, %827
  %829 = load i32, ptr %22, align 4, !tbaa !9
  %830 = load i32, ptr @MergeTourFiles, align 4, !tbaa !9
  %831 = icmp slt i32 %829, %830
  br i1 %831, label %832, label %846

832:                                              ; preds = %828
  %833 = load ptr, ptr %4, align 8, !tbaa !5
  %834 = load ptr, ptr @MergeTourFileName, align 8, !tbaa !5
  %835 = load i32, ptr %22, align 4, !tbaa !9
  %836 = sext i32 %835 to i64
  %837 = getelementptr inbounds ptr, ptr %834, i64 %836
  %838 = load ptr, ptr %837, align 8, !tbaa !5
  %839 = call i32 @strcmp(ptr noundef %833, ptr noundef %838) #10
  %840 = icmp ne i32 %839, 0
  br i1 %840, label %842, label %841

841:                                              ; preds = %832
  br label %846

842:                                              ; preds = %832
  br label %843

843:                                              ; preds = %842
  %844 = load i32, ptr %22, align 4, !tbaa !9
  %845 = add nsw i32 %844, 1
  store i32 %845, ptr %22, align 4, !tbaa !9
  br label %828, !llvm.loop !27

846:                                              ; preds = %841, %828
  %847 = load i32, ptr %22, align 4, !tbaa !9
  %848 = load i32, ptr @MergeTourFiles, align 4, !tbaa !9
  %849 = icmp eq i32 %847, %848
  br i1 %849, label %850, label %867

850:                                              ; preds = %846
  %851 = load ptr, ptr @MergeTourFileName, align 8, !tbaa !5
  %852 = load i32, ptr @MergeTourFiles, align 4, !tbaa !9
  %853 = add nsw i32 %852, 1
  %854 = sext i32 %853 to i64
  %855 = mul i64 %854, 8
  %856 = call ptr @realloc(ptr noundef %851, i64 noundef %855) #14
  store ptr %856, ptr @MergeTourFileName, align 8, !tbaa !5
  %857 = icmp ne ptr %856, null
  br i1 %857, label %858, label %859

858:                                              ; preds = %850
  br label %860

859:                                              ; preds = %850
  call void @__assert_fail(ptr noundef @.str.91, ptr noundef @.str.18, i32 noundef 664, ptr noundef @__PRETTY_FUNCTION__.ReadParameters) #13
  unreachable

860:                                              ; preds = %858
  %861 = load ptr, ptr %4, align 8, !tbaa !5
  %862 = load ptr, ptr @MergeTourFileName, align 8, !tbaa !5
  %863 = load i32, ptr @MergeTourFiles, align 4, !tbaa !9
  %864 = add nsw i32 %863, 1
  store i32 %864, ptr @MergeTourFiles, align 4, !tbaa !9
  %865 = sext i32 %863 to i64
  %866 = getelementptr inbounds ptr, ptr %862, i64 %865
  store ptr %861, ptr %866, align 8, !tbaa !5
  br label %867

867:                                              ; preds = %860, %846
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #9
  br label %868

868:                                              ; preds = %867, %820
  br label %1458

869:                                              ; preds = %804
  %870 = load ptr, ptr %2, align 8, !tbaa !5
  %871 = call i32 @strcmp(ptr noundef %870, ptr noundef @.str.92) #10
  %872 = icmp ne i32 %871, 0
  br i1 %872, label %886, label %873

873:                                              ; preds = %869
  %874 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %874, ptr %3, align 8, !tbaa !5
  %875 = icmp ne ptr %874, null
  br i1 %875, label %876, label %880

876:                                              ; preds = %873
  %877 = load ptr, ptr %3, align 8, !tbaa !5
  %878 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %877, ptr noundef @.str.7, ptr noundef @MoveType) #9
  %879 = icmp ne i32 %878, 0
  br i1 %879, label %881, label %880

880:                                              ; preds = %876, %873
  call void (ptr, ...) @eprintf(ptr noundef @.str.93)
  br label %881

881:                                              ; preds = %880, %876
  %882 = load i32, ptr @MoveType, align 4, !tbaa !9
  %883 = icmp slt i32 %882, 2
  br i1 %883, label %884, label %885

884:                                              ; preds = %881
  call void (ptr, ...) @eprintf(ptr noundef @.str.94)
  br label %885

885:                                              ; preds = %884, %881
  br label %1457

886:                                              ; preds = %869
  %887 = load ptr, ptr %2, align 8, !tbaa !5
  %888 = call i32 @strcmp(ptr noundef %887, ptr noundef @.str.95) #10
  %889 = icmp ne i32 %888, 0
  br i1 %889, label %903, label %890

890:                                              ; preds = %886
  %891 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %891, ptr %3, align 8, !tbaa !5
  %892 = icmp ne ptr %891, null
  br i1 %892, label %893, label %897

893:                                              ; preds = %890
  %894 = load ptr, ptr %3, align 8, !tbaa !5
  %895 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %894, ptr noundef @.str.7, ptr noundef @NonsequentialMoveType) #9
  %896 = icmp ne i32 %895, 0
  br i1 %896, label %898, label %897

897:                                              ; preds = %893, %890
  call void (ptr, ...) @eprintf(ptr noundef @.str.96)
  br label %898

898:                                              ; preds = %897, %893
  %899 = load i32, ptr @NonsequentialMoveType, align 4, !tbaa !9
  %900 = icmp slt i32 %899, 4
  br i1 %900, label %901, label %902

901:                                              ; preds = %898
  call void (ptr, ...) @eprintf(ptr noundef @.str.97)
  br label %902

902:                                              ; preds = %901, %898
  br label %1456

903:                                              ; preds = %886
  %904 = load ptr, ptr %2, align 8, !tbaa !5
  %905 = call i32 @strcmp(ptr noundef %904, ptr noundef @.str.98) #10
  %906 = icmp ne i32 %905, 0
  br i1 %906, label %916, label %907

907:                                              ; preds = %903
  %908 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %908, ptr %3, align 8, !tbaa !5
  %909 = icmp ne ptr %908, null
  br i1 %909, label %910, label %914

910:                                              ; preds = %907
  %911 = load ptr, ptr %3, align 8, !tbaa !5
  %912 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %911, ptr noundef @.str.99, ptr noundef @Optimum) #9
  %913 = icmp ne i32 %912, 0
  br i1 %913, label %915, label %914

914:                                              ; preds = %910, %907
  call void (ptr, ...) @eprintf(ptr noundef @.str.100)
  br label %915

915:                                              ; preds = %914, %910
  br label %1455

916:                                              ; preds = %903
  %917 = load ptr, ptr %2, align 8, !tbaa !5
  %918 = call i32 @strcmp(ptr noundef %917, ptr noundef @.str.101) #10
  %919 = icmp ne i32 %918, 0
  br i1 %919, label %925, label %920

920:                                              ; preds = %916
  %921 = call ptr @GetFileName(ptr noundef null)
  store ptr %921, ptr @OutputTourFileName, align 8, !tbaa !5
  %922 = icmp ne ptr %921, null
  br i1 %922, label %924, label %923

923:                                              ; preds = %920
  call void (ptr, ...) @eprintf(ptr noundef @.str.102)
  br label %924

924:                                              ; preds = %923, %920
  br label %1454

925:                                              ; preds = %916
  %926 = load ptr, ptr %2, align 8, !tbaa !5
  %927 = call i32 @strcmp(ptr noundef %926, ptr noundef @.str.103) #10
  %928 = icmp ne i32 %927, 0
  br i1 %928, label %991, label %929

929:                                              ; preds = %925
  %930 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %930, ptr %3, align 8, !tbaa !5
  %931 = icmp ne ptr %930, null
  br i1 %931, label %932, label %936

932:                                              ; preds = %929
  %933 = load ptr, ptr %3, align 8, !tbaa !5
  %934 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %933, ptr noundef @.str.7, ptr noundef @PatchingA) #9
  %935 = icmp ne i32 %934, 0
  br i1 %935, label %937, label %936

936:                                              ; preds = %932, %929
  call void (ptr, ...) @eprintf(ptr noundef @.str.104)
  br label %937

937:                                              ; preds = %936, %932
  %938 = load i32, ptr @PatchingA, align 4, !tbaa !9
  %939 = icmp slt i32 %938, 0
  br i1 %939, label %940, label %941

940:                                              ; preds = %937
  call void (ptr, ...) @eprintf(ptr noundef @.str.105)
  br label %941

941:                                              ; preds = %940, %937
  %942 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %942, ptr %3, align 8, !tbaa !5
  %943 = icmp ne ptr %942, null
  br i1 %943, label %944, label %990

944:                                              ; preds = %941
  store i32 0, ptr %5, align 4, !tbaa !9
  br label %945

945:                                              ; preds = %970, %944
  %946 = load i32, ptr %5, align 4, !tbaa !9
  %947 = zext i32 %946 to i64
  %948 = load ptr, ptr %3, align 8, !tbaa !5
  %949 = call i64 @strlen(ptr noundef %948) #10
  %950 = icmp ult i64 %947, %949
  br i1 %950, label %951, label %973

951:                                              ; preds = %945
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #9
  %952 = call ptr @__ctype_toupper_loc() #11
  %953 = load ptr, ptr %952, align 8, !tbaa !5
  %954 = load ptr, ptr %3, align 8, !tbaa !5
  %955 = load i32, ptr %5, align 4, !tbaa !9
  %956 = zext i32 %955 to i64
  %957 = getelementptr inbounds i8, ptr %954, i64 %956
  %958 = load i8, ptr %957, align 1, !tbaa !18
  %959 = sext i8 %958 to i32
  %960 = sext i32 %959 to i64
  %961 = getelementptr inbounds i32, ptr %953, i64 %960
  %962 = load i32, ptr %961, align 4, !tbaa !9
  store i32 %962, ptr %23, align 4, !tbaa !9
  %963 = load i32, ptr %23, align 4, !tbaa !9
  store i32 %963, ptr %24, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #9
  %964 = load i32, ptr %24, align 4, !tbaa !9
  %965 = trunc i32 %964 to i8
  %966 = load ptr, ptr %3, align 8, !tbaa !5
  %967 = load i32, ptr %5, align 4, !tbaa !9
  %968 = zext i32 %967 to i64
  %969 = getelementptr inbounds i8, ptr %966, i64 %968
  store i8 %965, ptr %969, align 1, !tbaa !18
  br label %970

970:                                              ; preds = %951
  %971 = load i32, ptr %5, align 4, !tbaa !9
  %972 = add i32 %971, 1
  store i32 %972, ptr %5, align 4, !tbaa !9
  br label %945, !llvm.loop !28

973:                                              ; preds = %945
  %974 = load ptr, ptr %3, align 8, !tbaa !5
  %975 = load ptr, ptr %3, align 8, !tbaa !5
  %976 = call i64 @strlen(ptr noundef %975) #10
  %977 = call i32 @strncmp(ptr noundef %974, ptr noundef @.str.106, i64 noundef %976) #10
  %978 = icmp ne i32 %977, 0
  br i1 %978, label %980, label %979

979:                                              ; preds = %973
  store i32 1, ptr @PatchingARestricted, align 4, !tbaa !9
  br label %989

980:                                              ; preds = %973
  %981 = load ptr, ptr %3, align 8, !tbaa !5
  %982 = load ptr, ptr %3, align 8, !tbaa !5
  %983 = call i64 @strlen(ptr noundef %982) #10
  %984 = call i32 @strncmp(ptr noundef %981, ptr noundef @.str.107, i64 noundef %983) #10
  %985 = icmp ne i32 %984, 0
  br i1 %985, label %987, label %986

986:                                              ; preds = %980
  store i32 1, ptr @PatchingAExtended, align 4, !tbaa !9
  br label %988

987:                                              ; preds = %980
  call void (ptr, ...) @eprintf(ptr noundef @.str.21, ptr noundef @.str.108)
  br label %988

988:                                              ; preds = %987, %986
  br label %989

989:                                              ; preds = %988, %979
  br label %990

990:                                              ; preds = %989, %941
  br label %1453

991:                                              ; preds = %925
  %992 = load ptr, ptr %2, align 8, !tbaa !5
  %993 = call i32 @strcmp(ptr noundef %992, ptr noundef @.str.109) #10
  %994 = icmp ne i32 %993, 0
  br i1 %994, label %1057, label %995

995:                                              ; preds = %991
  %996 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %996, ptr %3, align 8, !tbaa !5
  %997 = icmp ne ptr %996, null
  br i1 %997, label %998, label %1002

998:                                              ; preds = %995
  %999 = load ptr, ptr %3, align 8, !tbaa !5
  %1000 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %999, ptr noundef @.str.7, ptr noundef @PatchingC) #9
  %1001 = icmp ne i32 %1000, 0
  br i1 %1001, label %1003, label %1002

1002:                                             ; preds = %998, %995
  call void (ptr, ...) @eprintf(ptr noundef @.str.110)
  br label %1003

1003:                                             ; preds = %1002, %998
  %1004 = load i32, ptr @PatchingC, align 4, !tbaa !9
  %1005 = icmp slt i32 %1004, 0
  br i1 %1005, label %1006, label %1007

1006:                                             ; preds = %1003
  call void (ptr, ...) @eprintf(ptr noundef @.str.111)
  br label %1007

1007:                                             ; preds = %1006, %1003
  %1008 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %1008, ptr %3, align 8, !tbaa !5
  %1009 = icmp ne ptr %1008, null
  br i1 %1009, label %1010, label %1056

1010:                                             ; preds = %1007
  store i32 0, ptr %5, align 4, !tbaa !9
  br label %1011

1011:                                             ; preds = %1036, %1010
  %1012 = load i32, ptr %5, align 4, !tbaa !9
  %1013 = zext i32 %1012 to i64
  %1014 = load ptr, ptr %3, align 8, !tbaa !5
  %1015 = call i64 @strlen(ptr noundef %1014) #10
  %1016 = icmp ult i64 %1013, %1015
  br i1 %1016, label %1017, label %1039

1017:                                             ; preds = %1011
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #9
  %1018 = call ptr @__ctype_toupper_loc() #11
  %1019 = load ptr, ptr %1018, align 8, !tbaa !5
  %1020 = load ptr, ptr %3, align 8, !tbaa !5
  %1021 = load i32, ptr %5, align 4, !tbaa !9
  %1022 = zext i32 %1021 to i64
  %1023 = getelementptr inbounds i8, ptr %1020, i64 %1022
  %1024 = load i8, ptr %1023, align 1, !tbaa !18
  %1025 = sext i8 %1024 to i32
  %1026 = sext i32 %1025 to i64
  %1027 = getelementptr inbounds i32, ptr %1019, i64 %1026
  %1028 = load i32, ptr %1027, align 4, !tbaa !9
  store i32 %1028, ptr %25, align 4, !tbaa !9
  %1029 = load i32, ptr %25, align 4, !tbaa !9
  store i32 %1029, ptr %26, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #9
  %1030 = load i32, ptr %26, align 4, !tbaa !9
  %1031 = trunc i32 %1030 to i8
  %1032 = load ptr, ptr %3, align 8, !tbaa !5
  %1033 = load i32, ptr %5, align 4, !tbaa !9
  %1034 = zext i32 %1033 to i64
  %1035 = getelementptr inbounds i8, ptr %1032, i64 %1034
  store i8 %1031, ptr %1035, align 1, !tbaa !18
  br label %1036

1036:                                             ; preds = %1017
  %1037 = load i32, ptr %5, align 4, !tbaa !9
  %1038 = add i32 %1037, 1
  store i32 %1038, ptr %5, align 4, !tbaa !9
  br label %1011, !llvm.loop !29

1039:                                             ; preds = %1011
  %1040 = load ptr, ptr %3, align 8, !tbaa !5
  %1041 = load ptr, ptr %3, align 8, !tbaa !5
  %1042 = call i64 @strlen(ptr noundef %1041) #10
  %1043 = call i32 @strncmp(ptr noundef %1040, ptr noundef @.str.106, i64 noundef %1042) #10
  %1044 = icmp ne i32 %1043, 0
  br i1 %1044, label %1046, label %1045

1045:                                             ; preds = %1039
  store i32 1, ptr @PatchingCRestricted, align 4, !tbaa !9
  br label %1055

1046:                                             ; preds = %1039
  %1047 = load ptr, ptr %3, align 8, !tbaa !5
  %1048 = load ptr, ptr %3, align 8, !tbaa !5
  %1049 = call i64 @strlen(ptr noundef %1048) #10
  %1050 = call i32 @strncmp(ptr noundef %1047, ptr noundef @.str.107, i64 noundef %1049) #10
  %1051 = icmp ne i32 %1050, 0
  br i1 %1051, label %1053, label %1052

1052:                                             ; preds = %1046
  store i32 1, ptr @PatchingCExtended, align 4, !tbaa !9
  br label %1054

1053:                                             ; preds = %1046
  call void (ptr, ...) @eprintf(ptr noundef @.str.21, ptr noundef @.str.112, ptr noundef @.str.113)
  br label %1054

1054:                                             ; preds = %1053, %1052
  br label %1055

1055:                                             ; preds = %1054, %1045
  br label %1056

1056:                                             ; preds = %1055, %1007
  br label %1452

1057:                                             ; preds = %991
  %1058 = load ptr, ptr %2, align 8, !tbaa !5
  %1059 = call i32 @strcmp(ptr noundef %1058, ptr noundef @.str.114) #10
  %1060 = icmp ne i32 %1059, 0
  br i1 %1060, label %1066, label %1061

1061:                                             ; preds = %1057
  %1062 = call ptr @GetFileName(ptr noundef null)
  store ptr %1062, ptr @PiFileName, align 8, !tbaa !5
  %1063 = icmp ne ptr %1062, null
  br i1 %1063, label %1065, label %1064

1064:                                             ; preds = %1061
  call void (ptr, ...) @eprintf(ptr noundef @.str.115)
  br label %1065

1065:                                             ; preds = %1064, %1061
  br label %1451

1066:                                             ; preds = %1057
  %1067 = load ptr, ptr %2, align 8, !tbaa !5
  %1068 = call i32 @strcmp(ptr noundef %1067, ptr noundef @.str.116) #10
  %1069 = icmp ne i32 %1068, 0
  br i1 %1069, label %1079, label %1070

1070:                                             ; preds = %1066
  %1071 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %1071, ptr %3, align 8, !tbaa !5
  %1072 = icmp ne ptr %1071, null
  br i1 %1072, label %1073, label %1077

1073:                                             ; preds = %1070
  %1074 = load ptr, ptr %3, align 8, !tbaa !5
  %1075 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %1074, ptr noundef @.str.7, ptr noundef @MaxPopulationSize) #9
  %1076 = icmp ne i32 %1075, 0
  br i1 %1076, label %1078, label %1077

1077:                                             ; preds = %1073, %1070
  call void (ptr, ...) @eprintf(ptr noundef @.str.117)
  br label %1078

1078:                                             ; preds = %1077, %1073
  br label %1450

1079:                                             ; preds = %1066
  %1080 = load ptr, ptr %2, align 8, !tbaa !5
  %1081 = call i32 @strcmp(ptr noundef %1080, ptr noundef @.str.118) #10
  %1082 = icmp ne i32 %1081, 0
  br i1 %1082, label %1092, label %1083

1083:                                             ; preds = %1079
  %1084 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %1084, ptr %3, align 8, !tbaa !5
  %1085 = icmp ne ptr %1084, null
  br i1 %1085, label %1086, label %1090

1086:                                             ; preds = %1083
  %1087 = load ptr, ptr %3, align 8, !tbaa !5
  %1088 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %1087, ptr noundef @.str.7, ptr noundef @Precision) #9
  %1089 = icmp ne i32 %1088, 0
  br i1 %1089, label %1091, label %1090

1090:                                             ; preds = %1086, %1083
  call void (ptr, ...) @eprintf(ptr noundef @.str.119)
  br label %1091

1091:                                             ; preds = %1090, %1086
  br label %1449

1092:                                             ; preds = %1079
  %1093 = load ptr, ptr %2, align 8, !tbaa !5
  %1094 = call i32 @strcmp(ptr noundef %1093, ptr noundef @.str.120) #10
  %1095 = icmp ne i32 %1094, 0
  br i1 %1095, label %1101, label %1096

1096:                                             ; preds = %1092
  %1097 = call ptr @GetFileName(ptr noundef null)
  store ptr %1097, ptr @ProblemFileName, align 8, !tbaa !5
  %1098 = icmp ne ptr %1097, null
  br i1 %1098, label %1100, label %1099

1099:                                             ; preds = %1096
  call void (ptr, ...) @eprintf(ptr noundef @.str.121)
  br label %1100

1100:                                             ; preds = %1099, %1096
  br label %1448

1101:                                             ; preds = %1092
  %1102 = load ptr, ptr %2, align 8, !tbaa !5
  %1103 = call i32 @strcmp(ptr noundef %1102, ptr noundef @.str.122) #10
  %1104 = icmp ne i32 %1103, 0
  br i1 %1104, label %1110, label %1105

1105:                                             ; preds = %1101
  %1106 = call ptr @ReadYesOrNo(ptr noundef @RestrictedSearch)
  %1107 = icmp ne ptr %1106, null
  br i1 %1107, label %1109, label %1108

1108:                                             ; preds = %1105
  call void (ptr, ...) @eprintf(ptr noundef @.str.123)
  br label %1109

1109:                                             ; preds = %1108, %1105
  br label %1447

1110:                                             ; preds = %1101
  %1111 = load ptr, ptr %2, align 8, !tbaa !5
  %1112 = call i32 @strcmp(ptr noundef %1111, ptr noundef @.str.124) #10
  %1113 = icmp ne i32 %1112, 0
  br i1 %1113, label %1127, label %1114

1114:                                             ; preds = %1110
  %1115 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %1115, ptr %3, align 8, !tbaa !5
  %1116 = icmp ne ptr %1115, null
  br i1 %1116, label %1117, label %1121

1117:                                             ; preds = %1114
  %1118 = load ptr, ptr %3, align 8, !tbaa !5
  %1119 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %1118, ptr noundef @.str.7, ptr noundef @Runs) #9
  %1120 = icmp ne i32 %1119, 0
  br i1 %1120, label %1122, label %1121

1121:                                             ; preds = %1117, %1114
  call void (ptr, ...) @eprintf(ptr noundef @.str.125)
  br label %1122

1122:                                             ; preds = %1121, %1117
  %1123 = load i32, ptr @Runs, align 4, !tbaa !9
  %1124 = icmp sle i32 %1123, 0
  br i1 %1124, label %1125, label %1126

1125:                                             ; preds = %1122
  call void (ptr, ...) @eprintf(ptr noundef @.str.126)
  br label %1126

1126:                                             ; preds = %1125, %1122
  br label %1446

1127:                                             ; preds = %1110
  %1128 = load ptr, ptr %2, align 8, !tbaa !5
  %1129 = call i32 @strcmp(ptr noundef %1128, ptr noundef @.str.127) #10
  %1130 = icmp ne i32 %1129, 0
  br i1 %1130, label %1140, label %1131

1131:                                             ; preds = %1127
  %1132 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %1132, ptr %3, align 8, !tbaa !5
  %1133 = icmp ne ptr %1132, null
  br i1 %1133, label %1134, label %1138

1134:                                             ; preds = %1131
  %1135 = load ptr, ptr %3, align 8, !tbaa !5
  %1136 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %1135, ptr noundef @.str.128, ptr noundef @Seed) #9
  %1137 = icmp ne i32 %1136, 0
  br i1 %1137, label %1139, label %1138

1138:                                             ; preds = %1134, %1131
  call void (ptr, ...) @eprintf(ptr noundef @.str.129)
  br label %1139

1139:                                             ; preds = %1138, %1134
  br label %1445

1140:                                             ; preds = %1127
  %1141 = load ptr, ptr %2, align 8, !tbaa !5
  %1142 = call i32 @strcmp(ptr noundef %1141, ptr noundef @.str.130) #10
  %1143 = icmp ne i32 %1142, 0
  br i1 %1143, label %1149, label %1144

1144:                                             ; preds = %1140
  %1145 = call ptr @ReadYesOrNo(ptr noundef @StopAtOptimum)
  %1146 = icmp ne ptr %1145, null
  br i1 %1146, label %1148, label %1147

1147:                                             ; preds = %1144
  call void (ptr, ...) @eprintf(ptr noundef @.str.131)
  br label %1148

1148:                                             ; preds = %1147, %1144
  br label %1444

1149:                                             ; preds = %1140
  %1150 = load ptr, ptr %2, align 8, !tbaa !5
  %1151 = call i32 @strcmp(ptr noundef %1150, ptr noundef @.str.132) #10
  %1152 = icmp ne i32 %1151, 0
  br i1 %1152, label %1158, label %1153

1153:                                             ; preds = %1149
  %1154 = call ptr @ReadYesOrNo(ptr noundef @StopAtMaxCost)
  %1155 = icmp ne ptr %1154, null
  br i1 %1155, label %1157, label %1156

1156:                                             ; preds = %1153
  call void (ptr, ...) @eprintf(ptr noundef @.str.133)
  br label %1157

1157:                                             ; preds = %1156, %1153
  br label %1443

1158:                                             ; preds = %1149
  %1159 = load ptr, ptr %2, align 8, !tbaa !5
  %1160 = call i32 @strcmp(ptr noundef %1159, ptr noundef @.str.134) #10
  %1161 = icmp ne i32 %1160, 0
  br i1 %1161, label %1167, label %1162

1162:                                             ; preds = %1158
  %1163 = call ptr @ReadYesOrNo(ptr noundef @Subgradient)
  %1164 = icmp ne ptr %1163, null
  br i1 %1164, label %1166, label %1165

1165:                                             ; preds = %1162
  call void (ptr, ...) @eprintf(ptr noundef @.str.135)
  br label %1166

1166:                                             ; preds = %1165, %1162
  br label %1442

1167:                                             ; preds = %1158
  %1168 = load ptr, ptr %2, align 8, !tbaa !5
  %1169 = call i32 @strcmp(ptr noundef %1168, ptr noundef @.str.136) #10
  %1170 = icmp ne i32 %1169, 0
  br i1 %1170, label %1176, label %1171

1171:                                             ; preds = %1167
  %1172 = call ptr @GetFileName(ptr noundef null)
  store ptr %1172, ptr @SubproblemTourFileName, align 8, !tbaa !5
  %1173 = icmp ne ptr %1172, null
  br i1 %1173, label %1175, label %1174

1174:                                             ; preds = %1171
  call void (ptr, ...) @eprintf(ptr noundef @.str.137)
  br label %1175

1175:                                             ; preds = %1174, %1171
  br label %1441

1176:                                             ; preds = %1167
  %1177 = load ptr, ptr %2, align 8, !tbaa !5
  %1178 = call i32 @strcmp(ptr noundef %1177, ptr noundef @.str.138) #10
  %1179 = icmp ne i32 %1178, 0
  br i1 %1179, label %1351, label %1180

1180:                                             ; preds = %1176
  %1181 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %1181, ptr %3, align 8, !tbaa !5
  %1182 = icmp ne ptr %1181, null
  br i1 %1182, label %1183, label %1187

1183:                                             ; preds = %1180
  %1184 = load ptr, ptr %3, align 8, !tbaa !5
  %1185 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %1184, ptr noundef @.str.7, ptr noundef @SubproblemSize) #9
  %1186 = icmp ne i32 %1185, 0
  br i1 %1186, label %1188, label %1187

1187:                                             ; preds = %1183, %1180
  call void (ptr, ...) @eprintf(ptr noundef @.str.139)
  br label %1188

1188:                                             ; preds = %1187, %1183
  %1189 = load i32, ptr @SubproblemSize, align 4, !tbaa !9
  %1190 = icmp slt i32 %1189, 3
  br i1 %1190, label %1191, label %1192

1191:                                             ; preds = %1188
  call void (ptr, ...) @eprintf(ptr noundef @.str.140)
  br label %1192

1192:                                             ; preds = %1191, %1188
  %1193 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %1193, ptr %3, align 8, !tbaa !5
  %1194 = icmp ne ptr %1193, null
  br i1 %1194, label %1195, label %1350

1195:                                             ; preds = %1192
  store i32 0, ptr %5, align 4, !tbaa !9
  br label %1196

1196:                                             ; preds = %1221, %1195
  %1197 = load i32, ptr %5, align 4, !tbaa !9
  %1198 = zext i32 %1197 to i64
  %1199 = load ptr, ptr %3, align 8, !tbaa !5
  %1200 = call i64 @strlen(ptr noundef %1199) #10
  %1201 = icmp ult i64 %1198, %1200
  br i1 %1201, label %1202, label %1224

1202:                                             ; preds = %1196
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #9
  %1203 = call ptr @__ctype_toupper_loc() #11
  %1204 = load ptr, ptr %1203, align 8, !tbaa !5
  %1205 = load ptr, ptr %3, align 8, !tbaa !5
  %1206 = load i32, ptr %5, align 4, !tbaa !9
  %1207 = zext i32 %1206 to i64
  %1208 = getelementptr inbounds i8, ptr %1205, i64 %1207
  %1209 = load i8, ptr %1208, align 1, !tbaa !18
  %1210 = sext i8 %1209 to i32
  %1211 = sext i32 %1210 to i64
  %1212 = getelementptr inbounds i32, ptr %1204, i64 %1211
  %1213 = load i32, ptr %1212, align 4, !tbaa !9
  store i32 %1213, ptr %27, align 4, !tbaa !9
  %1214 = load i32, ptr %27, align 4, !tbaa !9
  store i32 %1214, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #9
  %1215 = load i32, ptr %28, align 4, !tbaa !9
  %1216 = trunc i32 %1215 to i8
  %1217 = load ptr, ptr %3, align 8, !tbaa !5
  %1218 = load i32, ptr %5, align 4, !tbaa !9
  %1219 = zext i32 %1218 to i64
  %1220 = getelementptr inbounds i8, ptr %1217, i64 %1219
  store i8 %1216, ptr %1220, align 1, !tbaa !18
  br label %1221

1221:                                             ; preds = %1202
  %1222 = load i32, ptr %5, align 4, !tbaa !9
  %1223 = add i32 %1222, 1
  store i32 %1223, ptr %5, align 4, !tbaa !9
  br label %1196, !llvm.loop !30

1224:                                             ; preds = %1196
  %1225 = load ptr, ptr %3, align 8, !tbaa !5
  %1226 = load ptr, ptr %3, align 8, !tbaa !5
  %1227 = call i64 @strlen(ptr noundef %1226) #10
  %1228 = call i32 @strncmp(ptr noundef %1225, ptr noundef @.str.24, i64 noundef %1227) #10
  %1229 = icmp ne i32 %1228, 0
  br i1 %1229, label %1231, label %1230

1230:                                             ; preds = %1224
  store i32 1, ptr @DelaunayPartitioning, align 4, !tbaa !9
  br label %1299

1231:                                             ; preds = %1224
  %1232 = load ptr, ptr %3, align 8, !tbaa !5
  %1233 = load ptr, ptr %3, align 8, !tbaa !5
  %1234 = call i64 @strlen(ptr noundef %1233) #10
  %1235 = call i64 @max(i64 noundef %1234, i64 noundef 2)
  %1236 = call i32 @strncmp(ptr noundef %1232, ptr noundef @.str.141, i64 noundef %1235) #10
  %1237 = icmp ne i32 %1236, 0
  br i1 %1237, label %1239, label %1238

1238:                                             ; preds = %1231
  store i32 1, ptr @KarpPartitioning, align 4, !tbaa !9
  br label %1298

1239:                                             ; preds = %1231
  %1240 = load ptr, ptr %3, align 8, !tbaa !5
  %1241 = load ptr, ptr %3, align 8, !tbaa !5
  %1242 = call i64 @strlen(ptr noundef %1241) #10
  %1243 = call i64 @max(i64 noundef %1242, i64 noundef 3)
  %1244 = call i32 @strncmp(ptr noundef %1240, ptr noundef @.str.142, i64 noundef %1243) #10
  %1245 = icmp ne i32 %1244, 0
  br i1 %1245, label %1247, label %1246

1246:                                             ; preds = %1239
  store i32 1, ptr @KCenterPartitioning, align 4, !tbaa !9
  br label %1297

1247:                                             ; preds = %1239
  %1248 = load ptr, ptr %3, align 8, !tbaa !5
  %1249 = load ptr, ptr %3, align 8, !tbaa !5
  %1250 = call i64 @strlen(ptr noundef %1249) #10
  %1251 = call i64 @max(i64 noundef %1250, i64 noundef 3)
  %1252 = call i32 @strncmp(ptr noundef %1248, ptr noundef @.str.143, i64 noundef %1251) #10
  %1253 = icmp ne i32 %1252, 0
  br i1 %1253, label %1255, label %1254

1254:                                             ; preds = %1247
  store i32 1, ptr @KMeansPartitioning, align 4, !tbaa !9
  br label %1296

1255:                                             ; preds = %1247
  %1256 = load ptr, ptr %3, align 8, !tbaa !5
  %1257 = load ptr, ptr %3, align 8, !tbaa !5
  %1258 = call i64 @strlen(ptr noundef %1257) #10
  %1259 = call i32 @strncmp(ptr noundef %1256, ptr noundef @.str.57, i64 noundef %1258) #10
  %1260 = icmp ne i32 %1259, 0
  br i1 %1260, label %1262, label %1261

1261:                                             ; preds = %1255
  store i32 1, ptr @MoorePartitioning, align 4, !tbaa !9
  br label %1295

1262:                                             ; preds = %1255
  %1263 = load ptr, ptr %3, align 8, !tbaa !5
  %1264 = load ptr, ptr %3, align 8, !tbaa !5
  %1265 = call i64 @strlen(ptr noundef %1264) #10
  %1266 = call i32 @strncmp(ptr noundef %1263, ptr noundef @.str.144, i64 noundef %1265) #10
  %1267 = icmp ne i32 %1266, 0
  br i1 %1267, label %1269, label %1268

1268:                                             ; preds = %1262
  store i32 1, ptr @RohePartitioning, align 4, !tbaa !9
  br label %1294

1269:                                             ; preds = %1262
  %1270 = load ptr, ptr %3, align 8, !tbaa !5
  %1271 = load ptr, ptr %3, align 8, !tbaa !5
  %1272 = call i64 @strlen(ptr noundef %1271) #10
  %1273 = call i32 @strncmp(ptr noundef %1270, ptr noundef @.str.59, i64 noundef %1272) #10
  %1274 = icmp ne i32 %1273, 0
  br i1 %1274, label %1276, label %1275

1275:                                             ; preds = %1269
  store i32 1, ptr @SierpinskiPartitioning, align 4, !tbaa !9
  br label %1293

1276:                                             ; preds = %1269
  %1277 = load ptr, ptr %3, align 8, !tbaa !5
  %1278 = load ptr, ptr %3, align 8, !tbaa !5
  %1279 = call i64 @strlen(ptr noundef %1278) #10
  %1280 = call i32 @strncmp(ptr noundef %1277, ptr noundef @.str.145, i64 noundef %1279) #10
  %1281 = icmp ne i32 %1280, 0
  br i1 %1281, label %1283, label %1282

1282:                                             ; preds = %1276
  store i32 1, ptr @SubproblemBorders, align 4, !tbaa !9
  br label %1292

1283:                                             ; preds = %1276
  %1284 = load ptr, ptr %3, align 8, !tbaa !5
  %1285 = load ptr, ptr %3, align 8, !tbaa !5
  %1286 = call i64 @strlen(ptr noundef %1285) #10
  %1287 = call i32 @strncmp(ptr noundef %1284, ptr noundef @.str.146, i64 noundef %1286) #10
  %1288 = icmp ne i32 %1287, 0
  br i1 %1288, label %1290, label %1289

1289:                                             ; preds = %1283
  store i32 1, ptr @SubproblemsCompressed, align 4, !tbaa !9
  br label %1291

1290:                                             ; preds = %1283
  call void (ptr, ...) @eprintf(ptr noundef @.str.147)
  br label %1291

1291:                                             ; preds = %1290, %1289
  br label %1292

1292:                                             ; preds = %1291, %1282
  br label %1293

1293:                                             ; preds = %1292, %1275
  br label %1294

1294:                                             ; preds = %1293, %1268
  br label %1295

1295:                                             ; preds = %1294, %1261
  br label %1296

1296:                                             ; preds = %1295, %1254
  br label %1297

1297:                                             ; preds = %1296, %1246
  br label %1298

1298:                                             ; preds = %1297, %1238
  br label %1299

1299:                                             ; preds = %1298, %1230
  br label %1300

1300:                                             ; preds = %1348, %1299
  %1301 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %1301, ptr %3, align 8, !tbaa !5
  %1302 = icmp ne ptr %1301, null
  br i1 %1302, label %1303, label %1349

1303:                                             ; preds = %1300
  store i32 0, ptr %5, align 4, !tbaa !9
  br label %1304

1304:                                             ; preds = %1329, %1303
  %1305 = load i32, ptr %5, align 4, !tbaa !9
  %1306 = zext i32 %1305 to i64
  %1307 = load ptr, ptr %3, align 8, !tbaa !5
  %1308 = call i64 @strlen(ptr noundef %1307) #10
  %1309 = icmp ult i64 %1306, %1308
  br i1 %1309, label %1310, label %1332

1310:                                             ; preds = %1304
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #9
  %1311 = call ptr @__ctype_toupper_loc() #11
  %1312 = load ptr, ptr %1311, align 8, !tbaa !5
  %1313 = load ptr, ptr %3, align 8, !tbaa !5
  %1314 = load i32, ptr %5, align 4, !tbaa !9
  %1315 = zext i32 %1314 to i64
  %1316 = getelementptr inbounds i8, ptr %1313, i64 %1315
  %1317 = load i8, ptr %1316, align 1, !tbaa !18
  %1318 = sext i8 %1317 to i32
  %1319 = sext i32 %1318 to i64
  %1320 = getelementptr inbounds i32, ptr %1312, i64 %1319
  %1321 = load i32, ptr %1320, align 4, !tbaa !9
  store i32 %1321, ptr %29, align 4, !tbaa !9
  %1322 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %1322, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #9
  %1323 = load i32, ptr %30, align 4, !tbaa !9
  %1324 = trunc i32 %1323 to i8
  %1325 = load ptr, ptr %3, align 8, !tbaa !5
  %1326 = load i32, ptr %5, align 4, !tbaa !9
  %1327 = zext i32 %1326 to i64
  %1328 = getelementptr inbounds i8, ptr %1325, i64 %1327
  store i8 %1324, ptr %1328, align 1, !tbaa !18
  br label %1329

1329:                                             ; preds = %1310
  %1330 = load i32, ptr %5, align 4, !tbaa !9
  %1331 = add i32 %1330, 1
  store i32 %1331, ptr %5, align 4, !tbaa !9
  br label %1304, !llvm.loop !31

1332:                                             ; preds = %1304
  %1333 = load ptr, ptr %3, align 8, !tbaa !5
  %1334 = load ptr, ptr %3, align 8, !tbaa !5
  %1335 = call i64 @strlen(ptr noundef %1334) #10
  %1336 = call i32 @strncmp(ptr noundef %1333, ptr noundef @.str.145, i64 noundef %1335) #10
  %1337 = icmp ne i32 %1336, 0
  br i1 %1337, label %1339, label %1338

1338:                                             ; preds = %1332
  store i32 1, ptr @SubproblemBorders, align 4, !tbaa !9
  br label %1348

1339:                                             ; preds = %1332
  %1340 = load ptr, ptr %3, align 8, !tbaa !5
  %1341 = load ptr, ptr %3, align 8, !tbaa !5
  %1342 = call i64 @strlen(ptr noundef %1341) #10
  %1343 = call i32 @strncmp(ptr noundef %1340, ptr noundef @.str.146, i64 noundef %1342) #10
  %1344 = icmp ne i32 %1343, 0
  br i1 %1344, label %1346, label %1345

1345:                                             ; preds = %1339
  store i32 1, ptr @SubproblemsCompressed, align 4, !tbaa !9
  br label %1347

1346:                                             ; preds = %1339
  call void (ptr, ...) @eprintf(ptr noundef @.str.148)
  br label %1347

1347:                                             ; preds = %1346, %1345
  br label %1348

1348:                                             ; preds = %1347, %1338
  br label %1300, !llvm.loop !32

1349:                                             ; preds = %1300
  br label %1350

1350:                                             ; preds = %1349, %1192
  br label %1440

1351:                                             ; preds = %1176
  %1352 = load ptr, ptr %2, align 8, !tbaa !5
  %1353 = call i32 @strcmp(ptr noundef %1352, ptr noundef @.str.149) #10
  %1354 = icmp ne i32 %1353, 0
  br i1 %1354, label %1371, label %1355

1355:                                             ; preds = %1351
  %1356 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %1356, ptr %3, align 8, !tbaa !5
  %1357 = icmp ne ptr %1356, null
  br i1 %1357, label %1358, label %1362

1358:                                             ; preds = %1355
  %1359 = load ptr, ptr %3, align 8, !tbaa !5
  %1360 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %1359, ptr noundef @.str.7, ptr noundef @SubsequentMoveType) #9
  %1361 = icmp ne i32 %1360, 0
  br i1 %1361, label %1363, label %1362

1362:                                             ; preds = %1358, %1355
  call void (ptr, ...) @eprintf(ptr noundef @.str.150)
  br label %1363

1363:                                             ; preds = %1362, %1358
  %1364 = load i32, ptr @SubsequentMoveType, align 4, !tbaa !9
  %1365 = icmp ne i32 %1364, 0
  br i1 %1365, label %1366, label %1370

1366:                                             ; preds = %1363
  %1367 = load i32, ptr @SubsequentMoveType, align 4, !tbaa !9
  %1368 = icmp slt i32 %1367, 2
  br i1 %1368, label %1369, label %1370

1369:                                             ; preds = %1366
  call void (ptr, ...) @eprintf(ptr noundef @.str.151)
  br label %1370

1370:                                             ; preds = %1369, %1366, %1363
  br label %1439

1371:                                             ; preds = %1351
  %1372 = load ptr, ptr %2, align 8, !tbaa !5
  %1373 = call i32 @strcmp(ptr noundef %1372, ptr noundef @.str.152) #10
  %1374 = icmp ne i32 %1373, 0
  br i1 %1374, label %1380, label %1375

1375:                                             ; preds = %1371
  %1376 = call ptr @ReadYesOrNo(ptr noundef @SubsequentPatching)
  %1377 = icmp ne ptr %1376, null
  br i1 %1377, label %1379, label %1378

1378:                                             ; preds = %1375
  call void (ptr, ...) @eprintf(ptr noundef @.str.153)
  br label %1379

1379:                                             ; preds = %1378, %1375
  br label %1438

1380:                                             ; preds = %1371
  %1381 = load ptr, ptr %2, align 8, !tbaa !5
  %1382 = call i32 @strcmp(ptr noundef %1381, ptr noundef @.str.154) #10
  %1383 = icmp ne i32 %1382, 0
  br i1 %1383, label %1397, label %1384

1384:                                             ; preds = %1380
  %1385 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %1385, ptr %3, align 8, !tbaa !5
  %1386 = icmp ne ptr %1385, null
  br i1 %1386, label %1387, label %1391

1387:                                             ; preds = %1384
  %1388 = load ptr, ptr %3, align 8, !tbaa !5
  %1389 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %1388, ptr noundef @.str.32, ptr noundef @TimeLimit) #9
  %1390 = icmp ne i32 %1389, 0
  br i1 %1390, label %1392, label %1391

1391:                                             ; preds = %1387, %1384
  call void (ptr, ...) @eprintf(ptr noundef @.str.155)
  br label %1392

1392:                                             ; preds = %1391, %1387
  %1393 = load double, ptr @TimeLimit, align 8, !tbaa !11
  %1394 = fcmp olt double %1393, 0.000000e+00
  br i1 %1394, label %1395, label %1396

1395:                                             ; preds = %1392
  call void (ptr, ...) @eprintf(ptr noundef @.str.156)
  br label %1396

1396:                                             ; preds = %1395, %1392
  br label %1437

1397:                                             ; preds = %1380
  %1398 = load ptr, ptr %2, align 8, !tbaa !5
  %1399 = call i32 @strcmp(ptr noundef %1398, ptr noundef @.str.157) #10
  %1400 = icmp ne i32 %1399, 0
  br i1 %1400, label %1406, label %1401

1401:                                             ; preds = %1397
  %1402 = call ptr @GetFileName(ptr noundef null)
  store ptr %1402, ptr @TourFileName, align 8, !tbaa !5
  %1403 = icmp ne ptr %1402, null
  br i1 %1403, label %1405, label %1404

1404:                                             ; preds = %1401
  call void (ptr, ...) @eprintf(ptr noundef @.str.158)
  br label %1405

1405:                                             ; preds = %1404, %1401
  br label %1436

1406:                                             ; preds = %1397
  %1407 = load ptr, ptr %2, align 8, !tbaa !5
  %1408 = call i32 @strcmp(ptr noundef %1407, ptr noundef @.str.159) #10
  %1409 = icmp ne i32 %1408, 0
  br i1 %1409, label %1419, label %1410

1410:                                             ; preds = %1406
  %1411 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %1411, ptr %3, align 8, !tbaa !5
  %1412 = icmp ne ptr %1411, null
  br i1 %1412, label %1413, label %1417

1413:                                             ; preds = %1410
  %1414 = load ptr, ptr %3, align 8, !tbaa !5
  %1415 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %1414, ptr noundef @.str.7, ptr noundef @TraceLevel) #9
  %1416 = icmp ne i32 %1415, 0
  br i1 %1416, label %1418, label %1417

1417:                                             ; preds = %1413, %1410
  call void (ptr, ...) @eprintf(ptr noundef @.str.160)
  br label %1418

1418:                                             ; preds = %1417, %1413
  br label %1435

1419:                                             ; preds = %1406
  %1420 = load ptr, ptr %2, align 8, !tbaa !5
  %1421 = call i32 @strcmp(ptr noundef %1420, ptr noundef @.str.161) #10
  %1422 = icmp ne i32 %1421, 0
  br i1 %1422, label %1432, label %1423

1423:                                             ; preds = %1419
  %1424 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %1424, ptr %3, align 8, !tbaa !5
  %1425 = icmp ne ptr %1424, null
  br i1 %1425, label %1426, label %1430

1426:                                             ; preds = %1423
  %1427 = load ptr, ptr %3, align 8, !tbaa !5
  %1428 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %1427, ptr noundef @.str.99, ptr noundef @MaxCost) #9
  %1429 = icmp ne i32 %1428, 0
  br i1 %1429, label %1431, label %1430

1430:                                             ; preds = %1426, %1423
  call void (ptr, ...) @eprintf(ptr noundef @.str.162)
  br label %1431

1431:                                             ; preds = %1430, %1426
  br label %1434

1432:                                             ; preds = %1419
  %1433 = load ptr, ptr %2, align 8, !tbaa !5
  call void (ptr, ...) @eprintf(ptr noundef @.str.163, ptr noundef %1433)
  br label %1434

1434:                                             ; preds = %1432, %1431
  br label %1435

1435:                                             ; preds = %1434, %1418
  br label %1436

1436:                                             ; preds = %1435, %1405
  br label %1437

1437:                                             ; preds = %1436, %1396
  br label %1438

1438:                                             ; preds = %1437, %1379
  br label %1439

1439:                                             ; preds = %1438, %1370
  br label %1440

1440:                                             ; preds = %1439, %1350
  br label %1441

1441:                                             ; preds = %1440, %1175
  br label %1442

1442:                                             ; preds = %1441, %1166
  br label %1443

1443:                                             ; preds = %1442, %1157
  br label %1444

1444:                                             ; preds = %1443, %1148
  br label %1445

1445:                                             ; preds = %1444, %1139
  br label %1446

1446:                                             ; preds = %1445, %1126
  br label %1447

1447:                                             ; preds = %1446, %1109
  br label %1448

1448:                                             ; preds = %1447, %1100
  br label %1449

1449:                                             ; preds = %1448, %1091
  br label %1450

1450:                                             ; preds = %1449, %1078
  br label %1451

1451:                                             ; preds = %1450, %1065
  br label %1452

1452:                                             ; preds = %1451, %1056
  br label %1453

1453:                                             ; preds = %1452, %990
  br label %1454

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

1455:                                             ; preds = %1454, %915
  br label %1456

1456:                                             ; preds = %1455, %902
  br label %1457

1457:                                             ; preds = %1456, %885
  br label %1458

1458:                                             ; preds = %1457, %868
  br label %1459

1459:                                             ; preds = %1458, %803
  br label %1460

1460:                                             ; preds = %1459, %786
  br label %1461

1461:                                             ; preds = %1460, %769
  br label %1462

1462:                                             ; preds = %1461, %711
  br label %1463

1463:                                             ; preds = %1462, %694
  br label %1464

1464:                                             ; preds = %1463, %677
  br label %1465

1465:                                             ; preds = %1464, %657
  br label %1466

1466:                                             ; preds = %1465, %648
  br label %1467

1467:                                             ; preds = %1466, %628
  br label %1468

1468:                                             ; preds = %1467, %619
  br label %1469

1469:                                             ; preds = %1468, %525
  br label %1470

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

1471:                                             ; preds = %1470, %491
  br label %1472

1472:                                             ; preds = %1471, %482
  br label %1473

1473:                                             ; preds = %1472, %473
  br label %1474

1474:                                             ; preds = %1473, %419
  br label %1475

1475:                                             ; preds = %1474, %362
  br label %1476

1476:                                             ; preds = %1475
  br label %1477

1477:                                             ; preds = %1476
  br label %1478

1478:                                             ; preds = %1477, %335
  br label %1479

1479:                                             ; preds = %1478, %221
  br label %1480

1480:                                             ; preds = %1479, %156
  br label %1481

1481:                                             ; preds = %1480, %147
  br label %1482

1482:                                             ; preds = %1481, %130
  %1483 = call ptr @strtok(ptr noundef null, ptr noundef @Delimiters) #9
  store ptr %1483, ptr %3, align 8, !tbaa !5
  %1484 = icmp ne ptr %1483, null
  br i1 %1484, label %1485, label %1493

1485:                                             ; preds = %1482
  %1486 = load ptr, ptr %3, align 8, !tbaa !5
  %1487 = getelementptr inbounds i8, ptr %1486, i64 0
  %1488 = load i8, ptr %1487, align 1, !tbaa !18
  %1489 = sext i8 %1488 to i32
  %1490 = icmp ne i32 %1489, 35
  br i1 %1490, label %1491, label %1493

1491:                                             ; preds = %1485
  %1492 = load ptr, ptr %3, align 8, !tbaa !5
  call void (ptr, ...) @eprintf(ptr noundef @.str.164, ptr noundef %1492)
  br label %1493

1493:                                             ; preds = %1491, %1485, %1482
  br label %69, !llvm.loop !17

1494:                                             ; preds = %345, %69
  %1495 = load ptr, ptr @ProblemFileName, align 8, !tbaa !5
  %1496 = icmp ne ptr %1495, null
  br i1 %1496, label %1498, label %1497

1497:                                             ; preds = %1494
  call void (ptr, ...) @eprintf(ptr noundef @.str.165)
  br label %1498

1498:                                             ; preds = %1497, %1494
  %1499 = load i32, ptr @SubproblemSize, align 4, !tbaa !9
  %1500 = icmp eq i32 %1499, 0
  br i1 %1500, label %1501, label %1505

1501:                                             ; preds = %1498
  %1502 = load ptr, ptr @SubproblemTourFileName, align 8, !tbaa !5
  %1503 = icmp ne ptr %1502, null
  br i1 %1503, label %1504, label %1505

1504:                                             ; preds = %1501
  call void (ptr, ...) @eprintf(ptr noundef @.str.166)
  br label %1505

1505:                                             ; preds = %1504, %1501, %1498
  %1506 = load i32, ptr @SubproblemSize, align 4, !tbaa !9
  %1507 = icmp sgt i32 %1506, 0
  br i1 %1507, label %1508, label %1512

1508:                                             ; preds = %1505
  %1509 = load ptr, ptr @SubproblemTourFileName, align 8, !tbaa !5
  %1510 = icmp eq ptr %1509, null
  br i1 %1510, label %1511, label %1512

1511:                                             ; preds = %1508
  call void (ptr, ...) @eprintf(ptr noundef @.str.167)
  br label %1512

1512:                                             ; preds = %1511, %1508, %1505
  %1513 = load ptr, ptr @ParameterFile, align 8, !tbaa !5
  %1514 = call i32 @fclose(ptr noundef %1513)
  %1515 = load ptr, ptr @LastLine, align 8, !tbaa !5
  call void @free(ptr noundef %1515) #9
  store ptr null, ptr @LastLine, align 8, !tbaa !5
  store i32 0, ptr %6, align 4
  br label %1516

1516:                                             ; preds = %1512, %57
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %2) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %1) #9
  %1517 = load i32, ptr %6, align 4
  switch i32 %1517, label %1519 [
    i32 0, label %1518
    i32 1, label %1518
  ]

1518:                                             ; preds = %1516, %1516
  ret void

1519:                                             ; preds = %1516
  unreachable
}

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

declare void @ERXT(...) #2

declare noalias ptr @fopen(ptr noundef, ptr noundef) #2

declare void @eprintf(ptr noundef, ...) #2

declare void @printff(ptr noundef, ...) #2

; Function Attrs: nounwind uwtable
declare hidden ptr @GetFileName(ptr noundef) #0

declare ptr @ReadLine(ptr noundef) #2

; Function Attrs: nounwind
declare ptr @strtok(ptr noundef, ptr noundef) #3

; Function Attrs: nounwind willreturn memory(read)
declare i64 @strlen(ptr noundef) #4

; Function Attrs: nounwind willreturn memory(none)
declare ptr @__ctype_toupper_loc() #5

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

; Function Attrs: nounwind willreturn memory(read)
declare i32 @strcmp(ptr noundef, ptr noundef) #4

; Function Attrs: nounwind
declare i32 @__isoc99_sscanf(ptr noundef, ptr noundef, ...) #3

; Function Attrs: nounwind uwtable
declare hidden ptr @ReadYesOrNo(ptr noundef) #0

; Function Attrs: nounwind allocsize(0)
declare noalias ptr @malloc(i64 noundef) #6

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #7

; Function Attrs: nounwind allocsize(1)
declare ptr @realloc(ptr noundef, i64 noundef) #8

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

; Function Attrs: nounwind uwtable
declare hidden i64 @max(i64 noundef, i64 noundef) #0

declare i32 @fclose(ptr noundef) #2

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 #4 = { 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 #5 = { nounwind willreturn memory(none) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind 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 #7 = { noreturn 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 #8 = { nounwind allocsize(1) "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 = { nounwind willreturn memory(read) }
attributes #11 = { nounwind willreturn memory(none) }
attributes #12 = { nounwind allocsize(0) }
attributes #13 = { noreturn nounwind }
attributes #14 = { nounwind allocsize(1) }

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

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


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

@TourFileName = external dso_local local_unnamed_addr global ptr, align 8
@OutputTourFileName = external dso_local local_unnamed_addr global ptr, align 8
@InputTourFileName = external dso_local local_unnamed_addr global ptr, align 8
@PiFileName = external dso_local local_unnamed_addr global ptr, align 8
@ProblemFileName = external dso_local local_unnamed_addr global ptr, align 8
@MergeTourFiles = external dso_local local_unnamed_addr global i32, align 4
@CandidateFiles = external dso_local local_unnamed_addr global i32, align 4
@AscentCandidates = external dso_local global i32, align 4
@BackboneTrials = external dso_local global i32, align 4
@Backtracking = external dso_local global i32, align 4
@CandidateSetSymmetric = external dso_local local_unnamed_addr global i32, align 4
@CandidateSetType = external dso_local local_unnamed_addr global i32, align 4
@Crossover = external dso_local local_unnamed_addr global ptr, align 8
@DelaunayPartitioning = external dso_local local_unnamed_addr global i32, align 4
@DelaunayPure = external dso_local local_unnamed_addr global i32, align 4
@Excess = external dso_local global double, align 8
@ExtraCandidates = external dso_local global i32, align 4
@ExtraCandidateSetSymmetric = external dso_local local_unnamed_addr global i32, align 4
@ExtraCandidateSetType = external dso_local local_unnamed_addr global i32, align 4
@Gain23Used = external dso_local global i32, align 4
@GainCriterionUsed = external dso_local global i32, align 4
@InitialPeriod = external dso_local global i32, align 4
@InitialStepSize = external dso_local global i32, align 4
@InitialTourAlgorithm = external dso_local local_unnamed_addr global i32, align 4
@InitialTourFraction = external dso_local global double, align 8
@KarpPartitioning = external dso_local local_unnamed_addr global i32, align 4
@KCenterPartitioning = external dso_local local_unnamed_addr global i32, align 4
@KMeansPartitioning = external dso_local local_unnamed_addr global i32, align 4
@Kicks = external dso_local global i32, align 4
@KickType = external dso_local global i32, align 4
@MaxBreadth = external dso_local global i32, align 4
@MaxCandidates = external dso_local global i32, align 4
@MaxPopulationSize = external dso_local global i32, align 4
@MaxSwaps = external dso_local global i32, align 4
@MaxTrials = external dso_local global i32, align 4
@MoorePartitioning = external dso_local local_unnamed_addr global i32, align 4
@MoveType = external dso_local global i32, align 4
@NonsequentialMoveType = external dso_local global i32, align 4
@Optimum = external dso_local global i64, align 8
@PatchingA = external dso_local global i32, align 4
@PatchingC = external dso_local global i32, align 4
@PatchingAExtended = external dso_local local_unnamed_addr global i32, align 4
@PatchingARestricted = external dso_local local_unnamed_addr global i32, align 4
@PatchingCExtended = external dso_local local_unnamed_addr global i32, align 4
@PatchingCRestricted = external dso_local local_unnamed_addr global i32, align 4
@Precision = external dso_local global i32, align 4
@RestrictedSearch = external dso_local global i32, align 4
@RohePartitioning = external dso_local local_unnamed_addr global i32, align 4
@Runs = external dso_local global i32, align 4
@Seed = external dso_local global i32, align 4
@SierpinskiPartitioning = external dso_local local_unnamed_addr global i32, align 4
@StopAtOptimum = external dso_local global i32, align 4
@StopAtMaxCost = external dso_local global i32, align 4
@Subgradient = external dso_local global i32, align 4
@SubproblemBorders = external dso_local local_unnamed_addr global i32, align 4
@SubproblemsCompressed = external dso_local local_unnamed_addr global i32, align 4
@SubproblemSize = external dso_local global i32, align 4
@SubsequentMoveType = external dso_local global i32, align 4
@SubsequentPatching = external dso_local global i32, align 4
@TimeLimit = external dso_local global double, align 8
@TraceLevel = external dso_local global i32, align 4
@MaxCost = external dso_local global i64, align 8
@ParameterFileName = external dso_local local_unnamed_addr global ptr, align 8
@.str = external hidden unnamed_addr constant [2 x i8], align 1
@ParameterFile = external dso_local local_unnamed_addr global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [18 x i8], align 1
@stdin = external local_unnamed_addr global ptr, align 8
@.str.4 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [37 x i8], align 1
@Delimiters = external hidden global [11 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [32 x i8], align 1
@CandidateFileName = external dso_local local_unnamed_addr global ptr, align 8
@.str.17 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [75 x i8], align 1
@__PRETTY_FUNCTION__.ReadParameters = external hidden unnamed_addr constant [22 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [110 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [18 x i8], align 1
@InitialTourFileName = external dso_local local_unnamed_addr global ptr, align 8
@.str.63 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [33 x i8], align 1
@MergeTourFileName = external dso_local local_unnamed_addr global ptr, align 8
@.str.90 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.110 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.111 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.112 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.113 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.114 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.115 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.116 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.117 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.118 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.119 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.120 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.121 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.122 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.123 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.124 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.125 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.126 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.127 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.128 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.129 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.130 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.131 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.132 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.133 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.134 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.135 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.136 = external hidden unnamed_addr constant [21 x i8], align 1
@SubproblemTourFileName = external dso_local local_unnamed_addr global ptr, align 8
@.str.137 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.138 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.139 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.140 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.141 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.142 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.143 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.144 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.145 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.146 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.147 = external hidden unnamed_addr constant [123 x i8], align 1
@.str.148 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.149 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.150 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.151 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.152 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.153 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.154 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.155 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.156 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.157 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.158 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.159 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.160 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.161 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.162 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.163 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.164 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.165 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.166 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.167 = external hidden unnamed_addr constant [46 x i8], align 1
@LastLine = external dso_local local_unnamed_addr global ptr, align 8

; Function Attrs: nounwind uwtable
define dso_local void @ReadParameters() local_unnamed_addr #0 {
  store ptr null, ptr @TourFileName, align 8, !tbaa !5
  store ptr null, ptr @OutputTourFileName, align 8, !tbaa !5
  store ptr null, ptr @InputTourFileName, align 8, !tbaa !5
  store ptr null, ptr @PiFileName, align 8, !tbaa !5
  store ptr null, ptr @ProblemFileName, align 8, !tbaa !5
  store i32 0, ptr @MergeTourFiles, align 4, !tbaa !9
  store i32 0, ptr @CandidateFiles, align 4, !tbaa !9
  store i32 50, ptr @AscentCandidates, align 4, !tbaa !9
  store i32 0, ptr @BackboneTrials, align 4, !tbaa !9
  store i32 0, ptr @Backtracking, align 4, !tbaa !9
  store i32 0, ptr @CandidateSetSymmetric, align 4, !tbaa !9
  store i32 0, ptr @CandidateSetType, align 4, !tbaa !9
  store ptr @ERXT, ptr @Crossover, align 8, !tbaa !5
  store i32 0, ptr @DelaunayPartitioning, align 4, !tbaa !9
  store i32 0, ptr @DelaunayPure, align 4, !tbaa !9
  store double -1.000000e+00, ptr @Excess, align 8, !tbaa !11
  store i32 0, ptr @ExtraCandidates, align 4, !tbaa !9
  store i32 0, ptr @ExtraCandidateSetSymmetric, align 4, !tbaa !9
  store i32 3, ptr @ExtraCandidateSetType, align 4, !tbaa !9
  store i32 1, ptr @Gain23Used, align 4, !tbaa !9
  store i32 1, ptr @GainCriterionUsed, align 4, !tbaa !9
  store i32 -1, ptr @InitialPeriod, align 4, !tbaa !9
  store i32 0, ptr @InitialStepSize, align 4, !tbaa !9
  store i32 6, ptr @InitialTourAlgorithm, align 4, !tbaa !9
  store double 1.000000e+00, ptr @InitialTourFraction, align 8, !tbaa !11
  store i32 0, ptr @KarpPartitioning, align 4, !tbaa !9
  store i32 0, ptr @KCenterPartitioning, align 4, !tbaa !9
  store i32 0, ptr @KMeansPartitioning, align 4, !tbaa !9
  store i32 1, ptr @Kicks, align 4, !tbaa !9
  store i32 0, ptr @KickType, align 4, !tbaa !9
  store i32 2147483647, ptr @MaxBreadth, align 4, !tbaa !9
  store i32 5, ptr @MaxCandidates, align 4, !tbaa !9
  store i32 0, ptr @MaxPopulationSize, align 4, !tbaa !9
  store i32 -1, ptr @MaxSwaps, align 4, !tbaa !9
  store i32 -1, ptr @MaxTrials, align 4, !tbaa !9
  store i32 0, ptr @MoorePartitioning, align 4, !tbaa !9
  store i32 5, ptr @MoveType, align 4, !tbaa !9
  store i32 -1, ptr @NonsequentialMoveType, align 4, !tbaa !9
  store i64 -9223372036854775808, ptr @Optimum, align 8, !tbaa !13
  store i32 1, ptr @PatchingA, align 4, !tbaa !9
  store i32 0, ptr @PatchingC, align 4, !tbaa !9
  store i32 0, ptr @PatchingAExtended, align 4, !tbaa !9
  store i32 0, ptr @PatchingARestricted, align 4, !tbaa !9
  store i32 0, ptr @PatchingCExtended, align 4, !tbaa !9
  store i32 0, ptr @PatchingCRestricted, align 4, !tbaa !9
  store i32 100, ptr @Precision, align 4, !tbaa !9
  store i32 1, ptr @RestrictedSearch, align 4, !tbaa !9
  store i32 0, ptr @RohePartitioning, align 4, !tbaa !9
  store i32 0, ptr @Runs, align 4, !tbaa !9
  store i32 1, ptr @Seed, align 4, !tbaa !9
  store i32 0, ptr @SierpinskiPartitioning, align 4, !tbaa !9
  store i32 1, ptr @StopAtOptimum, align 4, !tbaa !9
  store i32 0, ptr @StopAtMaxCost, align 4, !tbaa !9
  store i32 1, ptr @Subgradient, align 4, !tbaa !9
  store i32 0, ptr @SubproblemBorders, align 4, !tbaa !9
  store i32 0, ptr @SubproblemsCompressed, align 4, !tbaa !9
  store i32 0, ptr @SubproblemSize, align 4, !tbaa !9
  store i32 0, ptr @SubsequentMoveType, align 4, !tbaa !9
  store i32 1, ptr @SubsequentPatching, align 4, !tbaa !9
  store double 0x7FEFFFFFFFFFFFFF, ptr @TimeLimit, align 8, !tbaa !11
  store i32 1, ptr @TraceLevel, align 4, !tbaa !9
  store i64 -9223372036854775808, ptr @MaxCost, align 8, !tbaa !13
  %1 = load ptr, ptr @ParameterFileName, align 8, !tbaa !5
  %.not = icmp eq ptr %1, null
  br i1 %.not, label %.preheader519, label %5

.preheader519:                                    ; preds = %0
  tail call void (ptr, ...) @printff(ptr noundef nonnull @.str.3) #10
  %2 = load ptr, ptr @stdin, align 8, !tbaa !5
  %3 = tail call ptr @ReadLine(ptr noundef %2) #10
  %4 = tail call ptr @GetFileName(ptr noundef %3)
  store ptr %4, ptr @ParameterFileName, align 8, !tbaa !5
  %.not332530 = icmp eq ptr %4, null
  br i1 %.not332530, label %.preheader.preheader, label %.lr.ph

.preheader.preheader:                             ; preds = %16, %.preheader519
  br label %.preheader

5:                                                ; preds = %0
  %6 = tail call noalias ptr @fopen(ptr noundef nonnull %1, ptr noundef nonnull @.str)
  store ptr %6, ptr @ParameterFile, align 8, !tbaa !5
  %.not335 = icmp eq ptr %6, null
  br i1 %.not335, label %7, label %9

7:                                                ; preds = %5
  %8 = load ptr, ptr @ParameterFileName, align 8, !tbaa !5
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.1, ptr noundef %8) #10
  br label %9

9:                                                ; preds = %7, %5
  %10 = load ptr, ptr @ParameterFileName, align 8, !tbaa !5
  tail call void (ptr, ...) @printff(ptr noundef nonnull @.str.2, ptr noundef %10) #10
  %.pre = load ptr, ptr @ParameterFile, align 8, !tbaa !5
  br label %.loopexit520

.preheader:                                       ; preds = %.preheader.preheader, %.preheader
  tail call void (ptr, ...) @printff(ptr noundef nonnull @.str.4) #10
  %11 = load ptr, ptr @stdin, align 8, !tbaa !5
  %12 = tail call ptr @ReadLine(ptr noundef %11) #10
  %13 = tail call ptr @GetFileName(ptr noundef %12)
  store ptr %13, ptr @ProblemFileName, align 8, !tbaa !5
  %.not333 = icmp eq ptr %13, null
  br i1 %.not333, label %.preheader, label %.loopexit, !llvm.loop !15

.lr.ph:                                           ; preds = %.preheader519, %16
  %14 = phi ptr [ %20, %16 ], [ %4, %.preheader519 ]
  %15 = tail call noalias ptr @fopen(ptr noundef nonnull %14, ptr noundef nonnull @.str)
  store ptr %15, ptr @ParameterFile, align 8, !tbaa !5
  %.not334 = icmp eq ptr %15, null
  br i1 %.not334, label %16, label %.loopexit520

16:                                               ; preds = %.lr.ph
  %17 = load ptr, ptr @ParameterFileName, align 8, !tbaa !5
  tail call void (ptr, ...) @printff(ptr noundef nonnull @.str.5, ptr noundef %17) #10
  tail call void (ptr, ...) @printff(ptr noundef nonnull @.str.3) #10
  %18 = load ptr, ptr @stdin, align 8, !tbaa !5
  %19 = tail call ptr @ReadLine(ptr noundef %18) #10
  %20 = tail call ptr @GetFileName(ptr noundef %19)
  store ptr %20, ptr @ParameterFileName, align 8, !tbaa !5
  %.not332 = icmp eq ptr %20, null
  br i1 %.not332, label %.preheader.preheader, label %.lr.ph

.loopexit520:                                     ; preds = %.lr.ph, %9
  %21 = phi ptr [ %.pre, %9 ], [ %15, %.lr.ph ]
  %22 = tail call ptr @ReadLine(ptr noundef %21) #10
  %.not336588 = icmp eq ptr %22, null
  br i1 %.not336588, label %._crit_edge591, label %.lr.ph590

.lr.ph590:                                        ; preds = %.loopexit520, %.backedge
  %23 = phi ptr [ %739, %.backedge ], [ %22, %.loopexit520 ]
  %24 = tail call ptr @strtok(ptr noundef nonnull %23, ptr noundef nonnull @Delimiters) #10
  %.not337 = icmp eq ptr %24, null
  br i1 %.not337, label %.backedge, label %25

25:                                               ; preds = %.lr.ph590
  %26 = load i8, ptr %24, align 1
  switch i8 %26, label %.lr.ph532 [
    i8 35, label %.backedge
    i8 0, label %._crit_edge
  ]

.lr.ph532:                                        ; preds = %25
  %27 = tail call ptr @__ctype_toupper_loc() #11
  br label %28

28:                                               ; preds = %.lr.ph532, %28
  %29 = phi i64 [ 0, %.lr.ph532 ], [ %38, %28 ]
  %.0531 = phi i32 [ 0, %.lr.ph532 ], [ %37, %28 ]
  %30 = load ptr, ptr %27, align 8, !tbaa !5
  %31 = getelementptr inbounds i8, ptr %24, i64 %29
  %32 = load i8, ptr %31, align 1, !tbaa !17
  %33 = sext i8 %32 to i64
  %34 = getelementptr inbounds i32, ptr %30, i64 %33
  %35 = load i32, ptr %34, align 4, !tbaa !9
  %36 = trunc i32 %35 to i8
  store i8 %36, ptr %31, align 1, !tbaa !17
  %37 = add i32 %.0531, 1
  %38 = zext i32 %37 to i64
  %39 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %24) #12
  %40 = icmp ugt i64 %39, %38
  br i1 %40, label %28, label %._crit_edge, !llvm.loop !18

._crit_edge:                                      ; preds = %28, %25
  %41 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.6) #12
  %.not338 = icmp eq i32 %41, 0
  br i1 %.not338, label %42, label %51

42:                                               ; preds = %._crit_edge
  %43 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not339 = icmp eq ptr %43, null
  br i1 %.not339, label %46, label %44

44:                                               ; preds = %42
  %45 = tail call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %43, ptr noundef nonnull @.str.7, ptr noundef nonnull @AscentCandidates) #10
  %.not340 = icmp eq i32 %45, 0
  br i1 %.not340, label %46, label %47

46:                                               ; preds = %44, %42
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.8) #10
  br label %47

47:                                               ; preds = %46, %44
  %48 = load i32, ptr @AscentCandidates, align 4, !tbaa !9
  %49 = icmp slt i32 %48, 2
  br i1 %49, label %50, label %.thread

50:                                               ; preds = %47
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.9) #10
  br label %.thread

51:                                               ; preds = %._crit_edge
  %52 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.10) #12
  %.not341 = icmp eq i32 %52, 0
  br i1 %.not341, label %53, label %62

53:                                               ; preds = %51
  %54 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not342 = icmp eq ptr %54, null
  br i1 %.not342, label %57, label %55

55:                                               ; preds = %53
  %56 = tail call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %54, ptr noundef nonnull @.str.7, ptr noundef nonnull @BackboneTrials) #10
  %.not343 = icmp eq i32 %56, 0
  br i1 %.not343, label %57, label %58

57:                                               ; preds = %55, %53
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.11) #10
  br label %58

58:                                               ; preds = %57, %55
  %59 = load i32, ptr @BackboneTrials, align 4, !tbaa !9
  %60 = icmp slt i32 %59, 0
  br i1 %60, label %61, label %.thread

61:                                               ; preds = %58
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.12) #10
  br label %.thread

62:                                               ; preds = %51
  %63 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.13) #12
  %.not344 = icmp eq i32 %63, 0
  br i1 %.not344, label %64, label %67

64:                                               ; preds = %62
  %65 = tail call ptr @ReadYesOrNo(ptr noundef nonnull @Backtracking)
  %.not345 = icmp eq ptr %65, null
  br i1 %.not345, label %66, label %.thread

66:                                               ; preds = %64
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.14) #10
  br label %.thread

67:                                               ; preds = %62
  %68 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.15) #12
  %.not346 = icmp eq i32 %68, 0
  br i1 %.not346, label %69, label %99

69:                                               ; preds = %67
  %70 = tail call ptr @GetFileName(ptr noundef null)
  %.not347 = icmp eq ptr %70, null
  br i1 %.not347, label %71, label %72

71:                                               ; preds = %69
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.16) #10
  br label %72

72:                                               ; preds = %71, %69
  %73 = load i32, ptr @CandidateFiles, align 4, !tbaa !9
  %74 = icmp eq i32 %73, 0
  br i1 %74, label %77, label %.preheader510

.preheader510:                                    ; preds = %72
  %75 = icmp sgt i32 %73, 0
  br i1 %75, label %.lr.ph583, label %._crit_edge584

.lr.ph583:                                        ; preds = %.preheader510
  %76 = load ptr, ptr @CandidateFileName, align 8, !tbaa !5
  %wide.trip.count618 = zext nneg i32 %73 to i64
  br label %81

77:                                               ; preds = %72
  %78 = tail call noalias dereferenceable_or_null(8) ptr @malloc(i64 noundef 8) #13
  store ptr %78, ptr @CandidateFileName, align 8, !tbaa !5
  %.not350 = icmp eq ptr %78, null
  br i1 %.not350, label %79, label %80

79:                                               ; preds = %77
  tail call void @__assert_fail(ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.18, i32 noundef 467, ptr noundef nonnull @__PRETTY_FUNCTION__.ReadParameters) #14
  unreachable

80:                                               ; preds = %77
  store i32 1, ptr @CandidateFiles, align 4, !tbaa !9
  store ptr %70, ptr %78, align 8, !tbaa !5
  br label %.thread

81:                                               ; preds = %.lr.ph583, %85
  %indvars.iv615 = phi i64 [ 0, %.lr.ph583 ], [ %indvars.iv.next616, %85 ]
  %82 = getelementptr inbounds ptr, ptr %76, i64 %indvars.iv615
  %83 = load ptr, ptr %82, align 8, !tbaa !5
  %84 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %70, ptr noundef nonnull dereferenceable(1) %83) #12
  %.not348 = icmp eq i32 %84, 0
  br i1 %.not348, label %._crit_edge584.loopexit, label %85

85:                                               ; preds = %81
  %indvars.iv.next616 = add nuw nsw i64 %indvars.iv615, 1
  %exitcond619.not = icmp eq i64 %indvars.iv.next616, %wide.trip.count618
  br i1 %exitcond619.not, label %._crit_edge584.thread, label %81, !llvm.loop !19

._crit_edge584.loopexit:                          ; preds = %81
  %86 = trunc nuw nsw i64 %indvars.iv615 to i32
  br label %._crit_edge584

._crit_edge584:                                   ; preds = %._crit_edge584.loopexit, %.preheader510
  %.0264.lcssa = phi i32 [ 0, %.preheader510 ], [ %86, %._crit_edge584.loopexit ]
  %87 = icmp eq i32 %.0264.lcssa, %73
  br i1 %87, label %._crit_edge584.thread, label %.thread

._crit_edge584.thread:                            ; preds = %85, %._crit_edge584
  %88 = load ptr, ptr @CandidateFileName, align 8, !tbaa !5
  %89 = add nsw i32 %73, 1
  %90 = sext i32 %89 to i64
  %91 = shl nsw i64 %90, 3
  %92 = tail call ptr @realloc(ptr noundef %88, i64 noundef %91) #15
  store ptr %92, ptr @CandidateFileName, align 8, !tbaa !5
  %.not349 = icmp eq ptr %92, null
  br i1 %.not349, label %93, label %94

93:                                               ; preds = %._crit_edge584.thread
  tail call void @__assert_fail(ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.18, i32 noundef 478, ptr noundef nonnull @__PRETTY_FUNCTION__.ReadParameters) #14
  unreachable

94:                                               ; preds = %._crit_edge584.thread
  %95 = load i32, ptr @CandidateFiles, align 4, !tbaa !9
  %96 = add nsw i32 %95, 1
  store i32 %96, ptr @CandidateFiles, align 4, !tbaa !9
  %97 = sext i32 %95 to i64
  %98 = getelementptr inbounds ptr, ptr %92, i64 %97
  store ptr %70, ptr %98, align 8, !tbaa !5
  br label %.thread

99:                                               ; preds = %67
  %100 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.20) #12
  %.not351 = icmp eq i32 %100, 0
  br i1 %.not351, label %101, label %150

101:                                              ; preds = %99
  %102 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not352 = icmp eq ptr %102, null
  br i1 %.not352, label %103, label %104

103:                                              ; preds = %101
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.22) #10
  br label %104

104:                                              ; preds = %103, %101
  %char0629 = load i8, ptr %102, align 1
  %.not602 = icmp eq i8 %char0629, 0
  br i1 %.not602, label %._crit_edge576, label %.lr.ph575

.lr.ph575:                                        ; preds = %104
  %105 = tail call ptr @__ctype_toupper_loc() #11
  br label %106

106:                                              ; preds = %.lr.ph575, %106
  %107 = phi i64 [ 0, %.lr.ph575 ], [ %116, %106 ]
  %.1573 = phi i32 [ 0, %.lr.ph575 ], [ %115, %106 ]
  %108 = load ptr, ptr %105, align 8, !tbaa !5
  %109 = getelementptr inbounds i8, ptr %102, i64 %107
  %110 = load i8, ptr %109, align 1, !tbaa !17
  %111 = sext i8 %110 to i64
  %112 = getelementptr inbounds i32, ptr %108, i64 %111
  %113 = load i32, ptr %112, align 4, !tbaa !9
  %114 = trunc i32 %113 to i8
  store i8 %114, ptr %109, align 1, !tbaa !17
  %115 = add i32 %.1573, 1
  %116 = zext i32 %115 to i64
  %117 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %102) #12
  %118 = icmp ugt i64 %117, %116
  br i1 %118, label %106, label %._crit_edge576, !llvm.loop !20

._crit_edge576:                                   ; preds = %106, %104
  %.lcssa528 = phi i64 [ 0, %104 ], [ %117, %106 ]
  %119 = tail call i32 @strncmp(ptr noundef nonnull %102, ptr noundef nonnull @.str.23, i64 noundef %.lcssa528) #12
  %.not353 = icmp eq i32 %119, 0
  br i1 %.not353, label %120, label %121

120:                                              ; preds = %._crit_edge576
  store i32 0, ptr @CandidateSetType, align 4, !tbaa !9
  br label %.thread

121:                                              ; preds = %._crit_edge576
  %122 = tail call i32 @strncmp(ptr noundef nonnull %102, ptr noundef nonnull @.str.24, i64 noundef %.lcssa528) #12
  %.not354 = icmp eq i32 %122, 0
  br i1 %.not354, label %.thread508, label %123

.thread508:                                       ; preds = %121
  store i32 1, ptr @CandidateSetType, align 4, !tbaa !9
  br label %131

123:                                              ; preds = %121
  %124 = tail call i32 @strncmp(ptr noundef nonnull %102, ptr noundef nonnull @.str.25, i64 noundef %.lcssa528) #12
  %.not355 = icmp eq i32 %124, 0
  br i1 %.not355, label %125, label %126

125:                                              ; preds = %123
  store i32 2, ptr @CandidateSetType, align 4, !tbaa !9
  br label %.thread

126:                                              ; preds = %123
  %127 = tail call i32 @strncmp(ptr noundef nonnull %102, ptr noundef nonnull @.str.26, i64 noundef %.lcssa528) #12
  %.not356 = icmp eq i32 %127, 0
  br i1 %.not356, label %128, label %129

128:                                              ; preds = %126
  store i32 3, ptr @CandidateSetType, align 4, !tbaa !9
  br label %.thread

129:                                              ; preds = %126
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.22) #10
  %.pr = load i32, ptr @CandidateSetType, align 4, !tbaa !9
  %130 = icmp eq i32 %.pr, 1
  br i1 %130, label %131, label %.thread

131:                                              ; preds = %.thread508, %129
  %132 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not357 = icmp eq ptr %132, null
  br i1 %.not357, label %.thread, label %.preheader511

.preheader511:                                    ; preds = %131
  %char0630 = load i8, ptr %132, align 1
  %.not603 = icmp eq i8 %char0630, 0
  br i1 %.not603, label %._crit_edge580, label %.lr.ph579

.lr.ph579:                                        ; preds = %.preheader511
  %133 = tail call ptr @__ctype_toupper_loc() #11
  br label %134

134:                                              ; preds = %.lr.ph579, %134
  %135 = phi i64 [ 0, %.lr.ph579 ], [ %144, %134 ]
  %.2578 = phi i32 [ 0, %.lr.ph579 ], [ %143, %134 ]
  %136 = load ptr, ptr %133, align 8, !tbaa !5
  %137 = getelementptr inbounds i8, ptr %132, i64 %135
  %138 = load i8, ptr %137, align 1, !tbaa !17
  %139 = sext i8 %138 to i64
  %140 = getelementptr inbounds i32, ptr %136, i64 %139
  %141 = load i32, ptr %140, align 4, !tbaa !9
  %142 = trunc i32 %141 to i8
  store i8 %142, ptr %137, align 1, !tbaa !17
  %143 = add i32 %.2578, 1
  %144 = zext i32 %143 to i64
  %145 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %132) #12
  %146 = icmp ugt i64 %145, %144
  br i1 %146, label %134, label %._crit_edge580, !llvm.loop !21

._crit_edge580:                                   ; preds = %134, %.preheader511
  %.lcssa529 = phi i64 [ 0, %.preheader511 ], [ %145, %134 ]
  %147 = tail call i32 @strncmp(ptr noundef nonnull %132, ptr noundef nonnull @.str.27, i64 noundef %.lcssa529) #12
  %.not358 = icmp eq i32 %147, 0
  br i1 %.not358, label %149, label %148

148:                                              ; preds = %._crit_edge580
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.28) #10
  br label %149

149:                                              ; preds = %148, %._crit_edge580
  store i32 1, ptr @DelaunayPure, align 4, !tbaa !9
  br label %.thread

150:                                              ; preds = %99
  %151 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.29) #12
  %.not359 = icmp eq i32 %151, 0
  br i1 %.not359, label %.backedge, label %152

152:                                              ; preds = %150
  %153 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.30) #12
  %.not360 = icmp eq i32 %153, 0
  br i1 %.not360, label %._crit_edge591, label %154

154:                                              ; preds = %152
  %155 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.31) #12
  %.not362 = icmp eq i32 %155, 0
  br i1 %.not362, label %156, label %165

156:                                              ; preds = %154
  %157 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not363 = icmp eq ptr %157, null
  br i1 %.not363, label %160, label %158

158:                                              ; preds = %156
  %159 = tail call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %157, ptr noundef nonnull @.str.32, ptr noundef nonnull @Excess) #10
  %.not364 = icmp eq i32 %159, 0
  br i1 %.not364, label %160, label %161

160:                                              ; preds = %158, %156
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.33) #10
  br label %161

161:                                              ; preds = %160, %158
  %162 = load double, ptr @Excess, align 8, !tbaa !11
  %163 = fcmp olt double %162, 0.000000e+00
  br i1 %163, label %164, label %.thread

164:                                              ; preds = %161
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.34) #10
  br label %.thread

165:                                              ; preds = %154
  %166 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.35) #12
  %.not365 = icmp eq i32 %166, 0
  br i1 %.not365, label %167, label %195

167:                                              ; preds = %165
  %168 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not366 = icmp eq ptr %168, null
  br i1 %.not366, label %171, label %169

169:                                              ; preds = %167
  %170 = tail call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %168, ptr noundef nonnull @.str.7, ptr noundef nonnull @ExtraCandidates) #10
  %.not367 = icmp eq i32 %170, 0
  br i1 %.not367, label %171, label %172

171:                                              ; preds = %169, %167
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.36) #10
  br label %172

172:                                              ; preds = %171, %169
  %173 = load i32, ptr @ExtraCandidates, align 4, !tbaa !9
  %174 = icmp slt i32 %173, 0
  br i1 %174, label %175, label %176

175:                                              ; preds = %172
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.37) #10
  br label %176

176:                                              ; preds = %175, %172
  %177 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not368 = icmp eq ptr %177, null
  br i1 %.not368, label %.thread, label %.preheader512

.preheader512:                                    ; preds = %176
  %char0628 = load i8, ptr %177, align 1
  %.not601 = icmp eq i8 %char0628, 0
  br i1 %.not601, label %._crit_edge571, label %.lr.ph570

.lr.ph570:                                        ; preds = %.preheader512
  %178 = tail call ptr @__ctype_toupper_loc() #11
  br label %179

179:                                              ; preds = %.lr.ph570, %179
  %180 = phi i64 [ 0, %.lr.ph570 ], [ %189, %179 ]
  %.3569 = phi i32 [ 0, %.lr.ph570 ], [ %188, %179 ]
  %181 = load ptr, ptr %178, align 8, !tbaa !5
  %182 = getelementptr inbounds i8, ptr %177, i64 %180
  %183 = load i8, ptr %182, align 1, !tbaa !17
  %184 = sext i8 %183 to i64
  %185 = getelementptr inbounds i32, ptr %181, i64 %184
  %186 = load i32, ptr %185, align 4, !tbaa !9
  %187 = trunc i32 %186 to i8
  store i8 %187, ptr %182, align 1, !tbaa !17
  %188 = add i32 %.3569, 1
  %189 = zext i32 %188 to i64
  %190 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %177) #12
  %191 = icmp ugt i64 %190, %189
  br i1 %191, label %179, label %._crit_edge571, !llvm.loop !22

._crit_edge571:                                   ; preds = %179, %.preheader512
  %.lcssa527 = phi i64 [ 0, %.preheader512 ], [ %190, %179 ]
  %192 = tail call i32 @strncmp(ptr noundef nonnull %177, ptr noundef nonnull @.str.38, i64 noundef %.lcssa527) #12
  %.not369 = icmp eq i32 %192, 0
  br i1 %.not369, label %194, label %193

193:                                              ; preds = %._crit_edge571
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.39) #10
  br label %194

194:                                              ; preds = %193, %._crit_edge571
  store i32 1, ptr @ExtraCandidateSetSymmetric, align 4, !tbaa !9
  br label %.thread

195:                                              ; preds = %165
  %196 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.40) #12
  %.not370 = icmp eq i32 %196, 0
  br i1 %.not370, label %197, label %221

197:                                              ; preds = %195
  %198 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not371 = icmp eq ptr %198, null
  br i1 %.not371, label %199, label %200

199:                                              ; preds = %197
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.41) #10
  br label %200

200:                                              ; preds = %199, %197
  %char0627 = load i8, ptr %198, align 1
  %.not600 = icmp eq i8 %char0627, 0
  br i1 %.not600, label %._crit_edge567, label %.lr.ph566

.lr.ph566:                                        ; preds = %200
  %201 = tail call ptr @__ctype_toupper_loc() #11
  br label %202

202:                                              ; preds = %.lr.ph566, %202
  %203 = phi i64 [ 0, %.lr.ph566 ], [ %212, %202 ]
  %.4564 = phi i32 [ 0, %.lr.ph566 ], [ %211, %202 ]
  %204 = load ptr, ptr %201, align 8, !tbaa !5
  %205 = getelementptr inbounds i8, ptr %198, i64 %203
  %206 = load i8, ptr %205, align 1, !tbaa !17
  %207 = sext i8 %206 to i64
  %208 = getelementptr inbounds i32, ptr %204, i64 %207
  %209 = load i32, ptr %208, align 4, !tbaa !9
  %210 = trunc i32 %209 to i8
  store i8 %210, ptr %205, align 1, !tbaa !17
  %211 = add i32 %.4564, 1
  %212 = zext i32 %211 to i64
  %213 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %198) #12
  %214 = icmp ugt i64 %213, %212
  br i1 %214, label %202, label %._crit_edge567, !llvm.loop !23

._crit_edge567:                                   ; preds = %202, %200
  %.lcssa526 = phi i64 [ 0, %200 ], [ %213, %202 ]
  %215 = tail call i32 @strncmp(ptr noundef nonnull %198, ptr noundef nonnull @.str.25, i64 noundef %.lcssa526) #12
  %.not372 = icmp eq i32 %215, 0
  br i1 %.not372, label %216, label %217

216:                                              ; preds = %._crit_edge567
  store i32 2, ptr @ExtraCandidateSetType, align 4, !tbaa !9
  br label %.thread

217:                                              ; preds = %._crit_edge567
  %218 = tail call i32 @strncmp(ptr noundef nonnull %198, ptr noundef nonnull @.str.26, i64 noundef %.lcssa526) #12
  %.not373 = icmp eq i32 %218, 0
  br i1 %.not373, label %219, label %220

219:                                              ; preds = %217
  store i32 3, ptr @ExtraCandidateSetType, align 4, !tbaa !9
  br label %.thread

220:                                              ; preds = %217
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.42) #10
  br label %.thread

221:                                              ; preds = %195
  %222 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.43) #12
  %.not374 = icmp eq i32 %222, 0
  br i1 %.not374, label %223, label %226

223:                                              ; preds = %221
  %224 = tail call ptr @ReadYesOrNo(ptr noundef nonnull @Gain23Used)
  %.not375 = icmp eq ptr %224, null
  br i1 %.not375, label %225, label %.thread

225:                                              ; preds = %223
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.44) #10
  br label %.thread

226:                                              ; preds = %221
  %227 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.45) #12
  %.not376 = icmp eq i32 %227, 0
  br i1 %.not376, label %228, label %231

228:                                              ; preds = %226
  %229 = tail call ptr @ReadYesOrNo(ptr noundef nonnull @GainCriterionUsed)
  %.not377 = icmp eq ptr %229, null
  br i1 %.not377, label %230, label %.thread

230:                                              ; preds = %228
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.46) #10
  br label %.thread

231:                                              ; preds = %226
  %232 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.47) #12
  %.not378 = icmp eq i32 %232, 0
  br i1 %.not378, label %233, label %242

233:                                              ; preds = %231
  %234 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not379 = icmp eq ptr %234, null
  br i1 %.not379, label %237, label %235

235:                                              ; preds = %233
  %236 = tail call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %234, ptr noundef nonnull @.str.7, ptr noundef nonnull @InitialPeriod) #10
  %.not380 = icmp eq i32 %236, 0
  br i1 %.not380, label %237, label %238

237:                                              ; preds = %235, %233
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.48) #10
  br label %238

238:                                              ; preds = %237, %235
  %239 = load i32, ptr @InitialPeriod, align 4, !tbaa !9
  %240 = icmp slt i32 %239, 0
  br i1 %240, label %241, label %.thread

241:                                              ; preds = %238
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.49) #10
  br label %.thread

242:                                              ; preds = %231
  %243 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.50) #12
  %.not381 = icmp eq i32 %243, 0
  br i1 %.not381, label %244, label %253

244:                                              ; preds = %242
  %245 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not382 = icmp eq ptr %245, null
  br i1 %.not382, label %248, label %246

246:                                              ; preds = %244
  %247 = tail call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %245, ptr noundef nonnull @.str.7, ptr noundef nonnull @InitialStepSize) #10
  %.not383 = icmp eq i32 %247, 0
  br i1 %.not383, label %248, label %249

248:                                              ; preds = %246, %244
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.51) #10
  br label %249

249:                                              ; preds = %248, %246
  %250 = load i32, ptr @InitialStepSize, align 4, !tbaa !9
  %251 = icmp slt i32 %250, 1
  br i1 %251, label %252, label %.thread

252:                                              ; preds = %249
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.52) #10
  br label %.thread

253:                                              ; preds = %242
  %254 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.53) #12
  %.not384 = icmp eq i32 %254, 0
  br i1 %.not384, label %255, label %294

255:                                              ; preds = %253
  %256 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not385 = icmp eq ptr %256, null
  br i1 %.not385, label %257, label %258

257:                                              ; preds = %255
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.54) #10
  br label %258

258:                                              ; preds = %257, %255
  %char0626 = load i8, ptr %256, align 1
  %.not599 = icmp eq i8 %char0626, 0
  br i1 %.not599, label %._crit_edge562, label %.lr.ph561

.lr.ph561:                                        ; preds = %258
  %259 = tail call ptr @__ctype_toupper_loc() #11
  br label %260

260:                                              ; preds = %.lr.ph561, %260
  %261 = phi i64 [ 0, %.lr.ph561 ], [ %270, %260 ]
  %.5559 = phi i32 [ 0, %.lr.ph561 ], [ %269, %260 ]
  %262 = load ptr, ptr %259, align 8, !tbaa !5
  %263 = getelementptr inbounds i8, ptr %256, i64 %261
  %264 = load i8, ptr %263, align 1, !tbaa !17
  %265 = sext i8 %264 to i64
  %266 = getelementptr inbounds i32, ptr %262, i64 %265
  %267 = load i32, ptr %266, align 4, !tbaa !9
  %268 = trunc i32 %267 to i8
  store i8 %268, ptr %263, align 1, !tbaa !17
  %269 = add i32 %.5559, 1
  %270 = zext i32 %269 to i64
  %271 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %256) #12
  %272 = icmp ugt i64 %271, %270
  br i1 %272, label %260, label %._crit_edge562, !llvm.loop !24

._crit_edge562:                                   ; preds = %260, %258
  %.lcssa525 = phi i64 [ 0, %258 ], [ %271, %260 ]
  %273 = tail call i32 @strncmp(ptr noundef nonnull %256, ptr noundef nonnull @.str.55, i64 noundef %.lcssa525) #12
  %.not386 = icmp eq i32 %273, 0
  br i1 %.not386, label %274, label %275

274:                                              ; preds = %._crit_edge562
  store i32 0, ptr @InitialTourAlgorithm, align 4, !tbaa !9
  br label %.thread

275:                                              ; preds = %._crit_edge562
  %276 = tail call i32 @strncmp(ptr noundef nonnull %256, ptr noundef nonnull @.str.56, i64 noundef %.lcssa525) #12
  %.not387 = icmp eq i32 %276, 0
  br i1 %.not387, label %277, label %278

277:                                              ; preds = %275
  store i32 1, ptr @InitialTourAlgorithm, align 4, !tbaa !9
  br label %.thread

278:                                              ; preds = %275
  %279 = tail call i32 @strncmp(ptr noundef nonnull %256, ptr noundef nonnull @.str.57, i64 noundef %.lcssa525) #12
  %.not388 = icmp eq i32 %279, 0
  br i1 %.not388, label %280, label %281

280:                                              ; preds = %278
  store i32 2, ptr @InitialTourAlgorithm, align 4, !tbaa !9
  br label %.thread

281:                                              ; preds = %278
  %282 = tail call i32 @strncmp(ptr noundef nonnull %256, ptr noundef nonnull @.str.25, i64 noundef %.lcssa525) #12
  %.not389 = icmp eq i32 %282, 0
  br i1 %.not389, label %283, label %284

283:                                              ; preds = %281
  store i32 3, ptr @InitialTourAlgorithm, align 4, !tbaa !9
  br label %.thread

284:                                              ; preds = %281
  %285 = tail call i32 @strncmp(ptr noundef nonnull %256, ptr noundef nonnull @.str.58, i64 noundef %.lcssa525) #12
  %.not390 = icmp eq i32 %285, 0
  br i1 %.not390, label %286, label %287

286:                                              ; preds = %284
  store i32 4, ptr @InitialTourAlgorithm, align 4, !tbaa !9
  br label %.thread

287:                                              ; preds = %284
  %288 = tail call i32 @strncmp(ptr noundef nonnull %256, ptr noundef nonnull @.str.59, i64 noundef %.lcssa525) #12
  %.not391 = icmp eq i32 %288, 0
  br i1 %.not391, label %289, label %290

289:                                              ; preds = %287
  store i32 5, ptr @InitialTourAlgorithm, align 4, !tbaa !9
  br label %.thread

290:                                              ; preds = %287
  %291 = tail call i32 @strncmp(ptr noundef nonnull %256, ptr noundef nonnull @.str.60, i64 noundef %.lcssa525) #12
  %.not392 = icmp eq i32 %291, 0
  br i1 %.not392, label %292, label %293

292:                                              ; preds = %290
  store i32 6, ptr @InitialTourAlgorithm, align 4, !tbaa !9
  br label %.thread

293:                                              ; preds = %290
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.61) #10
  br label %.thread

294:                                              ; preds = %253
  %295 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.62) #12
  %.not393 = icmp eq i32 %295, 0
  br i1 %.not393, label %296, label %299

296:                                              ; preds = %294
  %297 = tail call ptr @GetFileName(ptr noundef null)
  store ptr %297, ptr @InitialTourFileName, align 8, !tbaa !5
  %.not394 = icmp eq ptr %297, null
  br i1 %.not394, label %298, label %.thread

298:                                              ; preds = %296
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.63) #10
  br label %.thread

299:                                              ; preds = %294
  %300 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.64) #12
  %.not395 = icmp eq i32 %300, 0
  br i1 %.not395, label %301, label %311

301:                                              ; preds = %299
  %302 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not396 = icmp eq ptr %302, null
  br i1 %.not396, label %305, label %303

303:                                              ; preds = %301
  %304 = tail call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %302, ptr noundef nonnull @.str.32, ptr noundef nonnull @InitialTourFraction) #10
  %.not397 = icmp eq i32 %304, 0
  br i1 %.not397, label %305, label %306

305:                                              ; preds = %303, %301
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.65) #10
  br label %306

306:                                              ; preds = %305, %303
  %307 = load double, ptr @InitialTourFraction, align 8
  %308 = fcmp olt double %307, 0.000000e+00
  %309 = fcmp ogt double %307, 1.000000e+00
  %or.cond = or i1 %308, %309
  br i1 %or.cond, label %310, label %.thread

310:                                              ; preds = %306
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.66) #10
  br label %.thread

311:                                              ; preds = %299
  %312 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.67) #12
  %.not398 = icmp eq i32 %312, 0
  br i1 %.not398, label %313, label %316

313:                                              ; preds = %311
  %314 = tail call ptr @GetFileName(ptr noundef null)
  store ptr %314, ptr @InputTourFileName, align 8, !tbaa !5
  %.not399 = icmp eq ptr %314, null
  br i1 %.not399, label %315, label %.thread

315:                                              ; preds = %313
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.68) #10
  br label %.thread

316:                                              ; preds = %311
  %317 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.69) #12
  %.not400 = icmp eq i32 %317, 0
  br i1 %.not400, label %318, label %328

318:                                              ; preds = %316
  %319 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not401 = icmp eq ptr %319, null
  br i1 %.not401, label %322, label %320

320:                                              ; preds = %318
  %321 = tail call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %319, ptr noundef nonnull @.str.7, ptr noundef nonnull @KickType) #10
  %.not402 = icmp eq i32 %321, 0
  br i1 %.not402, label %322, label %323

322:                                              ; preds = %320, %318
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.70) #10
  br label %323

323:                                              ; preds = %322, %320
  %324 = load i32, ptr @KickType, align 4
  %325 = icmp ne i32 %324, 0
  %326 = icmp slt i32 %324, 4
  %or.cond3 = and i1 %325, %326
  br i1 %or.cond3, label %327, label %.thread

327:                                              ; preds = %323
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.71) #10
  br label %.thread

328:                                              ; preds = %316
  %329 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.72) #12
  %.not403 = icmp eq i32 %329, 0
  br i1 %.not403, label %330, label %339

330:                                              ; preds = %328
  %331 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not404 = icmp eq ptr %331, null
  br i1 %.not404, label %334, label %332

332:                                              ; preds = %330
  %333 = tail call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %331, ptr noundef nonnull @.str.7, ptr noundef nonnull @Kicks) #10
  %.not405 = icmp eq i32 %333, 0
  br i1 %.not405, label %334, label %335

334:                                              ; preds = %332, %330
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.73) #10
  br label %335

335:                                              ; preds = %334, %332
  %336 = load i32, ptr @Kicks, align 4, !tbaa !9
  %337 = icmp slt i32 %336, 0
  br i1 %337, label %338, label %.thread

338:                                              ; preds = %335
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.74) #10
  br label %.thread

339:                                              ; preds = %328
  %340 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.75) #12
  %.not406 = icmp eq i32 %340, 0
  br i1 %.not406, label %341, label %350

341:                                              ; preds = %339
  %342 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not407 = icmp eq ptr %342, null
  br i1 %.not407, label %345, label %343

343:                                              ; preds = %341
  %344 = tail call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %342, ptr noundef nonnull @.str.7, ptr noundef nonnull @MaxBreadth) #10
  %.not408 = icmp eq i32 %344, 0
  br i1 %.not408, label %345, label %346

345:                                              ; preds = %343, %341
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.76) #10
  br label %346

346:                                              ; preds = %345, %343
  %347 = load i32, ptr @MaxBreadth, align 4, !tbaa !9
  %348 = icmp slt i32 %347, 0
  br i1 %348, label %349, label %.thread

349:                                              ; preds = %346
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.77) #10
  br label %.thread

350:                                              ; preds = %339
  %351 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.78) #12
  %.not409 = icmp eq i32 %351, 0
  br i1 %.not409, label %352, label %380

352:                                              ; preds = %350
  %353 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not410 = icmp eq ptr %353, null
  br i1 %.not410, label %356, label %354

354:                                              ; preds = %352
  %355 = tail call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %353, ptr noundef nonnull @.str.7, ptr noundef nonnull @MaxCandidates) #10
  %.not411 = icmp eq i32 %355, 0
  br i1 %.not411, label %356, label %357

356:                                              ; preds = %354, %352
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.79) #10
  br label %357

357:                                              ; preds = %356, %354
  %358 = load i32, ptr @MaxCandidates, align 4, !tbaa !9
  %359 = icmp slt i32 %358, 0
  br i1 %359, label %360, label %361

360:                                              ; preds = %357
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.80) #10
  br label %361

361:                                              ; preds = %360, %357
  %362 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not412 = icmp eq ptr %362, null
  br i1 %.not412, label %.thread, label %.preheader513

.preheader513:                                    ; preds = %361
  %char0625 = load i8, ptr %362, align 1
  %.not598 = icmp eq i8 %char0625, 0
  br i1 %.not598, label %._crit_edge557, label %.lr.ph556

.lr.ph556:                                        ; preds = %.preheader513
  %363 = tail call ptr @__ctype_toupper_loc() #11
  br label %364

364:                                              ; preds = %.lr.ph556, %364
  %365 = phi i64 [ 0, %.lr.ph556 ], [ %374, %364 ]
  %.6555 = phi i32 [ 0, %.lr.ph556 ], [ %373, %364 ]
  %366 = load ptr, ptr %363, align 8, !tbaa !5
  %367 = getelementptr inbounds i8, ptr %362, i64 %365
  %368 = load i8, ptr %367, align 1, !tbaa !17
  %369 = sext i8 %368 to i64
  %370 = getelementptr inbounds i32, ptr %366, i64 %369
  %371 = load i32, ptr %370, align 4, !tbaa !9
  %372 = trunc i32 %371 to i8
  store i8 %372, ptr %367, align 1, !tbaa !17
  %373 = add i32 %.6555, 1
  %374 = zext i32 %373 to i64
  %375 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %362) #12
  %376 = icmp ugt i64 %375, %374
  br i1 %376, label %364, label %._crit_edge557, !llvm.loop !25

._crit_edge557:                                   ; preds = %364, %.preheader513
  %.lcssa524 = phi i64 [ 0, %.preheader513 ], [ %375, %364 ]
  %377 = tail call i32 @strncmp(ptr noundef nonnull %362, ptr noundef nonnull @.str.38, i64 noundef %.lcssa524) #12
  %.not413 = icmp eq i32 %377, 0
  br i1 %.not413, label %378, label %379

378:                                              ; preds = %._crit_edge557
  store i32 1, ptr @CandidateSetSymmetric, align 4, !tbaa !9
  br label %.thread

379:                                              ; preds = %._crit_edge557
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.81) #10
  br label %.thread

380:                                              ; preds = %350
  %381 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.82) #12
  %.not414 = icmp eq i32 %381, 0
  br i1 %.not414, label %382, label %391

382:                                              ; preds = %380
  %383 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not415 = icmp eq ptr %383, null
  br i1 %.not415, label %386, label %384

384:                                              ; preds = %382
  %385 = tail call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %383, ptr noundef nonnull @.str.7, ptr noundef nonnull @MaxSwaps) #10
  %.not416 = icmp eq i32 %385, 0
  br i1 %.not416, label %386, label %387

386:                                              ; preds = %384, %382
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.83) #10
  br label %387

387:                                              ; preds = %386, %384
  %388 = load i32, ptr @MaxSwaps, align 4, !tbaa !9
  %389 = icmp slt i32 %388, 0
  br i1 %389, label %390, label %.thread

390:                                              ; preds = %387
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.84) #10
  br label %.thread

391:                                              ; preds = %380
  %392 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.85) #12
  %.not417 = icmp eq i32 %392, 0
  br i1 %.not417, label %393, label %402

393:                                              ; preds = %391
  %394 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not418 = icmp eq ptr %394, null
  br i1 %.not418, label %397, label %395

395:                                              ; preds = %393
  %396 = tail call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %394, ptr noundef nonnull @.str.7, ptr noundef nonnull @MaxTrials) #10
  %.not419 = icmp eq i32 %396, 0
  br i1 %.not419, label %397, label %398

397:                                              ; preds = %395, %393
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.86) #10
  br label %398

398:                                              ; preds = %397, %395
  %399 = load i32, ptr @MaxTrials, align 4, !tbaa !9
  %400 = icmp slt i32 %399, 0
  br i1 %400, label %401, label %.thread

401:                                              ; preds = %398
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.87) #10
  br label %.thread

402:                                              ; preds = %391
  %403 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.88) #12
  %.not420 = icmp eq i32 %403, 0
  br i1 %.not420, label %404, label %434

404:                                              ; preds = %402
  %405 = tail call ptr @GetFileName(ptr noundef null)
  %.not421 = icmp eq ptr %405, null
  br i1 %.not421, label %406, label %407

406:                                              ; preds = %404
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.89) #10
  br label %407

407:                                              ; preds = %406, %404
  %408 = load i32, ptr @MergeTourFiles, align 4, !tbaa !9
  %409 = icmp eq i32 %408, 0
  br i1 %409, label %412, label %.preheader514

.preheader514:                                    ; preds = %407
  %410 = icmp sgt i32 %408, 0
  br i1 %410, label %.lr.ph550, label %._crit_edge551

.lr.ph550:                                        ; preds = %.preheader514
  %411 = load ptr, ptr @MergeTourFileName, align 8, !tbaa !5
  %wide.trip.count = zext nneg i32 %408 to i64
  br label %416

412:                                              ; preds = %407
  %413 = tail call noalias dereferenceable_or_null(8) ptr @malloc(i64 noundef 8) #13
  store ptr %413, ptr @MergeTourFileName, align 8, !tbaa !5
  %.not424 = icmp eq ptr %413, null
  br i1 %.not424, label %414, label %415

414:                                              ; preds = %412
  tail call void @__assert_fail(ptr noundef nonnull @.str.90, ptr noundef nonnull @.str.18, i32 noundef 653, ptr noundef nonnull @__PRETTY_FUNCTION__.ReadParameters) #14
  unreachable

415:                                              ; preds = %412
  store i32 1, ptr @MergeTourFiles, align 4, !tbaa !9
  store ptr %405, ptr %413, align 8, !tbaa !5
  br label %.thread

416:                                              ; preds = %.lr.ph550, %420
  %indvars.iv = phi i64 [ 0, %.lr.ph550 ], [ %indvars.iv.next, %420 ]
  %417 = getelementptr inbounds ptr, ptr %411, i64 %indvars.iv
  %418 = load ptr, ptr %417, align 8, !tbaa !5
  %419 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %405, ptr noundef nonnull dereferenceable(1) %418) #12
  %.not422 = icmp eq i32 %419, 0
  br i1 %.not422, label %._crit_edge551.loopexit, label %420

420:                                              ; preds = %416
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge551.thread, label %416, !llvm.loop !26

._crit_edge551.loopexit:                          ; preds = %416
  %421 = trunc nuw nsw i64 %indvars.iv to i32
  br label %._crit_edge551

._crit_edge551:                                   ; preds = %._crit_edge551.loopexit, %.preheader514
  %.0265.lcssa = phi i32 [ 0, %.preheader514 ], [ %421, %._crit_edge551.loopexit ]
  %422 = icmp eq i32 %.0265.lcssa, %408
  br i1 %422, label %._crit_edge551.thread, label %.thread

._crit_edge551.thread:                            ; preds = %420, %._crit_edge551
  %423 = load ptr, ptr @MergeTourFileName, align 8, !tbaa !5
  %424 = add nsw i32 %408, 1
  %425 = sext i32 %424 to i64
  %426 = shl nsw i64 %425, 3
  %427 = tail call ptr @realloc(ptr noundef %423, i64 noundef %426) #15
  store ptr %427, ptr @MergeTourFileName, align 8, !tbaa !5
  %.not423 = icmp eq ptr %427, null
  br i1 %.not423, label %428, label %429

428:                                              ; preds = %._crit_edge551.thread
  tail call void @__assert_fail(ptr noundef nonnull @.str.91, ptr noundef nonnull @.str.18, i32 noundef 664, ptr noundef nonnull @__PRETTY_FUNCTION__.ReadParameters) #14
  unreachable

429:                                              ; preds = %._crit_edge551.thread
  %430 = load i32, ptr @MergeTourFiles, align 4, !tbaa !9
  %431 = add nsw i32 %430, 1
  store i32 %431, ptr @MergeTourFiles, align 4, !tbaa !9
  %432 = sext i32 %430 to i64
  %433 = getelementptr inbounds ptr, ptr %427, i64 %432
  store ptr %405, ptr %433, align 8, !tbaa !5
  br label %.thread

434:                                              ; preds = %402
  %435 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.92) #12
  %.not425 = icmp eq i32 %435, 0
  br i1 %.not425, label %436, label %445

436:                                              ; preds = %434
  %437 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not426 = icmp eq ptr %437, null
  br i1 %.not426, label %440, label %438

438:                                              ; preds = %436
  %439 = tail call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %437, ptr noundef nonnull @.str.7, ptr noundef nonnull @MoveType) #10
  %.not427 = icmp eq i32 %439, 0
  br i1 %.not427, label %440, label %441

440:                                              ; preds = %438, %436
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.93) #10
  br label %441

441:                                              ; preds = %440, %438
  %442 = load i32, ptr @MoveType, align 4, !tbaa !9
  %443 = icmp slt i32 %442, 2
  br i1 %443, label %444, label %.thread

444:                                              ; preds = %441
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.94) #10
  br label %.thread

445:                                              ; preds = %434
  %446 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.95) #12
  %.not428 = icmp eq i32 %446, 0
  br i1 %.not428, label %447, label %456

447:                                              ; preds = %445
  %448 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not429 = icmp eq ptr %448, null
  br i1 %.not429, label %451, label %449

449:                                              ; preds = %447
  %450 = tail call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %448, ptr noundef nonnull @.str.7, ptr noundef nonnull @NonsequentialMoveType) #10
  %.not430 = icmp eq i32 %450, 0
  br i1 %.not430, label %451, label %452

451:                                              ; preds = %449, %447
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.96) #10
  br label %452

452:                                              ; preds = %451, %449
  %453 = load i32, ptr @NonsequentialMoveType, align 4, !tbaa !9
  %454 = icmp slt i32 %453, 4
  br i1 %454, label %455, label %.thread

455:                                              ; preds = %452
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.97) #10
  br label %.thread

456:                                              ; preds = %445
  %457 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.98) #12
  %.not431 = icmp eq i32 %457, 0
  br i1 %.not431, label %458, label %463

458:                                              ; preds = %456
  %459 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not432 = icmp eq ptr %459, null
  br i1 %.not432, label %462, label %460

460:                                              ; preds = %458
  %461 = tail call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %459, ptr noundef nonnull @.str.99, ptr noundef nonnull @Optimum) #10
  %.not433 = icmp eq i32 %461, 0
  br i1 %.not433, label %462, label %.thread

462:                                              ; preds = %460, %458
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.100) #10
  br label %.thread

463:                                              ; preds = %456
  %464 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.101) #12
  %.not434 = icmp eq i32 %464, 0
  br i1 %.not434, label %465, label %468

465:                                              ; preds = %463
  %466 = tail call ptr @GetFileName(ptr noundef null)
  store ptr %466, ptr @OutputTourFileName, align 8, !tbaa !5
  %.not435 = icmp eq ptr %466, null
  br i1 %.not435, label %467, label %.thread

467:                                              ; preds = %465
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.102) #10
  br label %.thread

468:                                              ; preds = %463
  %469 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.103) #12
  %.not436 = icmp eq i32 %469, 0
  br i1 %.not436, label %470, label %501

470:                                              ; preds = %468
  %471 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not437 = icmp eq ptr %471, null
  br i1 %.not437, label %474, label %472

472:                                              ; preds = %470
  %473 = tail call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %471, ptr noundef nonnull @.str.7, ptr noundef nonnull @PatchingA) #10
  %.not438 = icmp eq i32 %473, 0
  br i1 %.not438, label %474, label %475

474:                                              ; preds = %472, %470
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.104) #10
  br label %475

475:                                              ; preds = %474, %472
  %476 = load i32, ptr @PatchingA, align 4, !tbaa !9
  %477 = icmp slt i32 %476, 0
  br i1 %477, label %478, label %479

478:                                              ; preds = %475
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.105) #10
  br label %479

479:                                              ; preds = %478, %475
  %480 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not439 = icmp eq ptr %480, null
  br i1 %.not439, label %.thread, label %.preheader515

.preheader515:                                    ; preds = %479
  %char0624 = load i8, ptr %480, align 1
  %.not597 = icmp eq i8 %char0624, 0
  br i1 %.not597, label %._crit_edge547, label %.lr.ph546

.lr.ph546:                                        ; preds = %.preheader515
  %481 = tail call ptr @__ctype_toupper_loc() #11
  br label %482

482:                                              ; preds = %.lr.ph546, %482
  %483 = phi i64 [ 0, %.lr.ph546 ], [ %492, %482 ]
  %.7545 = phi i32 [ 0, %.lr.ph546 ], [ %491, %482 ]
  %484 = load ptr, ptr %481, align 8, !tbaa !5
  %485 = getelementptr inbounds i8, ptr %480, i64 %483
  %486 = load i8, ptr %485, align 1, !tbaa !17
  %487 = sext i8 %486 to i64
  %488 = getelementptr inbounds i32, ptr %484, i64 %487
  %489 = load i32, ptr %488, align 4, !tbaa !9
  %490 = trunc i32 %489 to i8
  store i8 %490, ptr %485, align 1, !tbaa !17
  %491 = add i32 %.7545, 1
  %492 = zext i32 %491 to i64
  %493 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %480) #12
  %494 = icmp ugt i64 %493, %492
  br i1 %494, label %482, label %._crit_edge547, !llvm.loop !27

._crit_edge547:                                   ; preds = %482, %.preheader515
  %.lcssa523 = phi i64 [ 0, %.preheader515 ], [ %493, %482 ]
  %495 = tail call i32 @strncmp(ptr noundef nonnull %480, ptr noundef nonnull @.str.106, i64 noundef %.lcssa523) #12
  %.not440 = icmp eq i32 %495, 0
  br i1 %.not440, label %496, label %497

496:                                              ; preds = %._crit_edge547
  store i32 1, ptr @PatchingARestricted, align 4, !tbaa !9
  br label %.thread

497:                                              ; preds = %._crit_edge547
  %498 = tail call i32 @strncmp(ptr noundef nonnull %480, ptr noundef nonnull @.str.107, i64 noundef %.lcssa523) #12
  %.not441 = icmp eq i32 %498, 0
  br i1 %.not441, label %499, label %500

499:                                              ; preds = %497
  store i32 1, ptr @PatchingAExtended, align 4, !tbaa !9
  br label %.thread

500:                                              ; preds = %497
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.108) #10
  br label %.thread

501:                                              ; preds = %468
  %502 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.109) #12
  %.not442 = icmp eq i32 %502, 0
  br i1 %.not442, label %503, label %534

503:                                              ; preds = %501
  %504 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not443 = icmp eq ptr %504, null
  br i1 %.not443, label %507, label %505

505:                                              ; preds = %503
  %506 = tail call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %504, ptr noundef nonnull @.str.7, ptr noundef nonnull @PatchingC) #10
  %.not444 = icmp eq i32 %506, 0
  br i1 %.not444, label %507, label %508

507:                                              ; preds = %505, %503
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.110) #10
  br label %508

508:                                              ; preds = %507, %505
  %509 = load i32, ptr @PatchingC, align 4, !tbaa !9
  %510 = icmp slt i32 %509, 0
  br i1 %510, label %511, label %512

511:                                              ; preds = %508
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.111) #10
  br label %512

512:                                              ; preds = %511, %508
  %513 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not445 = icmp eq ptr %513, null
  br i1 %.not445, label %.thread, label %.preheader516

.preheader516:                                    ; preds = %512
  %char0623 = load i8, ptr %513, align 1
  %.not596 = icmp eq i8 %char0623, 0
  br i1 %.not596, label %._crit_edge543, label %.lr.ph542

.lr.ph542:                                        ; preds = %.preheader516
  %514 = tail call ptr @__ctype_toupper_loc() #11
  br label %515

515:                                              ; preds = %.lr.ph542, %515
  %516 = phi i64 [ 0, %.lr.ph542 ], [ %525, %515 ]
  %.8541 = phi i32 [ 0, %.lr.ph542 ], [ %524, %515 ]
  %517 = load ptr, ptr %514, align 8, !tbaa !5
  %518 = getelementptr inbounds i8, ptr %513, i64 %516
  %519 = load i8, ptr %518, align 1, !tbaa !17
  %520 = sext i8 %519 to i64
  %521 = getelementptr inbounds i32, ptr %517, i64 %520
  %522 = load i32, ptr %521, align 4, !tbaa !9
  %523 = trunc i32 %522 to i8
  store i8 %523, ptr %518, align 1, !tbaa !17
  %524 = add i32 %.8541, 1
  %525 = zext i32 %524 to i64
  %526 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %513) #12
  %527 = icmp ugt i64 %526, %525
  br i1 %527, label %515, label %._crit_edge543, !llvm.loop !28

._crit_edge543:                                   ; preds = %515, %.preheader516
  %.lcssa522 = phi i64 [ 0, %.preheader516 ], [ %526, %515 ]
  %528 = tail call i32 @strncmp(ptr noundef nonnull %513, ptr noundef nonnull @.str.106, i64 noundef %.lcssa522) #12
  %.not446 = icmp eq i32 %528, 0
  br i1 %.not446, label %529, label %530

529:                                              ; preds = %._crit_edge543
  store i32 1, ptr @PatchingCRestricted, align 4, !tbaa !9
  br label %.thread

530:                                              ; preds = %._crit_edge543
  %531 = tail call i32 @strncmp(ptr noundef nonnull %513, ptr noundef nonnull @.str.107, i64 noundef %.lcssa522) #12
  %.not447 = icmp eq i32 %531, 0
  br i1 %.not447, label %532, label %533

532:                                              ; preds = %530
  store i32 1, ptr @PatchingCExtended, align 4, !tbaa !9
  br label %.thread

533:                                              ; preds = %530
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.112, ptr noundef nonnull @.str.113) #10
  br label %.thread

534:                                              ; preds = %501
  %535 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.114) #12
  %.not448 = icmp eq i32 %535, 0
  br i1 %.not448, label %536, label %539

536:                                              ; preds = %534
  %537 = tail call ptr @GetFileName(ptr noundef null)
  store ptr %537, ptr @PiFileName, align 8, !tbaa !5
  %.not449 = icmp eq ptr %537, null
  br i1 %.not449, label %538, label %.thread

538:                                              ; preds = %536
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.115) #10
  br label %.thread

539:                                              ; preds = %534
  %540 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.116) #12
  %.not450 = icmp eq i32 %540, 0
  br i1 %.not450, label %541, label %546

541:                                              ; preds = %539
  %542 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not451 = icmp eq ptr %542, null
  br i1 %.not451, label %545, label %543

543:                                              ; preds = %541
  %544 = tail call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %542, ptr noundef nonnull @.str.7, ptr noundef nonnull @MaxPopulationSize) #10
  %.not452 = icmp eq i32 %544, 0
  br i1 %.not452, label %545, label %.thread

545:                                              ; preds = %543, %541
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.117) #10
  br label %.thread

546:                                              ; preds = %539
  %547 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.118) #12
  %.not453 = icmp eq i32 %547, 0
  br i1 %.not453, label %548, label %553

548:                                              ; preds = %546
  %549 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not454 = icmp eq ptr %549, null
  br i1 %.not454, label %552, label %550

550:                                              ; preds = %548
  %551 = tail call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %549, ptr noundef nonnull @.str.7, ptr noundef nonnull @Precision) #10
  %.not455 = icmp eq i32 %551, 0
  br i1 %.not455, label %552, label %.thread

552:                                              ; preds = %550, %548
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.119) #10
  br label %.thread

553:                                              ; preds = %546
  %554 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.120) #12
  %.not456 = icmp eq i32 %554, 0
  br i1 %.not456, label %555, label %558

555:                                              ; preds = %553
  %556 = tail call ptr @GetFileName(ptr noundef null)
  store ptr %556, ptr @ProblemFileName, align 8, !tbaa !5
  %.not457 = icmp eq ptr %556, null
  br i1 %.not457, label %557, label %.thread

557:                                              ; preds = %555
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.121) #10
  br label %.thread

558:                                              ; preds = %553
  %559 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.122) #12
  %.not458 = icmp eq i32 %559, 0
  br i1 %.not458, label %560, label %563

560:                                              ; preds = %558
  %561 = tail call ptr @ReadYesOrNo(ptr noundef nonnull @RestrictedSearch)
  %.not459 = icmp eq ptr %561, null
  br i1 %.not459, label %562, label %.thread

562:                                              ; preds = %560
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.123) #10
  br label %.thread

563:                                              ; preds = %558
  %564 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.124) #12
  %.not460 = icmp eq i32 %564, 0
  br i1 %.not460, label %565, label %574

565:                                              ; preds = %563
  %566 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not461 = icmp eq ptr %566, null
  br i1 %.not461, label %569, label %567

567:                                              ; preds = %565
  %568 = tail call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %566, ptr noundef nonnull @.str.7, ptr noundef nonnull @Runs) #10
  %.not462 = icmp eq i32 %568, 0
  br i1 %.not462, label %569, label %570

569:                                              ; preds = %567, %565
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.125) #10
  br label %570

570:                                              ; preds = %569, %567
  %571 = load i32, ptr @Runs, align 4, !tbaa !9
  %572 = icmp slt i32 %571, 1
  br i1 %572, label %573, label %.thread

573:                                              ; preds = %570
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.126) #10
  br label %.thread

574:                                              ; preds = %563
  %575 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.127) #12
  %.not463 = icmp eq i32 %575, 0
  br i1 %.not463, label %576, label %581

576:                                              ; preds = %574
  %577 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not464 = icmp eq ptr %577, null
  br i1 %.not464, label %580, label %578

578:                                              ; preds = %576
  %579 = tail call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %577, ptr noundef nonnull @.str.128, ptr noundef nonnull @Seed) #10
  %.not465 = icmp eq i32 %579, 0
  br i1 %.not465, label %580, label %.thread

580:                                              ; preds = %578, %576
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.129) #10
  br label %.thread

581:                                              ; preds = %574
  %582 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.130) #12
  %.not466 = icmp eq i32 %582, 0
  br i1 %.not466, label %583, label %586

583:                                              ; preds = %581
  %584 = tail call ptr @ReadYesOrNo(ptr noundef nonnull @StopAtOptimum)
  %.not467 = icmp eq ptr %584, null
  br i1 %.not467, label %585, label %.thread

585:                                              ; preds = %583
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.131) #10
  br label %.thread

586:                                              ; preds = %581
  %587 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.132) #12
  %.not468 = icmp eq i32 %587, 0
  br i1 %.not468, label %588, label %591

588:                                              ; preds = %586
  %589 = tail call ptr @ReadYesOrNo(ptr noundef nonnull @StopAtMaxCost)
  %.not469 = icmp eq ptr %589, null
  br i1 %.not469, label %590, label %.thread

590:                                              ; preds = %588
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.133) #10
  br label %.thread

591:                                              ; preds = %586
  %592 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.134) #12
  %.not470 = icmp eq i32 %592, 0
  br i1 %.not470, label %593, label %596

593:                                              ; preds = %591
  %594 = tail call ptr @ReadYesOrNo(ptr noundef nonnull @Subgradient)
  %.not471 = icmp eq ptr %594, null
  br i1 %.not471, label %595, label %.thread

595:                                              ; preds = %593
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.135) #10
  br label %.thread

596:                                              ; preds = %591
  %597 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.136) #12
  %.not472 = icmp eq i32 %597, 0
  br i1 %.not472, label %598, label %601

598:                                              ; preds = %596
  %599 = tail call ptr @GetFileName(ptr noundef null)
  store ptr %599, ptr @SubproblemTourFileName, align 8, !tbaa !5
  %.not473 = icmp eq ptr %599, null
  br i1 %.not473, label %600, label %.thread

600:                                              ; preds = %598
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.137) #10
  br label %.thread

601:                                              ; preds = %596
  %602 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.138) #12
  %.not474 = icmp eq i32 %602, 0
  br i1 %.not474, label %603, label %686

603:                                              ; preds = %601
  %604 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not475 = icmp eq ptr %604, null
  br i1 %.not475, label %607, label %605

605:                                              ; preds = %603
  %606 = tail call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %604, ptr noundef nonnull @.str.7, ptr noundef nonnull @SubproblemSize) #10
  %.not476 = icmp eq i32 %606, 0
  br i1 %.not476, label %607, label %608

607:                                              ; preds = %605, %603
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.139) #10
  br label %608

608:                                              ; preds = %607, %605
  %609 = load i32, ptr @SubproblemSize, align 4, !tbaa !9
  %610 = icmp slt i32 %609, 3
  br i1 %610, label %611, label %612

611:                                              ; preds = %608
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.140) #10
  br label %612

612:                                              ; preds = %611, %608
  %613 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not477 = icmp eq ptr %613, null
  br i1 %.not477, label %.thread, label %.preheader517

.preheader517:                                    ; preds = %612
  %char0 = load i8, ptr %613, align 1
  %.not594 = icmp eq i8 %char0, 0
  br i1 %.not594, label %._crit_edge535, label %.lr.ph534

.lr.ph534:                                        ; preds = %.preheader517
  %614 = tail call ptr @__ctype_toupper_loc() #11
  br label %615

615:                                              ; preds = %.lr.ph534, %615
  %616 = phi i64 [ 0, %.lr.ph534 ], [ %625, %615 ]
  %.9533 = phi i32 [ 0, %.lr.ph534 ], [ %624, %615 ]
  %617 = load ptr, ptr %614, align 8, !tbaa !5
  %618 = getelementptr inbounds i8, ptr %613, i64 %616
  %619 = load i8, ptr %618, align 1, !tbaa !17
  %620 = sext i8 %619 to i64
  %621 = getelementptr inbounds i32, ptr %617, i64 %620
  %622 = load i32, ptr %621, align 4, !tbaa !9
  %623 = trunc i32 %622 to i8
  store i8 %623, ptr %618, align 1, !tbaa !17
  %624 = add i32 %.9533, 1
  %625 = zext i32 %624 to i64
  %626 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %613) #12
  %627 = icmp ugt i64 %626, %625
  br i1 %627, label %615, label %._crit_edge535, !llvm.loop !29

._crit_edge535:                                   ; preds = %615, %.preheader517
  %.lcssa = phi i64 [ 0, %.preheader517 ], [ %626, %615 ]
  %628 = tail call i32 @strncmp(ptr noundef nonnull %613, ptr noundef nonnull @.str.24, i64 noundef %.lcssa) #12
  %.not478 = icmp eq i32 %628, 0
  br i1 %.not478, label %629, label %630

629:                                              ; preds = %._crit_edge535
  store i32 1, ptr @DelaunayPartitioning, align 4, !tbaa !9
  br label %661

630:                                              ; preds = %._crit_edge535
  %631 = tail call i64 @max(i64 noundef %.lcssa, i64 noundef 2)
  %632 = tail call i32 @strncmp(ptr noundef nonnull %613, ptr noundef nonnull @.str.141, i64 noundef %631) #12
  %.not479 = icmp eq i32 %632, 0
  br i1 %.not479, label %633, label %634

633:                                              ; preds = %630
  store i32 1, ptr @KarpPartitioning, align 4, !tbaa !9
  br label %661

634:                                              ; preds = %630
  %635 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %613) #12
  %636 = tail call i64 @max(i64 noundef %635, i64 noundef 3)
  %637 = tail call i32 @strncmp(ptr noundef nonnull %613, ptr noundef nonnull @.str.142, i64 noundef %636) #12
  %.not480 = icmp eq i32 %637, 0
  br i1 %.not480, label %638, label %639

638:                                              ; preds = %634
  store i32 1, ptr @KCenterPartitioning, align 4, !tbaa !9
  br label %661

639:                                              ; preds = %634
  %640 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %613) #12
  %641 = tail call i64 @max(i64 noundef %640, i64 noundef 3)
  %642 = tail call i32 @strncmp(ptr noundef nonnull %613, ptr noundef nonnull @.str.143, i64 noundef %641) #12
  %.not481 = icmp eq i32 %642, 0
  br i1 %.not481, label %643, label %644

643:                                              ; preds = %639
  store i32 1, ptr @KMeansPartitioning, align 4, !tbaa !9
  br label %661

644:                                              ; preds = %639
  %645 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %613) #12
  %646 = tail call i32 @strncmp(ptr noundef nonnull %613, ptr noundef nonnull @.str.57, i64 noundef %645) #12
  %.not482 = icmp eq i32 %646, 0
  br i1 %.not482, label %647, label %648

647:                                              ; preds = %644
  store i32 1, ptr @MoorePartitioning, align 4, !tbaa !9
  br label %661

648:                                              ; preds = %644
  %649 = tail call i32 @strncmp(ptr noundef nonnull %613, ptr noundef nonnull @.str.144, i64 noundef %645) #12
  %.not483 = icmp eq i32 %649, 0
  br i1 %.not483, label %650, label %651

650:                                              ; preds = %648
  store i32 1, ptr @RohePartitioning, align 4, !tbaa !9
  br label %661

651:                                              ; preds = %648
  %652 = tail call i32 @strncmp(ptr noundef nonnull %613, ptr noundef nonnull @.str.59, i64 noundef %645) #12
  %.not484 = icmp eq i32 %652, 0
  br i1 %.not484, label %653, label %654

653:                                              ; preds = %651
  store i32 1, ptr @SierpinskiPartitioning, align 4, !tbaa !9
  br label %661

654:                                              ; preds = %651
  %655 = tail call i32 @strncmp(ptr noundef nonnull %613, ptr noundef nonnull @.str.145, i64 noundef %645) #12
  %.not485 = icmp eq i32 %655, 0
  br i1 %.not485, label %656, label %657

656:                                              ; preds = %654
  store i32 1, ptr @SubproblemBorders, align 4, !tbaa !9
  br label %661

657:                                              ; preds = %654
  %658 = tail call i32 @strncmp(ptr noundef nonnull %613, ptr noundef nonnull @.str.146, i64 noundef %645) #12
  %.not486 = icmp eq i32 %658, 0
  br i1 %.not486, label %659, label %660

659:                                              ; preds = %657
  store i32 1, ptr @SubproblemsCompressed, align 4, !tbaa !9
  br label %661

660:                                              ; preds = %657
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.147) #10
  br label %661

661:                                              ; preds = %633, %643, %650, %656, %660, %659, %653, %647, %638, %629
  %662 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not487540 = icmp eq ptr %662, null
  br i1 %.not487540, label %.thread, label %.preheader509

.preheader509:                                    ; preds = %661, %684
  %663 = phi ptr [ %685, %684 ], [ %662, %661 ]
  %char0622 = load i8, ptr %663, align 1
  %.not595 = icmp eq i8 %char0622, 0
  br i1 %.not595, label %._crit_edge538, label %.lr.ph537

.lr.ph537:                                        ; preds = %.preheader509
  %664 = tail call ptr @__ctype_toupper_loc() #11
  br label %665

665:                                              ; preds = %.lr.ph537, %665
  %666 = phi i64 [ 0, %.lr.ph537 ], [ %675, %665 ]
  %.10536 = phi i32 [ 0, %.lr.ph537 ], [ %674, %665 ]
  %667 = load ptr, ptr %664, align 8, !tbaa !5
  %668 = getelementptr inbounds i8, ptr %663, i64 %666
  %669 = load i8, ptr %668, align 1, !tbaa !17
  %670 = sext i8 %669 to i64
  %671 = getelementptr inbounds i32, ptr %667, i64 %670
  %672 = load i32, ptr %671, align 4, !tbaa !9
  %673 = trunc i32 %672 to i8
  store i8 %673, ptr %668, align 1, !tbaa !17
  %674 = add i32 %.10536, 1
  %675 = zext i32 %674 to i64
  %676 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %663) #12
  %677 = icmp ugt i64 %676, %675
  br i1 %677, label %665, label %._crit_edge538, !llvm.loop !30

._crit_edge538:                                   ; preds = %665, %.preheader509
  %.lcssa521 = phi i64 [ 0, %.preheader509 ], [ %676, %665 ]
  %678 = tail call i32 @strncmp(ptr noundef nonnull %663, ptr noundef nonnull @.str.145, i64 noundef %.lcssa521) #12
  %.not488 = icmp eq i32 %678, 0
  br i1 %.not488, label %679, label %680

679:                                              ; preds = %._crit_edge538
  store i32 1, ptr @SubproblemBorders, align 4, !tbaa !9
  br label %684

680:                                              ; preds = %._crit_edge538
  %681 = tail call i32 @strncmp(ptr noundef nonnull %663, ptr noundef nonnull @.str.146, i64 noundef %.lcssa521) #12
  %.not489 = icmp eq i32 %681, 0
  br i1 %.not489, label %682, label %683

682:                                              ; preds = %680
  store i32 1, ptr @SubproblemsCompressed, align 4, !tbaa !9
  br label %684

683:                                              ; preds = %680
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.148) #10
  br label %684

684:                                              ; preds = %682, %683, %679
  %685 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not487 = icmp eq ptr %685, null
  br i1 %.not487, label %.thread, label %.preheader509, !llvm.loop !31

686:                                              ; preds = %601
  %687 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.149) #12
  %.not490 = icmp eq i32 %687, 0
  br i1 %.not490, label %688, label %698

688:                                              ; preds = %686
  %689 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not491 = icmp eq ptr %689, null
  br i1 %.not491, label %692, label %690

690:                                              ; preds = %688
  %691 = tail call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %689, ptr noundef nonnull @.str.7, ptr noundef nonnull @SubsequentMoveType) #10
  %.not492 = icmp eq i32 %691, 0
  br i1 %.not492, label %692, label %693

692:                                              ; preds = %690, %688
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.150) #10
  br label %693

693:                                              ; preds = %692, %690
  %694 = load i32, ptr @SubsequentMoveType, align 4
  %695 = icmp ne i32 %694, 0
  %696 = icmp slt i32 %694, 2
  %or.cond5 = and i1 %695, %696
  br i1 %or.cond5, label %697, label %.thread

697:                                              ; preds = %693
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.151) #10
  br label %.thread

698:                                              ; preds = %686
  %699 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.152) #12
  %.not493 = icmp eq i32 %699, 0
  br i1 %.not493, label %700, label %703

700:                                              ; preds = %698
  %701 = tail call ptr @ReadYesOrNo(ptr noundef nonnull @SubsequentPatching)
  %.not494 = icmp eq ptr %701, null
  br i1 %.not494, label %702, label %.thread

702:                                              ; preds = %700
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.153) #10
  br label %.thread

703:                                              ; preds = %698
  %704 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.154) #12
  %.not495 = icmp eq i32 %704, 0
  br i1 %.not495, label %705, label %714

705:                                              ; preds = %703
  %706 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not496 = icmp eq ptr %706, null
  br i1 %.not496, label %709, label %707

707:                                              ; preds = %705
  %708 = tail call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %706, ptr noundef nonnull @.str.32, ptr noundef nonnull @TimeLimit) #10
  %.not497 = icmp eq i32 %708, 0
  br i1 %.not497, label %709, label %710

709:                                              ; preds = %707, %705
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.155) #10
  br label %710

710:                                              ; preds = %709, %707
  %711 = load double, ptr @TimeLimit, align 8, !tbaa !11
  %712 = fcmp olt double %711, 0.000000e+00
  br i1 %712, label %713, label %.thread

713:                                              ; preds = %710
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.156) #10
  br label %.thread

714:                                              ; preds = %703
  %715 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.157) #12
  %.not498 = icmp eq i32 %715, 0
  br i1 %.not498, label %716, label %719

716:                                              ; preds = %714
  %717 = tail call ptr @GetFileName(ptr noundef null)
  store ptr %717, ptr @TourFileName, align 8, !tbaa !5
  %.not499 = icmp eq ptr %717, null
  br i1 %.not499, label %718, label %.thread

718:                                              ; preds = %716
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.158) #10
  br label %.thread

719:                                              ; preds = %714
  %720 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.159) #12
  %.not500 = icmp eq i32 %720, 0
  br i1 %.not500, label %721, label %726

721:                                              ; preds = %719
  %722 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not501 = icmp eq ptr %722, null
  br i1 %.not501, label %725, label %723

723:                                              ; preds = %721
  %724 = tail call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %722, ptr noundef nonnull @.str.7, ptr noundef nonnull @TraceLevel) #10
  %.not502 = icmp eq i32 %724, 0
  br i1 %.not502, label %725, label %.thread

725:                                              ; preds = %723, %721
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.160) #10
  br label %.thread

726:                                              ; preds = %719
  %727 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.161) #12
  %.not503 = icmp eq i32 %727, 0
  br i1 %.not503, label %728, label %733

728:                                              ; preds = %726
  %729 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not504 = icmp eq ptr %729, null
  br i1 %.not504, label %732, label %730

730:                                              ; preds = %728
  %731 = tail call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %729, ptr noundef nonnull @.str.99, ptr noundef nonnull @MaxCost) #10
  %.not505 = icmp eq i32 %731, 0
  br i1 %.not505, label %732, label %.thread

732:                                              ; preds = %730, %728
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.162) #10
  br label %.thread

733:                                              ; preds = %726
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.163, ptr noundef nonnull %24) #10
  br label %.thread

.thread:                                          ; preds = %684, %661, %120, %125, %128, %._crit_edge551, %429, %._crit_edge584, %94, %61, %58, %80, %164, %161, %219, %220, %216, %230, %228, %252, %249, %298, %296, %315, %313, %338, %335, %378, %379, %361, %401, %398, %444, %441, %462, %460, %496, %500, %499, %479, %538, %536, %552, %550, %562, %560, %580, %578, %590, %588, %600, %598, %697, %693, %713, %710, %725, %723, %730, %732, %733, %716, %718, %700, %702, %612, %593, %595, %583, %585, %570, %573, %555, %557, %543, %545, %512, %532, %533, %529, %465, %467, %452, %455, %415, %387, %390, %346, %349, %323, %327, %310, %306, %274, %280, %286, %292, %293, %289, %283, %277, %238, %241, %223, %225, %176, %194, %129, %149, %131, %64, %66, %47, %50
  %734 = tail call ptr @strtok(ptr noundef null, ptr noundef nonnull @Delimiters) #10
  %.not506 = icmp eq ptr %734, null
  br i1 %.not506, label %.backedge, label %735

735:                                              ; preds = %.thread
  %736 = load i8, ptr %734, align 1, !tbaa !17
  %.not507 = icmp eq i8 %736, 35
  br i1 %.not507, label %.backedge, label %737

737:                                              ; preds = %735
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.164, ptr noundef nonnull %734) #10
  br label %.backedge

.backedge:                                        ; preds = %25, %.thread, %735, %737, %.lr.ph590, %150
  %738 = load ptr, ptr @ParameterFile, align 8, !tbaa !5
  %739 = tail call ptr @ReadLine(ptr noundef %738) #10
  %.not336 = icmp eq ptr %739, null
  br i1 %.not336, label %._crit_edge591, label %.lr.ph590, !llvm.loop !32

._crit_edge591:                                   ; preds = %.backedge, %152, %.loopexit520
  %740 = load ptr, ptr @ProblemFileName, align 8, !tbaa !5
  %.not361 = icmp eq ptr %740, null
  br i1 %.not361, label %741, label %742

741:                                              ; preds = %._crit_edge591
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.165) #10
  br label %742

742:                                              ; preds = %741, %._crit_edge591
  %743 = load i32, ptr @SubproblemSize, align 4, !tbaa !9
  %744 = icmp eq i32 %743, 0
  %745 = load ptr, ptr @SubproblemTourFileName, align 8
  %746 = icmp ne ptr %745, null
  %or.cond7 = select i1 %744, i1 %746, i1 false
  br i1 %or.cond7, label %747, label %748

747:                                              ; preds = %742
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.166) #10
  %.pre620 = load i32, ptr @SubproblemSize, align 4, !tbaa !9
  %.pre621 = load ptr, ptr @SubproblemTourFileName, align 8
  br label %748

748:                                              ; preds = %747, %742
  %749 = phi ptr [ %.pre621, %747 ], [ %745, %742 ]
  %750 = phi i32 [ %.pre620, %747 ], [ %743, %742 ]
  %751 = icmp sgt i32 %750, 0
  %752 = icmp eq ptr %749, null
  %or.cond9 = select i1 %751, i1 %752, i1 false
  br i1 %or.cond9, label %753, label %754

753:                                              ; preds = %748
  tail call void (ptr, ...) @eprintf(ptr noundef nonnull @.str.167) #10
  br label %754

754:                                              ; preds = %753, %748
  %755 = load ptr, ptr @ParameterFile, align 8, !tbaa !5
  %756 = tail call i32 @fclose(ptr noundef %755)
  %757 = load ptr, ptr @LastLine, align 8, !tbaa !5
  tail call void @free(ptr noundef %757) #10
  store ptr null, ptr @LastLine, align 8, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.preheader, %754
  ret void
}

declare void @ERXT(...) #1

; Function Attrs: nofree nounwind
declare noalias noundef ptr @fopen(ptr nocapture noundef readonly, ptr nocapture noundef readonly) local_unnamed_addr #2

declare void @eprintf(ptr noundef, ...) local_unnamed_addr #1

declare void @printff(ptr noundef, ...) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden ptr @GetFileName(ptr noundef) local_unnamed_addr #0

declare ptr @ReadLine(ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nofree nounwind willreturn
declare ptr @strtok(ptr noundef, ptr nocapture noundef readonly) local_unnamed_addr #3

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i64 @strlen(ptr nocapture noundef) local_unnamed_addr #4

; Function Attrs: mustprogress nofree nosync nounwind willreturn memory(none)
declare ptr @__ctype_toupper_loc() local_unnamed_addr #5

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i32 @strcmp(ptr nocapture noundef, ptr nocapture noundef) local_unnamed_addr #4

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

; Function Attrs: nounwind uwtable
declare hidden ptr @ReadYesOrNo(ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @malloc(i64 noundef) local_unnamed_addr #6

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #7

; Function Attrs: mustprogress nounwind willreturn allockind("realloc") allocsize(1) memory(argmem: readwrite, inaccessiblemem: readwrite)
declare noalias noundef ptr @realloc(ptr allocptr nocapture noundef, i64 noundef) local_unnamed_addr #8

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i32 @strncmp(ptr nocapture noundef, ptr nocapture noundef, i64 noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare hidden i64 @max(i64 noundef, i64 noundef) local_unnamed_addr #0

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

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { "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 = { 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 #3 = { mustprogress nofree nounwind willreturn "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 = { mustprogress nofree nounwind willreturn memory(argmem: 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 #5 = { mustprogress nofree nosync nounwind willreturn memory(none) "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 nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(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 = { noreturn 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 #8 = { mustprogress nounwind willreturn allockind("realloc") allocsize(1) 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 #9 = { 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 #10 = { nounwind }
attributes #11 = { nounwind willreturn memory(none) }
attributes #12 = { nounwind willreturn memory(read) }
attributes #13 = { nounwind allocsize(0) }
attributes #14 = { noreturn nounwind }
attributes #15 = { nounwind allocsize(1) }

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

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


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