; LLVM IR from Karansutradhar/Maze-Solver-Robot-Depth-First-Search :: Final_Project/src/Algorithm (algorithm)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"struct.std::array.1" = type { [2 x i32] }
%"class.fp::Algorithm" = type { i8, i8, i8, %"class.fp::Maze", i8, %"struct.std::array.1", %"struct.std::array.1", %"class.std::stack", %"class.std::shared_ptr", %"class.std::stack", %"struct.std::array.2", %"struct.std::array.2", %"struct.std::array", %"struct.std::array", %"struct.std::array.1", %"struct.std::array.1", %"struct.std::array.1", %"struct.std::array.1", %"struct.std::array.1" }
%"class.fp::Maze" = type { %"struct.std::array", %"struct.std::array", %"struct.std::array", %"struct.std::array" }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::stack" = type { %"class.std::deque" }
%"class.std::deque" = type { %"class.std::_Deque_base" }
%"class.std::_Deque_base" = type { %"struct.std::_Deque_base<std::array<int, 2>, std::allocator<std::array<int, 2>>>::_Deque_impl" }
%"struct.std::_Deque_base<std::array<int, 2>, std::allocator<std::array<int, 2>>>::_Deque_impl" = type { %"struct.std::_Deque_base<std::array<int, 2>, std::allocator<std::array<int, 2>>>::_Deque_impl_data" }
%"struct.std::_Deque_base<std::array<int, 2>, std::allocator<std::array<int, 2>>>::_Deque_impl_data" = type { ptr, i64, %"struct.std::_Deque_iterator", %"struct.std::_Deque_iterator" }
%"struct.std::_Deque_iterator" = type { ptr, ptr, ptr, ptr }
%"struct.std::array.2" = type { [16 x %"struct.std::array.3"] }
%"struct.std::array.3" = type { [16 x %"struct.fp::Node"] }
%"struct.fp::Node" = type { i32, %"struct.std::array.1" }
%"struct.std::array" = type { [16 x %"struct.std::array.0"] }
%"struct.std::array.0" = type { [16 x i8] }

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt5stackISt5arrayIiLm2EESt5dequeIS1_SaIS1_EEE3popEv(ptr noundef nonnull align 8 dereferenceable(80)) #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8), i64 noundef) #0 align 2

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt5stackISt5arrayIiLm2EESt5dequeIS1_SaIS1_EEE3topEv(ptr noundef nonnull align 8 dereferenceable(80)) #0 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN2fp9Algorithm8NavigateERSt5stackISt5arrayIiLm2EESt5dequeIS3_SaIS3_EEE(ptr noundef nonnull align 8 dereferenceable(7920) %0, ptr noundef nonnull align 8 dereferenceable(80) %1) #4 align 2 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i8, align 1
  %8 = alloca i8, align 1
  %9 = alloca %"struct.std::array.1", align 4
  %10 = alloca %"struct.std::array.1", align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %11 = load ptr, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #6
  store i32 0, ptr %5, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #6
  store i32 0, ptr %6, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #6
  store i8 0, ptr %7, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #6
  store i8 0, ptr %8, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #6
  call void @llvm.memset.p0.i64(ptr align 4 %9, i8 0, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #6
  call void @llvm.memset.p0.i64(ptr align 4 %10, i8 0, i64 8, i1 false)
  %12 = load ptr, ptr %4, align 8, !tbaa !5
  %13 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt5stackISt5arrayIiLm2EESt5dequeIS1_SaIS1_EEE3topEv(ptr noundef nonnull align 8 dereferenceable(80) %12)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %9, ptr align 4 %13, i64 8, i1 false), !tbaa.struct !12
  %14 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZNSt5stackISt5arrayIiLm2EESt5dequeIS1_SaIS1_EEE3popEv(ptr noundef nonnull align 8 dereferenceable(80) %14)
  %15 = load ptr, ptr %4, align 8, !tbaa !5
  %16 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt5stackISt5arrayIiLm2EESt5dequeIS1_SaIS1_EEE3topEv(ptr noundef nonnull align 8 dereferenceable(80) %15)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %10, ptr align 4 %16, i64 8, i1 false), !tbaa.struct !12
  %17 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %10, i64 noundef 0) #6
  %18 = load i32, ptr %17, align 4, !tbaa !9
  %19 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %9, i64 noundef 0) #6
  %20 = load i32, ptr %19, align 4, !tbaa !9
  %21 = sub nsw i32 %18, %20
  store i32 %21, ptr %5, align 4, !tbaa !9
  %22 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %10, i64 noundef 1) #6
  %23 = load i32, ptr %22, align 4, !tbaa !9
  %24 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %9, i64 noundef 1) #6
  %25 = load i32, ptr %24, align 4, !tbaa !9
  %26 = sub nsw i32 %23, %25
  store i32 %26, ptr %6, align 4, !tbaa !9
  %27 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 8
  %28 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %27) #6
  %29 = load ptr, ptr %28, align 8, !tbaa !13
  %30 = getelementptr inbounds ptr, ptr %29, i64 0
  %31 = load ptr, ptr %30, align 8
  %32 = call noundef signext i8 %31(ptr noundef nonnull align 8 dereferenceable(89) %28)
  store i8 %32, ptr %7, align 1, !tbaa !11
  %33 = load i32, ptr %5, align 4, !tbaa !9
  %34 = icmp eq i32 %33, -1
  br i1 %34, label %35, label %39

35:                                               ; preds = %2
  %36 = load i32, ptr %6, align 4, !tbaa !9
  %37 = icmp eq i32 %36, 0
  br i1 %37, label %38, label %39

38:                                               ; preds = %35
  store i8 78, ptr %8, align 1, !tbaa !11
  br label %63

39:                                               ; preds = %35, %2
  %40 = load i32, ptr %5, align 4, !tbaa !9
  %41 = icmp eq i32 %40, 1
  br i1 %41, label %42, label %46

42:                                               ; preds = %39
  %43 = load i32, ptr %6, align 4, !tbaa !9
  %44 = icmp eq i32 %43, 0
  br i1 %44, label %45, label %46

45:                                               ; preds = %42
  store i8 83, ptr %8, align 1, !tbaa !11
  br label %62

46:                                               ; preds = %42, %39
  %47 = load i32, ptr %5, align 4, !tbaa !9
  %48 = icmp eq i32 %47, 0
  br i1 %48, label %49, label %53

49:                                               ; preds = %46
  %50 = load i32, ptr %6, align 4, !tbaa !9
  %51 = icmp eq i32 %50, -1
  br i1 %51, label %52, label %53

52:                                               ; preds = %49
  store i8 87, ptr %8, align 1, !tbaa !11
  br label %61

53:                                               ; preds = %49, %46
  %54 = load i32, ptr %5, align 4, !tbaa !9
  %55 = icmp eq i32 %54, 0
  br i1 %55, label %56, label %60

56:                                               ; preds = %53
  %57 = load i32, ptr %6, align 4, !tbaa !9
  %58 = icmp eq i32 %57, 1
  br i1 %58, label %59, label %60

59:                                               ; preds = %56
  store i8 69, ptr %8, align 1, !tbaa !11
  br label %60

60:                                               ; preds = %59, %56, %53
  br label %61

61:                                               ; preds = %60, %52
  br label %62

62:                                               ; preds = %61, %45
  br label %63

63:                                               ; preds = %62, %38
  %64 = load i8, ptr %7, align 1, !tbaa !11
  %65 = sext i8 %64 to i32
  %66 = icmp eq i32 %65, 78
  br i1 %66, label %67, label %166

67:                                               ; preds = %63
  %68 = load i8, ptr %8, align 1, !tbaa !11
  %69 = sext i8 %68 to i32
  %70 = icmp eq i32 %69, 78
  br i1 %70, label %71, label %87

71:                                               ; preds = %67
  %72 = call noundef zeroext i1 @_ZN2fp3API9wallFrontEv()
  br i1 %72, label %84, label %73

