; LLVM IR from nubot-nudt/simatch :: src/robot_code/world_model/rtdb/parser (xrtdb)

; 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.yy_buffer_state = type { ptr, ptr, ptr, i64, i32, i32, i32, i32, i32, i32, i32, i32 }

@yyin = external dso_local global ptr, align 8
@yyout = external dso_local global ptr, align 8
@lineNumber = external dso_local global i32, align 4
@yy_init = external hidden global i32, align 4
@yy_start = external hidden global i32, align 4
@stdin = external global ptr, align 8
@stdout = external global ptr, align 8
@yy_buffer_stack = external hidden global ptr, align 8
@yy_buffer_stack_top = external hidden global i64, align 8
@yy_c_buf_p = external hidden global ptr, align 8
@yy_hold_char = external hidden global i8, align 1
@yy_ec = external hidden constant [256 x i32], align 16
@yy_accept = external hidden constant [96 x i16], align 16
@yy_last_accepting_state = external hidden global i32, align 4
@yy_last_accepting_cpos = external hidden global ptr, align 8
@yy_chk = external hidden constant [226 x i16], align 16
@yy_base = external hidden constant [98 x i16], align 16
@yy_def = external hidden constant [98 x i16], align 16
@yy_meta = external hidden constant [40 x i32], align 16
@yy_nxt = external hidden constant [226 x i16], align 16
@yytext = external dso_local global ptr, align 8
@yyleng = external dso_local global i32, align 4
@.str = external hidden unnamed_addr constant [50 x i8], align 1
@yy_n_chars = external hidden global i32, align 4
@yy_did_buffer_switch_on_eof = external hidden global i32, align 4
@.str.1 = external hidden unnamed_addr constant [51 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @yylex(ptr noundef %0) #0 {
  %2 = alloca i32, align 4
  %3 = alloca ptr, align 8
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca i8, align 1
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #4
  %12 = load i32, ptr @yy_init, align 4, !tbaa !9
  %13 = icmp ne i32 %12, 0
  br i1 %13, label %45, label %14

14:                                               ; preds = %1
  store i32 1, ptr @yy_init, align 4, !tbaa !9
  %15 = load i32, ptr @yy_start, align 4, !tbaa !9
  %16 = icmp ne i32 %15, 0
  br i1 %16, label %18, label %17

17:                                               ; preds = %14
  store i32 1, ptr @yy_start, align 4, !tbaa !9
  br label %18

18:                                               ; preds = %17, %14
  %19 = load ptr, ptr @yyin, align 8, !tbaa !5
  %20 = icmp ne ptr %19, null
  br i1 %20, label %23, label %21

21:                                               ; preds = %18
  %22 = load ptr, ptr @stdin, align 8, !tbaa !5
  store ptr %22, ptr @yyin, align 8, !tbaa !5
  br label %23

23:                                               ; preds = %21, %18
  %24 = load ptr, ptr @yyout, align 8, !tbaa !5
  %25 = icmp ne ptr %24, null
  br i1 %25, label %28, label %26

26:                                               ; preds = %23
  %27 = load ptr, ptr @stdout, align 8, !tbaa !5
  store ptr %27, ptr @yyout, align 8, !tbaa !5
  br label %28

28:                                               ; preds = %26, %23
  %29 = load ptr, ptr @yy_buffer_stack, align 8, !tbaa !5
  %30 = icmp ne ptr %29, null
  br i1 %30, label %31, label %37

31:                                               ; preds = %28
  %32 = load ptr, ptr @yy_buffer_stack, align 8, !tbaa !5
  %33 = load i64, ptr @yy_buffer_stack_top, align 8, !tbaa !11
  %34 = getelementptr inbounds ptr, ptr %32, i64 %33
  %35 = load ptr, ptr %34, align 8, !tbaa !5
  %36 = icmp ne ptr %35, null
  br i1 %36, label %44, label %38

37:                                               ; preds = %28
  br i1 false, label %44, label %38

38:                                               ; preds = %37, %31
  call void @yyensure_buffer_stack()
  %39 = load ptr, ptr @yyin, align 8, !tbaa !5
  %40 = call ptr @yy_create_buffer(ptr noundef %39, i32 noundef 16384)
  %41 = load ptr, ptr @yy_buffer_stack, align 8, !tbaa !5
  %42 = load i64, ptr @yy_buffer_stack_top, align 8, !tbaa !11
  %43 = getelementptr inbounds ptr, ptr %41, i64 %42
  store ptr %40, ptr %43, align 8, !tbaa !5
  br label %44

44:                                               ; preds = %38, %37, %31
  call void @yy_load_buffer_state()
  br label %45

45:                                               ; preds = %44, %1
  br label %46

46:                                               ; preds = %302, %45
  br label %47

47:                                               ; preds = %46
  %48 = load ptr, ptr @yy_c_buf_p, align 8, !tbaa !5
  store ptr %48, ptr %5, align 8, !tbaa !5
  %49 = load i8, ptr @yy_hold_char, align 1, !tbaa !13
  %50 = load ptr, ptr %5, align 8, !tbaa !5
  store i8 %49, ptr %50, align 1, !tbaa !13
  %51 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %51, ptr %6, align 8, !tbaa !5
  %52 = load i32, ptr @yy_start, align 4, !tbaa !9
  store i32 %52, ptr %4, align 4, !tbaa !9
  br label %53

53:                                               ; preds = %299, %47
  br label %54

54:                                               ; preds = %117, %53
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #4
  %55 = load ptr, ptr %5, align 8, !tbaa !5
  %56 = load i8, ptr %55, align 1, !tbaa !13
  %57 = zext i8 %56 to i32
  %58 = zext i32 %57 to i64
  %59 = getelementptr inbounds [256 x i32], ptr @yy_ec, i64 0, i64 %58
  %60 = load i32, ptr %59, align 4, !tbaa !9
  %61 = trunc i32 %60 to i8
  store i8 %61, ptr %8, align 1, !tbaa !13
  %62 = load i32, ptr %4, align 4, !tbaa !9
  %63 = sext i32 %62 to i64
  %64 = getelementptr inbounds [96 x i16], ptr @yy_accept, i64 0, i64 %63
  %65 = load i16, ptr %64, align 2, !tbaa !14
  %66 = icmp ne i16 %65, 0
  br i1 %66, label %67, label %70

67:                                               ; preds = %54
  %68 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %68, ptr @yy_last_accepting_state, align 4, !tbaa !9
  %69 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %69, ptr @yy_last_accepting_cpos, align 8, !tbaa !5
  br label %70

70:                                               ; preds = %67, %54
  br label %71

71:                                               ; preds = %101, %70
  %72 = load i32, ptr %4, align 4, !tbaa !9
  %73 = sext i32 %72 to i64
  %74 = getelementptr inbounds [98 x i16], ptr @yy_base, i64 0, i64 %73
  %75 = load i16, ptr %74, align 2, !tbaa !14
  %76 = sext i16 %75 to i32
  %77 = load i8, ptr %8, align 1, !tbaa !13
  %78 = zext i8 %77 to i32
  %79 = add nsw i32 %76, %78
  %80 = sext i32 %79 to i64
  %81 = getelementptr inbounds [226 x i16], ptr @yy_chk, i64 0, i64 %80
  %82 = load i16, ptr %81, align 2, !tbaa !14
  %83 = sext i16 %82 to i32
  %84 = load i32, ptr %4, align 4, !tbaa !9
  %85 = icmp ne i32 %83, %84
  br i1 %85, label %86, label %102

86:                                               ; preds = %71
  %87 = load i32, ptr %4, align 4, !tbaa !9
  %88 = sext i32 %87 to i64
  %89 = getelementptr inbounds [98 x i16], ptr @yy_def, i64 0, i64 %88
  %90 = load i16, ptr %89, align 2, !tbaa !14
  %91 = sext i16 %90 to i32
  store i32 %91, ptr %4, align 4, !tbaa !9
  %92 = load i32, ptr %4, align 4, !tbaa !9
  %93 = icmp sge i32 %92, 96
  br i1 %93, label %94, label %101

94:                                               ; preds = %86
  %95 = load i8, ptr %8, align 1, !tbaa !13
  %96 = zext i8 %95 to i32
  %97 = zext i32 %96 to i64
  %98 = getelementptr inbounds [40 x i32], ptr @yy_meta, i64 0, i64 %97
  %99 = load i32, ptr %98, align 4, !tbaa !9
  %100 = trunc i32 %99 to i8
  store i8 %100, ptr %8, align 1, !tbaa !13
  br label %101

101:                                              ; preds = %94, %86
  br label %71, !llvm.loop !16

102:                                              ; preds = %71
  %103 = load i32, ptr %4, align 4, !tbaa !9
  %104 = sext i32 %103 to i64
  %105 = getelementptr inbounds [98 x i16], ptr @yy_base, i64 0, i64 %104
  %106 = load i16, ptr %105, align 2, !tbaa !14
  %107 = sext i16 %106 to i32
  %108 = load i8, ptr %8, align 1, !tbaa !13
  %109 = zext i8 %108 to i32
  %110 = add i32 %107, %109
  %111 = zext i32 %110 to i64
  %112 = getelementptr inbounds [226 x i16], ptr @yy_nxt, i64 0, i64 %111
  %113 = load i16, ptr %112, align 2, !tbaa !14
  %114 = sext i16 %113 to i32
  store i32 %114, ptr %4, align 4, !tbaa !9
  %115 = load ptr, ptr %5, align 8, !tbaa !5
  %116 = getelementptr inbounds i8, ptr %115, i32 1
  store ptr %116, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #4
  br label %117

117:                                              ; preds = %102
  %118 = load i32, ptr %4, align 4, !tbaa !9
  %119 = icmp ne i32 %118, 95
  br i1 %119, label %54, label %120, !llvm.loop !18

120:                                              ; preds = %117
  %121 = load ptr, ptr @yy_last_accepting_cpos, align 8, !tbaa !5
  store ptr %121, ptr %5, align 8, !tbaa !5
  %122 = load i32, ptr @yy_last_accepting_state, align 4, !tbaa !9
  store i32 %122, ptr %4, align 4, !tbaa !9
  br label %123

123:                                              ; preds = %299, %142, %120
  %124 = load i32, ptr %4, align 4, !tbaa !9
  %125 = sext i32 %124 to i64
  %126 = getelementptr inbounds [96 x i16], ptr @yy_accept, i64 0, i64 %125
  %127 = load i16, ptr %126, align 2, !tbaa !14
  %128 = sext i16 %127 to i32
  store i32 %128, ptr %7, align 4, !tbaa !9
  %129 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %129, ptr @yytext, align 8, !tbaa !5
  %130 = load ptr, ptr %5, align 8, !tbaa !5
  %131 = load ptr, ptr %6, align 8, !tbaa !5
  %132 = ptrtoint ptr %130 to i64
  %133 = ptrtoint ptr %131 to i64
  %134 = sub i64 %132, %133
  %135 = trunc i64 %134 to i32
  store i32 %135, ptr @yyleng, align 4, !tbaa !9
  %136 = load ptr, ptr %5, align 8, !tbaa !5
  %137 = load i8, ptr %136, align 1, !tbaa !13
  store i8 %137, ptr @yy_hold_char, align 1, !tbaa !13
  %138 = load ptr, ptr %5, align 8, !tbaa !5
  store i8 0, ptr %138, align 1, !tbaa !13
  %139 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %139, ptr @yy_c_buf_p, align 8, !tbaa !5
  br label %140

140:                                              ; preds = %299, %123
  %141 = load i32, ptr %7, align 4, !tbaa !9
  switch i32 %141, label %301 [
    i32 0, label %142
    i32 1, label %302
    i32 2, label %147
    i32 3, label %150
    i32 4, label %151
    i32 5, label %152
    i32 6, label %153
    i32 7, label %154
    i32 8, label %155
    i32 9, label %156
    i32 10, label %157
    i32 11, label %158
    i32 12, label %159
    i32 13, label %160
    i32 14, label %161
    i32 15, label %162
    i32 16, label %163
    i32 17, label %164
    i32 18, label %165
    i32 19, label %166
    i32 20, label %167
    i32 21, label %171
    i32 22, label %175
    i32 23, label %179
    i32 24, label %181
    i32 25, label %302
    i32 28, label %184
    i32 29, label %184
    i32 26, label %185
    i32 27, label %197
  ]

142:                                              ; preds = %140
  %143 = load i8, ptr @yy_hold_char, align 1, !tbaa !13
  %144 = load ptr, ptr %5, align 8, !tbaa !5
  store i8 %143, ptr %144, align 1, !tbaa !13
  %145 = load ptr, ptr @yy_last_accepting_cpos, align 8, !tbaa !5
  store ptr %145, ptr %5, align 8, !tbaa !5
  %146 = load i32, ptr @yy_last_accepting_state, align 4, !tbaa !9
  store i32 %146, ptr %4, align 4, !tbaa !9
  br label %123

147:                                              ; preds = %140
  %148 = load i32, ptr @lineNumber, align 4, !tbaa !9
  %149 = add i32 %148, 1
  store i32 %149, ptr @lineNumber, align 4, !tbaa !9
  store i32 277, ptr %2, align 4
  store i32 1, ptr %9, align 4
  br label %303

150:                                              ; preds = %140
  store i32 3, ptr @yy_start, align 4, !tbaa !9
  br label %302

151:                                              ; preds = %140
  store i32 272, ptr %2, align 4
  store i32 1, ptr %9, align 4
  br label %303

152:                                              ; preds = %140
  store i32 273, ptr %2, align 4
  store i32 1, ptr %9, align 4
  br label %303

153:                                              ; preds = %140
  store i32 274, ptr %2, align 4
  store i32 1, ptr %9, align 4
  br label %303

154:                                              ; preds = %140
  store i32 275, ptr %2, align 4
  store i32 1, ptr %9, align 4
  br label %303

155:                                              ; preds = %140
  store i32 276, ptr %2, align 4
  store i32 1, ptr %9, align 4
  br label %303

156:                                              ; preds = %140
  store i32 258, ptr %2, align 4
  store i32 1, ptr %9, align 4
  br label %303

157:                                              ; preds = %140
  store i32 259, ptr %2, align 4
  store i32 1, ptr %9, align 4
  br label %303

158:                                              ; preds = %140
  store i32 260, ptr %2, align 4
  store i32 1, ptr %9, align 4
  br label %303

159:                                              ; preds = %140
  store i32 261, ptr %2, align 4
  store i32 1, ptr %9, align 4
  br label %303

160:                                              ; preds = %140
  store i32 262, ptr %2, align 4
  store i32 1, ptr %9, align 4
  br label %303

161:                                              ; preds = %140
  store i32 263, ptr %2, align 4
  store i32 1, ptr %9, align 4
  br label %303

162:                                              ; preds = %140
  store i32 264, ptr %2, align 4
  store i32 1, ptr %9, align 4
  br label %303

163:                                              ; preds = %140
  store i32 265, ptr %2, align 4
  store i32 1, ptr %9, align 4
  br label %303

164:                                              ; preds = %140
  store i32 266, ptr %2, align 4
  store i32 1, ptr %9, align 4
  br label %303

165:                                              ; preds = %140
  store i32 267, ptr %2, align 4
  store i32 1, ptr %9, align 4
  br label %303

166:                                              ; preds = %140
  store i32 268, ptr %2, align 4
  store i32 1, ptr %9, align 4
  br label %303

167:                                              ; preds = %140
  %168 = load ptr, ptr @yytext, align 8, !tbaa !5
  %169 = call noalias ptr @strdup(ptr noundef %168) #4
  %170 = load ptr, ptr %3, align 8, !tbaa !5
  store ptr %169, ptr %170, align 8, !tbaa !5
  store i32 269, ptr %2, align 4
  store i32 1, ptr %9, align 4
  br label %303

171:                                              ; preds = %140
  %172 = load ptr, ptr @yytext, align 8, !tbaa !5
  %173 = call noalias ptr @strdup(ptr noundef %172) #4
  %174 = load ptr, ptr %3, align 8, !tbaa !5
  store ptr %173, ptr %174, align 8, !tbaa !5
  store i32 270, ptr %2, align 4
  store i32 1, ptr %9, align 4
  br label %303

175:                                              ; preds = %140
  %176 = load ptr, ptr @yytext, align 8, !tbaa !5
  %177 = call noalias ptr @strdup(ptr noundef %176) #4
  %178 = load ptr, ptr %3, align 8, !tbaa !5
  store ptr %177, ptr %178, align 8, !tbaa !5
  store i32 271, ptr %2, align 4
  store i32 1, ptr %9, align 4
  br label %303

179:                                              ; preds = %140
  %180 = load i32, ptr @lineNumber, align 4, !tbaa !9
  call void @raiseError(i32 noundef %180, ptr noundef @.str)
  br label %302

181:                                              ; preds = %140
  %182 = load i32, ptr @lineNumber, align 4, !tbaa !9
  %183 = add i32 %182, 1
  store i32 %183, ptr @lineNumber, align 4, !tbaa !9
  store i32 1, ptr @yy_start, align 4, !tbaa !9
  store i32 277, ptr %2, align 4
  store i32 1, ptr %9, align 4
  br label %303

184:                                              ; preds = %140, %140
  store i32 278, ptr %2, align 4
  store i32 1, ptr %9, align 4
  br label %303

185:                                              ; preds = %140
  br label %186

186:                                              ; preds = %185
  %187 = load ptr, ptr @yytext, align 8, !tbaa !5
  %188 = load i32, ptr @yyleng, align 4, !tbaa !9
  %189 = sext i32 %188 to i64
  %190 = load ptr, ptr @yyout, align 8, !tbaa !5
  %191 = call i64 @fwrite(ptr noundef %187, i64 noundef %189, i64 noundef 1, ptr noundef %190)
  %192 = icmp ne i64 %191, 0
  br i1 %192, label %193, label %194

193:                                              ; preds = %186
  br label %194

194:                                              ; preds = %193, %186
  br label %195

195:                                              ; preds = %194
  br label %196

196:                                              ; preds = %195
  br label %302

197:                                              ; preds = %140
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #4
  %198 = load ptr, ptr %5, align 8, !tbaa !5
  %199 = load ptr, ptr @yytext, align 8, !tbaa !5
  %200 = ptrtoint ptr %198 to i64
  %201 = ptrtoint ptr %199 to i64
  %202 = sub i64 %200, %201
  %203 = trunc i64 %202 to i32
  %204 = sub nsw i32 %203, 1
  store i32 %204, ptr %10, align 4, !tbaa !9
  %205 = load i8, ptr @yy_hold_char, align 1, !tbaa !13
  %206 = load ptr, ptr %5, align 8, !tbaa !5
  store i8 %205, ptr %206, align 1, !tbaa !13
  %207 = load ptr, ptr @yy_buffer_stack, align 8, !tbaa !5
  %208 = load i64, ptr @yy_buffer_stack_top, align 8, !tbaa !11
  %209 = getelementptr inbounds ptr, ptr %207, i64 %208
  %210 = load ptr, ptr %209, align 8, !tbaa !5
  %211 = getelementptr inbounds %struct.yy_buffer_state, ptr %210, i32 0, i32 11
  %212 = load i32, ptr %211, align 4, !tbaa !19
  %213 = icmp eq i32 %212, 0
  br i1 %213, label %214, label %232

214:                                              ; preds = %197
  %215 = load ptr, ptr @yy_buffer_stack, align 8, !tbaa !5
  %216 = load i64, ptr @yy_buffer_stack_top, align 8, !tbaa !11
  %217 = getelementptr inbounds ptr, ptr %215, i64 %216
  %218 = load ptr, ptr %217, align 8, !tbaa !5
  %219 = getelementptr inbounds %struct.yy_buffer_state, ptr %218, i32 0, i32 4
  %220 = load i32, ptr %219, align 8, !tbaa !21
  store i32 %220, ptr @yy_n_chars, align 4, !tbaa !9
  %221 = load ptr, ptr @yyin, align 8, !tbaa !5
  %222 = load ptr, ptr @yy_buffer_stack, align 8, !tbaa !5
  %223 = load i64, ptr @yy_buffer_stack_top, align 8, !tbaa !11
  %224 = getelementptr inbounds ptr, ptr %222, i64 %223
  %225 = load ptr, ptr %224, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct.yy_buffer_state, ptr %225, i32 0, i32 0
  store ptr %221, ptr %226, align 8, !tbaa !22
  %227 = load ptr, ptr @yy_buffer_stack, align 8, !tbaa !5
  %228 = load i64, ptr @yy_buffer_stack_top, align 8, !tbaa !11
  %229 = getelementptr inbounds ptr, ptr %227, i64 %228
  %230 = load ptr, ptr %229, align 8, !tbaa !5
  %231 = getelementptr inbounds %struct.yy_buffer_state, ptr %230, i32 0, i32 11
  store i32 1, ptr %231, align 4, !tbaa !19
  br label %232

232:                                              ; preds = %214, %197
  %233 = load ptr, ptr @yy_c_buf_p, align 8, !tbaa !5
  %234 = load ptr, ptr @yy_buffer_stack, align 8, !tbaa !5
  %235 = load i64, ptr @yy_buffer_stack_top, align 8, !tbaa !11
  %236 = getelementptr inbounds ptr, ptr %234, i64 %235
  %237 = load ptr, ptr %236, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.yy_buffer_state, ptr %237, i32 0, i32 1
  %239 = load ptr, ptr %238, align 8, !tbaa !23
  %240 = load i32, ptr @yy_n_chars, align 4, !tbaa !9
  %241 = sext i32 %240 to i64
  %242 = getelementptr inbounds i8, ptr %239, i64 %241
  %243 = icmp ule ptr %233, %242
  br i1 %243, label %244, label %264

244:                                              ; preds = %232
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #4
  %245 = load ptr, ptr @yytext, align 8, !tbaa !5
  %246 = load i32, ptr %10, align 4, !tbaa !9
  %247 = sext i32 %246 to i64
  %248 = getelementptr inbounds i8, ptr %245, i64 %247
  store ptr %248, ptr @yy_c_buf_p, align 8, !tbaa !5
  %249 = call i32 @yy_get_previous_state()
  store i32 %249, ptr %4, align 4, !tbaa !9
  %250 = load i32, ptr %4, align 4, !tbaa !9
  %251 = call i32 @yy_try_NUL_trans(i32 noundef %250)
  store i32 %251, ptr %11, align 4, !tbaa !9
  %252 = load ptr, ptr @yytext, align 8, !tbaa !5
  %253 = getelementptr inbounds i8, ptr %252, i64 0
  store ptr %253, ptr %6, align 8, !tbaa !5
  %254 = load i32, ptr %11, align 4, !tbaa !9
  %255 = icmp ne i32 %254, 0
  br i1 %255, label %256, label %260

256:                                              ; preds = %244
  %257 = load ptr, ptr @yy_c_buf_p, align 8, !tbaa !5
  %258 = getelementptr inbounds i8, ptr %257, i32 1
  store ptr %258, ptr @yy_c_buf_p, align 8, !tbaa !5
  store ptr %258, ptr %5, align 8, !tbaa !5
  %259 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %259, ptr %4, align 4, !tbaa !9
  store i32 4, ptr %9, align 4
  br label %263

260:                                              ; preds = %244
  %261 = load ptr, ptr @yy_last_accepting_cpos, align 8, !tbaa !5
  store ptr %261, ptr %5, align 8, !tbaa !5
  %262 = load i32, ptr @yy_last_accepting_state, align 4, !tbaa !9
  store i32 %262, ptr %4, align 4, !tbaa !9
  store i32 9, ptr %9, align 4
  br label %263

263:                                              ; preds = %260, %256
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #4
  br label %299

264:                                              ; preds = %232
  %265 = call i32 @yy_get_next_buffer()
  switch i32 %265, label %297 [
    i32 1, label %266
    i32 0, label %274
    i32 2, label %283
  ]

266:                                              ; preds = %264
  store i32 0, ptr @yy_did_buffer_switch_on_eof, align 4, !tbaa !9
  %267 = load ptr, ptr @yytext, align 8, !tbaa !5
  %268 = getelementptr inbounds i8, ptr %267, i64 0
  store ptr %268, ptr @yy_c_buf_p, align 8, !tbaa !5
  %269 = load i32, ptr @yy_start, align 4, !tbaa !9
  %270 = sub nsw i32 %269, 1
  %271 = sdiv i32 %270, 2
  %272 = add nsw i32 27, %271
  %273 = add nsw i32 %272, 1
  store i32 %273, ptr %7, align 4, !tbaa !9
  store i32 10, ptr %9, align 4
  br label %299

274:                                              ; preds = %264
  %275 = load ptr, ptr @yytext, align 8, !tbaa !5
  %276 = load i32, ptr %10, align 4, !tbaa !9
  %277 = sext i32 %276 to i64
  %278 = getelementptr inbounds i8, ptr %275, i64 %277
  store ptr %278, ptr @yy_c_buf_p, align 8, !tbaa !5
  %279 = call i32 @yy_get_previous_state()
  store i32 %279, ptr %4, align 4, !tbaa !9
  %280 = load ptr, ptr @yy_c_buf_p, align 8, !tbaa !5
  store ptr %280, ptr %5, align 8, !tbaa !5
  %281 = load ptr, ptr @yytext, align 8, !tbaa !5
  %282 = getelementptr inbounds i8, ptr %281, i64 0
  store ptr %282, ptr %6, align 8, !tbaa !5
  store i32 4, ptr %9, align 4
  br label %299

283:                                              ; preds = %264
  %284 = load ptr, ptr @yy_buffer_stack, align 8, !tbaa !5
  %285 = load i64, ptr @yy_buffer_stack_top, align 8, !tbaa !11
  %286 = getelementptr inbounds ptr, ptr %284, i64 %285
  %287 = load ptr, ptr %286, align 8, !tbaa !5
  %288 = getelementptr inbounds %struct.yy_buffer_state, ptr %287, i32 0, i32 1
  %289 = load ptr, ptr %288, align 8, !tbaa !23
  %290 = load i32, ptr @yy_n_chars, align 4, !tbaa !9
  %291 = sext i32 %290 to i64
  %292 = getelementptr inbounds i8, ptr %289, i64 %291
  store ptr %292, ptr @yy_c_buf_p, align 8, !tbaa !5
  %293 = call i32 @yy_get_previous_state()
  store i32 %293, ptr %4, align 4, !tbaa !9
  %294 = load ptr, ptr @yy_c_buf_p, align 8, !tbaa !5
  store ptr %294, ptr %5, align 8, !tbaa !5
  %295 = load ptr, ptr @yytext, align 8, !tbaa !5
  %296 = getelementptr inbounds i8, ptr %295, i64 0
  store ptr %296, ptr %6, align 8, !tbaa !5
  store i32 9, ptr %9, align 4
  br label %299

297:                                              ; preds = %264
  br label %298

298:                                              ; preds = %297
  store i32 11, ptr %9, align 4
  br label %299

299:                                              ; preds = %298, %283, %274, %266, %263
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #4
  %300 = load i32, ptr %9, align 4
  switch i32 %300, label %305 [
    i32 4, label %53
    i32 9, label %123
    i32 10, label %140
    i32 11, label %302
  ]

301:                                              ; preds = %140
  call void @yy_fatal_error(ptr noundef @.str.1)
  br label %302

302:                                              ; preds = %301, %299, %196, %179, %150, %140, %140
  br label %46

303:                                              ; preds = %184, %181, %175, %171, %167, %166, %165, %164, %163, %162, %161, %160, %159, %158, %157, %156, %155, %154, %153, %152, %151, %147
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #4
  %304 = load i32, ptr %2, align 4
  ret i32 %304

305:                                              ; preds = %299
  unreachable
}

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