73:                                               ; preds = %71
  %74 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 8
  %75 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %74) #6
  %76 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %10, i64 noundef 0) #6
  %77 = load i32, ptr %76, align 4, !tbaa !9
  %78 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %10, i64 noundef 1) #6
  %79 = load i32, ptr %78, align 4, !tbaa !9
  %80 = load i8, ptr %8, align 1, !tbaa !11
  %81 = load ptr, ptr %75, align 8, !tbaa !13
  %82 = getelementptr inbounds ptr, ptr %81, i64 1
  %83 = load ptr, ptr %82, align 8
  call void %83(ptr noundef nonnull align 8 dereferenceable(89) %75, i32 noundef %77, i32 noundef %79, i8 noundef signext %80)
  br label %86

84:                                               ; preds = %71
  %85 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 2
  store i8 1, ptr %85, align 2, !tbaa !15
  br label %86

86:                                               ; preds = %84, %73
  br label %165

87:                                               ; preds = %67
  %88 = load i8, ptr %8, align 1, !tbaa !11
  %89 = sext i8 %88 to i32
  %90 = icmp eq i32 %89, 83
  br i1 %90, label %91, label %112

91:                                               ; preds = %87
  %92 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 8
  %93 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %92) #6
  %94 = load ptr, ptr %93, align 8, !tbaa !13
  %95 = getelementptr inbounds ptr, ptr %94, i64 2
  %96 = load ptr, ptr %95, align 8
  call void %96(ptr noundef nonnull align 8 dereferenceable(89) %93)
  %97 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 8
  %98 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %97) #6
  %99 = load ptr, ptr %98, align 8, !tbaa !13
  %100 = getelementptr inbounds ptr, ptr %99, i64 2
  %101 = load ptr, ptr %100, align 8
  call void %101(ptr noundef nonnull align 8 dereferenceable(89) %98)
  %102 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 8
  %103 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %102) #6
  %104 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %10, i64 noundef 0) #6
  %105 = load i32, ptr %104, align 4, !tbaa !9
  %106 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %10, i64 noundef 1) #6
  %107 = load i32, ptr %106, align 4, !tbaa !9
  %108 = load i8, ptr %8, align 1, !tbaa !11
  %109 = load ptr, ptr %103, align 8, !tbaa !13
  %110 = getelementptr inbounds ptr, ptr %109, i64 1
  %111 = load ptr, ptr %110, align 8
  call void %111(ptr noundef nonnull align 8 dereferenceable(89) %103, i32 noundef %105, i32 noundef %107, i8 noundef signext %108)
  br label %164

112:                                              ; preds = %87
  %113 = load i8, ptr %8, align 1, !tbaa !11
  %114 = sext i8 %113 to i32
  %115 = icmp eq i32 %114, 69
  br i1 %115, label %116, label %137

116:                                              ; preds = %112
  %117 = call noundef zeroext i1 @_ZN2fp3API9wallRightEv()
  br i1 %117, label %134, label %118

118:                                              ; preds = %116
  %119 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 8
  %120 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %119) #6
  %121 = load ptr, ptr %120, align 8, !tbaa !13
  %122 = getelementptr inbounds ptr, ptr %121, i64 3
  %123 = load ptr, ptr %122, align 8
  call void %123(ptr noundef nonnull align 8 dereferenceable(89) %120)
  %124 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 8
  %125 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %124) #6
  %126 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %10, i64 noundef 0) #6
  %127 = load i32, ptr %126, align 4, !tbaa !9
  %128 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %10, i64 noundef 1) #6
  %129 = load i32, ptr %128, align 4, !tbaa !9
  %130 = load i8, ptr %8, align 1, !tbaa !11
  %131 = load ptr, ptr %125, align 8, !tbaa !13
  %132 = getelementptr inbounds ptr, ptr %131, i64 1
  %133 = load ptr, ptr %132, align 8
  call void %133(ptr noundef nonnull align 8 dereferenceable(89) %125, i32 noundef %127, i32 noundef %129, i8 noundef signext %130)
  br label %136

134:                                              ; preds = %116
  %135 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 2
  store i8 1, ptr %135, align 2, !tbaa !15
  br label %136

136:                                              ; preds = %134, %118
  br label %163

137:                                              ; preds = %112
  %138 = load i8, ptr %8, align 1, !tbaa !11
  %139 = sext i8 %138 to i32
  %140 = icmp eq i32 %139, 87
  br i1 %140, label %141, label %162

141:                                              ; preds = %137
  %142 = call noundef zeroext i1 @_ZN2fp3API8wallLeftEv()
  br i1 %142, label %159, label %143

143:                                              ; preds = %141
  %144 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 8
  %145 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %144) #6
  %146 = load ptr, ptr %145, align 8, !tbaa !13
  %147 = getelementptr inbounds ptr, ptr %146, i64 2
  %148 = load ptr, ptr %147, align 8
  call void %148(ptr noundef nonnull align 8 dereferenceable(89) %145)
  %149 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 8
  %150 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %149) #6
  %151 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %10, i64 noundef 0) #6
  %152 = load i32, ptr %151, align 4, !tbaa !9
  %153 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %10, i64 noundef 1) #6
  %154 = load i32, ptr %153, align 4, !tbaa !9
  %155 = load i8, ptr %8, align 1, !tbaa !11
  %156 = load ptr, ptr %150, align 8, !tbaa !13
  %157 = getelementptr inbounds ptr, ptr %156, i64 1
  %158 = load ptr, ptr %157, align 8
  call void %158(ptr noundef nonnull align 8 dereferenceable(89) %150, i32 noundef %152, i32 noundef %154, i8 noundef signext %155)
  br label %161

159:                                              ; preds = %141
  %160 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 2
  store i8 1, ptr %160, align 2, !tbaa !15
  br label %161

161:                                              ; preds = %159, %143
  br label %162

162:                                              ; preds = %161, %137
  br label %163

163:                                              ; preds = %162, %136
  br label %164

164:                                              ; preds = %163, %91
  br label %165

165:                                              ; preds = %164, %86
  br label %478

166:                                              ; preds = %63
  %167 = load i8, ptr %7, align 1, !tbaa !11
  %168 = sext i8 %167 to i32
  %169 = icmp eq i32 %168, 83
  br i1 %169, label %170, label %269

170:                                              ; preds = %166
  %171 = load i8, ptr %8, align 1, !tbaa !11
  %172 = sext i8 %171 to i32
  %173 = icmp eq i32 %172, 78
  br i1 %173, label %174, label %195

174:                                              ; preds = %170
  %175 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 8
  %176 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %175) #6
  %177 = load ptr, ptr %176, align 8, !tbaa !13
  %178 = getelementptr inbounds ptr, ptr %177, i64 2
  %179 = load ptr, ptr %178, align 8
  call void %179(ptr noundef nonnull align 8 dereferenceable(89) %176)
  %180 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 8
  %181 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %180) #6
  %182 = load ptr, ptr %181, align 8, !tbaa !13
  %183 = getelementptr inbounds ptr, ptr %182, i64 2
  %184 = load ptr, ptr %183, align 8
  call void %184(ptr noundef nonnull align 8 dereferenceable(89) %181)
  %185 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 8
  %186 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %185) #6
  %187 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %10, i64 noundef 0) #6
  %188 = load i32, ptr %187, align 4, !tbaa !9
  %189 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %10, i64 noundef 1) #6
  %190 = load i32, ptr %189, align 4, !tbaa !9
  %191 = load i8, ptr %8, align 1, !tbaa !11
  %192 = load ptr, ptr %186, align 8, !tbaa !13
  %193 = getelementptr inbounds ptr, ptr %192, i64 1
  %194 = load ptr, ptr %193, align 8
  call void %194(ptr noundef nonnull align 8 dereferenceable(89) %186, i32 noundef %188, i32 noundef %190, i8 noundef signext %191)
  br label %268

195:                                              ; preds = %170
  %196 = load i8, ptr %8, align 1, !tbaa !11
  %197 = sext i8 %196 to i32
  %198 = icmp eq i32 %197, 83
  br i1 %198, label %199, label %215

199:                                              ; preds = %195
  %200 = call noundef zeroext i1 @_ZN2fp3API9wallFrontEv()
  br i1 %200, label %212, label %201

201:                                              ; preds = %199
  %202 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 8
  %203 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %202) #6
  %204 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %10, i64 noundef 0) #6
  %205 = load i32, ptr %204, align 4, !tbaa !9
  %206 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %10, i64 noundef 1) #6
  %207 = load i32, ptr %206, align 4, !tbaa !9
  %208 = load i8, ptr %8, align 1, !tbaa !11
  %209 = load ptr, ptr %203, align 8, !tbaa !13
  %210 = getelementptr inbounds ptr, ptr %209, i64 1
  %211 = load ptr, ptr %210, align 8
  call void %211(ptr noundef nonnull align 8 dereferenceable(89) %203, i32 noundef %205, i32 noundef %207, i8 noundef signext %208)
  br label %214

212:                                              ; preds = %199
  %213 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 2
  store i8 1, ptr %213, align 2, !tbaa !15
  br label %214

214:                                              ; preds = %212, %201
  br label %267

215:                                              ; preds = %195
  %216 = load i8, ptr %8, align 1, !tbaa !11
  %217 = sext i8 %216 to i32
  %218 = icmp eq i32 %217, 69
  br i1 %218, label %219, label %240

219:                                              ; preds = %215
  %220 = call noundef zeroext i1 @_ZN2fp3API8wallLeftEv()
  br i1 %220, label %237, label %221

221:                                              ; preds = %219
  %222 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 8
  %223 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %222) #6
  %224 = load ptr, ptr %223, align 8, !tbaa !13
  %225 = getelementptr inbounds ptr, ptr %224, i64 2
  %226 = load ptr, ptr %225, align 8
  call void %226(ptr noundef nonnull align 8 dereferenceable(89) %223)
  %227 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 8
  %228 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %227) #6
  %229 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %10, i64 noundef 0) #6
  %230 = load i32, ptr %229, align 4, !tbaa !9
  %231 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %10, i64 noundef 1) #6
  %232 = load i32, ptr %231, align 4, !tbaa !9
  %233 = load i8, ptr %8, align 1, !tbaa !11
  %234 = load ptr, ptr %228, align 8, !tbaa !13
  %235 = getelementptr inbounds ptr, ptr %234, i64 1
  %236 = load ptr, ptr %235, align 8
  call void %236(ptr noundef nonnull align 8 dereferenceable(89) %228, i32 noundef %230, i32 noundef %232, i8 noundef signext %233)
  br label %239

237:                                              ; preds = %219
  %238 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 2
  store i8 1, ptr %238, align 2, !tbaa !15
  br label %239

239:                                              ; preds = %237, %221
  br label %266

240:                                              ; preds = %215
  %241 = load i8, ptr %8, align 1, !tbaa !11
  %242 = sext i8 %241 to i32
  %243 = icmp eq i32 %242, 87
  br i1 %243, label %244, label %265

244:                                              ; preds = %240
  %245 = call noundef zeroext i1 @_ZN2fp3API9wallRightEv()
  br i1 %245, label %262, label %246

246:                                              ; preds = %244
  %247 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 8
  %248 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %247) #6
  %249 = load ptr, ptr %248, align 8, !tbaa !13
  %250 = getelementptr inbounds ptr, ptr %249, i64 3
  %251 = load ptr, ptr %250, align 8
  call void %251(ptr noundef nonnull align 8 dereferenceable(89) %248)
  %252 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 8
  %253 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %252) #6
  %254 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %10, i64 noundef 0) #6
  %255 = load i32, ptr %254, align 4, !tbaa !9
  %256 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %10, i64 noundef 1) #6
  %257 = load i32, ptr %256, align 4, !tbaa !9
  %258 = load i8, ptr %8, align 1, !tbaa !11
  %259 = load ptr, ptr %253, align 8, !tbaa !13
  %260 = getelementptr inbounds ptr, ptr %259, i64 1
  %261 = load ptr, ptr %260, align 8
  call void %261(ptr noundef nonnull align 8 dereferenceable(89) %253, i32 noundef %255, i32 noundef %257, i8 noundef signext %258)
  br label %264

262:                                              ; preds = %244
  %263 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 2
  store i8 1, ptr %263, align 2, !tbaa !15
  br label %264

264:                                              ; preds = %262, %246
  br label %265

265:                                              ; preds = %264, %240
  br label %266

266:                                              ; preds = %265, %239
  br label %267

267:                                              ; preds = %266, %214
  br label %268

268:                                              ; preds = %267, %174
  br label %477

269:                                              ; preds = %166
  %270 = load i8, ptr %7, align 1, !tbaa !11
  %271 = sext i8 %270 to i32
  %272 = icmp eq i32 %271, 69
  br i1 %272, label %273, label %372

273:                                              ; preds = %269
  %274 = load i8, ptr %8, align 1, !tbaa !11
  %275 = sext i8 %274 to i32
  %276 = icmp eq i32 %275, 78
  br i1 %276, label %277, label %298

277:                                              ; preds = %273
  %278 = call noundef zeroext i1 @_ZN2fp3API8wallLeftEv()
  br i1 %278, label %295, label %279

279:                                              ; preds = %277
  %280 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 8
  %281 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %280) #6
  %282 = load ptr, ptr %281, align 8, !tbaa !13
  %283 = getelementptr inbounds ptr, ptr %282, i64 2
  %284 = load ptr, ptr %283, align 8
  call void %284(ptr noundef nonnull align 8 dereferenceable(89) %281)
  %285 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 8
  %286 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %285) #6
  %287 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %10, i64 noundef 0) #6
  %288 = load i32, ptr %287, align 4, !tbaa !9
  %289 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %10, i64 noundef 1) #6
  %290 = load i32, ptr %289, align 4, !tbaa !9
  %291 = load i8, ptr %8, align 1, !tbaa !11
  %292 = load ptr, ptr %286, align 8, !tbaa !13
  %293 = getelementptr inbounds ptr, ptr %292, i64 1
  %294 = load ptr, ptr %293, align 8
  call void %294(ptr noundef nonnull align 8 dereferenceable(89) %286, i32 noundef %288, i32 noundef %290, i8 noundef signext %291)
  br label %297

295:                                              ; preds = %277
  %296 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 2
  store i8 1, ptr %296, align 2, !tbaa !15
  br label %297

297:                                              ; preds = %295, %279
  br label %371

298:                                              ; preds = %273
  %299 = load i8, ptr %8, align 1, !tbaa !11
  %300 = sext i8 %299 to i32
  %301 = icmp eq i32 %300, 83
  br i1 %301, label %302, label %323

302:                                              ; preds = %298
  %303 = call noundef zeroext i1 @_ZN2fp3API9wallRightEv()
  br i1 %303, label %320, label %304

304:                                              ; preds = %302
  %305 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 8
  %306 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %305) #6
  %307 = load ptr, ptr %306, align 8, !tbaa !13
  %308 = getelementptr inbounds ptr, ptr %307, i64 3
  %309 = load ptr, ptr %308, align 8
  call void %309(ptr noundef nonnull align 8 dereferenceable(89) %306)
  %310 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 8
  %311 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %310) #6
  %312 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %10, i64 noundef 0) #6
  %313 = load i32, ptr %312, align 4, !tbaa !9
  %314 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %10, i64 noundef 1) #6
  %315 = load i32, ptr %314, align 4, !tbaa !9
  %316 = load i8, ptr %8, align 1, !tbaa !11
  %317 = load ptr, ptr %311, align 8, !tbaa !13
  %318 = getelementptr inbounds ptr, ptr %317, i64 1
  %319 = load ptr, ptr %318, align 8
  call void %319(ptr noundef nonnull align 8 dereferenceable(89) %311, i32 noundef %313, i32 noundef %315, i8 noundef signext %316)
  br label %322

320:                                              ; preds = %302
  %321 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 2
  store i8 1, ptr %321, align 2, !tbaa !15
  br label %322

322:                                              ; preds = %320, %304
  br label %370