; Function Attrs: nounwind uwtable
declare hidden void @yyensure_buffer_stack() #0

; Function Attrs: nounwind uwtable
declare dso_local ptr @yy_create_buffer(ptr noundef, i32 noundef) #0

; Function Attrs: nounwind uwtable
declare hidden void @yy_load_buffer_state() #0

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

; Function Attrs: nounwind
declare noalias ptr @strdup(ptr noundef) #2

declare void @raiseError(i32 noundef, ptr noundef) #3

declare i64 @fwrite(ptr noundef, i64 noundef, i64 noundef, ptr noundef) #3

; Function Attrs: nounwind uwtable
declare hidden i32 @yy_get_previous_state() #0

; Function Attrs: nounwind uwtable
declare hidden i32 @yy_try_NUL_trans(i32 noundef) #0

; Function Attrs: nounwind uwtable
declare hidden i32 @yy_get_next_buffer() #0

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

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 = { 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 = { "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 = !{!"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 = !{!"long", !7, i64 0}
!13 = !{!7, !7, i64 0}
!14 = !{!15, !15, i64 0}
!15 = !{!"short", !7, i64 0}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = distinct !{!18, !17}
!19 = !{!20, !10, i64 60}
!20 = !{!"yy_buffer_state", !6, i64 0, !6, i64 8, !6, i64 16, !12, i64 24, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60}
!21 = !{!20, !10, i64 32}
!22 = !{!20, !6, i64 0}
!23 = !{!20, !6, i64 8}


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

@yyin = external dso_local local_unnamed_addr global ptr, align 8
@yyout = external dso_local local_unnamed_addr global ptr, align 8
@lineNumber = external dso_local local_unnamed_addr global i32, align 4
@yy_init = external hidden local_unnamed_addr global i32, align 4
@yy_start = external hidden local_unnamed_addr global i32, align 4
@stdin = external local_unnamed_addr global ptr, align 8
@stdout = external local_unnamed_addr global ptr, align 8
@yy_buffer_stack = external hidden local_unnamed_addr global ptr, align 8
@yy_buffer_stack_top = external hidden local_unnamed_addr global i64, align 8
@yy_c_buf_p = external hidden local_unnamed_addr global ptr, align 8
@yy_hold_char = external hidden local_unnamed_addr global i8, align 1
@yy_ec = external hidden local_unnamed_addr constant [256 x i32], align 16
@yy_accept = external hidden local_unnamed_addr constant [96 x i16], align 16
@yy_last_accepting_state = external hidden local_unnamed_addr global i32, align 4
@yy_last_accepting_cpos = external hidden local_unnamed_addr global ptr, align 8
@yy_chk = external hidden local_unnamed_addr constant [226 x i16], align 16
@yy_base = external hidden local_unnamed_addr constant [98 x i16], align 16
@yy_def = external hidden local_unnamed_addr constant [98 x i16], align 16
@yy_meta = external hidden local_unnamed_addr constant [40 x i32], align 16
@yy_nxt = external hidden local_unnamed_addr constant [226 x i16], align 16
@yytext = external dso_local local_unnamed_addr global ptr, align 8
@yyleng = external dso_local local_unnamed_addr global i32, align 4
@.str = external hidden unnamed_addr constant [50 x i8], align 1
@yy_n_chars = external hidden local_unnamed_addr global i32, align 4
@yy_did_buffer_switch_on_eof = external hidden local_unnamed_addr global i32, align 4
@.str.1 = external hidden unnamed_addr constant [51 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local range(i32 258, 279) i32 @yylex(ptr nocapture noundef writeonly %0) local_unnamed_addr #0 {
  %2 = load i32, ptr @yy_init, align 4, !tbaa !5
  %.not = icmp eq i32 %2, 0
  br i1 %.not, label %3, label %.thread.preheader

3:                                                ; preds = %1
  store i32 1, ptr @yy_init, align 4, !tbaa !5
  %4 = load i32, ptr @yy_start, align 4, !tbaa !5
  %.not56 = icmp eq i32 %4, 0
  br i1 %.not56, label %5, label %6

5:                                                ; preds = %3
  store i32 1, ptr @yy_start, align 4, !tbaa !5
  br label %6

6:                                                ; preds = %5, %3
  %7 = load ptr, ptr @yyin, align 8, !tbaa !9
  %.not57 = icmp eq ptr %7, null
  br i1 %.not57, label %8, label %10

8:                                                ; preds = %6
  %9 = load ptr, ptr @stdin, align 8, !tbaa !9
  store ptr %9, ptr @yyin, align 8, !tbaa !9
  br label %10

10:                                               ; preds = %8, %6
  %11 = load ptr, ptr @yyout, align 8, !tbaa !9
  %.not58 = icmp eq ptr %11, null
  br i1 %.not58, label %12, label %14

12:                                               ; preds = %10
  %13 = load ptr, ptr @stdout, align 8, !tbaa !9
  store ptr %13, ptr @yyout, align 8, !tbaa !9
  br label %14

14:                                               ; preds = %12, %10
  %15 = load ptr, ptr @yy_buffer_stack, align 8, !tbaa !9
  %.not59 = icmp eq ptr %15, null
  br i1 %.not59, label %20, label %16

16:                                               ; preds = %14
  %17 = load i64, ptr @yy_buffer_stack_top, align 8, !tbaa !11
  %18 = getelementptr inbounds ptr, ptr %15, i64 %17
  %19 = load ptr, ptr %18, align 8, !tbaa !9
  %.not60 = icmp eq ptr %19, null
  br i1 %.not60, label %20, label %26

20:                                               ; preds = %14, %16
  tail call void @yyensure_buffer_stack()
  %21 = load ptr, ptr @yyin, align 8, !tbaa !9
  %22 = tail call ptr @yy_create_buffer(ptr noundef %21, i32 noundef 16384)
  %23 = load ptr, ptr @yy_buffer_stack, align 8, !tbaa !9
  %24 = load i64, ptr @yy_buffer_stack_top, align 8, !tbaa !11
  %25 = getelementptr inbounds ptr, ptr %23, i64 %24
  store ptr %22, ptr %25, align 8, !tbaa !9
  br label %26

26:                                               ; preds = %20, %16
  tail call void @yy_load_buffer_state()
  br label %.thread.preheader

.thread.preheader:                                ; preds = %26, %1
  br label %.thread

.thread:                                          ; preds = %.thread.backedge, %.thread.preheader
  %27 = load ptr, ptr @yy_c_buf_p, align 8, !tbaa !9
  %28 = load i8, ptr @yy_hold_char, align 1, !tbaa !13
  store i8 %28, ptr %27, align 1, !tbaa !13
  %29 = load i32, ptr @yy_start, align 4, !tbaa !5
  br label %.loopexit71

.loopexit71:                                      ; preds = %.loopexit71.backedge, %.thread
  %.047 = phi ptr [ %27, %.thread ], [ %.047.be, %.loopexit71.backedge ]
  %.043 = phi ptr [ %27, %.thread ], [ %.043.be, %.loopexit71.backedge ]
  %.036 = phi i32 [ %29, %.thread ], [ %.036.be, %.loopexit71.backedge ]
  br label %30

30:                                               ; preds = %._crit_edge, %.loopexit71
  %.148 = phi ptr [ %.047, %.loopexit71 ], [ %73, %._crit_edge ]
  %.1 = phi i32 [ %.036, %.loopexit71 ], [ %72, %._crit_edge ]
  %31 = load i8, ptr %.148, align 1, !tbaa !13
  %32 = zext i8 %31 to i64
  %33 = getelementptr inbounds [256 x i32], ptr @yy_ec, i64 0, i64 %32
  %34 = load i32, ptr %33, align 4, !tbaa !5
  %35 = trunc i32 %34 to i8
  %36 = sext i32 %.1 to i64
  %37 = getelementptr inbounds [96 x i16], ptr @yy_accept, i64 0, i64 %36
  %38 = load i16, ptr %37, align 2, !tbaa !14
  %.not61 = icmp eq i16 %38, 0
  br i1 %.not61, label %40, label %39

39:                                               ; preds = %30
  store i32 %.1, ptr @yy_last_accepting_state, align 4, !tbaa !5
  store ptr %.148, ptr @yy_last_accepting_cpos, align 8, !tbaa !9
  br label %40

40:                                               ; preds = %39, %30
  %41 = getelementptr inbounds [98 x i16], ptr @yy_base, i64 0, i64 %36
  %42 = load i16, ptr %41, align 2, !tbaa !14
  %43 = sext i16 %42 to i32
  %44 = and i32 %34, 255
  %45 = add nsw i32 %44, %43
  %46 = sext i32 %45 to i64
  %47 = getelementptr inbounds [226 x i16], ptr @yy_chk, i64 0, i64 %46
  %48 = load i16, ptr %47, align 2, !tbaa !14
  %49 = sext i16 %48 to i32
  %.not62139 = icmp eq i32 %.1, %49
  br i1 %.not62139, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %40, %59
  %50 = phi i64 [ %60, %59 ], [ %36, %40 ]
  %.039140 = phi i8 [ %.140, %59 ], [ %35, %40 ]
  %51 = getelementptr inbounds [98 x i16], ptr @yy_def, i64 0, i64 %50
  %52 = load i16, ptr %51, align 2, !tbaa !14
  %53 = icmp sgt i16 %52, 95
  br i1 %53, label %54, label %59

54:                                               ; preds = %.lr.ph
  %55 = zext i8 %.039140 to i64
  %56 = getelementptr inbounds [40 x i32], ptr @yy_meta, i64 0, i64 %55
  %57 = load i32, ptr %56, align 4, !tbaa !5
  %58 = trunc i32 %57 to i8
  br label %59

59:                                               ; preds = %54, %.lr.ph
  %.140 = phi i8 [ %58, %54 ], [ %.039140, %.lr.ph ]
  %60 = sext i16 %52 to i64
  %61 = getelementptr inbounds [98 x i16], ptr @yy_base, i64 0, i64 %60
  %62 = load i16, ptr %61, align 2, !tbaa !14
  %63 = sext i16 %62 to i32
  %64 = zext i8 %.140 to i32
  %65 = add nsw i32 %63, %64
  %66 = sext i32 %65 to i64
  %67 = getelementptr inbounds [226 x i16], ptr @yy_chk, i64 0, i64 %66
  %68 = load i16, ptr %67, align 2, !tbaa !14
  %.not62 = icmp eq i16 %52, %68
  br i1 %.not62, label %._crit_edge, label %.lr.ph, !llvm.loop !16

._crit_edge:                                      ; preds = %59, %40
  %.lcssa = phi i32 [ %45, %40 ], [ %65, %59 ]
  %69 = zext i32 %.lcssa to i64
  %70 = getelementptr inbounds [226 x i16], ptr @yy_nxt, i64 0, i64 %69
  %71 = load i16, ptr %70, align 2, !tbaa !14
  %72 = sext i16 %71 to i32
  %73 = getelementptr inbounds i8, ptr %.148, i64 1
  %.not63 = icmp eq i16 %71, 95
  br i1 %.not63, label %74, label %30, !llvm.loop !18

74:                                               ; preds = %._crit_edge
  %75 = load i32, ptr @yy_last_accepting_state, align 4, !tbaa !5
  br label %.backedge.outer

.backedge.outer:                                  ; preds = %.backedge.outer.backedge, %74
  %.249.in.ph = phi ptr [ @yy_last_accepting_cpos, %74 ], [ %.249.in.ph.be, %.backedge.outer.backedge ]
  %.144.ph = phi ptr [ %.043, %74 ], [ %.144.ph.be, %.backedge.outer.backedge ]
  %.3.ph = phi i32 [ %75, %74 ], [ %.3.ph.be, %.backedge.outer.backedge ]
  %76 = ptrtoint ptr %.144.ph to i64
  br label %.backedge

.backedge:                                        ; preds = %.backedge.outer, %86
  %.249.in = phi ptr [ @yy_last_accepting_cpos, %86 ], [ %.249.in.ph, %.backedge.outer ]
  %.3 = phi i32 [ %88, %86 ], [ %.3.ph, %.backedge.outer ]
  %.249 = load ptr, ptr %.249.in, align 8, !tbaa !9
  %77 = sext i32 %.3 to i64
  %78 = getelementptr inbounds [96 x i16], ptr @yy_accept, i64 0, i64 %77
  %79 = load i16, ptr %78, align 2, !tbaa !14
  %80 = sext i16 %79 to i32
  store ptr %.144.ph, ptr @yytext, align 8, !tbaa !9
  %81 = ptrtoint ptr %.249 to i64
  %82 = sub i64 %81, %76
  %83 = trunc i64 %82 to i32
  store i32 %83, ptr @yyleng, align 4, !tbaa !5
  %84 = load i8, ptr %.249, align 1, !tbaa !13
  store i8 %84, ptr @yy_hold_char, align 1, !tbaa !13
  store i8 0, ptr %.249, align 1, !tbaa !13
  store ptr %.249, ptr @yy_c_buf_p, align 8, !tbaa !9
  br label %85

85:                                               ; preds = %191, %.backedge
  %.041 = phi i32 [ %80, %.backedge ], [ %196, %191 ]
  switch i32 %.041, label %197 [
    i32 0, label %86
    i32 1, label %.thread.backedge
    i32 2, label %89
    i32 3, label %92
    i32 4, label %.loopexit
    i32 5, label %.loopexit141
    i32 6, label %.loopexit229
    i32 7, label %.loopexit247
    i32 8, label %.loopexit282
    i32 9, label %198
    i32 10, label %93
    i32 11, label %94
    i32 12, label %95
    i32 13, label %96
    i32 14, label %97
    i32 15, label %98
    i32 16, label %99
    i32 17, label %100
    i32 18, label %101
    i32 19, label %102
    i32 20, label %103
    i32 21, label %106
    i32 22, label %109
    i32 23, label %112
    i32 24, label %114
    i32 25, label %.thread.backedge
    i32 28, label %117
    i32 29, label %117
    i32 26, label %118
    i32 27, label %124
  ]

86:                                               ; preds = %85
  %87 = load i8, ptr @yy_hold_char, align 1, !tbaa !13
  store i8 %87, ptr %.249, align 1, !tbaa !13
  %88 = load i32, ptr @yy_last_accepting_state, align 4, !tbaa !5
  br label %.backedge

89:                                               ; preds = %85
  %90 = load i32, ptr @lineNumber, align 4, !tbaa !5
  %91 = add i32 %90, 1
  store i32 %91, ptr @lineNumber, align 4, !tbaa !5
  br label %198

92:                                               ; preds = %85
  store i32 3, ptr @yy_start, align 4, !tbaa !5
  br label %.thread.backedge

93:                                               ; preds = %85
  br label %198

94:                                               ; preds = %85
  br label %198

95:                                               ; preds = %85
  br label %198

96:                                               ; preds = %85
  br label %198

97:                                               ; preds = %85
  br label %198

98:                                               ; preds = %85
  br label %198

99:                                               ; preds = %85
  br label %198

100:                                              ; preds = %85
  br label %198

101:                                              ; preds = %85
  br label %198

102:                                              ; preds = %85
  br label %198

103:                                              ; preds = %85
  %104 = load ptr, ptr @yytext, align 8, !tbaa !9
  %105 = tail call noalias ptr @strdup(ptr noundef %104) #4
  store ptr %105, ptr %0, align 8, !tbaa !9
  br label %198

106:                                              ; preds = %85
  %107 = load ptr, ptr @yytext, align 8, !tbaa !9
  %108 = tail call noalias ptr @strdup(ptr noundef %107) #4
  store ptr %108, ptr %0, align 8, !tbaa !9
  br label %198

109:                                              ; preds = %85
  %110 = load ptr, ptr @yytext, align 8, !tbaa !9
  %111 = tail call noalias ptr @strdup(ptr noundef %110) #4
  store ptr %111, ptr %0, align 8, !tbaa !9
  br label %198

112:                                              ; preds = %85
  %113 = load i32, ptr @lineNumber, align 4, !tbaa !5
  tail call void @raiseError(i32 noundef %113, ptr noundef nonnull @.str) #4
  br label %.thread.backedge

114:                                              ; preds = %85
  %115 = load i32, ptr @lineNumber, align 4, !tbaa !5
  %116 = add i32 %115, 1
  store i32 %116, ptr @lineNumber, align 4, !tbaa !5
  store i32 1, ptr @yy_start, align 4, !tbaa !5
  br label %198

117:                                              ; preds = %85, %85
  br label %198

118:                                              ; preds = %85
  %119 = load ptr, ptr @yytext, align 8, !tbaa !9
  %120 = load i32, ptr @yyleng, align 4, !tbaa !5
  %121 = sext i32 %120 to i64
  %122 = load ptr, ptr @yyout, align 8, !tbaa !9
  %123 = tail call i64 @fwrite(ptr noundef %119, i64 noundef %121, i64 noundef 1, ptr noundef %122)
  br label %.thread.backedge

124:                                              ; preds = %85
  %125 = load ptr, ptr @yytext, align 8, !tbaa !9
  %126 = load i8, ptr @yy_hold_char, align 1, !tbaa !13
  store i8 %126, ptr %.249, align 1, !tbaa !13
  %127 = load ptr, ptr @yy_buffer_stack, align 8, !tbaa !9
  %128 = load i64, ptr @yy_buffer_stack_top, align 8, !tbaa !11
  %129 = getelementptr inbounds ptr, ptr %127, i64 %128
  %130 = load ptr, ptr %129, align 8, !tbaa !9
  %131 = getelementptr inbounds i8, ptr %130, i64 60
  %132 = load i32, ptr %131, align 4, !tbaa !19
  %133 = icmp eq i32 %132, 0
  br i1 %133, label %134, label %._crit_edge209

._crit_edge209:                                   ; preds = %124
  %.pre = load i32, ptr @yy_n_chars, align 4, !tbaa !5
  br label %142

134:                                              ; preds = %124
  %135 = getelementptr inbounds i8, ptr %130, i64 32
  %136 = load i32, ptr %135, align 8, !tbaa !21
  store i32 %136, ptr @yy_n_chars, align 4, !tbaa !5
  %137 = load ptr, ptr @yyin, align 8, !tbaa !9
  store ptr %137, ptr %130, align 8, !tbaa !22
  %138 = load ptr, ptr @yy_buffer_stack, align 8, !tbaa !9
  %139 = getelementptr inbounds ptr, ptr %138, i64 %128
  %140 = load ptr, ptr %139, align 8, !tbaa !9
  %141 = getelementptr inbounds i8, ptr %140, i64 60
  store i32 1, ptr %141, align 4, !tbaa !19
  br label %142

142:                                              ; preds = %._crit_edge209, %134
  %143 = phi i32 [ %136, %134 ], [ %.pre, %._crit_edge209 ]
  %144 = phi ptr [ %140, %134 ], [ %130, %._crit_edge209 ]
  %145 = load ptr, ptr @yy_c_buf_p, align 8, !tbaa !9
  %146 = getelementptr inbounds i8, ptr %144, i64 8
  %147 = load ptr, ptr %146, align 8, !tbaa !23
  %148 = sext i32 %143 to i64
  %149 = getelementptr inbounds i8, ptr %147, i64 %148
  %.not64 = icmp ugt ptr %145, %149
  br i1 %.not64, label %166, label %150

150:                                              ; preds = %142
  %151 = ptrtoint ptr %.249 to i64
  %152 = ptrtoint ptr %125 to i64
  %153 = xor i64 %152, -1
  %154 = add i64 %153, %151
  %155 = load ptr, ptr @yytext, align 8, !tbaa !9
  %sext = shl i64 %154, 32
  %156 = ashr exact i64 %sext, 32
  %157 = getelementptr inbounds i8, ptr %155, i64 %156
  store ptr %157, ptr @yy_c_buf_p, align 8, !tbaa !9
  %158 = tail call i32 @yy_get_previous_state()
  %159 = tail call i32 @yy_try_NUL_trans(i32 noundef %158)
  %160 = load ptr, ptr @yytext, align 8, !tbaa !9
  %.not65 = icmp eq i32 %159, 0
  br i1 %.not65, label %164, label %161

161:                                              ; preds = %150
  %162 = load ptr, ptr @yy_c_buf_p, align 8, !tbaa !9
  %163 = getelementptr inbounds i8, ptr %162, i64 1
  store ptr %163, ptr @yy_c_buf_p, align 8, !tbaa !9
  br label %.loopexit71.backedge

164:                                              ; preds = %150
  %165 = load i32, ptr @yy_last_accepting_state, align 4, !tbaa !5
  br label %.backedge.outer.backedge

.backedge.outer.backedge:                         ; preds = %164, %179
  %.249.in.ph.be = phi ptr [ @yy_c_buf_p, %179 ], [ @yy_last_accepting_cpos, %164 ]
  %.144.ph.be = phi ptr [ %190, %179 ], [ %160, %164 ]
  %.3.ph.be = phi i32 [ %189, %179 ], [ %165, %164 ]
  br label %.backedge.outer

166:                                              ; preds = %142
  %167 = tail call i32 @yy_get_next_buffer()
  switch i32 %167, label %.thread.backedge [
    i32 1, label %191
    i32 0, label %168
    i32 2, label %179
  ]

168:                                              ; preds = %166
  %169 = ptrtoint ptr %.249 to i64
  %170 = ptrtoint ptr %125 to i64
  %171 = xor i64 %170, -1
  %172 = add i64 %171, %169
  %173 = load ptr, ptr @yytext, align 8, !tbaa !9
  %sext246 = shl i64 %172, 32
  %174 = ashr exact i64 %sext246, 32
  %175 = getelementptr inbounds i8, ptr %173, i64 %174
  store ptr %175, ptr @yy_c_buf_p, align 8, !tbaa !9
  %176 = tail call i32 @yy_get_previous_state()
  %177 = load ptr, ptr @yy_c_buf_p, align 8, !tbaa !9
  %178 = load ptr, ptr @yytext, align 8, !tbaa !9
  br label %.loopexit71.backedge

.loopexit71.backedge:                             ; preds = %168, %161
  %.047.be = phi ptr [ %163, %161 ], [ %177, %168 ]
  %.043.be = phi ptr [ %160, %161 ], [ %178, %168 ]
  %.036.be = phi i32 [ %159, %161 ], [ %176, %168 ]
  br label %.loopexit71

179:                                              ; preds = %166
  %180 = load ptr, ptr @yy_buffer_stack, align 8, !tbaa !9
  %181 = load i64, ptr @yy_buffer_stack_top, align 8, !tbaa !11
  %182 = getelementptr inbounds ptr, ptr %180, i64 %181
  %183 = load ptr, ptr %182, align 8, !tbaa !9
  %184 = getelementptr inbounds i8, ptr %183, i64 8
  %185 = load ptr, ptr %184, align 8, !tbaa !23
  %186 = load i32, ptr @yy_n_chars, align 4, !tbaa !5
  %187 = sext i32 %186 to i64
  %188 = getelementptr inbounds i8, ptr %185, i64 %187
  store ptr %188, ptr @yy_c_buf_p, align 8, !tbaa !9
  %189 = tail call i32 @yy_get_previous_state()
  %190 = load ptr, ptr @yytext, align 8, !tbaa !9
  br label %.backedge.outer.backedge

191:                                              ; preds = %166
  store i32 0, ptr @yy_did_buffer_switch_on_eof, align 4, !tbaa !5
  %192 = load ptr, ptr @yytext, align 8, !tbaa !9
  store ptr %192, ptr @yy_c_buf_p, align 8, !tbaa !9
  %193 = load i32, ptr @yy_start, align 4, !tbaa !5
  %194 = add nsw i32 %193, -1
  %195 = sdiv i32 %194, 2
  %196 = add nsw i32 %195, 28
  br label %85

197:                                              ; preds = %85
  tail call void @yy_fatal_error(ptr noundef nonnull @.str.1)
  br label %.thread.backedge

.thread.backedge:                                 ; preds = %85, %85, %166, %197, %118, %112, %92
  br label %.thread

.loopexit:                                        ; preds = %85
  br label %198

.loopexit141:                                     ; preds = %85
  br label %198

.loopexit229:                                     ; preds = %85
  br label %198

.loopexit247:                                     ; preds = %85
  br label %198

.loopexit282:                                     ; preds = %85
  br label %198

198:                                              ; preds = %85, %.loopexit282, %.loopexit247, %.loopexit229, %.loopexit141, %.loopexit, %117, %114, %109, %106, %103, %102, %101, %100, %99, %98, %97, %96, %95, %94, %93, %89
  %.0 = phi i32 [ 278, %117 ], [ 277, %114 ], [ 271, %109 ], [ 270, %106 ], [ 269, %103 ], [ 268, %102 ], [ 267, %101 ], [ 266, %100 ], [ 265, %99 ], [ 264, %98 ], [ 263, %97 ], [ 262, %96 ], [ 261, %95 ], [ 260, %94 ], [ 259, %93 ], [ 277, %89 ], [ 272, %.loopexit ], [ 273, %.loopexit141 ], [ 274, %.loopexit229 ], [ 275, %.loopexit247 ], [ 276, %.loopexit282 ], [ 258, %85 ]
  ret i32 %.0
}

; Function Attrs: nounwind uwtable
declare hidden void @yyensure_buffer_stack() local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local ptr @yy_create_buffer(ptr noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare hidden void @yy_load_buffer_state() local_unnamed_addr #0

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite)
declare noalias ptr @strdup(ptr nocapture noundef readonly) local_unnamed_addr #1

declare void @raiseError(i32 noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: nofree nounwind
declare noundef i64 @fwrite(ptr nocapture noundef, i64 noundef, i64 noundef, ptr nocapture noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
declare hidden i32 @yy_get_previous_state() local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare hidden i32 @yy_try_NUL_trans(i32 noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare hidden i32 @yy_get_next_buffer() local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare hidden void @yy_fatal_error(ptr noundef) local_unnamed_addr #0

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 = { mustprogress nofree nounwind willreturn 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 #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 = { 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 #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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!7, !7, i64 0}
!14 = !{!15, !15, i64 0}
!15 = !{!"short", !7, i64 0}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = distinct !{!18, !17}
!19 = !{!20, !6, i64 60}
!20 = !{!"yy_buffer_state", !10, i64 0, !10, i64 8, !10, i64 16, !12, i64 24, !6, i64 32, !6, i64 36, !6, i64 40, !6, i64 44, !6, i64 48, !6, i64 52, !6, i64 56, !6, i64 60}
!21 = !{!20, !6, i64 32}
!22 = !{!20, !10, i64 0}
!23 = !{!20, !10, i64 8}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass,TailCallElimPass