323:                                              ; preds = %298
  %324 = load i8, ptr %8, align 1, !tbaa !11
  %325 = sext i8 %324 to i32
  %326 = icmp eq i32 %325, 69
  br i1 %326, label %327, label %343

327:                                              ; preds = %323
  %328 = call noundef zeroext i1 @_ZN2fp3API9wallFrontEv()
  br i1 %328, label %340, label %329

329:                                              ; preds = %327
  %330 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 8
  %331 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %330) #6
  %332 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %10, i64 noundef 0) #6
  %333 = load i32, ptr %332, align 4, !tbaa !9
  %334 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %10, i64 noundef 1) #6
  %335 = load i32, ptr %334, align 4, !tbaa !9
  %336 = load i8, ptr %8, align 1, !tbaa !11
  %337 = load ptr, ptr %331, align 8, !tbaa !13
  %338 = getelementptr inbounds ptr, ptr %337, i64 1
  %339 = load ptr, ptr %338, align 8
  call void %339(ptr noundef nonnull align 8 dereferenceable(89) %331, i32 noundef %333, i32 noundef %335, i8 noundef signext %336)
  br label %342

340:                                              ; preds = %327
  %341 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 2
  store i8 1, ptr %341, align 2, !tbaa !15
  br label %342

342:                                              ; preds = %340, %329
  br label %369

343:                                              ; preds = %323
  %344 = load i8, ptr %8, align 1, !tbaa !11
  %345 = sext i8 %344 to i32
  %346 = icmp eq i32 %345, 87
  br i1 %346, label %347, label %368

347:                                              ; preds = %343
  %348 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 8
  %349 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %348) #6
  %350 = load ptr, ptr %349, align 8, !tbaa !13
  %351 = getelementptr inbounds ptr, ptr %350, i64 2
  %352 = load ptr, ptr %351, align 8
  call void %352(ptr noundef nonnull align 8 dereferenceable(89) %349)
  %353 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 8
  %354 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %353) #6
  %355 = load ptr, ptr %354, align 8, !tbaa !13
  %356 = getelementptr inbounds ptr, ptr %355, i64 2
  %357 = load ptr, ptr %356, align 8
  call void %357(ptr noundef nonnull align 8 dereferenceable(89) %354)
  %358 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 8
  %359 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %358) #6
  %360 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %10, i64 noundef 0) #6
  %361 = load i32, ptr %360, align 4, !tbaa !9
  %362 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %10, i64 noundef 1) #6
  %363 = load i32, ptr %362, align 4, !tbaa !9
  %364 = load i8, ptr %8, align 1, !tbaa !11
  %365 = load ptr, ptr %359, align 8, !tbaa !13
  %366 = getelementptr inbounds ptr, ptr %365, i64 1
  %367 = load ptr, ptr %366, align 8
  call void %367(ptr noundef nonnull align 8 dereferenceable(89) %359, i32 noundef %361, i32 noundef %363, i8 noundef signext %364)
  br label %368

368:                                              ; preds = %347, %343
  br label %369

369:                                              ; preds = %368, %342
  br label %370

370:                                              ; preds = %369, %322
  br label %371

371:                                              ; preds = %370, %297
  br label %476

372:                                              ; preds = %269
  %373 = load i8, ptr %7, align 1, !tbaa !11
  %374 = sext i8 %373 to i32
  %375 = icmp eq i32 %374, 87
  br i1 %375, label %376, label %475

376:                                              ; preds = %372
  %377 = load i8, ptr %8, align 1, !tbaa !11
  %378 = sext i8 %377 to i32
  %379 = icmp eq i32 %378, 78
  br i1 %379, label %380, label %401

380:                                              ; preds = %376
  %381 = call noundef zeroext i1 @_ZN2fp3API9wallRightEv()
  br i1 %381, label %398, label %382

382:                                              ; preds = %380
  %383 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 8
  %384 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %383) #6
  %385 = load ptr, ptr %384, align 8, !tbaa !13
  %386 = getelementptr inbounds ptr, ptr %385, i64 3
  %387 = load ptr, ptr %386, align 8
  call void %387(ptr noundef nonnull align 8 dereferenceable(89) %384)
  %388 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 8
  %389 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %388) #6
  %390 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %10, i64 noundef 0) #6
  %391 = load i32, ptr %390, align 4, !tbaa !9
  %392 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %10, i64 noundef 1) #6
  %393 = load i32, ptr %392, align 4, !tbaa !9
  %394 = load i8, ptr %8, align 1, !tbaa !11
  %395 = load ptr, ptr %389, align 8, !tbaa !13
  %396 = getelementptr inbounds ptr, ptr %395, i64 1
  %397 = load ptr, ptr %396, align 8
  call void %397(ptr noundef nonnull align 8 dereferenceable(89) %389, i32 noundef %391, i32 noundef %393, i8 noundef signext %394)
  br label %400

398:                                              ; preds = %380
  %399 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 2
  store i8 1, ptr %399, align 2, !tbaa !15
  br label %400

400:                                              ; preds = %398, %382
  br label %474

401:                                              ; preds = %376
  %402 = load i8, ptr %8, align 1, !tbaa !11
  %403 = sext i8 %402 to i32
  %404 = icmp eq i32 %403, 83
  br i1 %404, label %405, label %426

405:                                              ; preds = %401
  %406 = call noundef zeroext i1 @_ZN2fp3API8wallLeftEv()
  br i1 %406, label %423, label %407

407:                                              ; preds = %405
  %408 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 8
  %409 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %408) #6
  %410 = load ptr, ptr %409, align 8, !tbaa !13
  %411 = getelementptr inbounds ptr, ptr %410, i64 2
  %412 = load ptr, ptr %411, align 8
  call void %412(ptr noundef nonnull align 8 dereferenceable(89) %409)
  %413 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 8
  %414 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %413) #6
  %415 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %10, i64 noundef 0) #6
  %416 = load i32, ptr %415, align 4, !tbaa !9
  %417 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %10, i64 noundef 1) #6
  %418 = load i32, ptr %417, align 4, !tbaa !9
  %419 = load i8, ptr %8, align 1, !tbaa !11
  %420 = load ptr, ptr %414, align 8, !tbaa !13
  %421 = getelementptr inbounds ptr, ptr %420, i64 1
  %422 = load ptr, ptr %421, align 8
  call void %422(ptr noundef nonnull align 8 dereferenceable(89) %414, i32 noundef %416, i32 noundef %418, i8 noundef signext %419)
  br label %425

423:                                              ; preds = %405
  %424 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 2
  store i8 1, ptr %424, align 2, !tbaa !15
  br label %425

425:                                              ; preds = %423, %407
  br label %473

426:                                              ; preds = %401
  %427 = load i8, ptr %8, align 1, !tbaa !11
  %428 = sext i8 %427 to i32
  %429 = icmp eq i32 %428, 69
  br i1 %429, label %430, label %451

430:                                              ; preds = %426
  %431 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 8
  %432 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %431) #6
  %433 = load ptr, ptr %432, align 8, !tbaa !13
  %434 = getelementptr inbounds ptr, ptr %433, i64 2
  %435 = load ptr, ptr %434, align 8
  call void %435(ptr noundef nonnull align 8 dereferenceable(89) %432)
  %436 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 8
  %437 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %436) #6
  %438 = load ptr, ptr %437, align 8, !tbaa !13
  %439 = getelementptr inbounds ptr, ptr %438, i64 2
  %440 = load ptr, ptr %439, align 8
  call void %440(ptr noundef nonnull align 8 dereferenceable(89) %437)
  %441 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 8
  %442 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %441) #6
  %443 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %10, i64 noundef 0) #6
  %444 = load i32, ptr %443, align 4, !tbaa !9
  %445 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %10, i64 noundef 1) #6
  %446 = load i32, ptr %445, align 4, !tbaa !9
  %447 = load i8, ptr %8, align 1, !tbaa !11
  %448 = load ptr, ptr %442, align 8, !tbaa !13
  %449 = getelementptr inbounds ptr, ptr %448, i64 1
  %450 = load ptr, ptr %449, align 8
  call void %450(ptr noundef nonnull align 8 dereferenceable(89) %442, i32 noundef %444, i32 noundef %446, i8 noundef signext %447)
  br label %472

451:                                              ; preds = %426
  %452 = load i8, ptr %8, align 1, !tbaa !11
  %453 = sext i8 %452 to i32
  %454 = icmp eq i32 %453, 87
  br i1 %454, label %455, label %471

455:                                              ; preds = %451
  %456 = call noundef zeroext i1 @_ZN2fp3API9wallFrontEv()
  br i1 %456, label %468, label %457

457:                                              ; preds = %455
  %458 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 8
  %459 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %458) #6
  %460 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %10, i64 noundef 0) #6
  %461 = load i32, ptr %460, align 4, !tbaa !9
  %462 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %10, i64 noundef 1) #6
  %463 = load i32, ptr %462, align 4, !tbaa !9
  %464 = load i8, ptr %8, align 1, !tbaa !11
  %465 = load ptr, ptr %459, align 8, !tbaa !13
  %466 = getelementptr inbounds ptr, ptr %465, i64 1
  %467 = load ptr, ptr %466, align 8
  call void %467(ptr noundef nonnull align 8 dereferenceable(89) %459, i32 noundef %461, i32 noundef %463, i8 noundef signext %464)
  br label %470

468:                                              ; preds = %455
  %469 = getelementptr inbounds %"class.fp::Algorithm", ptr %11, i32 0, i32 2
  store i8 1, ptr %469, align 2, !tbaa !15
  br label %470

470:                                              ; preds = %468, %457
  br label %471

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

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

473:                                              ; preds = %472, %425
  br label %474

474:                                              ; preds = %473, %400
  br label %475

475:                                              ; preds = %474, %372
  br label %476

476:                                              ; preds = %475, %371
  br label %477

477:                                              ; preds = %476, %268
  br label %478

478:                                              ; preds = %477, %165
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #6
  ret void
}

declare noundef zeroext i1 @_ZN2fp3API9wallFrontEv() #5

declare noundef zeroext i1 @_ZN2fp3API9wallRightEv() #5

declare noundef zeroext i1 @_ZN2fp3API8wallLeftEv() #5

attributes #0 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #4 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = !{i64 0, i64 8, !11}
!13 = !{!14, !14, i64 0}
!14 = !{!"vtable pointer", !8, i64 0}
!15 = !{!16, !17, i64 2}
!16 = !{!"_ZTSN2fp9AlgorithmE", !17, i64 0, !17, i64 1, !17, i64 2, !18, i64 3, !7, i64 1027, !20, i64 1028, !20, i64 1036, !21, i64 1048, !28, i64 1128, !21, i64 1144, !31, i64 1224, !31, i64 4296, !19, i64 7368, !19, i64 7624, !20, i64 7880, !20, i64 7888, !20, i64 7896, !20, i64 7904, !20, i64 7912}
!17 = !{!"bool", !7, i64 0}
!18 = !{!"_ZTSN2fp4MazeE", !19, i64 0, !19, i64 256, !19, i64 512, !19, i64 768}
!19 = !{!"_ZTSSt5arrayIS_IbLm16EELm16EE", !7, i64 0}
!20 = !{!"_ZTSSt5arrayIiLm2EE", !7, i64 0}
!21 = !{!"_ZTSSt5stackISt5arrayIiLm2EESt5dequeIS1_SaIS1_EEE", !22, i64 0}
!22 = !{!"_ZTSSt5dequeISt5arrayIiLm2EESaIS1_EE", !23, i64 0}
!23 = !{!"_ZTSSt11_Deque_baseISt5arrayIiLm2EESaIS1_EE", !24, i64 0}
!24 = !{!"_ZTSNSt11_Deque_baseISt5arrayIiLm2EESaIS1_EE11_Deque_implE", !25, i64 0}
!25 = !{!"_ZTSNSt11_Deque_baseISt5arrayIiLm2EESaIS1_EE16_Deque_impl_dataE", !6, i64 0, !26, i64 8, !27, i64 16, !27, i64 48}
!26 = !{!"long", !7, i64 0}
!27 = !{!"_ZTSSt15_Deque_iteratorISt5arrayIiLm2EERS1_PS1_E", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!28 = !{!"_ZTSSt10shared_ptrIN2fp14LandBasedRobotEE", !29, i64 0}
!29 = !{!"_ZTSSt12__shared_ptrIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !30, i64 8}
!30 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0}
!31 = !{!"_ZTSSt5arrayIS_IN2fp4NodeELm16EELm16EE", !7, i64 0}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"struct.std::array.1" = type { [2 x i32] }

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt5stackISt5arrayIiLm2EESt5dequeIS1_SaIS1_EEE3popEv(ptr noundef nonnull align 8 dereferenceable(80)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8), i64 noundef) local_unnamed_addr #0 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt5stackISt5arrayIiLm2EESt5dequeIS1_SaIS1_EEE3topEv(ptr noundef nonnull align 8 dereferenceable(80)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN2fp9Algorithm8NavigateERSt5stackISt5arrayIiLm2EESt5dequeIS3_SaIS3_EEE(ptr noundef nonnull align 8 dereferenceable(7920) %0, ptr noundef nonnull align 8 dereferenceable(80) %1) local_unnamed_addr #2 align 2 {
  %3 = alloca %"struct.std::array.1", align 8
  %4 = alloca %"struct.std::array.1", align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #4
  %5 = tail call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt5stackISt5arrayIiLm2EESt5dequeIS1_SaIS1_EEE3topEv(ptr noundef nonnull align 8 dereferenceable(80) %1)
  %6 = load i64, ptr %5, align 4, !tbaa !5
  store i64 %6, ptr %3, align 8, !tbaa !5
  tail call void @_ZNSt5stackISt5arrayIiLm2EESt5dequeIS1_SaIS1_EEE3popEv(ptr noundef nonnull align 8 dereferenceable(80) %1)
  %7 = tail call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt5stackISt5arrayIiLm2EESt5dequeIS1_SaIS1_EEE3topEv(ptr noundef nonnull align 8 dereferenceable(80) %1)
  %8 = load i64, ptr %7, align 4, !tbaa !5
  store i64 %8, ptr %4, align 8, !tbaa !5
  %9 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %4, i64 noundef 0) #4
  %10 = load i32, ptr %9, align 4, !tbaa !8
  %11 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %3, i64 noundef 0) #4
  %12 = load i32, ptr %11, align 4, !tbaa !8
  %13 = sub nsw i32 %10, %12
  %14 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %4, i64 noundef 1) #4
  %15 = load i32, ptr %14, align 4, !tbaa !8
  %16 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %3, i64 noundef 1) #4
  %17 = load i32, ptr %16, align 4, !tbaa !8
  %18 = sub nsw i32 %15, %17
  %19 = getelementptr inbounds i8, ptr %0, i64 1128
  %20 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #4
  %21 = load ptr, ptr %20, align 8, !tbaa !10
  %22 = load ptr, ptr %21, align 8
  %23 = call noundef signext i8 %22(ptr noundef nonnull align 8 dereferenceable(89) %20)
  %24 = icmp eq i32 %13, -1
  %25 = icmp eq i32 %15, %17
  %or.cond = select i1 %24, i1 %25, i1 false
  br i1 %or.cond, label %33, label %26

26:                                               ; preds = %2
  %27 = icmp eq i32 %13, 1
  %or.cond3 = select i1 %27, i1 %25, i1 false
  br i1 %or.cond3, label %33, label %28

28:                                               ; preds = %26
  %29 = icmp eq i32 %10, %12
  %30 = icmp eq i32 %18, -1
  %or.cond5 = select i1 %29, i1 %30, i1 false
  br i1 %or.cond5, label %33, label %31

31:                                               ; preds = %28
  %32 = icmp eq i32 %18, 1
  %or.cond7 = select i1 %29, i1 %32, i1 false
  %spec.select59 = select i1 %or.cond7, i8 69, i8 0
  br label %33

33:                                               ; preds = %31, %28, %26, %2
  %34 = phi i1 [ false, %2 ], [ true, %26 ], [ false, %28 ], [ false, %31 ]
  %35 = phi i1 [ false, %2 ], [ false, %26 ], [ false, %28 ], [ %or.cond7, %31 ]
  %36 = phi i1 [ false, %2 ], [ false, %26 ], [ true, %28 ], [ false, %31 ]
  %.0 = phi i8 [ 78, %2 ], [ 83, %26 ], [ 87, %28 ], [ %spec.select59, %31 ]
  switch i8 %23, label %309 [
    i8 78, label %37
    i8 83, label %105
    i8 69, label %173
    i8 87, label %241
  ]

37:                                               ; preds = %33
  br i1 %or.cond, label %38, label %51

38:                                               ; preds = %37
  %39 = call noundef zeroext i1 @_ZN2fp3API9wallFrontEv()
  br i1 %39, label %49, label %40

40:                                               ; preds = %38
  %41 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #4
  %42 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %4, i64 noundef 0) #4
  %43 = load i32, ptr %42, align 4, !tbaa !8
  %44 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %4, i64 noundef 1) #4
  %45 = load i32, ptr %44, align 4, !tbaa !8
  %46 = load ptr, ptr %41, align 8, !tbaa !10
  %47 = getelementptr inbounds i8, ptr %46, i64 8
  %48 = load ptr, ptr %47, align 8
  call void %48(ptr noundef nonnull align 8 dereferenceable(89) %41, i32 noundef %43, i32 noundef %45, i8 noundef signext %.0)
  br label %309

49:                                               ; preds = %38
  %50 = getelementptr inbounds i8, ptr %0, i64 2
  store i8 1, ptr %50, align 2, !tbaa !12
  br label %309

51:                                               ; preds = %37
  br i1 %34, label %52, label %69

52:                                               ; preds = %51
  %53 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #4
  %54 = load ptr, ptr %53, align 8, !tbaa !10
  %55 = getelementptr inbounds i8, ptr %54, i64 16
  %56 = load ptr, ptr %55, align 8
  call void %56(ptr noundef nonnull align 8 dereferenceable(89) %53)
  %57 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #4
  %58 = load ptr, ptr %57, align 8, !tbaa !10
  %59 = getelementptr inbounds i8, ptr %58, i64 16
  %60 = load ptr, ptr %59, align 8
  call void %60(ptr noundef nonnull align 8 dereferenceable(89) %57)
  %61 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #4
  %62 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %4, i64 noundef 0) #4
  %63 = load i32, ptr %62, align 4, !tbaa !8
  %64 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %4, i64 noundef 1) #4
  %65 = load i32, ptr %64, align 4, !tbaa !8
  %66 = load ptr, ptr %61, align 8, !tbaa !10
  %67 = getelementptr inbounds i8, ptr %66, i64 8
  %68 = load ptr, ptr %67, align 8
  call void %68(ptr noundef nonnull align 8 dereferenceable(89) %61, i32 noundef %63, i32 noundef %65, i8 noundef signext %.0)
  br label %309

69:                                               ; preds = %51
  br i1 %35, label %70, label %87

70:                                               ; preds = %69
  %71 = call noundef zeroext i1 @_ZN2fp3API9wallRightEv()
  br i1 %71, label %85, label %72

72:                                               ; preds = %70
  %73 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #4
  %74 = load ptr, ptr %73, align 8, !tbaa !10
  %75 = getelementptr inbounds i8, ptr %74, i64 24
  %76 = load ptr, ptr %75, align 8
  call void %76(ptr noundef nonnull align 8 dereferenceable(89) %73)
  %77 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #4
  %78 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %4, i64 noundef 0) #4
  %79 = load i32, ptr %78, align 4, !tbaa !8
  %80 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %4, i64 noundef 1) #4
  %81 = load i32, ptr %80, align 4, !tbaa !8
  %82 = load ptr, ptr %77, align 8, !tbaa !10
  %83 = getelementptr inbounds i8, ptr %82, i64 8
  %84 = load ptr, ptr %83, align 8
  call void %84(ptr noundef nonnull align 8 dereferenceable(89) %77, i32 noundef %79, i32 noundef %81, i8 noundef signext %.0)
  br label %309

85:                                               ; preds = %70
  %86 = getelementptr inbounds i8, ptr %0, i64 2
  store i8 1, ptr %86, align 2, !tbaa !12
  br label %309

87:                                               ; preds = %69
  br i1 %36, label %88, label %309

88:                                               ; preds = %87
  %89 = call noundef zeroext i1 @_ZN2fp3API8wallLeftEv()
  br i1 %89, label %103, label %90

90:                                               ; preds = %88
  %91 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #4
  %92 = load ptr, ptr %91, align 8, !tbaa !10
  %93 = getelementptr inbounds i8, ptr %92, i64 16
  %94 = load ptr, ptr %93, align 8
  call void %94(ptr noundef nonnull align 8 dereferenceable(89) %91)
  %95 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #4
  %96 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %4, i64 noundef 0) #4
  %97 = load i32, ptr %96, align 4, !tbaa !8
  %98 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %4, i64 noundef 1) #4
  %99 = load i32, ptr %98, align 4, !tbaa !8
  %100 = load ptr, ptr %95, align 8, !tbaa !10
  %101 = getelementptr inbounds i8, ptr %100, i64 8
  %102 = load ptr, ptr %101, align 8
  call void %102(ptr noundef nonnull align 8 dereferenceable(89) %95, i32 noundef %97, i32 noundef %99, i8 noundef signext %.0)
  br label %309

103:                                              ; preds = %88
  %104 = getelementptr inbounds i8, ptr %0, i64 2
  store i8 1, ptr %104, align 2, !tbaa !12
  br label %309

105:                                              ; preds = %33
  br i1 %or.cond, label %106, label %123

106:                                              ; preds = %105
  %107 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #4
  %108 = load ptr, ptr %107, align 8, !tbaa !10
  %109 = getelementptr inbounds i8, ptr %108, i64 16
  %110 = load ptr, ptr %109, align 8
  call void %110(ptr noundef nonnull align 8 dereferenceable(89) %107)
  %111 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #4
  %112 = load ptr, ptr %111, align 8, !tbaa !10
  %113 = getelementptr inbounds i8, ptr %112, i64 16
  %114 = load ptr, ptr %113, align 8
  call void %114(ptr noundef nonnull align 8 dereferenceable(89) %111)
  %115 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #4
  %116 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %4, i64 noundef 0) #4
  %117 = load i32, ptr %116, align 4, !tbaa !8
  %118 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %4, i64 noundef 1) #4
  %119 = load i32, ptr %118, align 4, !tbaa !8
  %120 = load ptr, ptr %115, align 8, !tbaa !10
  %121 = getelementptr inbounds i8, ptr %120, i64 8
  %122 = load ptr, ptr %121, align 8
  call void %122(ptr noundef nonnull align 8 dereferenceable(89) %115, i32 noundef %117, i32 noundef %119, i8 noundef signext %.0)
  br label %309

123:                                              ; preds = %105
  br i1 %34, label %124, label %137

124:                                              ; preds = %123
  %125 = call noundef zeroext i1 @_ZN2fp3API9wallFrontEv()
  br i1 %125, label %135, label %126

126:                                              ; preds = %124
  %127 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #4
  %128 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %4, i64 noundef 0) #4
  %129 = load i32, ptr %128, align 4, !tbaa !8
  %130 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %4, i64 noundef 1) #4
  %131 = load i32, ptr %130, align 4, !tbaa !8
  %132 = load ptr, ptr %127, align 8, !tbaa !10
  %133 = getelementptr inbounds i8, ptr %132, i64 8
  %134 = load ptr, ptr %133, align 8
  call void %134(ptr noundef nonnull align 8 dereferenceable(89) %127, i32 noundef %129, i32 noundef %131, i8 noundef signext %.0)
  br label %309

135:                                              ; preds = %124
  %136 = getelementptr inbounds i8, ptr %0, i64 2
  store i8 1, ptr %136, align 2, !tbaa !12
  br label %309

137:                                              ; preds = %123
  br i1 %35, label %138, label %155

138:                                              ; preds = %137
  %139 = call noundef zeroext i1 @_ZN2fp3API8wallLeftEv()
  br i1 %139, label %153, label %140

140:                                              ; preds = %138
  %141 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #4
  %142 = load ptr, ptr %141, align 8, !tbaa !10
  %143 = getelementptr inbounds i8, ptr %142, i64 16
  %144 = load ptr, ptr %143, align 8
  call void %144(ptr noundef nonnull align 8 dereferenceable(89) %141)
  %145 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #4
  %146 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %4, i64 noundef 0) #4
  %147 = load i32, ptr %146, align 4, !tbaa !8
  %148 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %4, i64 noundef 1) #4
  %149 = load i32, ptr %148, align 4, !tbaa !8
  %150 = load ptr, ptr %145, align 8, !tbaa !10
  %151 = getelementptr inbounds i8, ptr %150, i64 8
  %152 = load ptr, ptr %151, align 8
  call void %152(ptr noundef nonnull align 8 dereferenceable(89) %145, i32 noundef %147, i32 noundef %149, i8 noundef signext %.0)
  br label %309

153:                                              ; preds = %138
  %154 = getelementptr inbounds i8, ptr %0, i64 2
  store i8 1, ptr %154, align 2, !tbaa !12
  br label %309

155:                                              ; preds = %137
  br i1 %36, label %156, label %309

156:                                              ; preds = %155
  %157 = call noundef zeroext i1 @_ZN2fp3API9wallRightEv()
  br i1 %157, label %171, label %158

158:                                              ; preds = %156
  %159 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #4
  %160 = load ptr, ptr %159, align 8, !tbaa !10
  %161 = getelementptr inbounds i8, ptr %160, i64 24
  %162 = load ptr, ptr %161, align 8
  call void %162(ptr noundef nonnull align 8 dereferenceable(89) %159)
  %163 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #4
  %164 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %4, i64 noundef 0) #4
  %165 = load i32, ptr %164, align 4, !tbaa !8
  %166 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %4, i64 noundef 1) #4
  %167 = load i32, ptr %166, align 4, !tbaa !8
  %168 = load ptr, ptr %163, align 8, !tbaa !10
  %169 = getelementptr inbounds i8, ptr %168, i64 8
  %170 = load ptr, ptr %169, align 8
  call void %170(ptr noundef nonnull align 8 dereferenceable(89) %163, i32 noundef %165, i32 noundef %167, i8 noundef signext %.0)
  br label %309

171:                                              ; preds = %156
  %172 = getelementptr inbounds i8, ptr %0, i64 2
  store i8 1, ptr %172, align 2, !tbaa !12
  br label %309

173:                                              ; preds = %33
  br i1 %or.cond, label %174, label %191

174:                                              ; preds = %173
  %175 = call noundef zeroext i1 @_ZN2fp3API8wallLeftEv()
  br i1 %175, label %189, label %176

176:                                              ; preds = %174
  %177 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #4
  %178 = load ptr, ptr %177, align 8, !tbaa !10
  %179 = getelementptr inbounds i8, ptr %178, i64 16
  %180 = load ptr, ptr %179, align 8
  call void %180(ptr noundef nonnull align 8 dereferenceable(89) %177)
  %181 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #4
  %182 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %4, i64 noundef 0) #4
  %183 = load i32, ptr %182, align 4, !tbaa !8
  %184 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %4, i64 noundef 1) #4
  %185 = load i32, ptr %184, align 4, !tbaa !8
  %186 = load ptr, ptr %181, align 8, !tbaa !10
  %187 = getelementptr inbounds i8, ptr %186, i64 8
  %188 = load ptr, ptr %187, align 8
  call void %188(ptr noundef nonnull align 8 dereferenceable(89) %181, i32 noundef %183, i32 noundef %185, i8 noundef signext %.0)
  br label %309

189:                                              ; preds = %174
  %190 = getelementptr inbounds i8, ptr %0, i64 2
  store i8 1, ptr %190, align 2, !tbaa !12
  br label %309

191:                                              ; preds = %173
  br i1 %34, label %192, label %209

192:                                              ; preds = %191
  %193 = call noundef zeroext i1 @_ZN2fp3API9wallRightEv()
  br i1 %193, label %207, label %194

194:                                              ; preds = %192
  %195 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #4
  %196 = load ptr, ptr %195, align 8, !tbaa !10
  %197 = getelementptr inbounds i8, ptr %196, i64 24
  %198 = load ptr, ptr %197, align 8
  call void %198(ptr noundef nonnull align 8 dereferenceable(89) %195)
  %199 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #4
  %200 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %4, i64 noundef 0) #4
  %201 = load i32, ptr %200, align 4, !tbaa !8
  %202 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %4, i64 noundef 1) #4
  %203 = load i32, ptr %202, align 4, !tbaa !8
  %204 = load ptr, ptr %199, align 8, !tbaa !10
  %205 = getelementptr inbounds i8, ptr %204, i64 8
  %206 = load ptr, ptr %205, align 8
  call void %206(ptr noundef nonnull align 8 dereferenceable(89) %199, i32 noundef %201, i32 noundef %203, i8 noundef signext %.0)
  br label %309

207:                                              ; preds = %192
  %208 = getelementptr inbounds i8, ptr %0, i64 2
  store i8 1, ptr %208, align 2, !tbaa !12
  br label %309

209:                                              ; preds = %191
  br i1 %35, label %210, label %223

210:                                              ; preds = %209
  %211 = call noundef zeroext i1 @_ZN2fp3API9wallFrontEv()
  br i1 %211, label %221, label %212

212:                                              ; preds = %210
  %213 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #4
  %214 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %4, i64 noundef 0) #4
  %215 = load i32, ptr %214, align 4, !tbaa !8
  %216 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %4, i64 noundef 1) #4
  %217 = load i32, ptr %216, align 4, !tbaa !8
  %218 = load ptr, ptr %213, align 8, !tbaa !10
  %219 = getelementptr inbounds i8, ptr %218, i64 8
  %220 = load ptr, ptr %219, align 8
  call void %220(ptr noundef nonnull align 8 dereferenceable(89) %213, i32 noundef %215, i32 noundef %217, i8 noundef signext %.0)
  br label %309

221:                                              ; preds = %210
  %222 = getelementptr inbounds i8, ptr %0, i64 2
  store i8 1, ptr %222, align 2, !tbaa !12
  br label %309

223:                                              ; preds = %209
  br i1 %36, label %224, label %309

224:                                              ; preds = %223
  %225 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #4
  %226 = load ptr, ptr %225, align 8, !tbaa !10
  %227 = getelementptr inbounds i8, ptr %226, i64 16
  %228 = load ptr, ptr %227, align 8
  call void %228(ptr noundef nonnull align 8 dereferenceable(89) %225)
  %229 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #4
  %230 = load ptr, ptr %229, align 8, !tbaa !10
  %231 = getelementptr inbounds i8, ptr %230, i64 16
  %232 = load ptr, ptr %231, align 8
  call void %232(ptr noundef nonnull align 8 dereferenceable(89) %229)
  %233 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #4
  %234 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %4, i64 noundef 0) #4
  %235 = load i32, ptr %234, align 4, !tbaa !8
  %236 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %4, i64 noundef 1) #4
  %237 = load i32, ptr %236, align 4, !tbaa !8
  %238 = load ptr, ptr %233, align 8, !tbaa !10
  %239 = getelementptr inbounds i8, ptr %238, i64 8
  %240 = load ptr, ptr %239, align 8
  call void %240(ptr noundef nonnull align 8 dereferenceable(89) %233, i32 noundef %235, i32 noundef %237, i8 noundef signext %.0)
  br label %309

241:                                              ; preds = %33
  br i1 %or.cond, label %242, label %259

242:                                              ; preds = %241
  %243 = call noundef zeroext i1 @_ZN2fp3API9wallRightEv()
  br i1 %243, label %257, label %244

244:                                              ; preds = %242
  %245 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #4
  %246 = load ptr, ptr %245, align 8, !tbaa !10
  %247 = getelementptr inbounds i8, ptr %246, i64 24
  %248 = load ptr, ptr %247, align 8
  call void %248(ptr noundef nonnull align 8 dereferenceable(89) %245)
  %249 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #4
  %250 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %4, i64 noundef 0) #4
  %251 = load i32, ptr %250, align 4, !tbaa !8
  %252 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %4, i64 noundef 1) #4
  %253 = load i32, ptr %252, align 4, !tbaa !8
  %254 = load ptr, ptr %249, align 8, !tbaa !10
  %255 = getelementptr inbounds i8, ptr %254, i64 8
  %256 = load ptr, ptr %255, align 8
  call void %256(ptr noundef nonnull align 8 dereferenceable(89) %249, i32 noundef %251, i32 noundef %253, i8 noundef signext %.0)
  br label %309

257:                                              ; preds = %242
  %258 = getelementptr inbounds i8, ptr %0, i64 2
  store i8 1, ptr %258, align 2, !tbaa !12
  br label %309

259:                                              ; preds = %241
  br i1 %34, label %260, label %277

260:                                              ; preds = %259
  %261 = call noundef zeroext i1 @_ZN2fp3API8wallLeftEv()
  br i1 %261, label %275, label %262

262:                                              ; preds = %260
  %263 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #4
  %264 = load ptr, ptr %263, align 8, !tbaa !10
  %265 = getelementptr inbounds i8, ptr %264, i64 16
  %266 = load ptr, ptr %265, align 8
  call void %266(ptr noundef nonnull align 8 dereferenceable(89) %263)
  %267 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #4
  %268 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %4, i64 noundef 0) #4
  %269 = load i32, ptr %268, align 4, !tbaa !8
  %270 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %4, i64 noundef 1) #4
  %271 = load i32, ptr %270, align 4, !tbaa !8
  %272 = load ptr, ptr %267, align 8, !tbaa !10
  %273 = getelementptr inbounds i8, ptr %272, i64 8
  %274 = load ptr, ptr %273, align 8
  call void %274(ptr noundef nonnull align 8 dereferenceable(89) %267, i32 noundef %269, i32 noundef %271, i8 noundef signext %.0)
  br label %309

275:                                              ; preds = %260
  %276 = getelementptr inbounds i8, ptr %0, i64 2
  store i8 1, ptr %276, align 2, !tbaa !12
  br label %309

277:                                              ; preds = %259
  br i1 %35, label %278, label %295

278:                                              ; preds = %277
  %279 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #4
  %280 = load ptr, ptr %279, align 8, !tbaa !10
  %281 = getelementptr inbounds i8, ptr %280, i64 16
  %282 = load ptr, ptr %281, align 8
  call void %282(ptr noundef nonnull align 8 dereferenceable(89) %279)
  %283 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #4
  %284 = load ptr, ptr %283, align 8, !tbaa !10
  %285 = getelementptr inbounds i8, ptr %284, i64 16
  %286 = load ptr, ptr %285, align 8
  call void %286(ptr noundef nonnull align 8 dereferenceable(89) %283)
  %287 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #4
  %288 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %4, i64 noundef 0) #4
  %289 = load i32, ptr %288, align 4, !tbaa !8
  %290 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %4, i64 noundef 1) #4
  %291 = load i32, ptr %290, align 4, !tbaa !8
  %292 = load ptr, ptr %287, align 8, !tbaa !10
  %293 = getelementptr inbounds i8, ptr %292, i64 8
  %294 = load ptr, ptr %293, align 8
  call void %294(ptr noundef nonnull align 8 dereferenceable(89) %287, i32 noundef %289, i32 noundef %291, i8 noundef signext %.0)
  br label %309

295:                                              ; preds = %277
  br i1 %36, label %296, label %309

296:                                              ; preds = %295
  %297 = call noundef zeroext i1 @_ZN2fp3API9wallFrontEv()
  br i1 %297, label %307, label %298

298:                                              ; preds = %296
  %299 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #4
  %300 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %4, i64 noundef 0) #4
  %301 = load i32, ptr %300, align 4, !tbaa !8
  %302 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIiLm2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %4, i64 noundef 1) #4
  %303 = load i32, ptr %302, align 4, !tbaa !8
  %304 = load ptr, ptr %299, align 8, !tbaa !10
  %305 = getelementptr inbounds i8, ptr %304, i64 8
  %306 = load ptr, ptr %305, align 8
  call void %306(ptr noundef nonnull align 8 dereferenceable(89) %299, i32 noundef %301, i32 noundef %303, i8 noundef signext %.0)
  br label %309

307:                                              ; preds = %296
  %308 = getelementptr inbounds i8, ptr %0, i64 2
  store i8 1, ptr %308, align 2, !tbaa !12
  br label %309

309:                                              ; preds = %33, %135, %126, %155, %171, %158, %140, %153, %106, %275, %262, %295, %307, %298, %278, %244, %257, %189, %176, %221, %212, %224, %223, %194, %207, %49, %40, %85, %72, %90, %103, %87, %52
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #4
  ret void
}

declare noundef zeroext i1 @_ZN2fp3API9wallFrontEv() local_unnamed_addr #3

declare noundef zeroext i1 @_ZN2fp3API9wallRightEv() local_unnamed_addr #3

declare noundef zeroext i1 @_ZN2fp3API8wallLeftEv() local_unnamed_addr #3

attributes #0 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"omnipotent char", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !9, i64 0}
!9 = !{!"int", !6, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"vtable pointer", !7, i64 0}
!12 = !{!13, !14, i64 2}
!13 = !{!"_ZTSN2fp9AlgorithmE", !14, i64 0, !14, i64 1, !14, i64 2, !15, i64 3, !6, i64 1027, !17, i64 1028, !17, i64 1036, !18, i64 1048, !26, i64 1128, !18, i64 1144, !29, i64 1224, !29, i64 4296, !16, i64 7368, !16, i64 7624, !17, i64 7880, !17, i64 7888, !17, i64 7896, !17, i64 7904, !17, i64 7912}
!14 = !{!"bool", !6, i64 0}
!15 = !{!"_ZTSN2fp4MazeE", !16, i64 0, !16, i64 256, !16, i64 512, !16, i64 768}
!16 = !{!"_ZTSSt5arrayIS_IbLm16EELm16EE", !6, i64 0}
!17 = !{!"_ZTSSt5arrayIiLm2EE", !6, i64 0}
!18 = !{!"_ZTSSt5stackISt5arrayIiLm2EESt5dequeIS1_SaIS1_EEE", !19, i64 0}
!19 = !{!"_ZTSSt5dequeISt5arrayIiLm2EESaIS1_EE", !20, i64 0}
!20 = !{!"_ZTSSt11_Deque_baseISt5arrayIiLm2EESaIS1_EE", !21, i64 0}
!21 = !{!"_ZTSNSt11_Deque_baseISt5arrayIiLm2EESaIS1_EE11_Deque_implE", !22, i64 0}
!22 = !{!"_ZTSNSt11_Deque_baseISt5arrayIiLm2EESaIS1_EE16_Deque_impl_dataE", !23, i64 0, !24, i64 8, !25, i64 16, !25, i64 48}
!23 = !{!"any pointer", !6, i64 0}
!24 = !{!"long", !6, i64 0}
!25 = !{!"_ZTSSt15_Deque_iteratorISt5arrayIiLm2EERS1_PS1_E", !23, i64 0, !23, i64 8, !23, i64 16, !23, i64 24}
!26 = !{!"_ZTSSt10shared_ptrIN2fp14LandBasedRobotEE", !27, i64 0}
!27 = !{!"_ZTSSt12__shared_ptrIN2fp14LandBasedRobotELN9__gnu_cxx12_Lock_policyE2EE", !23, i64 0, !28, i64 8}
!28 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !23, i64 0}
!29 = !{!"_ZTSSt5arrayIS_IN2fp4NodeELm16EELm16EE", !6, i64 0}


; Effective O3 passes: DSEPass,EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,SROAPass,SimplifyCFGPass,TailCallElimPass