Skip to content

Instantly share code, notes, and snippets.

@nikic

nikic/parse.ll Secret

Created March 1, 2022 10:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nikic/e08cc1d0caeb2b721f1fc690c3b76384 to your computer and use it in GitHub Desktop.
Save nikic/e08cc1d0caeb2b721f1fc690c3b76384 to your computer and use it in GitHub Desktop.
; ModuleID = 'test127.ll'
source_filename = "/home/npopov/repos/llvm-test-suite/MultiSource/Benchmarks/MiBench/consumer-typeset/z06.c"
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
%struct.FILE_POS = type { i8, i8, i16, i32 }
%union.rec = type { %struct.head_type }
%struct.head_type = type { [2 x %struct.LIST], %union.FIRST_UNION, %union.SECOND_UNION, %union.THIRD_UNION, %union.FOURTH_UNION, %union.rec*, %union.anon.13, %union.rec*, %union.rec*, %union.rec*, %union.rec*, %union.rec*, %union.rec*, %union.rec*, %union.rec*, i32 }
%struct.LIST = type { %union.rec*, %union.rec* }
%union.FIRST_UNION = type { %struct.FILE_POS }
%union.SECOND_UNION = type { %struct.anon.1 }
%struct.anon.1 = type { i32 }
%union.THIRD_UNION = type { %struct._IO_FILE*, [8 x i8] }
%struct._IO_FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct._IO_FILE*, i32, i32, i64, i16, i8, [1 x i8], i8*, i64, %struct._IO_codecvt*, %struct._IO_wide_data*, %struct._IO_FILE*, i8*, i64, i32, [20 x i8] }
%struct._IO_marker = type opaque
%struct._IO_codecvt = type opaque
%struct._IO_wide_data = type opaque
%union.FOURTH_UNION = type { %struct.STYLE }
%struct.STYLE = type { %union.anon, %union.anon.10, i16, i16, i32 }
%union.anon = type { %struct.GAP }
%struct.GAP = type { i16, i16 }
%union.anon.10 = type { %struct.GAP }
%union.anon.13 = type { %union.rec* }
%struct.word_type = type { [2 x %struct.LIST], %union.FIRST_UNION, %union.SECOND_UNION, %union.THIRD_UNION, [4 x i8] }
%struct.symbol_type = type { [2 x %struct.LIST], %union.FIRST_UNION, %union.SECOND_UNION, %union.rec*, %union.rec*, %union.rec*, %union.rec*, %union.rec*, %union.rec*, %union.rec*, %union.rec*, %union.rec*, i16, i16, i8, i8, i8 }
%struct.anon.5 = type { i8, [3 x i8] }
%struct.closure_type = type { [2 x %struct.LIST], %union.FIRST_UNION, %union.SECOND_UNION, %union.THIRD_UNION, %union.FOURTH_UNION, %union.rec*, %union.anon.12 }
%union.anon.12 = type { %union.rec* }
%struct.anon.0 = type { i8, i8, i8 }
%struct.gapobj_type = type { [2 x %struct.LIST], %union.FIRST_UNION, %union.SECOND_UNION, %struct.GAP, i32, i16, i16, %union.rec*, %union.rec* }
@.str = external hidden unnamed_addr constant [20 x i8], align 1
@no_fpos = external local_unnamed_addr global %struct.FILE_POS*, align 8
@xx_link = external local_unnamed_addr global %union.rec*, align 8
@zz_hold = external local_unnamed_addr global %union.rec*, align 8
@zz_res = external local_unnamed_addr global %union.rec*, align 8
@zz_lengths = external local_unnamed_addr global [0 x i8], align 1
@zz_size = external local_unnamed_addr global i32, align 4
@zz_free = external local_unnamed_addr global [0 x %union.rec*], align 8
@cross_name = external hidden unnamed_addr global %union.rec*, align 8
@ttop = external hidden unnamed_addr global i32, align 4
@StartSym = external local_unnamed_addr global %union.rec*, align 8
@tok_stack = external hidden unnamed_addr global [100 x %union.rec*], align 16
@.str.6 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [35 x i8], align 1
@AllowCrossDb = external local_unnamed_addr global i32, align 4
@NewCrossDb = external local_unnamed_addr global %union.rec*, align 8
@InMemoryDbIndexes = external local_unnamed_addr global i32, align 4
@OldCrossDb = external local_unnamed_addr global %union.rec*, align 8
@.str.24 = external hidden unnamed_addr constant [30 x i8], align 1
@unknown_count = external hidden unnamed_addr global i32, align 4
@.str.25 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [12 x i8], align 1
@otop = external hidden unnamed_addr global i32, align 4
@obj_stack = external hidden unnamed_addr global [100 x %union.rec*], align 16
@.str.27 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [13 x i8], align 1
@VerbatimSym = external local_unnamed_addr global %union.rec*, align 8
@RawVerbatimSym = external local_unnamed_addr global %union.rec*, align 8
@.str.31 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [34 x i8], align 1
@zz_tmp = external local_unnamed_addr global %union.rec*, align 8
@.str.45 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [49 x i8], align 1
@InputSym = external local_unnamed_addr global %union.rec*, align 8
@.str.49 = external hidden unnamed_addr constant [24 x i8], align 1
@xx_tmp = external local_unnamed_addr global %union.rec*, align 8
@.str.50 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [7 x i8], align 1
; Function Attrs: argmemonly nofree nosync nounwind willreturn
declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #0
declare i8* @Error(i32 noundef, i32 noundef, i8* noundef, i32 noundef, %struct.FILE_POS* noundef, ...) local_unnamed_addr #1
declare i32 @DisposeObject(%union.rec* noundef) local_unnamed_addr #1
; Function Attrs: argmemonly nofree nosync nounwind willreturn
declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #0
; Function Attrs: nounwind uwtable
declare void @SetScope(%union.rec* noundef readonly, i32* nocapture noundef, i32 noundef) local_unnamed_addr #2
declare void @PushScope(%union.rec* noundef, i32 noundef, i32 noundef) local_unnamed_addr #1
declare %union.rec* @MakeWord(i32 noundef, i8* noundef, %struct.FILE_POS* noundef) local_unnamed_addr #1
declare %union.rec* @NewToken(i8 noundef zeroext, %struct.FILE_POS* noundef, i8 noundef zeroext, i8 noundef zeroext, i8 noundef zeroext, %union.rec* noundef) local_unnamed_addr #1
; Function Attrs: nounwind uwtable
define %union.rec* @Parse(%union.rec** nocapture noundef %token, %union.rec* noundef %encl, i32 noundef %defs_allowed, i32 noundef %transfer_allowed) local_unnamed_addr #2 {
entry:
%t = alloca %union.rec*, align 8
%env = alloca %union.rec*, align 8
%offset = alloca i32, align 4
%lnum = alloca i32, align 4
%scope_count = alloca i32, align 4
%crs = alloca %union.rec*, align 8
%res_env = alloca %union.rec*, align 8
%style = alloca %struct.STYLE, align 4
%0 = bitcast %union.rec** %t to i8*
call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %0) #5
%1 = bitcast %union.rec** %env to i8*
call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %1) #5
%2 = bitcast i32* %offset to i8*
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %2) #5
%3 = bitcast i32* %lnum to i8*
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %3) #5
%4 = load i32, i32* @ttop, align 4, !tbaa !4
%5 = bitcast i32* %scope_count to i8*
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %5) #5
%6 = bitcast %union.rec** %token to %struct.word_type**
%7 = load %struct.word_type*, %struct.word_type** %6, align 8, !tbaa !8
%otype = getelementptr inbounds %struct.word_type, %struct.word_type* %7, i64 0, i32 1, i32 0, i32 0
%8 = load i8, i8* %otype, align 8, !tbaa !10
switch i8 %8, label %if.then [
i8 102, label %if.end157
i8 104, label %if.end157
]
if.then: ; preds = %entry
%9 = load %struct.FILE_POS*, %struct.FILE_POS** @no_fpos, align 8, !tbaa !8
%call = tail call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 1, i32 noundef 2, i8* noundef getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 noundef 0, %struct.FILE_POS* noundef %9, i8* noundef getelementptr inbounds ([15 x i8], [15 x i8]* @.str.7, i64 0, i64 0)) #5
%.pre = load i32, i32* @ttop, align 4, !tbaa !4
br label %if.end157
if.end157: ; preds = %if.then, %entry, %entry
%10 = phi i32 [ %.pre, %if.then ], [ %4, %entry ], [ %4, %entry ]
%inc158 = add nsw i32 %10, 1
store i32 %inc158, i32* @ttop, align 4, !tbaa !4
%cmp159 = icmp slt i32 %10, 99
br i1 %cmp159, label %if.then161, label %if.else164
if.then161: ; preds = %if.end157
%11 = load %union.rec*, %union.rec** %token, align 8, !tbaa !8
%idxprom162 = sext i32 %inc158 to i64
%arrayidx163 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom162
store %union.rec* %11, %union.rec** %arrayidx163, align 8, !tbaa !8
br label %if.end172
if.else164: ; preds = %if.end157
%idxprom16610296 = zext i32 %10 to i64
%arrayidx167 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom16610296
%12 = bitcast %union.rec** %arrayidx167 to %struct.word_type**
%13 = load %struct.word_type*, %struct.word_type** %12, align 8, !tbaa !8
%ofpos170 = getelementptr inbounds %struct.word_type, %struct.word_type* %13, i64 0, i32 1, i32 0
%call171 = tail call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 2, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos170) #5
br label %if.end172
if.end172: ; preds = %if.else164, %if.then161
%call173 = tail call %union.rec* @LexGetToken() #5
store %union.rec* %call173, %union.rec** %t, align 8, !tbaa !8
%tobool174.not = icmp eq i32 %defs_allowed, 0
br i1 %tobool174.not, label %if.end580, label %if.then175
if.then175: ; preds = %if.end172
call void @ReadDefinitions(%union.rec** noundef nonnull %t, %union.rec* noundef %encl, i8 noundef zeroext -113) #5
%call176 = call i32 @ErrorSeen() #5
%tobool177.not = icmp eq i32 %call176, 0
br i1 %tobool177.not, label %if.end183, label %if.then178
if.then178: ; preds = %if.then175
%14 = bitcast %union.rec** %t to %struct.word_type**
%15 = load %struct.word_type*, %struct.word_type** %14, align 8, !tbaa !8
%ofpos181 = getelementptr inbounds %struct.word_type, %struct.word_type* %15, i64 0, i32 1, i32 0
%call182 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 14, i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.9, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos181) #5
br label %if.end183
if.end183: ; preds = %if.then178, %if.then175
%16 = load %union.rec*, %union.rec** @StartSym, align 8, !tbaa !8
%cmp184 = icmp eq %union.rec* %16, %encl
br i1 %cmp184, label %if.then186, label %if.end580
if.then186: ; preds = %if.end183
%17 = load i8, i8* getelementptr inbounds ([0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 82), align 1, !tbaa !10
%conv187 = zext i8 %17 to i32
store i32 %conv187, i32* @zz_size, align 4, !tbaa !4
%18 = zext i8 %17 to i64
%arrayidx195 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %18
%19 = load %union.rec*, %union.rec** %arrayidx195, align 8, !tbaa !8
%cmp196 = icmp eq %union.rec* %19, null
br i1 %cmp196, label %if.then198, label %if.else200
if.then198: ; preds = %if.then186
%20 = load %struct.FILE_POS*, %struct.FILE_POS** @no_fpos, align 8, !tbaa !8
%call199 = call %union.rec* @GetMemory(i32 noundef %conv187, %struct.FILE_POS* noundef %20) #5
store %union.rec* %call199, %union.rec** @zz_hold, align 8, !tbaa !8
br label %if.end210
if.else200: ; preds = %if.then186
store %union.rec* %19, %union.rec** @zz_hold, align 8, !tbaa !8
%opred206 = getelementptr inbounds %union.rec, %union.rec* %19, i64 0, i32 0, i32 0, i64 0, i32 0
%21 = load %union.rec*, %union.rec** %opred206, align 8, !tbaa !10
store %union.rec* %21, %union.rec** %arrayidx195, align 8, !tbaa !8
br label %if.end210
if.end210: ; preds = %if.else200, %if.then198
%.in10546 = phi %union.rec* [ %call199, %if.then198 ], [ %19, %if.else200 ]
%22 = getelementptr inbounds %union.rec, %union.rec* %.in10546, i64 0, i32 0, i32 1, i32 0, i32 0
store i8 82, i8* %22, align 8, !tbaa !10
%23 = getelementptr inbounds %union.rec, %union.rec* %.in10546, i64 0, i32 0, i32 0, i64 1, i32 1
store %union.rec* %.in10546, %union.rec** %23, align 8, !tbaa !10
%24 = getelementptr inbounds %union.rec, %union.rec* %.in10546, i64 0, i32 0, i32 0, i64 1, i32 0
store %union.rec* %.in10546, %union.rec** %24, align 8, !tbaa !10
%25 = getelementptr inbounds %union.rec, %union.rec* %.in10546, i64 0, i32 0, i32 0, i64 0, i32 1
store %union.rec* %.in10546, %union.rec** %25, align 8, !tbaa !10
%26 = getelementptr %union.rec, %union.rec* %.in10546, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %.in10546, %union.rec** %26, align 8, !tbaa !10
store %union.rec* %.in10546, %union.rec** %env, align 8, !tbaa !8
%27 = bitcast %union.rec** %t to %struct.word_type**
%28 = bitcast %union.rec** %crs to i8*
%29 = bitcast %union.rec** %res_env to i8*
%30 = bitcast %struct.STYLE* %style to i8*
br label %for.cond
for.cond: ; preds = %for.cond.backedge, %if.end210
%31 = load %struct.word_type*, %struct.word_type** %27, align 8, !tbaa !8
%otype234 = getelementptr inbounds %struct.word_type, %struct.word_type* %31, i64 0, i32 1, i32 0, i32 0
%32 = load i8, i8* %otype234, align 8, !tbaa !10
switch i8 %32, label %for.end568 [
i8 11, label %land.lhs.true
i8 106, label %if.then294
i8 114, label %if.then455
i8 115, label %if.then455
i8 116, label %if.then517
i8 117, label %if.then517
]
land.lhs.true: ; preds = %for.cond
%arraydecay = getelementptr inbounds %struct.word_type, %struct.word_type* %31, i64 0, i32 4, i64 0
%call239 = call i32 @strcmp(i8* noundef nonnull %arraydecay, i8* noundef nonnull dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.10, i64 0, i64 0)) #6
%cmp240 = icmp eq i32 %call239, 0
br i1 %cmp240, label %if.then277, label %lor.lhs.false242
lor.lhs.false242: ; preds = %land.lhs.true
%call246 = call i32 @strcmp(i8* noundef nonnull %arraydecay, i8* noundef nonnull dereferenceable(8) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.11, i64 0, i64 0)) #6
%cmp247 = icmp eq i32 %call246, 0
br i1 %cmp247, label %if.then277, label %lor.lhs.false249
lor.lhs.false249: ; preds = %lor.lhs.false242
%call253 = call i32 @strcmp(i8* noundef nonnull %arraydecay, i8* noundef nonnull dereferenceable(6) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.12, i64 0, i64 0)) #6
%cmp254 = icmp eq i32 %call253, 0
br i1 %cmp254, label %if.then277, label %lor.lhs.false256
lor.lhs.false256: ; preds = %lor.lhs.false249
%call260 = call i32 @strcmp(i8* noundef nonnull %arraydecay, i8* noundef nonnull dereferenceable(7) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.13, i64 0, i64 0)) #6
%cmp261 = icmp eq i32 %call260, 0
br i1 %cmp261, label %if.then277, label %lor.lhs.false263
lor.lhs.false263: ; preds = %lor.lhs.false256
%call267 = call i32 @strcmp(i8* noundef nonnull %arraydecay, i8* noundef nonnull dereferenceable(7) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.14, i64 0, i64 0)) #6
%cmp268 = icmp eq i32 %call267, 0
br i1 %cmp268, label %if.then277, label %lor.lhs.false270
lor.lhs.false270: ; preds = %lor.lhs.false263
%call274 = call i32 @strcmp(i8* noundef nonnull %arraydecay, i8* noundef nonnull dereferenceable(7) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.15, i64 0, i64 0)) #6
%cmp275 = icmp eq i32 %call274, 0
br i1 %cmp275, label %if.then277, label %for.end568
if.then277: ; preds = %lor.lhs.false270, %lor.lhs.false263, %lor.lhs.false256, %lor.lhs.false249, %lor.lhs.false242, %land.lhs.true
call void @ReadDefinitions(%union.rec** noundef nonnull %t, %union.rec* noundef %encl, i8 noundef zeroext -113) #5
%call278 = call i32 @ErrorSeen() #5
%tobool279.not = icmp eq i32 %call278, 0
br i1 %tobool279.not, label %for.cond.backedge, label %if.then280
if.then280: ; preds = %if.then277
%33 = load %struct.word_type*, %struct.word_type** %27, align 8, !tbaa !8
%ofpos283 = getelementptr inbounds %struct.word_type, %struct.word_type* %33, i64 0, i32 1, i32 0
%call284 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 39, i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.9, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos283) #5
br label %for.cond.backedge
if.then294: ; preds = %for.cond
call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %28) #5
call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %29) #5
call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %30) #5
store %struct.word_type* %31, %struct.word_type** bitcast (%union.rec** @zz_hold to %struct.word_type**), align 8, !tbaa !8
%cond.in = load i8, i8* getelementptr inbounds ([0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 106), align 1, !tbaa !10
%cond = zext i8 %cond.in to i32
store i32 %cond, i32* @zz_size, align 4, !tbaa !4
%34 = zext i8 %cond.in to i64
%arrayidx322 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %34
%35 = load %union.rec*, %union.rec** %arrayidx322, align 8, !tbaa !8
%opred326 = getelementptr %struct.word_type, %struct.word_type* %31, i64 0, i32 0, i64 0, i32 0
store %union.rec* %35, %union.rec** %opred326, align 8, !tbaa !10
%36 = load %union.rec*, %union.rec** @zz_hold, align 8, !tbaa !8
%37 = load i32, i32* @zz_size, align 4, !tbaa !4
%idxprom327 = sext i32 %37 to i64
%arrayidx328 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %idxprom327
store %union.rec* %36, %union.rec** %arrayidx328, align 8, !tbaa !8
%call329 = call %union.rec* @LexGetToken() #5
store %union.rec* %call329, %union.rec** %t, align 8, !tbaa !8
%38 = getelementptr inbounds %union.rec, %union.rec* %call329, i64 0, i32 0, i32 1
%otype333 = getelementptr %union.FIRST_UNION, %union.FIRST_UNION* %38, i64 0, i32 0, i32 0
%39 = load i8, i8* %otype333, align 8, !tbaa !10
%cmp335.not = icmp eq i8 %39, 102
br i1 %cmp335.not, label %if.end342, label %if.then337
if.then337: ; preds = %if.then294
%ofpos340 = getelementptr %union.FIRST_UNION, %union.FIRST_UNION* %38, i64 0, i32 0
%call341 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 15, i8* noundef getelementptr inbounds ([21 x i8], [21 x i8]* @.str.16, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos340, i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.17, i64 0, i64 0), i8* noundef getelementptr inbounds ([5 x i8], [5 x i8]* @.str.18, i64 0, i64 0)) #5
br label %if.end342
if.end342: ; preds = %if.then337, %if.then294
%call343 = call %union.rec* @Parse(%union.rec** noundef nonnull %t, %union.rec* noundef %encl, i32 noundef 0, i32 noundef 0)
%40 = getelementptr inbounds %union.rec, %union.rec* %call343, i64 0, i32 0, i32 1
%otype347 = getelementptr %union.FIRST_UNION, %union.FIRST_UNION* %40, i64 0, i32 0, i32 0
%41 = load i8, i8* %otype347, align 8, !tbaa !10
switch i8 %41, label %if.else429 [
i8 6, label %if.then359
i8 7, label %if.then359
i8 2, label %if.then412
]
if.then359: ; preds = %if.end342, %if.end342
%osucc363 = getelementptr inbounds %union.rec, %union.rec* %call343, i64 0, i32 0, i32 0, i64 0, i32 1
%42 = bitcast %union.rec** %osucc363 to %struct.word_type**
%43 = load %struct.word_type*, %struct.word_type** %42, align 8, !tbaa !10
br label %for.cond368
for.cond368: ; preds = %for.cond368, %if.then359
%.pn10139 = phi %struct.word_type* [ %43, %if.then359 ], [ %z.010138, %for.cond368 ]
%z.0.in = getelementptr inbounds %struct.word_type, %struct.word_type* %.pn10139, i64 0, i32 0, i64 1, i32 0
%44 = bitcast %union.rec** %z.0.in to %struct.word_type**
%z.010138 = load %struct.word_type*, %struct.word_type** %44, align 8, !tbaa !10
%otype372 = getelementptr inbounds %struct.word_type, %struct.word_type* %z.010138, i64 0, i32 1, i32 0, i32 0
%45 = load i8, i8* %otype372, align 8, !tbaa !10
switch i8 %45, label %if.else398 [
i8 0, label %for.cond368
i8 2, label %if.then387
]
if.then387: ; preds = %for.cond368
store %union.rec* null, %union.rec** %crs, align 8, !tbaa !8
%46 = load %union.rec*, %union.rec** %env, align 8, !tbaa !8
%call388 = call %union.rec* @CrossExpand(%union.rec* noundef %call343, %union.rec* noundef %46, %struct.STYLE* noundef nonnull %style, %union.rec** noundef nonnull %crs, %union.rec** noundef nonnull %res_env) #5
%47 = load %union.rec*, %union.rec** %crs, align 8, !tbaa !8
%cmp389.not = icmp eq %union.rec* %47, null
br i1 %cmp389.not, label %if.end396, label %if.then391
if.then391: ; preds = %if.then387
%ofpos394 = getelementptr inbounds %union.rec, %union.rec* %call388, i64 0, i32 0, i32 1, i32 0
%call395 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 16, i8* noundef getelementptr inbounds ([30 x i8], [30 x i8]* @.str.19, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos394, i8* noundef getelementptr inbounds ([10 x i8], [10 x i8]* @.str.20, i64 0, i64 0), i8* noundef getelementptr inbounds ([10 x i8], [10 x i8]* @.str.21, i64 0, i64 0)) #5
br label %if.end396
if.end396: ; preds = %if.then391, %if.then387
call fastcc void @HuntCommandOptions(%union.rec* noundef %call388)
%48 = load %union.rec*, %union.rec** %res_env, align 8, !tbaa !8
call void @AttachEnv(%union.rec* noundef %48, %union.rec* noundef %call388) #5
%49 = load %union.rec*, %union.rec** %env, align 8, !tbaa !8
%call397 = call %union.rec* @SetEnv(%union.rec* noundef %call388, %union.rec* noundef %49) #5
store %union.rec* %call397, %union.rec** %env, align 8, !tbaa !8
br label %if.end435
if.else398: ; preds = %for.cond368
%ofpos401 = getelementptr %union.FIRST_UNION, %union.FIRST_UNION* %40, i64 0, i32 0
%call402 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 17, i8* noundef getelementptr inbounds ([24 x i8], [24 x i8]* @.str.22, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos401, i8* noundef getelementptr inbounds ([5 x i8], [5 x i8]* @.str.18, i64 0, i64 0)) #5
br label %if.end435
if.then412: ; preds = %if.end342
%50 = getelementptr inbounds %union.rec, %union.rec* %call343, i64 0, i32 0, i32 5
%51 = load %union.rec*, %union.rec** %50, align 8, !tbaa !10
%52 = getelementptr inbounds %union.rec, %union.rec* %51, i64 0, i32 0, i32 9
%53 = load %union.rec*, %union.rec** %52, align 8, !tbaa !10
%cmp413.not = icmp eq %union.rec* %53, null
br i1 %cmp413.not, label %if.then412.if.end423_crit_edge, label %if.then415
if.then412.if.end423_crit_edge: ; preds = %if.then412
%54 = bitcast %union.rec* %51 to %struct.symbol_type*
br label %if.end423
if.then415: ; preds = %if.then412
%ofpos418 = getelementptr %union.FIRST_UNION, %union.FIRST_UNION* %40, i64 0, i32 0
%call421 = call i8* @SymName(%union.rec* noundef nonnull %51) #5
%call422 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 18, i8* noundef getelementptr inbounds ([35 x i8], [35 x i8]* @.str.23, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos418, i8* noundef %call421, i8* noundef getelementptr inbounds ([5 x i8], [5 x i8]* @.str.18, i64 0, i64 0)) #5
%.phi.trans.insert = bitcast %union.rec** %50 to %struct.symbol_type**
%.pre10456 = load %struct.symbol_type*, %struct.symbol_type** %.phi.trans.insert, align 8, !tbaa !10
br label %if.end423
if.end423: ; preds = %if.then415, %if.then412.if.end423_crit_edge
%55 = phi %struct.symbol_type* [ %.pre10456, %if.then415 ], [ %54, %if.then412.if.end423_crit_edge ]
%ouse_invocation427 = getelementptr inbounds %struct.symbol_type, %struct.symbol_type* %55, i64 0, i32 11
store %union.rec* %call343, %union.rec** %ouse_invocation427, align 8, !tbaa !10
call fastcc void @HuntCommandOptions(%union.rec* noundef nonnull %call343)
%56 = load %union.rec*, %union.rec** %env, align 8, !tbaa !8
call void @AttachEnv(%union.rec* noundef %56, %union.rec* noundef nonnull %call343) #5
%call428 = call %union.rec* @SetEnv(%union.rec* noundef nonnull %call343, %union.rec* noundef null) #5
store %union.rec* %call428, %union.rec** %env, align 8, !tbaa !8
br label %if.end435
if.else429: ; preds = %if.end342
%ofpos432 = getelementptr %union.FIRST_UNION, %union.FIRST_UNION* %40, i64 0, i32 0
%call433 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 19, i8* noundef getelementptr inbounds ([24 x i8], [24 x i8]* @.str.22, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos432, i8* noundef getelementptr inbounds ([5 x i8], [5 x i8]* @.str.18, i64 0, i64 0)) #5
br label %if.end435
if.end435: ; preds = %if.else429, %if.end423, %if.else398, %if.end396
%y.1 = phi %union.rec* [ %call343, %if.end423 ], [ %call343, %if.else429 ], [ %call388, %if.end396 ], [ %call343, %if.else398 ]
%57 = getelementptr inbounds %union.rec, %union.rec* %y.1, i64 0, i32 0, i32 5
%58 = load %union.rec*, %union.rec** %57, align 8, !tbaa !10
call void @PushScope(%union.rec* noundef %58, i32 noundef 0, i32 noundef 1) #5
%call438 = call %union.rec* @LexGetToken() #5
store %union.rec* %call438, %union.rec** %t, align 8, !tbaa !8
call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %30) #5
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %29) #5
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %28) #5
br label %for.cond.backedge
for.cond.backedge: ; preds = %if.then517, %if.then455, %if.end435, %if.then280, %if.then277
br label %for.cond
if.then455: ; preds = %for.cond, %for.cond
%conv460 = zext i8 %32 to i32
call void @ReadPrependDef(i32 noundef %conv460, %union.rec* noundef %encl) #5
%59 = load %union.rec*, %union.rec** %t, align 8, !tbaa !8
store %union.rec* %59, %union.rec** @zz_hold, align 8, !tbaa !8
%otype464 = getelementptr inbounds %union.rec, %union.rec* %59, i64 0, i32 0, i32 1, i32 0, i32 0
%60 = load i8, i8* %otype464, align 8, !tbaa !10
%.off10160 = add i8 %60, -11
%switch10161 = icmp ult i8 %.off10160, 2
%61 = getelementptr inbounds %union.rec, %union.rec* %59, i64 0, i32 0, i32 1, i32 0, i32 1
%idxprom487 = zext i8 %60 to i64
%arrayidx488 = getelementptr inbounds [0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 %idxprom487
%cond491.in.in = select i1 %switch10161, i8* %61, i8* %arrayidx488
%cond491.in = load i8, i8* %cond491.in.in, align 1, !tbaa !10
%cond491 = zext i8 %cond491.in to i32
store i32 %cond491, i32* @zz_size, align 4, !tbaa !4
%62 = zext i8 %cond491.in to i64
%arrayidx493 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %62
%63 = load %union.rec*, %union.rec** %arrayidx493, align 8, !tbaa !8
%opred497 = getelementptr %union.rec, %union.rec* %59, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %63, %union.rec** %opred497, align 8, !tbaa !10
%64 = load %union.rec*, %union.rec** @zz_hold, align 8, !tbaa !8
%65 = load i32, i32* @zz_size, align 4, !tbaa !4
%idxprom498 = sext i32 %65 to i64
%arrayidx499 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %idxprom498
store %union.rec* %64, %union.rec** %arrayidx499, align 8, !tbaa !8
%call500 = call %union.rec* @LexGetToken() #5
store %union.rec* %call500, %union.rec** %t, align 8, !tbaa !8
br label %for.cond.backedge
if.then517: ; preds = %for.cond, %for.cond
%conv522 = zext i8 %32 to i32
call void @ReadDatabaseDef(i32 noundef %conv522, %union.rec* noundef %encl) #5
%66 = load %union.rec*, %union.rec** %t, align 8, !tbaa !8
store %union.rec* %66, %union.rec** @zz_hold, align 8, !tbaa !8
%otype526 = getelementptr inbounds %union.rec, %union.rec* %66, i64 0, i32 0, i32 1, i32 0, i32 0
%67 = load i8, i8* %otype526, align 8, !tbaa !10
%.off10162 = add i8 %67, -11
%switch10163 = icmp ult i8 %.off10162, 2
%68 = getelementptr inbounds %union.rec, %union.rec* %66, i64 0, i32 0, i32 1, i32 0, i32 1
%idxprom549 = zext i8 %67 to i64
%arrayidx550 = getelementptr inbounds [0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 %idxprom549
%cond553.in.in = select i1 %switch10163, i8* %68, i8* %arrayidx550
%cond553.in = load i8, i8* %cond553.in.in, align 1, !tbaa !10
%cond553 = zext i8 %cond553.in to i32
store i32 %cond553, i32* @zz_size, align 4, !tbaa !4
%69 = zext i8 %cond553.in to i64
%arrayidx555 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %69
%70 = load %union.rec*, %union.rec** %arrayidx555, align 8, !tbaa !8
%opred559 = getelementptr %union.rec, %union.rec* %66, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %70, %union.rec** %opred559, align 8, !tbaa !10
%71 = load %union.rec*, %union.rec** @zz_hold, align 8, !tbaa !8
%72 = load i32, i32* @zz_size, align 4, !tbaa !4
%idxprom560 = sext i32 %72 to i64
%arrayidx561 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %idxprom560
store %union.rec* %71, %union.rec** %arrayidx561, align 8, !tbaa !8
%call562 = call %union.rec* @LexGetToken() #5
store %union.rec* %call562, %union.rec** %t, align 8, !tbaa !8
br label %for.cond.backedge
for.end568: ; preds = %lor.lhs.false270, %for.cond
%73 = load i32, i32* @AllowCrossDb, align 4, !tbaa !4
%tobool569.not = icmp eq i32 %73, 0
br i1 %tobool569.not, label %if.else577, label %if.then570
if.then570: ; preds = %for.end568
%74 = load %struct.word_type*, %struct.word_type** bitcast (%union.rec** @cross_name to %struct.word_type**), align 8, !tbaa !8
%arraydecay573 = getelementptr inbounds %struct.word_type, %struct.word_type* %74, i64 0, i32 4, i64 0
%75 = load %struct.FILE_POS*, %struct.FILE_POS** @no_fpos, align 8, !tbaa !8
%call574 = call %union.rec* @MakeWord(i32 noundef 11, i8* noundef nonnull %arraydecay573, %struct.FILE_POS* noundef %75) #5
%call575 = call %union.rec* @DbCreate(%union.rec* noundef %call574) #5
store %union.rec* %call575, %union.rec** @NewCrossDb, align 8, !tbaa !8
%76 = load %union.rec*, %union.rec** @cross_name, align 8, !tbaa !8
%77 = load i32, i32* @InMemoryDbIndexes, align 4, !tbaa !4
%call576 = call %union.rec* @DbLoad(%union.rec* noundef %76, i32 noundef 0, i32 noundef 0, %union.rec* noundef null, i32 noundef %77) #5
br label %if.end578
if.else577: ; preds = %for.end568
store %union.rec* null, %union.rec** @NewCrossDb, align 8, !tbaa !8
br label %if.end578
if.end578: ; preds = %if.else577, %if.then570
%storemerge = phi %union.rec* [ null, %if.else577 ], [ %call576, %if.then570 ]
store %union.rec* %storemerge, %union.rec** @OldCrossDb, align 8, !tbaa !8
call void @FlattenUses() #5
%78 = load %union.rec*, %union.rec** %env, align 8, !tbaa !8
call void @TransferInit(%union.rec* noundef %78) #5
br label %if.end580
if.end580: ; preds = %if.end578, %if.end183, %if.end172
%79 = bitcast %union.rec** %t to %struct.word_type**
%cmp6368 = icmp ne %union.rec* %encl, null
%80 = getelementptr inbounds %union.rec, %union.rec* %encl, i64 0, i32 0, i32 2
%os266382 = bitcast %union.SECOND_UNION* %80 to %struct.anon.5*
%ouses_galley = getelementptr inbounds %struct.anon.5, %struct.anon.5* %os266382, i64 0, i32 1
%81 = bitcast [3 x i8]* %ouses_galley to i24*
%tobool7079.not = icmp eq i32 %transfer_allowed, 0
%82 = bitcast %union.rec** %env to %struct.word_type**
%83 = bitcast %union.rec** %t to %struct.closure_type**
br label %for.cond581
for.cond581: ; preds = %for.cond581.backedge, %if.end580
%scope_count.promoted10377 = phi i32 [ undef, %if.end580 ], [ %scope_count.promoted10377.be, %for.cond581.backedge ]
%obj_prev.1 = phi i32 [ 0, %if.end580 ], [ %obj_prev.1.be, %for.cond581.backedge ]
%84 = load %union.rec*, %union.rec** %t, align 8, !tbaa !8
%85 = getelementptr inbounds %union.rec, %union.rec* %84, i64 0, i32 0, i32 1
%otype585 = getelementptr %union.FIRST_UNION, %union.FIRST_UNION* %85, i64 0, i32 0, i32 0
%86 = load i8, i8* %otype585, align 8, !tbaa !10
%87 = bitcast %union.rec* %84 to %struct.word_type*
switch i8 %86, label %sw.default [
i8 11, label %sw.bb
i8 12, label %sw.bb827
i8 19, label %for.cond1028.preheader
i8 18, label %for.cond1028.preheader
i8 17, label %for.cond1028.preheader
i8 6, label %sw.bb1810
i8 7, label %sw.bb1810
i8 5, label %sw.bb1810
i8 4, label %sw.bb1810
i8 20, label %sw.bb1810
i8 21, label %sw.bb1810
i8 22, label %sw.bb1810
i8 23, label %sw.bb1810
i8 24, label %sw.bb1810
i8 25, label %sw.bb1810
i8 26, label %sw.bb1810
i8 27, label %sw.bb1810
i8 28, label %sw.bb1810
i8 29, label %sw.bb1810
i8 30, label %sw.bb1810
i8 31, label %sw.bb1810
i8 32, label %sw.bb1810
i8 33, label %sw.bb1810
i8 34, label %sw.bb1810
i8 35, label %sw.bb1810
i8 36, label %sw.bb1810
i8 37, label %sw.bb1810
i8 38, label %sw.bb1810
i8 39, label %sw.bb1810
i8 40, label %sw.bb1810
i8 41, label %sw.bb1810
i8 44, label %sw.bb1810
i8 42, label %sw.bb1810
i8 43, label %sw.bb1810
i8 45, label %sw.bb1810
i8 46, label %sw.bb1810
i8 47, label %sw.bb1810
i8 48, label %sw.bb1810
i8 49, label %sw.bb1810
i8 50, label %sw.bb1810
i8 51, label %sw.bb1810
i8 52, label %sw.bb1810
i8 55, label %sw.bb1810
i8 56, label %sw.bb1810
i8 58, label %sw.bb1810
i8 59, label %sw.bb1810
i8 60, label %sw.bb1810
i8 61, label %sw.bb1810
i8 62, label %sw.bb1810
i8 63, label %sw.bb1810
i8 64, label %sw.bb1810
i8 65, label %sw.bb1810
i8 66, label %sw.bb1810
i8 67, label %sw.bb1810
i8 68, label %sw.bb1810
i8 69, label %sw.bb1810
i8 70, label %sw.bb1810
i8 71, label %sw.bb1810
i8 72, label %sw.bb1810
i8 73, label %sw.bb1810
i8 74, label %sw.bb1810
i8 75, label %sw.bb1810
i8 76, label %sw.bb1810
i8 77, label %sw.bb1810
i8 78, label %sw.bb1810
i8 93, label %sw.bb1810
i8 94, label %sw.bb1810
i8 95, label %sw.bb1810
i8 96, label %sw.bb1810
i8 97, label %sw.bb1810
i8 98, label %sw.bb1810
i8 99, label %sw.bb1810
i8 53, label %sw.bb2095
i8 54, label %sw.bb2095
i8 79, label %sw.bb2831
i8 80, label %sw.bb2831
i8 111, label %sw.bb3118
i8 104, label %sw.bb3123
i8 102, label %sw.bb3138
i8 105, label %sw.bb3338
i8 103, label %for.cond3655
i8 106, label %sw.bb3730
i8 107, label %sw.bb3730
i8 114, label %sw.bb3730
i8 115, label %sw.bb3730
i8 116, label %sw.bb3730
i8 117, label %sw.bb3730
i8 82, label %sw.bb3738
i8 83, label %sw.bb3939
i8 84, label %sw.bb4190
i8 85, label %sw.bb4443
i8 86, label %sw.bb4726
i8 87, label %sw.bb5079
i8 90, label %sw.bb5329
i8 89, label %sw.bb5754
i8 2, label %sw.bb5808
i8 92, label %for.cond8785
]
for.cond1028.preheader: ; preds = %for.cond581, %for.cond581, %for.cond581
br label %for.cond1028
sw.bb: ; preds = %for.cond581
%ostring588 = getelementptr inbounds %union.rec, %union.rec* %84, i64 0, i32 0, i32 4
%arrayidx589 = bitcast %union.FOURTH_UNION* %ostring588 to i8*
%88 = load i8, i8* %arrayidx589, align 8, !tbaa !10
%cmp591 = icmp eq i8 %88, 64
br i1 %cmp591, label %land.lhs.true593, label %if.end627
land.lhs.true593: ; preds = %sw.bb
%cmp594.not = icmp eq i32 %obj_prev.1, 1
br i1 %cmp594.not, label %lor.lhs.false596, label %if.then610
lor.lhs.false596: ; preds = %land.lhs.true593
%89 = getelementptr inbounds %union.rec, %union.rec* %84, i64 0, i32 0, i32 2
%os21599 = bitcast %union.SECOND_UNION* %89 to %struct.anon.0*
%ovspace600 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os21599, i64 0, i32 2
%90 = load i8, i8* %ovspace600, align 2, !tbaa !10
%conv601 = zext i8 %90 to i32
%ohspace605 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os21599, i64 0, i32 1
%91 = load i8, i8* %ohspace605, align 1, !tbaa !10
%conv606 = zext i8 %91 to i32
%add607 = sub nsw i32 0, %conv606
%cmp608.not = icmp eq i32 %conv601, %add607
br i1 %cmp608.not, label %if.then629, label %if.then610
if.then610: ; preds = %lor.lhs.false596, %land.lhs.true593
%92 = getelementptr inbounds %union.rec, %union.rec* %84, i64 0, i32 0, i32 1, i32 0
%arraydecay616 = getelementptr inbounds %union.rec, %union.rec* %84, i64 0, i32 0, i32 4
%call617 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 20, i8* noundef getelementptr inbounds ([30 x i8], [30 x i8]* @.str.24, i64 0, i64 0), i32 noundef 2, %struct.FILE_POS* noundef nonnull %92, %union.FOURTH_UNION* noundef nonnull %arraydecay616) #5
%93 = load i32, i32* @unknown_count, align 4, !tbaa !4
%inc618 = add nsw i32 %93, 1
store i32 %inc618, i32* @unknown_count, align 4, !tbaa !4
%cmp619 = icmp sgt i32 %93, 24
br i1 %cmp619, label %if.then621, label %if.end627
if.then621: ; preds = %if.then610
%94 = load %struct.word_type*, %struct.word_type** %79, align 8, !tbaa !8
%ofpos624 = getelementptr inbounds %struct.word_type, %struct.word_type* %94, i64 0, i32 1, i32 0
%call625 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 21, i8* noundef getelementptr inbounds ([52 x i8], [52 x i8]* @.str.25, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos624, i8* noundef getelementptr inbounds ([12 x i8], [12 x i8]* @.str.26, i64 0, i64 0)) #5
br label %if.end627
if.end627: ; preds = %if.then621, %if.then610, %sw.bb
%tobool628.not = icmp eq i32 %obj_prev.1, 0
br i1 %tobool628.not, label %if.end810, label %if.end627.if.then629_crit_edge
if.end627.if.then629_crit_edge: ; preds = %if.end627
%.pre10495 = load %struct.word_type*, %struct.word_type** %79, align 8, !tbaa !8
br label %if.then629
if.then629: ; preds = %if.end627.if.then629_crit_edge, %lor.lhs.false596
%95 = phi %struct.word_type* [ %.pre10495, %if.end627.if.then629_crit_edge ], [ %87, %lor.lhs.false596 ]
%ou2633 = getelementptr inbounds %struct.word_type, %struct.word_type* %95, i64 0, i32 2
%os21634 = bitcast %union.SECOND_UNION* %ou2633 to %struct.anon.0*
%ohspace635 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os21634, i64 0, i32 1
%96 = load i8, i8* %ohspace635, align 1, !tbaa !10
%conv636 = zext i8 %96 to i32
%ovspace640 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os21634, i64 0, i32 2
%97 = load i8, i8* %ovspace640, align 2, !tbaa !10
%conv641 = zext i8 %97 to i32
%add642 = sub nsw i32 0, %conv641
%cmp643.not = icmp eq i32 %conv636, %add642
br i1 %cmp643.not, label %if.else646, label %land.rhs663.preheader
if.else646: ; preds = %if.then629
%otype650 = getelementptr inbounds %struct.word_type, %struct.word_type* %95, i64 0, i32 1, i32 0, i32 0
%98 = load i8, i8* %otype650, align 8, !tbaa !10
%cmp652 = icmp eq i8 %98, 102
%cmp655 = icmp eq i32 %obj_prev.1, 2
%or.cond9197 = select i1 %cmp652, i1 true, i1 %cmp655
%. = select i1 %or.cond9197, i8 7, i8 103
br label %land.rhs663.preheader
land.rhs663.preheader: ; preds = %if.else646, %if.then629
%typ630.0 = phi i32 [ 100, %if.then629 ], [ 101, %if.else646 ]
%prec631.0 = phi i8 [ 7, %if.then629 ], [ %., %if.else646 ]
br label %land.rhs663
land.rhs663: ; preds = %while.body674, %land.rhs663.preheader
%99 = load i32, i32* @ttop, align 4, !tbaa !4
%idxprom664 = sext i32 %99 to i64
%arrayidx665 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom664
%100 = bitcast %union.rec** %arrayidx665 to %struct.word_type**
%101 = load %struct.word_type*, %struct.word_type** %100, align 8, !tbaa !8
%ou2667 = getelementptr inbounds %struct.word_type, %struct.word_type* %101, i64 0, i32 2
%oprecedence669 = bitcast %union.SECOND_UNION* %ou2667 to i8*
%102 = load i8, i8* %oprecedence669, align 8, !tbaa !10
%cmp671.not = icmp ugt i8 %prec631.0, %102
br i1 %cmp671.not, label %if.then678, label %while.body674
while.body674: ; preds = %land.rhs663
%call675 = call fastcc i32 @Reduce()
%tobool662.not = icmp eq i32 %call675, 0
br i1 %tobool662.not, label %if.end810, label %land.rhs663, !llvm.loop !11
if.then678: ; preds = %land.rhs663
%103 = zext i32 %typ630.0 to i64
%arrayidx680 = getelementptr inbounds [0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 %103
%104 = load i8, i8* %arrayidx680, align 1, !tbaa !10
%conv681 = zext i8 %104 to i32
store i32 %conv681, i32* @zz_size, align 4, !tbaa !4
%105 = zext i8 %104 to i64
%arrayidx689 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %105
%106 = load %union.rec*, %union.rec** %arrayidx689, align 8, !tbaa !8
%cmp690 = icmp eq %union.rec* %106, null
br i1 %cmp690, label %if.then692, label %if.else694
if.then692: ; preds = %if.then678
%107 = load %struct.FILE_POS*, %struct.FILE_POS** @no_fpos, align 8, !tbaa !8
%call693 = call %union.rec* @GetMemory(i32 noundef %conv681, %struct.FILE_POS* noundef %107) #5
store %union.rec* %call693, %union.rec** @zz_hold, align 8, !tbaa !8
%.pre10496 = load i32, i32* @ttop, align 4, !tbaa !4
br label %if.end704
if.else694: ; preds = %if.then678
store %union.rec* %106, %union.rec** @zz_hold, align 8, !tbaa !8
%opred700 = getelementptr inbounds %union.rec, %union.rec* %106, i64 0, i32 0, i32 0, i64 0, i32 0
%108 = load %union.rec*, %union.rec** %opred700, align 8, !tbaa !10
store %union.rec* %108, %union.rec** %arrayidx689, align 8, !tbaa !8
br label %if.end704
if.end704: ; preds = %if.else694, %if.then692
%109 = phi i32 [ %.pre10496, %if.then692 ], [ %99, %if.else694 ]
%.in10544 = phi %union.rec* [ %call693, %if.then692 ], [ %106, %if.else694 ]
%conv705 = trunc i32 %typ630.0 to i8
%110 = getelementptr inbounds %union.rec, %union.rec* %.in10544, i64 0, i32 0, i32 1, i32 0, i32 0
store i8 %conv705, i8* %110, align 8, !tbaa !10
%111 = getelementptr inbounds %union.rec, %union.rec* %.in10544, i64 0, i32 0, i32 0, i64 1, i32 1
store %union.rec* %.in10544, %union.rec** %111, align 8, !tbaa !10
%112 = getelementptr inbounds %union.rec, %union.rec* %.in10544, i64 0, i32 0, i32 0, i64 1, i32 0
store %union.rec* %.in10544, %union.rec** %112, align 8, !tbaa !10
%113 = getelementptr inbounds %union.rec, %union.rec* %.in10544, i64 0, i32 0, i32 0, i64 0, i32 1
store %union.rec* %.in10544, %union.rec** %113, align 8, !tbaa !10
%114 = getelementptr %union.rec, %union.rec* %.in10544, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %.in10544, %union.rec** %114, align 8, !tbaa !10
%115 = getelementptr inbounds %union.rec, %union.rec* %.in10544, i64 0, i32 0, i32 2
%os21729 = bitcast %union.SECOND_UNION* %115 to %struct.anon.0*
%oprecedence730 = bitcast %union.SECOND_UNION* %115 to i8*
store i8 %prec631.0, i8* %oprecedence730, align 8, !tbaa !10
%116 = load %struct.word_type*, %struct.word_type** %79, align 8, !tbaa !8
%ou2732 = getelementptr inbounds %struct.word_type, %struct.word_type* %116, i64 0, i32 2
%os21733 = bitcast %union.SECOND_UNION* %ou2732 to %struct.anon.0*
%ovspace734 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os21733, i64 0, i32 2
%117 = load i8, i8* %ovspace734, align 2, !tbaa !10
%ovspace738 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os21729, i64 0, i32 2
store i8 %117, i8* %ovspace738, align 2, !tbaa !10
%ohspace742 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os21733, i64 0, i32 1
%118 = load i8, i8* %ohspace742, align 1, !tbaa !10
%ohspace746 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os21729, i64 0, i32 1
store i8 %118, i8* %ohspace746, align 1, !tbaa !10
%os5747 = bitcast %union.rec* %.in10544 to %struct.gapobj_type*
%119 = getelementptr inbounds %struct.gapobj_type, %struct.gapobj_type* %os5747, i64 0, i32 3, i32 0
%bf.load749 = load i16, i16* %119, align 4
%bf.clear755 = and i16 %bf.load749, -769
%bf.set756 = or i16 %bf.clear755, 512
store i16 %bf.set756, i16* %119, align 4
%ofile_num760 = getelementptr inbounds %struct.word_type, %struct.word_type* %116, i64 0, i32 1, i32 0, i32 2
%120 = load i16, i16* %ofile_num760, align 2, !tbaa !10
%121 = getelementptr inbounds %union.rec, %union.rec* %.in10544, i64 0, i32 0, i32 1, i32 0, i32 2
store i16 %120, i16* %121, align 2, !tbaa !10
%oline_num768 = getelementptr inbounds %struct.word_type, %struct.word_type* %116, i64 0, i32 1, i32 0, i32 3
%bf.load769 = load i32, i32* %oline_num768, align 4
%bf.clear770 = and i32 %bf.load769, 1048575
%122 = getelementptr inbounds %union.rec, %union.rec* %.in10544, i64 0, i32 0, i32 1, i32 0, i32 3
%bf.load775 = load i32, i32* %122, align 4
%bf.clear777 = and i32 %bf.load775, -1048576
%bf.set778 = or i32 %bf.clear777, %bf.clear770
store i32 %bf.set778, i32* %122, align 4
%bf.load783 = load i32, i32* %oline_num768, align 4
%bf.lshr784 = and i32 %bf.load783, -1048576
%bf.set793 = or i32 %bf.lshr784, %bf.clear770
store i32 %bf.set793, i32* %122, align 4
%inc794 = add nsw i32 %109, 1
store i32 %inc794, i32* @ttop, align 4, !tbaa !4
%cmp795 = icmp slt i32 %109, 99
br i1 %cmp795, label %if.then797, label %if.else800
if.then797: ; preds = %if.end704
%idxprom798 = sext i32 %inc794 to i64
%arrayidx799 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom798
store %union.rec* %.in10544, %union.rec** %arrayidx799, align 8, !tbaa !8
br label %if.end810
if.else800: ; preds = %if.end704
%idxprom80210217 = zext i32 %109 to i64
%arrayidx803 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom80210217
%123 = bitcast %union.rec** %arrayidx803 to %struct.word_type**
%124 = load %struct.word_type*, %struct.word_type** %123, align 8, !tbaa !8
%ofpos806 = getelementptr inbounds %struct.word_type, %struct.word_type* %124, i64 0, i32 1, i32 0
%call807 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 2, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos806) #5
br label %if.end810
if.end810: ; preds = %if.else800, %if.then797, %while.body674, %if.end627
%125 = load %union.rec*, %union.rec** %t, align 8, !tbaa !8
store %union.rec* %125, %union.rec** @zz_hold, align 8, !tbaa !8
%126 = load i32, i32* @otop, align 4, !tbaa !4
%inc811 = add nsw i32 %126, 1
store i32 %inc811, i32* @otop, align 4, !tbaa !4
%cmp812 = icmp slt i32 %126, 99
br i1 %cmp812, label %if.then814, label %if.else817
if.then814: ; preds = %if.end810
%idxprom815 = sext i32 %inc811 to i64
%arrayidx816 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom815
store %union.rec* %125, %union.rec** %arrayidx816, align 8, !tbaa !8
br label %if.end825
if.else817: ; preds = %if.end810
%idxprom81910216 = zext i32 %126 to i64
%arrayidx820 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom81910216
%127 = bitcast %union.rec** %arrayidx820 to %struct.word_type**
%128 = load %struct.word_type*, %struct.word_type** %127, align 8, !tbaa !8
%ofpos823 = getelementptr inbounds %struct.word_type, %struct.word_type* %128, i64 0, i32 1, i32 0
%call824 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 1, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos823) #5
br label %if.end825
if.end825: ; preds = %if.else817, %if.then814
%call826 = call %union.rec* @LexGetToken() #5
store %union.rec* %call826, %union.rec** %t, align 8, !tbaa !8
br label %for.cond581.backedge
sw.bb827: ; preds = %for.cond581
%tobool828.not = icmp eq i32 %obj_prev.1, 0
br i1 %tobool828.not, label %if.end1010, label %if.then829
if.then829: ; preds = %sw.bb827
%129 = getelementptr inbounds %union.rec, %union.rec* %84, i64 0, i32 0, i32 2
%os21834 = bitcast %union.SECOND_UNION* %129 to %struct.anon.0*
%ohspace835 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os21834, i64 0, i32 1
%130 = load i8, i8* %ohspace835, align 1, !tbaa !10
%conv836 = zext i8 %130 to i32
%ovspace840 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os21834, i64 0, i32 2
%131 = load i8, i8* %ovspace840, align 2, !tbaa !10
%conv841 = zext i8 %131 to i32
%add842 = sub nsw i32 0, %conv841
%cmp843.not = icmp eq i32 %conv836, %add842
%cmp855 = icmp eq i32 %obj_prev.1, 2
%typ830.0 = select i1 %cmp843.not, i32 101, i32 100
%132 = select i1 %cmp855, i8 7, i8 103
%133 = select i1 %cmp843.not, i8 %132, i8 7
br label %land.rhs863
land.rhs863: ; preds = %while.body874, %if.then829
%134 = load i32, i32* @ttop, align 4, !tbaa !4
%idxprom864 = sext i32 %134 to i64
%arrayidx865 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom864
%135 = bitcast %union.rec** %arrayidx865 to %struct.word_type**
%136 = load %struct.word_type*, %struct.word_type** %135, align 8, !tbaa !8
%ou2867 = getelementptr inbounds %struct.word_type, %struct.word_type* %136, i64 0, i32 2
%oprecedence869 = bitcast %union.SECOND_UNION* %ou2867 to i8*
%137 = load i8, i8* %oprecedence869, align 8, !tbaa !10
%cmp871.not = icmp ugt i8 %133, %137
br i1 %cmp871.not, label %if.then878, label %while.body874
while.body874: ; preds = %land.rhs863
%call875 = call fastcc i32 @Reduce()
%tobool862.not = icmp eq i32 %call875, 0
br i1 %tobool862.not, label %if.end1010, label %land.rhs863, !llvm.loop !13
if.then878: ; preds = %land.rhs863
%138 = zext i32 %typ830.0 to i64
%arrayidx880 = getelementptr inbounds [0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 %138
%139 = load i8, i8* %arrayidx880, align 1, !tbaa !10
%conv881 = zext i8 %139 to i32
store i32 %conv881, i32* @zz_size, align 4, !tbaa !4
%140 = zext i8 %139 to i64
%arrayidx889 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %140
%141 = load %union.rec*, %union.rec** %arrayidx889, align 8, !tbaa !8
%cmp890 = icmp eq %union.rec* %141, null
br i1 %cmp890, label %if.then892, label %if.else894
if.then892: ; preds = %if.then878
%142 = load %struct.FILE_POS*, %struct.FILE_POS** @no_fpos, align 8, !tbaa !8
%call893 = call %union.rec* @GetMemory(i32 noundef %conv881, %struct.FILE_POS* noundef %142) #5
store %union.rec* %call893, %union.rec** @zz_hold, align 8, !tbaa !8
%.pre10494 = load i32, i32* @ttop, align 4, !tbaa !4
br label %if.end904
if.else894: ; preds = %if.then878
store %union.rec* %141, %union.rec** @zz_hold, align 8, !tbaa !8
%opred900 = getelementptr inbounds %union.rec, %union.rec* %141, i64 0, i32 0, i32 0, i64 0, i32 0
%143 = load %union.rec*, %union.rec** %opred900, align 8, !tbaa !10
store %union.rec* %143, %union.rec** %arrayidx889, align 8, !tbaa !8
br label %if.end904
if.end904: ; preds = %if.else894, %if.then892
%144 = phi i32 [ %.pre10494, %if.then892 ], [ %134, %if.else894 ]
%.in10542 = phi %union.rec* [ %call893, %if.then892 ], [ %141, %if.else894 ]
%conv905 = trunc i32 %typ830.0 to i8
%145 = getelementptr inbounds %union.rec, %union.rec* %.in10542, i64 0, i32 0, i32 1, i32 0, i32 0
store i8 %conv905, i8* %145, align 8, !tbaa !10
%146 = getelementptr inbounds %union.rec, %union.rec* %.in10542, i64 0, i32 0, i32 0, i64 1, i32 1
store %union.rec* %.in10542, %union.rec** %146, align 8, !tbaa !10
%147 = getelementptr inbounds %union.rec, %union.rec* %.in10542, i64 0, i32 0, i32 0, i64 1, i32 0
store %union.rec* %.in10542, %union.rec** %147, align 8, !tbaa !10
%148 = getelementptr inbounds %union.rec, %union.rec* %.in10542, i64 0, i32 0, i32 0, i64 0, i32 1
store %union.rec* %.in10542, %union.rec** %148, align 8, !tbaa !10
%149 = getelementptr %union.rec, %union.rec* %.in10542, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %.in10542, %union.rec** %149, align 8, !tbaa !10
%150 = getelementptr inbounds %union.rec, %union.rec* %.in10542, i64 0, i32 0, i32 2
%os21929 = bitcast %union.SECOND_UNION* %150 to %struct.anon.0*
%oprecedence930 = bitcast %union.SECOND_UNION* %150 to i8*
store i8 %133, i8* %oprecedence930, align 8, !tbaa !10
%151 = load %struct.word_type*, %struct.word_type** %79, align 8, !tbaa !8
%ou2932 = getelementptr inbounds %struct.word_type, %struct.word_type* %151, i64 0, i32 2
%os21933 = bitcast %union.SECOND_UNION* %ou2932 to %struct.anon.0*
%ovspace934 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os21933, i64 0, i32 2
%152 = load i8, i8* %ovspace934, align 2, !tbaa !10
%ovspace938 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os21929, i64 0, i32 2
store i8 %152, i8* %ovspace938, align 2, !tbaa !10
%ohspace942 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os21933, i64 0, i32 1
%153 = load i8, i8* %ohspace942, align 1, !tbaa !10
%ohspace946 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os21929, i64 0, i32 1
store i8 %153, i8* %ohspace946, align 1, !tbaa !10
%os5947 = bitcast %union.rec* %.in10542 to %struct.gapobj_type*
%154 = getelementptr inbounds %struct.gapobj_type, %struct.gapobj_type* %os5947, i64 0, i32 3, i32 0
%bf.load949 = load i16, i16* %154, align 4
%bf.clear955 = and i16 %bf.load949, -769
%bf.set956 = or i16 %bf.clear955, 512
store i16 %bf.set956, i16* %154, align 4
%ofile_num960 = getelementptr inbounds %struct.word_type, %struct.word_type* %151, i64 0, i32 1, i32 0, i32 2
%155 = load i16, i16* %ofile_num960, align 2, !tbaa !10
%156 = getelementptr inbounds %union.rec, %union.rec* %.in10542, i64 0, i32 0, i32 1, i32 0, i32 2
store i16 %155, i16* %156, align 2, !tbaa !10
%oline_num968 = getelementptr inbounds %struct.word_type, %struct.word_type* %151, i64 0, i32 1, i32 0, i32 3
%bf.load969 = load i32, i32* %oline_num968, align 4
%bf.clear970 = and i32 %bf.load969, 1048575
%157 = getelementptr inbounds %union.rec, %union.rec* %.in10542, i64 0, i32 0, i32 1, i32 0, i32 3
%bf.load975 = load i32, i32* %157, align 4
%bf.clear977 = and i32 %bf.load975, -1048576
%bf.set978 = or i32 %bf.clear977, %bf.clear970
store i32 %bf.set978, i32* %157, align 4
%bf.load983 = load i32, i32* %oline_num968, align 4
%bf.lshr984 = and i32 %bf.load983, -1048576
%bf.set993 = or i32 %bf.lshr984, %bf.clear970
store i32 %bf.set993, i32* %157, align 4
%inc994 = add nsw i32 %144, 1
store i32 %inc994, i32* @ttop, align 4, !tbaa !4
%cmp995 = icmp slt i32 %144, 99
br i1 %cmp995, label %if.then997, label %if.else1000
if.then997: ; preds = %if.end904
%idxprom998 = sext i32 %inc994 to i64
%arrayidx999 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom998
store %union.rec* %.in10542, %union.rec** %arrayidx999, align 8, !tbaa !8
br label %if.end1010
if.else1000: ; preds = %if.end904
%idxprom100210220 = zext i32 %144 to i64
%arrayidx1003 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom100210220
%158 = bitcast %union.rec** %arrayidx1003 to %struct.word_type**
%159 = load %struct.word_type*, %struct.word_type** %158, align 8, !tbaa !8
%ofpos1006 = getelementptr inbounds %struct.word_type, %struct.word_type* %159, i64 0, i32 1, i32 0
%call1007 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 2, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos1006) #5
br label %if.end1010
if.end1010: ; preds = %if.else1000, %if.then997, %while.body874, %sw.bb827
%160 = load %union.rec*, %union.rec** %t, align 8, !tbaa !8
store %union.rec* %160, %union.rec** @zz_hold, align 8, !tbaa !8
%161 = load i32, i32* @otop, align 4, !tbaa !4
%inc1011 = add nsw i32 %161, 1
store i32 %inc1011, i32* @otop, align 4, !tbaa !4
%cmp1012 = icmp slt i32 %161, 99
br i1 %cmp1012, label %if.then1014, label %if.else1017
if.then1014: ; preds = %if.end1010
%idxprom1015 = sext i32 %inc1011 to i64
%arrayidx1016 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom1015
store %union.rec* %160, %union.rec** %arrayidx1016, align 8, !tbaa !8
br label %if.end1025
if.else1017: ; preds = %if.end1010
%idxprom101910219 = zext i32 %161 to i64
%arrayidx1020 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom101910219
%162 = bitcast %union.rec** %arrayidx1020 to %struct.word_type**
%163 = load %struct.word_type*, %struct.word_type** %162, align 8, !tbaa !8
%ofpos1023 = getelementptr inbounds %struct.word_type, %struct.word_type* %163, i64 0, i32 1, i32 0
%call1024 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 1, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos1023) #5
br label %if.end1025
if.end1025: ; preds = %if.else1017, %if.then1014
%call1026 = call %union.rec* @LexGetToken() #5
store %union.rec* %call1026, %union.rec** %t, align 8, !tbaa !8
br label %for.cond581.backedge
for.cond1028: ; preds = %for.cond1028.backedge, %for.cond1028.preheader
%obj_prev.4 = phi i32 [ %obj_prev.1, %for.cond1028.preheader ], [ %obj_prev.4.be, %for.cond1028.backedge ]
%tobool1029.not = icmp eq i32 %obj_prev.4, 0
br i1 %tobool1029.not, label %if.then1030, label %if.else1050
if.then1030: ; preds = %for.cond1028
%164 = load %struct.word_type*, %struct.word_type** %79, align 8, !tbaa !8
%ofpos1033 = getelementptr inbounds %struct.word_type, %struct.word_type* %164, i64 0, i32 1, i32 0
%call1034 = call %union.rec* @MakeWord(i32 noundef 11, i8* noundef getelementptr inbounds ([1 x i8], [1 x i8]* @.str.27, i64 0, i64 0), %struct.FILE_POS* noundef nonnull %ofpos1033) #5
store %union.rec* %call1034, %union.rec** @zz_hold, align 8, !tbaa !8
%165 = load i32, i32* @otop, align 4, !tbaa !4
%inc1035 = add nsw i32 %165, 1
store i32 %inc1035, i32* @otop, align 4, !tbaa !4
%cmp1036 = icmp slt i32 %165, 99
br i1 %cmp1036, label %if.then1038, label %if.else1041
if.then1038: ; preds = %if.then1030
%idxprom1039 = sext i32 %inc1035 to i64
%arrayidx1040 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom1039
store %union.rec* %call1034, %union.rec** %arrayidx1040, align 8, !tbaa !8
br label %for.cond1028.backedge
for.cond1028.backedge: ; preds = %if.then1066, %if.else1041, %if.then1038
%obj_prev.4.be = phi i32 [ %call1067, %if.then1066 ], [ 1, %if.else1041 ], [ 1, %if.then1038 ]
br label %for.cond1028
if.else1041: ; preds = %if.then1030
%idxprom104310222 = zext i32 %165 to i64
%arrayidx1044 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom104310222
%166 = bitcast %union.rec** %arrayidx1044 to %struct.word_type**
%167 = load %struct.word_type*, %struct.word_type** %166, align 8, !tbaa !8
%ofpos1047 = getelementptr inbounds %struct.word_type, %struct.word_type* %167, i64 0, i32 1, i32 0
%call1048 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 1, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos1047) #5
br label %for.cond1028.backedge
if.else1050: ; preds = %for.cond1028
%168 = load i32, i32* @ttop, align 4, !tbaa !4
%idxprom1051 = sext i32 %168 to i64
%arrayidx1052 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom1051
%169 = bitcast %union.rec** %arrayidx1052 to %struct.word_type**
%170 = load %struct.word_type*, %struct.word_type** %169, align 8, !tbaa !8
%ou21054 = getelementptr inbounds %struct.word_type, %struct.word_type* %170, i64 0, i32 2
%oprecedence1056 = bitcast %union.SECOND_UNION* %ou21054 to i8*
%171 = load i8, i8* %oprecedence1056, align 8, !tbaa !10
%172 = load %struct.word_type*, %struct.word_type** %79, align 8, !tbaa !8
%ou21059 = getelementptr inbounds %struct.word_type, %struct.word_type* %172, i64 0, i32 2
%oprecedence1061 = bitcast %union.SECOND_UNION* %ou21059 to i8*
%173 = load i8, i8* %oprecedence1061, align 8, !tbaa !10
%cmp1064.not = icmp ult i8 %171, %173
br i1 %cmp1064.not, label %for.end1077, label %if.then1066
if.then1066: ; preds = %if.else1050
%call1067 = call fastcc i32 @Reduce()
%174 = load i32, i32* @ttop, align 4, !tbaa !4
%cmp1068 = icmp eq i32 %174, %4
br i1 %cmp1068, label %if.then1070, label %for.cond1028.backedge
if.then1070: ; preds = %if.then1066
%175 = load %union.rec*, %union.rec** %t, align 8, !tbaa !8
br label %cleanup9179
for.end1077: ; preds = %if.else1050
%inc1078 = add nsw i32 %168, 1
store i32 %inc1078, i32* @ttop, align 4, !tbaa !4
%cmp1079 = icmp slt i32 %168, 99
br i1 %cmp1079, label %if.then1081, label %if.else1084
if.then1081: ; preds = %for.end1077
%idxprom1082 = sext i32 %inc1078 to i64
%arrayidx1083 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom1082
%176 = bitcast %union.rec** %arrayidx1083 to %struct.word_type**
store %struct.word_type* %172, %struct.word_type** %176, align 8, !tbaa !8
br label %if.end1092
if.else1084: ; preds = %for.end1077
%ofpos1090 = getelementptr inbounds %struct.word_type, %struct.word_type* %170, i64 0, i32 1, i32 0
%call1091 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 2, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos1090) #5
br label %if.end1092
if.end1092: ; preds = %if.else1084, %if.then1081
br i1 %tobool7079.not, label %if.end1222, label %land.lhs.true1094
land.lhs.true1094: ; preds = %if.end1092
%177 = load %union.rec*, %union.rec** %t, align 8, !tbaa !8
%otype1098 = getelementptr inbounds %union.rec, %union.rec* %177, i64 0, i32 0, i32 1, i32 0, i32 0
%178 = load i8, i8* %otype1098, align 8, !tbaa !10
%cmp1100 = icmp eq i8 %178, 19
br i1 %cmp1100, label %land.lhs.true1102, label %if.end1222
land.lhs.true1102: ; preds = %land.lhs.true1094
%179 = getelementptr inbounds %union.rec, %union.rec* %177, i64 0, i32 0, i32 5
%180 = bitcast %union.rec** %179 to %struct.word_type**
%181 = load %struct.word_type*, %struct.word_type** %180, align 8, !tbaa !10
%ou21106 = getelementptr inbounds %struct.word_type, %struct.word_type* %181, i64 0, i32 2
%os26 = bitcast %union.SECOND_UNION* %ou21106 to %struct.anon.5*
%ohas_join = getelementptr inbounds %struct.anon.5, %struct.anon.5* %os26, i64 0, i32 1
%182 = bitcast [3 x i8]* %ohas_join to i24*
%bf.load1107 = load i24, i24* %182, align 1
%183 = and i24 %bf.load1107, 262144
%tobool1110.not = icmp eq i24 %183, 0
br i1 %tobool1110.not, label %land.lhs.true1111, label %if.end1222
land.lhs.true1111: ; preds = %land.lhs.true1102
%184 = load i32, i32* @ttop, align 4, !tbaa !4
%sub1112 = add nsw i32 %184, -2
%idxprom1113 = sext i32 %sub1112 to i64
%arrayidx1114 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom1113
%185 = bitcast %union.rec** %arrayidx1114 to %struct.word_type**
%186 = load %struct.word_type*, %struct.word_type** %185, align 8, !tbaa !8
%otype1118 = getelementptr inbounds %struct.word_type, %struct.word_type* %186, i64 0, i32 1, i32 0, i32 0
%187 = load i8, i8* %otype1118, align 8, !tbaa !10
%cmp1120 = icmp eq i8 %187, 110
br i1 %cmp1120, label %if.then1122, label %if.end1222
if.then1122: ; preds = %land.lhs.true1111
%188 = load i32, i32* @otop, align 4, !tbaa !4
%dec1123 = add nsw i32 %188, -1
store i32 %dec1123, i32* @otop, align 4, !tbaa !4
%idxprom1124 = sext i32 %188 to i64
%arrayidx1125 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom1124
%189 = load %union.rec*, %union.rec** %arrayidx1125, align 8, !tbaa !8
call void @TransferComponent(%union.rec* noundef %189) #5
%190 = load i8, i8* getelementptr inbounds ([0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 5), align 1, !tbaa !10
%conv1126 = zext i8 %190 to i32
store i32 %conv1126, i32* @zz_size, align 4, !tbaa !4
%191 = zext i8 %190 to i64
%arrayidx1134 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %191
%192 = load %union.rec*, %union.rec** %arrayidx1134, align 8, !tbaa !8
%cmp1135 = icmp eq %union.rec* %192, null
br i1 %cmp1135, label %if.then1137, label %if.else1139
if.then1137: ; preds = %if.then1122
%193 = load %struct.FILE_POS*, %struct.FILE_POS** @no_fpos, align 8, !tbaa !8
%call1138 = call %union.rec* @GetMemory(i32 noundef %conv1126, %struct.FILE_POS* noundef %193) #5
br label %if.end1149
if.else1139: ; preds = %if.then1122
store %union.rec* %192, %union.rec** @zz_hold, align 8, !tbaa !8
%opred1145 = getelementptr inbounds %union.rec, %union.rec* %192, i64 0, i32 0, i32 0, i64 0, i32 0
%194 = load %union.rec*, %union.rec** %opred1145, align 8, !tbaa !10
store %union.rec* %194, %union.rec** %arrayidx1134, align 8, !tbaa !8
br label %if.end1149
if.end1149: ; preds = %if.else1139, %if.then1137
%.in10540 = phi %union.rec* [ %call1138, %if.then1137 ], [ %192, %if.else1139 ]
%195 = getelementptr inbounds %union.rec, %union.rec* %.in10540, i64 0, i32 0, i32 1, i32 0, i32 0
store i8 5, i8* %195, align 8, !tbaa !10
%196 = getelementptr inbounds %union.rec, %union.rec* %.in10540, i64 0, i32 0, i32 0, i64 1, i32 1
store %union.rec* %.in10540, %union.rec** %196, align 8, !tbaa !10
%197 = getelementptr inbounds %union.rec, %union.rec* %.in10540, i64 0, i32 0, i32 0, i64 1, i32 0
store %union.rec* %.in10540, %union.rec** %197, align 8, !tbaa !10
%198 = getelementptr inbounds %union.rec, %union.rec* %.in10540, i64 0, i32 0, i32 0, i64 0, i32 1
store %union.rec* %.in10540, %union.rec** %198, align 8, !tbaa !10
%199 = getelementptr %union.rec, %union.rec* %.in10540, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %.in10540, %union.rec** %199, align 8, !tbaa !10
%200 = load %struct.word_type*, %struct.word_type** %79, align 8, !tbaa !8
%ofile_num1173 = getelementptr inbounds %struct.word_type, %struct.word_type* %200, i64 0, i32 1, i32 0, i32 2
%201 = load i16, i16* %ofile_num1173, align 2, !tbaa !10
%202 = getelementptr inbounds %union.rec, %union.rec* %.in10540, i64 0, i32 0, i32 1, i32 0, i32 2
store i16 %201, i16* %202, align 2, !tbaa !10
%oline_num1181 = getelementptr inbounds %struct.word_type, %struct.word_type* %200, i64 0, i32 1, i32 0, i32 3
%bf.load1182 = load i32, i32* %oline_num1181, align 4
%bf.clear1183 = and i32 %bf.load1182, 1048575
%203 = getelementptr inbounds %union.rec, %union.rec* %.in10540, i64 0, i32 0, i32 1, i32 0, i32 3
%bf.load1188 = load i32, i32* %203, align 4
%bf.clear1190 = and i32 %bf.load1188, -1048576
%bf.set1191 = or i32 %bf.clear1190, %bf.clear1183
store i32 %bf.set1191, i32* %203, align 4
%bf.load1196 = load i32, i32* %oline_num1181, align 4
%bf.lshr1197 = and i32 %bf.load1196, -1048576
%bf.set1206 = or i32 %bf.lshr1197, %bf.clear1183
store i32 %bf.set1206, i32* %203, align 4
store %union.rec* %.in10540, %union.rec** @zz_hold, align 8, !tbaa !8
%204 = load i32, i32* @otop, align 4, !tbaa !4
%inc1207 = add nsw i32 %204, 1
store i32 %inc1207, i32* @otop, align 4, !tbaa !4
%cmp1208 = icmp slt i32 %204, 99
br i1 %cmp1208, label %if.then1210, label %if.else1213
if.then1210: ; preds = %if.end1149
%idxprom1211 = sext i32 %inc1207 to i64
%arrayidx1212 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom1211
store %union.rec* %.in10540, %union.rec** %arrayidx1212, align 8, !tbaa !8
br label %if.end1222
if.else1213: ; preds = %if.end1149
%idxprom121510226 = zext i32 %204 to i64
%arrayidx1216 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom121510226
%205 = bitcast %union.rec** %arrayidx1216 to %struct.word_type**
%206 = load %struct.word_type*, %struct.word_type** %205, align 8, !tbaa !8
%ofpos1219 = getelementptr inbounds %struct.word_type, %struct.word_type* %206, i64 0, i32 1, i32 0
%call1220 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 1, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos1219) #5
br label %if.end1222
if.end1222: ; preds = %if.else1213, %if.then1210, %land.lhs.true1111, %land.lhs.true1102, %land.lhs.true1094, %if.end1092
%207 = load i8, i8* getelementptr inbounds ([0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 1), align 1, !tbaa !10
%conv1223 = zext i8 %207 to i32
store i32 %conv1223, i32* @zz_size, align 4, !tbaa !4
%208 = zext i8 %207 to i64
%arrayidx1231 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %208
%209 = load %union.rec*, %union.rec** %arrayidx1231, align 8, !tbaa !8
%cmp1232 = icmp eq %union.rec* %209, null
br i1 %cmp1232, label %if.then1234, label %if.else1236
if.then1234: ; preds = %if.end1222
%210 = load %struct.FILE_POS*, %struct.FILE_POS** @no_fpos, align 8, !tbaa !8
%call1235 = call %union.rec* @GetMemory(i32 noundef %conv1223, %struct.FILE_POS* noundef %210) #5
store %union.rec* %call1235, %union.rec** @zz_hold, align 8, !tbaa !8
br label %if.end1246
if.else1236: ; preds = %if.end1222
store %union.rec* %209, %union.rec** @zz_hold, align 8, !tbaa !8
%opred1242 = getelementptr inbounds %union.rec, %union.rec* %209, i64 0, i32 0, i32 0, i64 0, i32 0
%211 = load %union.rec*, %union.rec** %opred1242, align 8, !tbaa !10
store %union.rec* %211, %union.rec** %arrayidx1231, align 8, !tbaa !8
br label %if.end1246
if.end1246: ; preds = %if.else1236, %if.then1234
%.in10538 = phi %union.rec* [ %call1235, %if.then1234 ], [ %209, %if.else1236 ]
%212 = getelementptr inbounds %union.rec, %union.rec* %.in10538, i64 0, i32 0, i32 1, i32 0, i32 0
store i8 1, i8* %212, align 8, !tbaa !10
%213 = getelementptr inbounds %union.rec, %union.rec* %.in10538, i64 0, i32 0, i32 0, i64 1, i32 1
store %union.rec* %.in10538, %union.rec** %213, align 8, !tbaa !10
%214 = getelementptr inbounds %union.rec, %union.rec* %.in10538, i64 0, i32 0, i32 0, i64 1, i32 0
store %union.rec* %.in10538, %union.rec** %214, align 8, !tbaa !10
%215 = getelementptr inbounds %union.rec, %union.rec* %.in10538, i64 0, i32 0, i32 0, i64 0, i32 1
store %union.rec* %.in10538, %union.rec** %215, align 8, !tbaa !10
%216 = getelementptr %union.rec, %union.rec* %.in10538, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %.in10538, %union.rec** %216, align 8, !tbaa !10
%217 = load %struct.closure_type*, %struct.closure_type** %83, align 8, !tbaa !8
%oactual1268 = getelementptr inbounds %struct.closure_type, %struct.closure_type* %217, i64 0, i32 5
%218 = bitcast %union.rec** %oactual1268 to %struct.word_type**
%219 = load %struct.word_type*, %struct.word_type** %218, align 8, !tbaa !10
%ou21270 = getelementptr inbounds %struct.word_type, %struct.word_type* %219, i64 0, i32 2
%os261271 = bitcast %union.SECOND_UNION* %ou21270 to %struct.anon.5*
%ohas_mark = getelementptr inbounds %struct.anon.5, %struct.anon.5* %os261271, i64 0, i32 1
%220 = bitcast [3 x i8]* %ohas_mark to i24*
%bf.load1272 = load i24, i24* %220, align 1
%os51276 = bitcast %union.rec* %.in10538 to %struct.gapobj_type*
%221 = getelementptr inbounds %struct.gapobj_type, %struct.gapobj_type* %os51276, i64 0, i32 3, i32 0
%bf.load1278 = load i16, i16* %221, align 4
%sh.diff = lshr i24 %bf.load1272, 9
%tr.sh.diff = trunc i24 %sh.diff to i16
%bf.shl1280 = and i16 %tr.sh.diff, 256
%bf.clear1281 = and i16 %bf.load1278, -257
%bf.set1282 = or i16 %bf.shl1280, %bf.clear1281
store i16 %bf.set1282, i16* %221, align 4
%222 = load %struct.word_type*, %struct.word_type** %218, align 8, !tbaa !10
%ou21286 = getelementptr inbounds %struct.word_type, %struct.word_type* %222, i64 0, i32 2
%os261287 = bitcast %union.SECOND_UNION* %ou21286 to %struct.anon.5*
%ohas_join1288 = getelementptr inbounds %struct.anon.5, %struct.anon.5* %os261287, i64 0, i32 1
%223 = bitcast [3 x i8]* %ohas_join1288 to i24*
%bf.load1289 = load i24, i24* %223, align 1
%sh.diff10132 = lshr i24 %bf.load1289, 9
%tr.sh.diff10133 = trunc i24 %sh.diff10132 to i16
%bf.shl1297 = and i16 %tr.sh.diff10133, 512
%bf.clear1298 = and i16 %bf.set1282, -513
%bf.set1299 = or i16 %bf.shl1297, %bf.clear1298
store i16 %bf.set1299, i16* %221, align 4
%224 = getelementptr inbounds %struct.closure_type, %struct.closure_type* %217, i64 0, i32 2
%os211303 = bitcast %union.SECOND_UNION* %224 to %struct.anon.0*
%ohspace1304 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os211303, i64 0, i32 1
%225 = load i8, i8* %ohspace1304, align 1, !tbaa !10
%226 = getelementptr inbounds %union.rec, %union.rec* %.in10538, i64 0, i32 0, i32 2
%os211308 = bitcast %union.SECOND_UNION* %226 to %struct.anon.0*
%ohspace1309 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os211308, i64 0, i32 1
store i8 %225, i8* %ohspace1309, align 1, !tbaa !10
%ovspace1313 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os211303, i64 0, i32 2
%227 = load i8, i8* %ovspace1313, align 2, !tbaa !10
%ovspace1317 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os211308, i64 0, i32 2
store i8 %227, i8* %ovspace1317, align 2, !tbaa !10
%oprecedence1321 = bitcast %union.SECOND_UNION* %226 to i8*
store i8 102, i8* %oprecedence1321, align 8, !tbaa !10
%228 = getelementptr inbounds %struct.closure_type, %struct.closure_type* %217, i64 0, i32 1, i32 0, i32 2
%229 = load i16, i16* %228, align 2, !tbaa !10
%230 = getelementptr inbounds %union.rec, %union.rec* %.in10538, i64 0, i32 0, i32 1, i32 0
%231 = getelementptr inbounds %union.rec, %union.rec* %.in10538, i64 0, i32 0, i32 1, i32 0, i32 2
store i16 %229, i16* %231, align 2, !tbaa !10
%232 = getelementptr inbounds %struct.closure_type, %struct.closure_type* %217, i64 0, i32 1, i32 0, i32 3
%bf.load1334 = load i32, i32* %232, align 4
%bf.clear1335 = and i32 %bf.load1334, 1048575
%233 = getelementptr inbounds %union.rec, %union.rec* %.in10538, i64 0, i32 0, i32 1, i32 0, i32 3
%bf.load1340 = load i32, i32* %233, align 4
%bf.clear1342 = and i32 %bf.load1340, -1048576
%bf.set1343 = or i32 %bf.clear1342, %bf.clear1335
store i32 %bf.set1343, i32* %233, align 4
%bf.load1348 = load i32, i32* %232, align 4
%bf.lshr1349 = and i32 %bf.load1348, -1048576
%bf.set1358 = or i32 %bf.lshr1349, %bf.clear1335
store i32 %bf.set1358, i32* %233, align 4
%234 = load i32, i32* @ttop, align 4, !tbaa !4
%inc1545 = add nsw i32 %234, 1
store i32 %inc1545, i32* @ttop, align 4, !tbaa !4
%cmp1546 = icmp slt i32 %234, 99
br i1 %cmp1546, label %if.then1548, label %if.else1551
if.then1548: ; preds = %if.end1246
%idxprom1549 = sext i32 %inc1545 to i64
%arrayidx1550 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom1549
store %union.rec* %.in10538, %union.rec** %arrayidx1550, align 8, !tbaa !8
br label %if.end1559
if.else1551: ; preds = %if.end1246
%idxprom155310224 = zext i32 %234 to i64
%arrayidx1554 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom155310224
%235 = bitcast %union.rec** %arrayidx1554 to %struct.word_type**
%236 = load %struct.word_type*, %struct.word_type** %235, align 8, !tbaa !8
%ofpos1557 = getelementptr inbounds %struct.word_type, %struct.word_type* %236, i64 0, i32 1, i32 0
%call1558 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 2, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos1557) #5
br label %if.end1559
if.end1559: ; preds = %if.else1551, %if.then1548
%call1560 = call %union.rec* @LexGetToken() #5
store %union.rec* %call1560, %union.rec** %t, align 8, !tbaa !8
%237 = getelementptr inbounds %union.rec, %union.rec* %call1560, i64 0, i32 0, i32 2
%os211563 = bitcast %union.SECOND_UNION* %237 to %struct.anon.0*
%ohspace1564 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os211563, i64 0, i32 1
%238 = load i8, i8* %ohspace1564, align 1, !tbaa !10
%conv1565 = zext i8 %238 to i32
%ovspace1569 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os211563, i64 0, i32 2
%239 = load i8, i8* %ovspace1569, align 2, !tbaa !10
%conv1570 = zext i8 %239 to i32
%add1571 = sub nsw i32 0, %conv1570
%cmp1572.not = icmp eq i32 %conv1565, %add1571
br i1 %cmp1572.not, label %for.cond581.backedge, label %if.end1789
if.end1789: ; preds = %if.end1559
%call1793 = call %union.rec* @MakeWord(i32 noundef 11, i8* noundef getelementptr inbounds ([1 x i8], [1 x i8]* @.str.27, i64 0, i64 0), %struct.FILE_POS* noundef nonnull %230) #5
store %union.rec* %call1793, %union.rec** @zz_hold, align 8, !tbaa !8
%240 = load i32, i32* @otop, align 4, !tbaa !4
%inc1794 = add nsw i32 %240, 1
store i32 %inc1794, i32* @otop, align 4, !tbaa !4
%cmp1795 = icmp slt i32 %240, 99
br i1 %cmp1795, label %if.then1797, label %if.else1800
if.then1797: ; preds = %if.end1789
%idxprom1798 = sext i32 %inc1794 to i64
%arrayidx1799 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom1798
store %union.rec* %call1793, %union.rec** %arrayidx1799, align 8, !tbaa !8
br label %for.cond581.backedge
if.else1800: ; preds = %if.end1789
%idxprom180210223 = zext i32 %240 to i64
%arrayidx1803 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom180210223
%241 = bitcast %union.rec** %arrayidx1803 to %struct.word_type**
%242 = load %struct.word_type*, %struct.word_type** %241, align 8, !tbaa !8
%ofpos1806 = getelementptr inbounds %struct.word_type, %struct.word_type* %242, i64 0, i32 1, i32 0
%call1807 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 1, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos1806) #5
br label %for.cond581.backedge
sw.bb1810: ; preds = %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581
%243 = getelementptr inbounds %union.rec, %union.rec* %84, i64 0, i32 0, i32 5
%244 = bitcast %union.rec** %243 to %struct.word_type**
%245 = load %struct.word_type*, %struct.word_type** %244, align 8, !tbaa !10
%ou21814 = getelementptr inbounds %struct.word_type, %struct.word_type* %245, i64 0, i32 2
%os261815 = bitcast %union.SECOND_UNION* %ou21814 to %struct.anon.5*
%ohas_lpar = getelementptr inbounds %struct.anon.5, %struct.anon.5* %os261815, i64 0, i32 1
%246 = bitcast [3 x i8]* %ohas_lpar to i24*
%bf.load1816 = load i24, i24* %246, align 1
%247 = and i24 %bf.load1816, 4
%tobool1820.not = icmp eq i24 %247, 0
br i1 %tobool1820.not, label %if.else1873, label %for.cond1822
for.cond1822: ; preds = %for.cond1822.backedge, %sw.bb1810
%obj_prev.8 = phi i32 [ %obj_prev.8.be, %for.cond1822.backedge ], [ %obj_prev.1, %sw.bb1810 ]
%tobool1823.not = icmp eq i32 %obj_prev.8, 0
br i1 %tobool1823.not, label %if.then1824, label %if.else1844
if.then1824: ; preds = %for.cond1822
%248 = load %struct.word_type*, %struct.word_type** %79, align 8, !tbaa !8
%ofpos1827 = getelementptr inbounds %struct.word_type, %struct.word_type* %248, i64 0, i32 1, i32 0
%call1828 = call %union.rec* @MakeWord(i32 noundef 11, i8* noundef getelementptr inbounds ([1 x i8], [1 x i8]* @.str.27, i64 0, i64 0), %struct.FILE_POS* noundef nonnull %ofpos1827) #5
store %union.rec* %call1828, %union.rec** @zz_hold, align 8, !tbaa !8
%249 = load i32, i32* @otop, align 4, !tbaa !4
%inc1829 = add nsw i32 %249, 1
store i32 %inc1829, i32* @otop, align 4, !tbaa !4
%cmp1830 = icmp slt i32 %249, 99
br i1 %cmp1830, label %if.then1832, label %if.else1835
if.then1832: ; preds = %if.then1824
%idxprom1833 = sext i32 %inc1829 to i64
%arrayidx1834 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom1833
store %union.rec* %call1828, %union.rec** %arrayidx1834, align 8, !tbaa !8
br label %for.cond1822.backedge
for.cond1822.backedge: ; preds = %if.then1860, %if.else1835, %if.then1832
%obj_prev.8.be = phi i32 [ %call1861, %if.then1860 ], [ 1, %if.else1835 ], [ 1, %if.then1832 ]
br label %for.cond1822
if.else1835: ; preds = %if.then1824
%idxprom183710231 = zext i32 %249 to i64
%arrayidx1838 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom183710231
%250 = bitcast %union.rec** %arrayidx1838 to %struct.word_type**
%251 = load %struct.word_type*, %struct.word_type** %250, align 8, !tbaa !8
%ofpos1841 = getelementptr inbounds %struct.word_type, %struct.word_type* %251, i64 0, i32 1, i32 0
%call1842 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 1, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos1841) #5
br label %for.cond1822.backedge
if.else1844: ; preds = %for.cond1822
%252 = load i32, i32* @ttop, align 4, !tbaa !4
%idxprom1845 = sext i32 %252 to i64
%arrayidx1846 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom1845
%253 = bitcast %union.rec** %arrayidx1846 to %struct.word_type**
%254 = load %struct.word_type*, %struct.word_type** %253, align 8, !tbaa !8
%ou21848 = getelementptr inbounds %struct.word_type, %struct.word_type* %254, i64 0, i32 2
%oprecedence1850 = bitcast %union.SECOND_UNION* %ou21848 to i8*
%255 = load i8, i8* %oprecedence1850, align 8, !tbaa !10
%256 = load %struct.word_type*, %struct.word_type** %79, align 8, !tbaa !8
%ou21853 = getelementptr inbounds %struct.word_type, %struct.word_type* %256, i64 0, i32 2
%oprecedence1855 = bitcast %union.SECOND_UNION* %ou21853 to i8*
%257 = load i8, i8* %oprecedence1855, align 8, !tbaa !10
%cmp1858.not.not = icmp ult i8 %257, %255
br i1 %cmp1858.not.not, label %if.then1860, label %if.end2057
if.then1860: ; preds = %if.else1844
%call1861 = call fastcc i32 @Reduce()
%258 = load i32, i32* @ttop, align 4, !tbaa !4
%cmp1862 = icmp eq i32 %258, %4
br i1 %cmp1862, label %if.then1864, label %for.cond1822.backedge
if.then1864: ; preds = %if.then1860
%259 = load %union.rec*, %union.rec** %t, align 8, !tbaa !8
br label %cleanup9179
if.else1873: ; preds = %sw.bb1810
%tobool1874.not = icmp eq i32 %obj_prev.1, 0
br i1 %tobool1874.not, label %if.end2057, label %if.then1875
if.then1875: ; preds = %if.else1873
%260 = getelementptr inbounds %union.rec, %union.rec* %84, i64 0, i32 0, i32 2
%os211880 = bitcast %union.SECOND_UNION* %260 to %struct.anon.0*
%ohspace1881 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os211880, i64 0, i32 1
%261 = load i8, i8* %ohspace1881, align 1, !tbaa !10
%conv1882 = zext i8 %261 to i32
%ovspace1886 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os211880, i64 0, i32 2
%262 = load i8, i8* %ovspace1886, align 2, !tbaa !10
%conv1887 = zext i8 %262 to i32
%add1888 = sub nsw i32 0, %conv1887
%cmp1889.not = icmp eq i32 %conv1882, %add1888
%cmp1901 = icmp eq i32 %obj_prev.1, 2
%.10141 = select i1 %cmp1901, i8 7, i8 103
%typ1876.0 = select i1 %cmp1889.not, i32 101, i32 100
%prec1877.0 = select i1 %cmp1889.not, i8 %.10141, i8 7
br label %land.rhs1909
land.rhs1909: ; preds = %while.body1920, %if.then1875
%263 = load i32, i32* @ttop, align 4, !tbaa !4
%idxprom1910 = sext i32 %263 to i64
%arrayidx1911 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom1910
%264 = bitcast %union.rec** %arrayidx1911 to %struct.word_type**
%265 = load %struct.word_type*, %struct.word_type** %264, align 8, !tbaa !8
%ou21913 = getelementptr inbounds %struct.word_type, %struct.word_type* %265, i64 0, i32 2
%oprecedence1915 = bitcast %union.SECOND_UNION* %ou21913 to i8*
%266 = load i8, i8* %oprecedence1915, align 8, !tbaa !10
%cmp1917.not = icmp ugt i8 %prec1877.0, %266
br i1 %cmp1917.not, label %if.then1924, label %while.body1920
while.body1920: ; preds = %land.rhs1909
%call1921 = call fastcc i32 @Reduce()
%tobool1908.not = icmp eq i32 %call1921, 0
br i1 %tobool1908.not, label %if.end2057, label %land.rhs1909, !llvm.loop !14
if.then1924: ; preds = %land.rhs1909
%267 = zext i32 %typ1876.0 to i64
%arrayidx1926 = getelementptr inbounds [0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 %267
%268 = load i8, i8* %arrayidx1926, align 1, !tbaa !10
%conv1927 = zext i8 %268 to i32
store i32 %conv1927, i32* @zz_size, align 4, !tbaa !4
%269 = zext i8 %268 to i64
%arrayidx1935 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %269
%270 = load %union.rec*, %union.rec** %arrayidx1935, align 8, !tbaa !8
%cmp1936 = icmp eq %union.rec* %270, null
br i1 %cmp1936, label %if.then1938, label %if.else1940
if.then1938: ; preds = %if.then1924
%271 = load %struct.FILE_POS*, %struct.FILE_POS** @no_fpos, align 8, !tbaa !8
%call1939 = call %union.rec* @GetMemory(i32 noundef %conv1927, %struct.FILE_POS* noundef %271) #5
store %union.rec* %call1939, %union.rec** @zz_hold, align 8, !tbaa !8
%.pre10492 = load i32, i32* @ttop, align 4, !tbaa !4
br label %if.end1950
if.else1940: ; preds = %if.then1924
store %union.rec* %270, %union.rec** @zz_hold, align 8, !tbaa !8
%opred1946 = getelementptr inbounds %union.rec, %union.rec* %270, i64 0, i32 0, i32 0, i64 0, i32 0
%272 = load %union.rec*, %union.rec** %opred1946, align 8, !tbaa !10
store %union.rec* %272, %union.rec** %arrayidx1935, align 8, !tbaa !8
br label %if.end1950
if.end1950: ; preds = %if.else1940, %if.then1938
%273 = phi i32 [ %.pre10492, %if.then1938 ], [ %263, %if.else1940 ]
%.in10536 = phi %union.rec* [ %call1939, %if.then1938 ], [ %270, %if.else1940 ]
%conv1951 = trunc i32 %typ1876.0 to i8
%274 = getelementptr inbounds %union.rec, %union.rec* %.in10536, i64 0, i32 0, i32 1, i32 0, i32 0
store i8 %conv1951, i8* %274, align 8, !tbaa !10
%275 = getelementptr inbounds %union.rec, %union.rec* %.in10536, i64 0, i32 0, i32 0, i64 1, i32 1
store %union.rec* %.in10536, %union.rec** %275, align 8, !tbaa !10
%276 = getelementptr inbounds %union.rec, %union.rec* %.in10536, i64 0, i32 0, i32 0, i64 1, i32 0
store %union.rec* %.in10536, %union.rec** %276, align 8, !tbaa !10
%277 = getelementptr inbounds %union.rec, %union.rec* %.in10536, i64 0, i32 0, i32 0, i64 0, i32 1
store %union.rec* %.in10536, %union.rec** %277, align 8, !tbaa !10
%278 = getelementptr %union.rec, %union.rec* %.in10536, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %.in10536, %union.rec** %278, align 8, !tbaa !10
%279 = getelementptr inbounds %union.rec, %union.rec* %.in10536, i64 0, i32 0, i32 2
%os211975 = bitcast %union.SECOND_UNION* %279 to %struct.anon.0*
%oprecedence1976 = bitcast %union.SECOND_UNION* %279 to i8*
store i8 %prec1877.0, i8* %oprecedence1976, align 8, !tbaa !10
%280 = load %struct.word_type*, %struct.word_type** %79, align 8, !tbaa !8
%ou21978 = getelementptr inbounds %struct.word_type, %struct.word_type* %280, i64 0, i32 2
%os211979 = bitcast %union.SECOND_UNION* %ou21978 to %struct.anon.0*
%ovspace1980 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os211979, i64 0, i32 2
%281 = load i8, i8* %ovspace1980, align 2, !tbaa !10
%ovspace1984 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os211975, i64 0, i32 2
store i8 %281, i8* %ovspace1984, align 2, !tbaa !10
%ohspace1988 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os211979, i64 0, i32 1
%282 = load i8, i8* %ohspace1988, align 1, !tbaa !10
%ohspace1992 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os211975, i64 0, i32 1
store i8 %282, i8* %ohspace1992, align 1, !tbaa !10
%os51993 = bitcast %union.rec* %.in10536 to %struct.gapobj_type*
%283 = getelementptr inbounds %struct.gapobj_type, %struct.gapobj_type* %os51993, i64 0, i32 3, i32 0
%bf.load1995 = load i16, i16* %283, align 4
%bf.clear2001 = and i16 %bf.load1995, -769
%bf.set2002 = or i16 %bf.clear2001, 512
store i16 %bf.set2002, i16* %283, align 4
%ofile_num2006 = getelementptr inbounds %struct.word_type, %struct.word_type* %280, i64 0, i32 1, i32 0, i32 2
%284 = load i16, i16* %ofile_num2006, align 2, !tbaa !10
%285 = getelementptr inbounds %union.rec, %union.rec* %.in10536, i64 0, i32 0, i32 1, i32 0, i32 2
store i16 %284, i16* %285, align 2, !tbaa !10
%oline_num2014 = getelementptr inbounds %struct.word_type, %struct.word_type* %280, i64 0, i32 1, i32 0, i32 3
%bf.load2015 = load i32, i32* %oline_num2014, align 4
%bf.clear2016 = and i32 %bf.load2015, 1048575
%286 = getelementptr inbounds %union.rec, %union.rec* %.in10536, i64 0, i32 0, i32 1, i32 0, i32 3
%bf.load2021 = load i32, i32* %286, align 4
%bf.clear2023 = and i32 %bf.load2021, -1048576
%bf.set2024 = or i32 %bf.clear2023, %bf.clear2016
store i32 %bf.set2024, i32* %286, align 4
%bf.load2029 = load i32, i32* %oline_num2014, align 4
%bf.lshr2030 = and i32 %bf.load2029, -1048576
%bf.set2039 = or i32 %bf.lshr2030, %bf.clear2016
store i32 %bf.set2039, i32* %286, align 4
%inc2040 = add nsw i32 %273, 1
store i32 %inc2040, i32* @ttop, align 4, !tbaa !4
%cmp2041 = icmp slt i32 %273, 99
br i1 %cmp2041, label %if.then2043, label %if.else2046
if.then2043: ; preds = %if.end1950
%idxprom2044 = sext i32 %inc2040 to i64
%arrayidx2045 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom2044
store %union.rec* %.in10536, %union.rec** %arrayidx2045, align 8, !tbaa !8
br label %if.end2057
if.else2046: ; preds = %if.end1950
%idxprom204810229 = zext i32 %273 to i64
%arrayidx2049 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom204810229
%287 = bitcast %union.rec** %arrayidx2049 to %struct.word_type**
%288 = load %struct.word_type*, %struct.word_type** %287, align 8, !tbaa !8
%ofpos2052 = getelementptr inbounds %struct.word_type, %struct.word_type* %288, i64 0, i32 1, i32 0
%call2053 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 2, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos2052) #5
br label %if.end2057
if.end2057: ; preds = %if.else2046, %if.then2043, %while.body1920, %if.else1873, %if.else1844
%289 = load i32, i32* @ttop, align 4, !tbaa !4
%inc2058 = add nsw i32 %289, 1
store i32 %inc2058, i32* @ttop, align 4, !tbaa !4
%cmp2059 = icmp slt i32 %289, 99
br i1 %cmp2059, label %if.then2061, label %if.else2064
if.then2061: ; preds = %if.end2057
%290 = load %union.rec*, %union.rec** %t, align 8, !tbaa !8
%idxprom2062 = sext i32 %inc2058 to i64
%arrayidx2063 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom2062
store %union.rec* %290, %union.rec** %arrayidx2063, align 8, !tbaa !8
%291 = bitcast %union.rec* %290 to %struct.closure_type*
br label %if.end2072
if.else2064: ; preds = %if.end2057
%idxprom206610228 = zext i32 %289 to i64
%arrayidx2067 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom206610228
%292 = bitcast %union.rec** %arrayidx2067 to %struct.word_type**
%293 = load %struct.word_type*, %struct.word_type** %292, align 8, !tbaa !8
%ofpos2070 = getelementptr inbounds %struct.word_type, %struct.word_type* %293, i64 0, i32 1, i32 0
%call2071 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 2, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos2070) #5
%.pre10493 = load %struct.closure_type*, %struct.closure_type** %83, align 8, !tbaa !8
br label %if.end2072
if.end2072: ; preds = %if.else2064, %if.then2061
%294 = phi %struct.closure_type* [ %.pre10493, %if.else2064 ], [ %291, %if.then2061 ]
%oactual2074 = getelementptr inbounds %struct.closure_type, %struct.closure_type* %294, i64 0, i32 5
%295 = bitcast %union.rec** %oactual2074 to %struct.word_type**
%296 = load %struct.word_type*, %struct.word_type** %295, align 8, !tbaa !10
%ou22076 = getelementptr inbounds %struct.word_type, %struct.word_type* %296, i64 0, i32 2
%os262077 = bitcast %union.SECOND_UNION* %ou22076 to %struct.anon.5*
%ohas_rpar = getelementptr inbounds %struct.anon.5, %struct.anon.5* %os262077, i64 0, i32 1
%297 = bitcast [3 x i8]* %ohas_rpar to i24*
%bf.load2078 = load i24, i24* %297, align 1
%298 = and i24 %bf.load2078, 8
%tobool2082.not = icmp eq i24 %298, 0
br i1 %tobool2082.not, label %if.else2084, label %if.end2093
if.else2084: ; preds = %if.end2072
%call2085 = call fastcc i32 @Reduce()
%299 = load i32, i32* @ttop, align 4, !tbaa !4
%cmp2086 = icmp eq i32 %299, %4
br i1 %cmp2086, label %cleanup9179, label %if.end2093
if.end2093: ; preds = %if.else2084, %if.end2072
%obj_prev.11 = phi i32 [ %call2085, %if.else2084 ], [ 0, %if.end2072 ]
%call2094 = call %union.rec* @LexGetToken() #5
store %union.rec* %call2094, %union.rec** %t, align 8, !tbaa !8
br label %for.cond581.backedge
sw.bb2095: ; preds = %for.cond581, %for.cond581
%300 = getelementptr inbounds %union.rec, %union.rec* %84, i64 0, i32 0, i32 5
%301 = bitcast %union.rec** %300 to %struct.word_type**
%302 = load %struct.word_type*, %struct.word_type** %301, align 8, !tbaa !10
%ou22099 = getelementptr inbounds %struct.word_type, %struct.word_type* %302, i64 0, i32 2
%os262100 = bitcast %union.SECOND_UNION* %ou22099 to %struct.anon.5*
%ohas_lpar2101 = getelementptr inbounds %struct.anon.5, %struct.anon.5* %os262100, i64 0, i32 1
%303 = bitcast [3 x i8]* %ohas_lpar2101 to i24*
%bf.load2102 = load i24, i24* %303, align 1
%304 = and i24 %bf.load2102, 4
%tobool2106.not = icmp eq i24 %304, 0
br i1 %tobool2106.not, label %if.else2159, label %for.cond2108
for.cond2108: ; preds = %for.cond2108.backedge, %sw.bb2095
%obj_prev.12 = phi i32 [ %obj_prev.12.be, %for.cond2108.backedge ], [ %obj_prev.1, %sw.bb2095 ]
%tobool2109.not = icmp eq i32 %obj_prev.12, 0
br i1 %tobool2109.not, label %if.then2110, label %if.else2130
if.then2110: ; preds = %for.cond2108
%305 = load %struct.word_type*, %struct.word_type** %79, align 8, !tbaa !8
%ofpos2113 = getelementptr inbounds %struct.word_type, %struct.word_type* %305, i64 0, i32 1, i32 0
%call2114 = call %union.rec* @MakeWord(i32 noundef 11, i8* noundef getelementptr inbounds ([1 x i8], [1 x i8]* @.str.27, i64 0, i64 0), %struct.FILE_POS* noundef nonnull %ofpos2113) #5
store %union.rec* %call2114, %union.rec** @zz_hold, align 8, !tbaa !8
%306 = load i32, i32* @otop, align 4, !tbaa !4
%inc2115 = add nsw i32 %306, 1
store i32 %inc2115, i32* @otop, align 4, !tbaa !4
%cmp2116 = icmp slt i32 %306, 99
br i1 %cmp2116, label %if.then2118, label %if.else2121
if.then2118: ; preds = %if.then2110
%idxprom2119 = sext i32 %inc2115 to i64
%arrayidx2120 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom2119
store %union.rec* %call2114, %union.rec** %arrayidx2120, align 8, !tbaa !8
br label %for.cond2108.backedge
for.cond2108.backedge: ; preds = %if.then2146, %if.else2121, %if.then2118
%obj_prev.12.be = phi i32 [ %call2147, %if.then2146 ], [ 1, %if.else2121 ], [ 1, %if.then2118 ]
br label %for.cond2108
if.else2121: ; preds = %if.then2110
%idxprom212310239 = zext i32 %306 to i64
%arrayidx2124 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom212310239
%307 = bitcast %union.rec** %arrayidx2124 to %struct.word_type**
%308 = load %struct.word_type*, %struct.word_type** %307, align 8, !tbaa !8
%ofpos2127 = getelementptr inbounds %struct.word_type, %struct.word_type* %308, i64 0, i32 1, i32 0
%call2128 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 1, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos2127) #5
br label %for.cond2108.backedge
if.else2130: ; preds = %for.cond2108
%309 = load i32, i32* @ttop, align 4, !tbaa !4
%idxprom2131 = sext i32 %309 to i64
%arrayidx2132 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom2131
%310 = bitcast %union.rec** %arrayidx2132 to %struct.word_type**
%311 = load %struct.word_type*, %struct.word_type** %310, align 8, !tbaa !8
%ou22134 = getelementptr inbounds %struct.word_type, %struct.word_type* %311, i64 0, i32 2
%oprecedence2136 = bitcast %union.SECOND_UNION* %ou22134 to i8*
%312 = load i8, i8* %oprecedence2136, align 8, !tbaa !10
%313 = load %struct.word_type*, %struct.word_type** %79, align 8, !tbaa !8
%ou22139 = getelementptr inbounds %struct.word_type, %struct.word_type* %313, i64 0, i32 2
%oprecedence2141 = bitcast %union.SECOND_UNION* %ou22139 to i8*
%314 = load i8, i8* %oprecedence2141, align 8, !tbaa !10
%cmp2144.not.not = icmp ult i8 %314, %312
br i1 %cmp2144.not.not, label %if.then2146, label %if.end2343
if.then2146: ; preds = %if.else2130
%call2147 = call fastcc i32 @Reduce()
%315 = load i32, i32* @ttop, align 4, !tbaa !4
%cmp2148 = icmp eq i32 %315, %4
br i1 %cmp2148, label %if.then2150, label %for.cond2108.backedge
if.then2150: ; preds = %if.then2146
%316 = load %union.rec*, %union.rec** %t, align 8, !tbaa !8
br label %cleanup9179
if.else2159: ; preds = %sw.bb2095
%tobool2160.not = icmp eq i32 %obj_prev.1, 0
br i1 %tobool2160.not, label %if.end2343, label %if.then2161
if.then2161: ; preds = %if.else2159
%317 = getelementptr inbounds %union.rec, %union.rec* %84, i64 0, i32 0, i32 2
%os212166 = bitcast %union.SECOND_UNION* %317 to %struct.anon.0*
%ohspace2167 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os212166, i64 0, i32 1
%318 = load i8, i8* %ohspace2167, align 1, !tbaa !10
%conv2168 = zext i8 %318 to i32
%ovspace2172 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os212166, i64 0, i32 2
%319 = load i8, i8* %ovspace2172, align 2, !tbaa !10
%conv2173 = zext i8 %319 to i32
%add2174 = sub nsw i32 0, %conv2173
%cmp2175.not = icmp eq i32 %conv2168, %add2174
%cmp2187 = icmp eq i32 %obj_prev.1, 2
%.10142 = select i1 %cmp2187, i8 7, i8 103
%typ2162.0 = select i1 %cmp2175.not, i32 101, i32 100
%prec2163.0 = select i1 %cmp2175.not, i8 %.10142, i8 7
br label %land.rhs2195
land.rhs2195: ; preds = %while.body2206, %if.then2161
%320 = load i32, i32* @ttop, align 4, !tbaa !4
%idxprom2196 = sext i32 %320 to i64
%arrayidx2197 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom2196
%321 = bitcast %union.rec** %arrayidx2197 to %struct.word_type**
%322 = load %struct.word_type*, %struct.word_type** %321, align 8, !tbaa !8
%ou22199 = getelementptr inbounds %struct.word_type, %struct.word_type* %322, i64 0, i32 2
%oprecedence2201 = bitcast %union.SECOND_UNION* %ou22199 to i8*
%323 = load i8, i8* %oprecedence2201, align 8, !tbaa !10
%cmp2203.not = icmp ugt i8 %prec2163.0, %323
br i1 %cmp2203.not, label %if.then2210, label %while.body2206
while.body2206: ; preds = %land.rhs2195
%call2207 = call fastcc i32 @Reduce()
%tobool2194.not = icmp eq i32 %call2207, 0
br i1 %tobool2194.not, label %if.end2343, label %land.rhs2195, !llvm.loop !15
if.then2210: ; preds = %land.rhs2195
%324 = zext i32 %typ2162.0 to i64
%arrayidx2212 = getelementptr inbounds [0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 %324
%325 = load i8, i8* %arrayidx2212, align 1, !tbaa !10
%conv2213 = zext i8 %325 to i32
store i32 %conv2213, i32* @zz_size, align 4, !tbaa !4
%326 = zext i8 %325 to i64
%arrayidx2221 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %326
%327 = load %union.rec*, %union.rec** %arrayidx2221, align 8, !tbaa !8
%cmp2222 = icmp eq %union.rec* %327, null
br i1 %cmp2222, label %if.then2224, label %if.else2226
if.then2224: ; preds = %if.then2210
%328 = load %struct.FILE_POS*, %struct.FILE_POS** @no_fpos, align 8, !tbaa !8
%call2225 = call %union.rec* @GetMemory(i32 noundef %conv2213, %struct.FILE_POS* noundef %328) #5
store %union.rec* %call2225, %union.rec** @zz_hold, align 8, !tbaa !8
%.pre10487 = load i32, i32* @ttop, align 4, !tbaa !4
br label %if.end2236
if.else2226: ; preds = %if.then2210
store %union.rec* %327, %union.rec** @zz_hold, align 8, !tbaa !8
%opred2232 = getelementptr inbounds %union.rec, %union.rec* %327, i64 0, i32 0, i32 0, i64 0, i32 0
%329 = load %union.rec*, %union.rec** %opred2232, align 8, !tbaa !10
store %union.rec* %329, %union.rec** %arrayidx2221, align 8, !tbaa !8
br label %if.end2236
if.end2236: ; preds = %if.else2226, %if.then2224
%330 = phi i32 [ %.pre10487, %if.then2224 ], [ %320, %if.else2226 ]
%.in10534 = phi %union.rec* [ %call2225, %if.then2224 ], [ %327, %if.else2226 ]
%conv2237 = trunc i32 %typ2162.0 to i8
%331 = getelementptr inbounds %union.rec, %union.rec* %.in10534, i64 0, i32 0, i32 1, i32 0, i32 0
store i8 %conv2237, i8* %331, align 8, !tbaa !10
%332 = getelementptr inbounds %union.rec, %union.rec* %.in10534, i64 0, i32 0, i32 0, i64 1, i32 1
store %union.rec* %.in10534, %union.rec** %332, align 8, !tbaa !10
%333 = getelementptr inbounds %union.rec, %union.rec* %.in10534, i64 0, i32 0, i32 0, i64 1, i32 0
store %union.rec* %.in10534, %union.rec** %333, align 8, !tbaa !10
%334 = getelementptr inbounds %union.rec, %union.rec* %.in10534, i64 0, i32 0, i32 0, i64 0, i32 1
store %union.rec* %.in10534, %union.rec** %334, align 8, !tbaa !10
%335 = getelementptr %union.rec, %union.rec* %.in10534, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %.in10534, %union.rec** %335, align 8, !tbaa !10
%336 = getelementptr inbounds %union.rec, %union.rec* %.in10534, i64 0, i32 0, i32 2
%os212261 = bitcast %union.SECOND_UNION* %336 to %struct.anon.0*
%oprecedence2262 = bitcast %union.SECOND_UNION* %336 to i8*
store i8 %prec2163.0, i8* %oprecedence2262, align 8, !tbaa !10
%337 = load %struct.word_type*, %struct.word_type** %79, align 8, !tbaa !8
%ou22264 = getelementptr inbounds %struct.word_type, %struct.word_type* %337, i64 0, i32 2
%os212265 = bitcast %union.SECOND_UNION* %ou22264 to %struct.anon.0*
%ovspace2266 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os212265, i64 0, i32 2
%338 = load i8, i8* %ovspace2266, align 2, !tbaa !10
%ovspace2270 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os212261, i64 0, i32 2
store i8 %338, i8* %ovspace2270, align 2, !tbaa !10
%ohspace2274 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os212265, i64 0, i32 1
%339 = load i8, i8* %ohspace2274, align 1, !tbaa !10
%ohspace2278 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os212261, i64 0, i32 1
store i8 %339, i8* %ohspace2278, align 1, !tbaa !10
%os52279 = bitcast %union.rec* %.in10534 to %struct.gapobj_type*
%340 = getelementptr inbounds %struct.gapobj_type, %struct.gapobj_type* %os52279, i64 0, i32 3, i32 0
%bf.load2281 = load i16, i16* %340, align 4
%bf.clear2287 = and i16 %bf.load2281, -769
%bf.set2288 = or i16 %bf.clear2287, 512
store i16 %bf.set2288, i16* %340, align 4
%ofile_num2292 = getelementptr inbounds %struct.word_type, %struct.word_type* %337, i64 0, i32 1, i32 0, i32 2
%341 = load i16, i16* %ofile_num2292, align 2, !tbaa !10
%342 = getelementptr inbounds %union.rec, %union.rec* %.in10534, i64 0, i32 0, i32 1, i32 0, i32 2
store i16 %341, i16* %342, align 2, !tbaa !10
%oline_num2300 = getelementptr inbounds %struct.word_type, %struct.word_type* %337, i64 0, i32 1, i32 0, i32 3
%bf.load2301 = load i32, i32* %oline_num2300, align 4
%bf.clear2302 = and i32 %bf.load2301, 1048575
%343 = getelementptr inbounds %union.rec, %union.rec* %.in10534, i64 0, i32 0, i32 1, i32 0, i32 3
%bf.load2307 = load i32, i32* %343, align 4
%bf.clear2309 = and i32 %bf.load2307, -1048576
%bf.set2310 = or i32 %bf.clear2309, %bf.clear2302
store i32 %bf.set2310, i32* %343, align 4
%bf.load2315 = load i32, i32* %oline_num2300, align 4
%bf.lshr2316 = and i32 %bf.load2315, -1048576
%bf.set2325 = or i32 %bf.lshr2316, %bf.clear2302
store i32 %bf.set2325, i32* %343, align 4
%inc2326 = add nsw i32 %330, 1
store i32 %inc2326, i32* @ttop, align 4, !tbaa !4
%cmp2327 = icmp slt i32 %330, 99
br i1 %cmp2327, label %if.then2329, label %if.else2332
if.then2329: ; preds = %if.end2236
%idxprom2330 = sext i32 %inc2326 to i64
%arrayidx2331 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom2330
store %union.rec* %.in10534, %union.rec** %arrayidx2331, align 8, !tbaa !8
br label %if.end2343
if.else2332: ; preds = %if.end2236
%idxprom233410237 = zext i32 %330 to i64
%arrayidx2335 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom233410237
%344 = bitcast %union.rec** %arrayidx2335 to %struct.word_type**
%345 = load %struct.word_type*, %struct.word_type** %344, align 8, !tbaa !8
%ofpos2338 = getelementptr inbounds %struct.word_type, %struct.word_type* %345, i64 0, i32 1, i32 0
%call2339 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 2, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos2338) #5
br label %if.end2343
if.end2343: ; preds = %if.else2332, %if.then2329, %while.body2206, %if.else2159, %if.else2130
%346 = load i32, i32* @ttop, align 4, !tbaa !4
%inc2344 = add nsw i32 %346, 1
store i32 %inc2344, i32* @ttop, align 4, !tbaa !4
%cmp2345 = icmp slt i32 %346, 99
br i1 %cmp2345, label %if.then2347, label %if.else2350
if.then2347: ; preds = %if.end2343
%347 = load %union.rec*, %union.rec** %t, align 8, !tbaa !8
%idxprom2348 = sext i32 %inc2344 to i64
%arrayidx2349 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom2348
store %union.rec* %347, %union.rec** %arrayidx2349, align 8, !tbaa !8
%348 = bitcast %union.rec* %347 to %struct.closure_type*
br label %if.end2358
if.else2350: ; preds = %if.end2343
%idxprom235210236 = zext i32 %346 to i64
%arrayidx2353 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom235210236
%349 = bitcast %union.rec** %arrayidx2353 to %struct.word_type**
%350 = load %struct.word_type*, %struct.word_type** %349, align 8, !tbaa !8
%ofpos2356 = getelementptr inbounds %struct.word_type, %struct.word_type* %350, i64 0, i32 1, i32 0
%call2357 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 2, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos2356) #5
%.pre10488 = load %struct.closure_type*, %struct.closure_type** %83, align 8, !tbaa !8
br label %if.end2358
if.end2358: ; preds = %if.else2350, %if.then2347
%351 = phi %struct.closure_type* [ %.pre10488, %if.else2350 ], [ %348, %if.then2347 ]
%oactual2360 = getelementptr inbounds %struct.closure_type, %struct.closure_type* %351, i64 0, i32 5
%352 = bitcast %union.rec** %oactual2360 to %struct.word_type**
%353 = load %struct.word_type*, %struct.word_type** %352, align 8, !tbaa !10
%ou22362 = getelementptr inbounds %struct.word_type, %struct.word_type* %353, i64 0, i32 2
%os262363 = bitcast %union.SECOND_UNION* %ou22362 to %struct.anon.5*
%ohas_rpar2364 = getelementptr inbounds %struct.anon.5, %struct.anon.5* %os262363, i64 0, i32 1
%354 = bitcast [3 x i8]* %ohas_rpar2364 to i24*
%bf.load2365 = load i24, i24* %354, align 1
%355 = and i24 %bf.load2365, 8
%tobool2369.not = icmp eq i24 %355, 0
br i1 %tobool2369.not, label %if.else2371, label %if.end2380
if.else2371: ; preds = %if.end2358
%call2372 = call fastcc i32 @Reduce()
%356 = load i32, i32* @ttop, align 4, !tbaa !4
%cmp2373 = icmp eq i32 %356, %4
br i1 %cmp2373, label %cleanup9179, label %if.end2380
if.end2380: ; preds = %if.else2371, %if.end2358
%obj_prev.15 = phi i32 [ %call2372, %if.else2371 ], [ 0, %if.end2358 ]
%call2381 = call %union.rec* @LexGetToken() #5
store %union.rec* %call2381, %union.rec** %t, align 8, !tbaa !8
%otype2385 = getelementptr inbounds %union.rec, %union.rec* %call2381, i64 0, i32 0, i32 1, i32 0, i32 0
%357 = load i8, i8* %otype2385, align 8, !tbaa !10
%358 = bitcast %union.rec* %call2381 to %struct.closure_type*
%359 = bitcast %union.rec* %call2381 to %struct.word_type*
switch i8 %357, label %if.then2397 [
i8 104, label %if.end2402
i8 102, label %if.end2402
]
if.then2397: ; preds = %if.end2380
%ofpos2400 = getelementptr inbounds %union.rec, %union.rec* %84, i64 0, i32 0, i32 1, i32 0
%call2401 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 40, i8* noundef getelementptr inbounds ([55 x i8], [55 x i8]* @.str.28, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos2400, i8* noundef getelementptr inbounds ([10 x i8], [10 x i8]* @.str.29, i64 0, i64 0), i8* noundef getelementptr inbounds ([13 x i8], [13 x i8]* @.str.30, i64 0, i64 0)) #5
%.pre10489 = load %struct.closure_type*, %struct.closure_type** %83, align 8, !tbaa !8
%360 = bitcast %struct.closure_type* %.pre10489 to %struct.word_type*
br label %if.end2402
if.end2402: ; preds = %if.then2397, %if.end2380, %if.end2380
%361 = phi %struct.word_type* [ %359, %if.end2380 ], [ %359, %if.end2380 ], [ %360, %if.then2397 ]
%362 = phi %struct.closure_type* [ %358, %if.end2380 ], [ %358, %if.end2380 ], [ %.pre10489, %if.then2397 ]
%otype2406 = getelementptr inbounds %union.rec, %union.rec* %84, i64 0, i32 0, i32 1, i32 0, i32 0
%363 = load i8, i8* %otype2406, align 8, !tbaa !10
%cmp2408 = icmp eq i8 %363, 53
%364 = load %union.rec*, %union.rec** @VerbatimSym, align 8
%365 = load %union.rec*, %union.rec** @RawVerbatimSym, align 8
%cond2413 = select i1 %cmp2408, %union.rec* %364, %union.rec* %365
%oactual2415 = getelementptr inbounds %struct.closure_type, %struct.closure_type* %362, i64 0, i32 5
store %union.rec* %cond2413, %union.rec** %oactual2415, align 8, !tbaa !10
%tobool2416.not = icmp eq i32 %obj_prev.15, 0
br i1 %tobool2416.not, label %if.end2598, label %if.then2417
if.then2417: ; preds = %if.end2402
%ou22421 = getelementptr inbounds %struct.word_type, %struct.word_type* %361, i64 0, i32 2
%os212422 = bitcast %union.SECOND_UNION* %ou22421 to %struct.anon.0*
%ohspace2423 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os212422, i64 0, i32 1
%366 = load i8, i8* %ohspace2423, align 1, !tbaa !10
%conv2424 = zext i8 %366 to i32
%ovspace2428 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os212422, i64 0, i32 2
%367 = load i8, i8* %ovspace2428, align 2, !tbaa !10
%conv2429 = zext i8 %367 to i32
%add2430 = sub nsw i32 0, %conv2429
%cmp2431.not = icmp eq i32 %conv2424, %add2430
br i1 %cmp2431.not, label %if.else2434, label %if.end2448
if.else2434: ; preds = %if.then2417
%otype2438 = getelementptr inbounds %struct.word_type, %struct.word_type* %361, i64 0, i32 1, i32 0, i32 0
%368 = load i8, i8* %otype2438, align 8, !tbaa !10
%cmp2440 = icmp eq i8 %368, 102
%cmp2443 = icmp eq i32 %obj_prev.15, 2
%or.cond9203 = select i1 %cmp2440, i1 true, i1 %cmp2443
%.10143 = select i1 %or.cond9203, i8 7, i8 103
br label %if.end2448
if.end2448: ; preds = %if.else2434, %if.then2417
%typ2418.0 = phi i32 [ 100, %if.then2417 ], [ 101, %if.else2434 ]
%prec2419.0 = phi i8 [ 7, %if.then2417 ], [ %.10143, %if.else2434 ]
br label %land.rhs2451
land.rhs2451: ; preds = %while.body2462, %if.end2448
%369 = load i32, i32* @ttop, align 4, !tbaa !4
%idxprom2452 = sext i32 %369 to i64
%arrayidx2453 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom2452
%370 = bitcast %union.rec** %arrayidx2453 to %struct.word_type**
%371 = load %struct.word_type*, %struct.word_type** %370, align 8, !tbaa !8
%ou22455 = getelementptr inbounds %struct.word_type, %struct.word_type* %371, i64 0, i32 2
%oprecedence2457 = bitcast %union.SECOND_UNION* %ou22455 to i8*
%372 = load i8, i8* %oprecedence2457, align 8, !tbaa !10
%cmp2459.not = icmp ugt i8 %prec2419.0, %372
br i1 %cmp2459.not, label %if.then2466, label %while.body2462
while.body2462: ; preds = %land.rhs2451
%call2463 = call fastcc i32 @Reduce()
%tobool2450.not = icmp eq i32 %call2463, 0
br i1 %tobool2450.not, label %if.end2598, label %land.rhs2451, !llvm.loop !16
if.then2466: ; preds = %land.rhs2451
%373 = zext i32 %typ2418.0 to i64
%arrayidx2468 = getelementptr inbounds [0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 %373
%374 = load i8, i8* %arrayidx2468, align 1, !tbaa !10
%conv2469 = zext i8 %374 to i32
store i32 %conv2469, i32* @zz_size, align 4, !tbaa !4
%375 = zext i8 %374 to i64
%arrayidx2477 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %375
%376 = load %union.rec*, %union.rec** %arrayidx2477, align 8, !tbaa !8
%cmp2478 = icmp eq %union.rec* %376, null
br i1 %cmp2478, label %if.then2480, label %if.else2482
if.then2480: ; preds = %if.then2466
%377 = load %struct.FILE_POS*, %struct.FILE_POS** @no_fpos, align 8, !tbaa !8
%call2481 = call %union.rec* @GetMemory(i32 noundef %conv2469, %struct.FILE_POS* noundef %377) #5
store %union.rec* %call2481, %union.rec** @zz_hold, align 8, !tbaa !8
%.pre10490 = load i32, i32* @ttop, align 4, !tbaa !4
br label %if.end2492
if.else2482: ; preds = %if.then2466
store %union.rec* %376, %union.rec** @zz_hold, align 8, !tbaa !8
%opred2488 = getelementptr inbounds %union.rec, %union.rec* %376, i64 0, i32 0, i32 0, i64 0, i32 0
%378 = load %union.rec*, %union.rec** %opred2488, align 8, !tbaa !10
store %union.rec* %378, %union.rec** %arrayidx2477, align 8, !tbaa !8
br label %if.end2492
if.end2492: ; preds = %if.else2482, %if.then2480
%379 = phi i32 [ %.pre10490, %if.then2480 ], [ %369, %if.else2482 ]
%.in10532 = phi %union.rec* [ %call2481, %if.then2480 ], [ %376, %if.else2482 ]
%conv2493 = trunc i32 %typ2418.0 to i8
%380 = getelementptr inbounds %union.rec, %union.rec* %.in10532, i64 0, i32 0, i32 1, i32 0, i32 0
store i8 %conv2493, i8* %380, align 8, !tbaa !10
%381 = getelementptr inbounds %union.rec, %union.rec* %.in10532, i64 0, i32 0, i32 0, i64 1, i32 1
store %union.rec* %.in10532, %union.rec** %381, align 8, !tbaa !10
%382 = getelementptr inbounds %union.rec, %union.rec* %.in10532, i64 0, i32 0, i32 0, i64 1, i32 0
store %union.rec* %.in10532, %union.rec** %382, align 8, !tbaa !10
%383 = getelementptr inbounds %union.rec, %union.rec* %.in10532, i64 0, i32 0, i32 0, i64 0, i32 1
store %union.rec* %.in10532, %union.rec** %383, align 8, !tbaa !10
%384 = getelementptr %union.rec, %union.rec* %.in10532, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %.in10532, %union.rec** %384, align 8, !tbaa !10
%385 = getelementptr inbounds %union.rec, %union.rec* %.in10532, i64 0, i32 0, i32 2
%os212517 = bitcast %union.SECOND_UNION* %385 to %struct.anon.0*
%oprecedence2518 = bitcast %union.SECOND_UNION* %385 to i8*
store i8 %prec2419.0, i8* %oprecedence2518, align 8, !tbaa !10
%386 = load %struct.word_type*, %struct.word_type** %79, align 8, !tbaa !8
%ou22520 = getelementptr inbounds %struct.word_type, %struct.word_type* %386, i64 0, i32 2
%os212521 = bitcast %union.SECOND_UNION* %ou22520 to %struct.anon.0*
%ovspace2522 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os212521, i64 0, i32 2
%387 = load i8, i8* %ovspace2522, align 2, !tbaa !10
%ovspace2526 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os212517, i64 0, i32 2
store i8 %387, i8* %ovspace2526, align 2, !tbaa !10
%ohspace2530 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os212521, i64 0, i32 1
%388 = load i8, i8* %ohspace2530, align 1, !tbaa !10
%ohspace2534 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os212517, i64 0, i32 1
store i8 %388, i8* %ohspace2534, align 1, !tbaa !10
%os52535 = bitcast %union.rec* %.in10532 to %struct.gapobj_type*
%389 = getelementptr inbounds %struct.gapobj_type, %struct.gapobj_type* %os52535, i64 0, i32 3, i32 0
%bf.load2537 = load i16, i16* %389, align 4
%bf.clear2543 = and i16 %bf.load2537, -769
%bf.set2544 = or i16 %bf.clear2543, 512
store i16 %bf.set2544, i16* %389, align 4
%ofile_num2548 = getelementptr inbounds %struct.word_type, %struct.word_type* %386, i64 0, i32 1, i32 0, i32 2
%390 = load i16, i16* %ofile_num2548, align 2, !tbaa !10
%391 = getelementptr inbounds %union.rec, %union.rec* %.in10532, i64 0, i32 0, i32 1, i32 0, i32 2
store i16 %390, i16* %391, align 2, !tbaa !10
%oline_num2556 = getelementptr inbounds %struct.word_type, %struct.word_type* %386, i64 0, i32 1, i32 0, i32 3
%bf.load2557 = load i32, i32* %oline_num2556, align 4
%bf.clear2558 = and i32 %bf.load2557, 1048575
%392 = getelementptr inbounds %union.rec, %union.rec* %.in10532, i64 0, i32 0, i32 1, i32 0, i32 3
%bf.load2563 = load i32, i32* %392, align 4
%bf.clear2565 = and i32 %bf.load2563, -1048576
%bf.set2566 = or i32 %bf.clear2565, %bf.clear2558
store i32 %bf.set2566, i32* %392, align 4
%bf.load2571 = load i32, i32* %oline_num2556, align 4
%bf.lshr2572 = and i32 %bf.load2571, -1048576
%bf.set2581 = or i32 %bf.lshr2572, %bf.clear2558
store i32 %bf.set2581, i32* %392, align 4
%inc2582 = add nsw i32 %379, 1
store i32 %inc2582, i32* @ttop, align 4, !tbaa !4
%cmp2583 = icmp slt i32 %379, 99
br i1 %cmp2583, label %if.then2585, label %if.else2588
if.then2585: ; preds = %if.end2492
%idxprom2586 = sext i32 %inc2582 to i64
%arrayidx2587 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom2586
store %union.rec* %.in10532, %union.rec** %arrayidx2587, align 8, !tbaa !8
br label %if.end2598
if.else2588: ; preds = %if.end2492
%idxprom259010234 = zext i32 %379 to i64
%arrayidx2591 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom259010234
%393 = bitcast %union.rec** %arrayidx2591 to %struct.word_type**
%394 = load %struct.word_type*, %struct.word_type** %393, align 8, !tbaa !8
%ofpos2594 = getelementptr inbounds %struct.word_type, %struct.word_type* %394, i64 0, i32 1, i32 0
%call2595 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 2, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos2594) #5
br label %if.end2598
if.end2598: ; preds = %if.else2588, %if.then2585, %while.body2462, %if.end2402
%395 = load i32, i32* @ttop, align 4, !tbaa !4
%inc2599 = add nsw i32 %395, 1
store i32 %inc2599, i32* @ttop, align 4, !tbaa !4
%cmp2600 = icmp slt i32 %395, 99
br i1 %cmp2600, label %if.then2602, label %if.else2605
if.then2602: ; preds = %if.end2598
%396 = load %union.rec*, %union.rec** %t, align 8, !tbaa !8
%idxprom2603 = sext i32 %inc2599 to i64
%arrayidx2604 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom2603
store %union.rec* %396, %union.rec** %arrayidx2604, align 8, !tbaa !8
%397 = bitcast %union.rec* %396 to %struct.word_type*
br label %if.end2613
if.else2605: ; preds = %if.end2598
%idxprom260710233 = zext i32 %395 to i64
%arrayidx2608 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom260710233
%398 = bitcast %union.rec** %arrayidx2608 to %struct.word_type**
%399 = load %struct.word_type*, %struct.word_type** %398, align 8, !tbaa !8
%ofpos2611 = getelementptr inbounds %struct.word_type, %struct.word_type* %399, i64 0, i32 1, i32 0
%call2612 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 2, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos2611) #5
%.pre10491 = load %struct.word_type*, %struct.word_type** %79, align 8, !tbaa !8
br label %if.end2613
if.end2613: ; preds = %if.else2605, %if.then2602
%400 = phi %struct.word_type* [ %.pre10491, %if.else2605 ], [ %397, %if.then2602 ]
%ou12615 = getelementptr inbounds %struct.word_type, %struct.word_type* %400, i64 0, i32 1
%otype2617 = getelementptr %union.FIRST_UNION, %union.FIRST_UNION* %ou12615, i64 0, i32 0, i32 0
%401 = load i8, i8* %otype2617, align 8, !tbaa !10
%cmp2619 = icmp eq i8 %401, 104
%conv2620 = zext i1 %cmp2619 to i32
%ofpos2623 = getelementptr %union.FIRST_UNION, %union.FIRST_UNION* %ou12615, i64 0, i32 0
%402 = load i8, i8* %otype2406, align 8, !tbaa !10
%cmp2629 = icmp eq i8 %402, 54
%conv2630 = zext i1 %cmp2629 to i32
%call2631 = call %union.rec* @LexScanVerbatim(%struct._IO_FILE* noundef null, i32 noundef %conv2620, %struct.FILE_POS* noundef nonnull %ofpos2623, i32 noundef %conv2630) #5
store %union.rec* %call2631, %union.rec** @zz_hold, align 8, !tbaa !8
%403 = load i32, i32* @otop, align 4, !tbaa !4
%inc2815 = add nsw i32 %403, 1
store i32 %inc2815, i32* @otop, align 4, !tbaa !4
%cmp2816 = icmp slt i32 %403, 99
br i1 %cmp2816, label %if.then2818, label %if.else2821
if.then2818: ; preds = %if.end2613
%idxprom2819 = sext i32 %inc2815 to i64
%arrayidx2820 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom2819
store %union.rec* %call2631, %union.rec** %arrayidx2820, align 8, !tbaa !8
br label %if.end2829
if.else2821: ; preds = %if.end2613
%idxprom282310232 = zext i32 %403 to i64
%arrayidx2824 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom282310232
%404 = bitcast %union.rec** %arrayidx2824 to %struct.word_type**
%405 = load %struct.word_type*, %struct.word_type** %404, align 8, !tbaa !8
%ofpos2827 = getelementptr inbounds %struct.word_type, %struct.word_type* %405, i64 0, i32 1, i32 0
%call2828 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 1, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos2827) #5
br label %if.end2829
if.end2829: ; preds = %if.else2821, %if.then2818
%call2830 = call %union.rec* @LexGetToken() #5
store %union.rec* %call2830, %union.rec** %t, align 8, !tbaa !8
br label %for.cond581.backedge
sw.bb2831: ; preds = %for.cond581, %for.cond581
%406 = getelementptr inbounds %union.rec, %union.rec* %84, i64 0, i32 0, i32 5
%407 = bitcast %union.rec** %406 to %struct.word_type**
%408 = load %struct.word_type*, %struct.word_type** %407, align 8, !tbaa !10
%ou22835 = getelementptr inbounds %struct.word_type, %struct.word_type* %408, i64 0, i32 2
%os262836 = bitcast %union.SECOND_UNION* %ou22835 to %struct.anon.5*
%ohas_lpar2837 = getelementptr inbounds %struct.anon.5, %struct.anon.5* %os262836, i64 0, i32 1
%409 = bitcast [3 x i8]* %ohas_lpar2837 to i24*
%bf.load2838 = load i24, i24* %409, align 1
%410 = and i24 %bf.load2838, 4
%tobool2842.not = icmp eq i24 %410, 0
br i1 %tobool2842.not, label %if.else2895, label %for.cond2844
for.cond2844: ; preds = %for.cond2844.backedge, %sw.bb2831
%obj_prev.18 = phi i32 [ %obj_prev.18.be, %for.cond2844.backedge ], [ %obj_prev.1, %sw.bb2831 ]
%tobool2845.not = icmp eq i32 %obj_prev.18, 0
br i1 %tobool2845.not, label %if.then2846, label %if.else2866
if.then2846: ; preds = %for.cond2844
%411 = load %struct.word_type*, %struct.word_type** %79, align 8, !tbaa !8
%ofpos2849 = getelementptr inbounds %struct.word_type, %struct.word_type* %411, i64 0, i32 1, i32 0
%call2850 = call %union.rec* @MakeWord(i32 noundef 11, i8* noundef getelementptr inbounds ([1 x i8], [1 x i8]* @.str.27, i64 0, i64 0), %struct.FILE_POS* noundef nonnull %ofpos2849) #5
store %union.rec* %call2850, %union.rec** @zz_hold, align 8, !tbaa !8
%412 = load i32, i32* @otop, align 4, !tbaa !4
%inc2851 = add nsw i32 %412, 1
store i32 %inc2851, i32* @otop, align 4, !tbaa !4
%cmp2852 = icmp slt i32 %412, 99
br i1 %cmp2852, label %if.then2854, label %if.else2857
if.then2854: ; preds = %if.then2846
%idxprom2855 = sext i32 %inc2851 to i64
%arrayidx2856 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom2855
store %union.rec* %call2850, %union.rec** %arrayidx2856, align 8, !tbaa !8
br label %for.cond2844.backedge
for.cond2844.backedge: ; preds = %if.then2882, %if.else2857, %if.then2854
%obj_prev.18.be = phi i32 [ %call2883, %if.then2882 ], [ 1, %if.else2857 ], [ 1, %if.then2854 ]
br label %for.cond2844
if.else2857: ; preds = %if.then2846
%idxprom285910243 = zext i32 %412 to i64
%arrayidx2860 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom285910243
%413 = bitcast %union.rec** %arrayidx2860 to %struct.word_type**
%414 = load %struct.word_type*, %struct.word_type** %413, align 8, !tbaa !8
%ofpos2863 = getelementptr inbounds %struct.word_type, %struct.word_type* %414, i64 0, i32 1, i32 0
%call2864 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 1, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos2863) #5
br label %for.cond2844.backedge
if.else2866: ; preds = %for.cond2844
%415 = load i32, i32* @ttop, align 4, !tbaa !4
%idxprom2867 = sext i32 %415 to i64
%arrayidx2868 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom2867
%416 = bitcast %union.rec** %arrayidx2868 to %struct.word_type**
%417 = load %struct.word_type*, %struct.word_type** %416, align 8, !tbaa !8
%ou22870 = getelementptr inbounds %struct.word_type, %struct.word_type* %417, i64 0, i32 2
%oprecedence2872 = bitcast %union.SECOND_UNION* %ou22870 to i8*
%418 = load i8, i8* %oprecedence2872, align 8, !tbaa !10
%419 = load %struct.word_type*, %struct.word_type** %79, align 8, !tbaa !8
%ou22875 = getelementptr inbounds %struct.word_type, %struct.word_type* %419, i64 0, i32 2
%oprecedence2877 = bitcast %union.SECOND_UNION* %ou22875 to i8*
%420 = load i8, i8* %oprecedence2877, align 8, !tbaa !10
%cmp2880.not = icmp ult i8 %418, %420
br i1 %cmp2880.not, label %if.end3079, label %if.then2882
if.then2882: ; preds = %if.else2866
%call2883 = call fastcc i32 @Reduce()
%421 = load i32, i32* @ttop, align 4, !tbaa !4
%cmp2884 = icmp eq i32 %421, %4
br i1 %cmp2884, label %if.then2886, label %for.cond2844.backedge
if.then2886: ; preds = %if.then2882
%422 = load %union.rec*, %union.rec** %t, align 8, !tbaa !8
br label %cleanup9179
if.else2895: ; preds = %sw.bb2831
%tobool2896.not = icmp eq i32 %obj_prev.1, 0
br i1 %tobool2896.not, label %if.end3079, label %if.then2897
if.then2897: ; preds = %if.else2895
%423 = getelementptr inbounds %union.rec, %union.rec* %84, i64 0, i32 0, i32 2
%os212902 = bitcast %union.SECOND_UNION* %423 to %struct.anon.0*
%ohspace2903 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os212902, i64 0, i32 1
%424 = load i8, i8* %ohspace2903, align 1, !tbaa !10
%conv2904 = zext i8 %424 to i32
%ovspace2908 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os212902, i64 0, i32 2
%425 = load i8, i8* %ovspace2908, align 2, !tbaa !10
%conv2909 = zext i8 %425 to i32
%add2910 = sub nsw i32 0, %conv2909
%cmp2911.not = icmp eq i32 %conv2904, %add2910
%cmp2923 = icmp eq i32 %obj_prev.1, 2
%.10144 = select i1 %cmp2923, i8 7, i8 103
%typ2898.0 = select i1 %cmp2911.not, i32 101, i32 100
%prec2899.0 = select i1 %cmp2911.not, i8 %.10144, i8 7
br label %land.rhs2931
land.rhs2931: ; preds = %while.body2942, %if.then2897
%426 = load i32, i32* @ttop, align 4, !tbaa !4
%idxprom2932 = sext i32 %426 to i64
%arrayidx2933 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom2932
%427 = bitcast %union.rec** %arrayidx2933 to %struct.word_type**
%428 = load %struct.word_type*, %struct.word_type** %427, align 8, !tbaa !8
%ou22935 = getelementptr inbounds %struct.word_type, %struct.word_type* %428, i64 0, i32 2
%oprecedence2937 = bitcast %union.SECOND_UNION* %ou22935 to i8*
%429 = load i8, i8* %oprecedence2937, align 8, !tbaa !10
%cmp2939.not = icmp ugt i8 %prec2899.0, %429
br i1 %cmp2939.not, label %if.then2946, label %while.body2942
while.body2942: ; preds = %land.rhs2931
%call2943 = call fastcc i32 @Reduce()
%tobool2930.not = icmp eq i32 %call2943, 0
br i1 %tobool2930.not, label %if.end3079, label %land.rhs2931, !llvm.loop !17
if.then2946: ; preds = %land.rhs2931
%430 = zext i32 %typ2898.0 to i64
%arrayidx2948 = getelementptr inbounds [0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 %430
%431 = load i8, i8* %arrayidx2948, align 1, !tbaa !10
%conv2949 = zext i8 %431 to i32
store i32 %conv2949, i32* @zz_size, align 4, !tbaa !4
%432 = zext i8 %431 to i64
%arrayidx2957 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %432
%433 = load %union.rec*, %union.rec** %arrayidx2957, align 8, !tbaa !8
%cmp2958 = icmp eq %union.rec* %433, null
br i1 %cmp2958, label %if.then2960, label %if.else2962
if.then2960: ; preds = %if.then2946
%434 = load %struct.FILE_POS*, %struct.FILE_POS** @no_fpos, align 8, !tbaa !8
%call2961 = call %union.rec* @GetMemory(i32 noundef %conv2949, %struct.FILE_POS* noundef %434) #5
store %union.rec* %call2961, %union.rec** @zz_hold, align 8, !tbaa !8
%.pre10485 = load i32, i32* @ttop, align 4, !tbaa !4
br label %if.end2972
if.else2962: ; preds = %if.then2946
store %union.rec* %433, %union.rec** @zz_hold, align 8, !tbaa !8
%opred2968 = getelementptr inbounds %union.rec, %union.rec* %433, i64 0, i32 0, i32 0, i64 0, i32 0
%435 = load %union.rec*, %union.rec** %opred2968, align 8, !tbaa !10
store %union.rec* %435, %union.rec** %arrayidx2957, align 8, !tbaa !8
br label %if.end2972
if.end2972: ; preds = %if.else2962, %if.then2960
%436 = phi i32 [ %.pre10485, %if.then2960 ], [ %426, %if.else2962 ]
%.in10530 = phi %union.rec* [ %call2961, %if.then2960 ], [ %433, %if.else2962 ]
%conv2973 = trunc i32 %typ2898.0 to i8
%437 = getelementptr inbounds %union.rec, %union.rec* %.in10530, i64 0, i32 0, i32 1, i32 0, i32 0
store i8 %conv2973, i8* %437, align 8, !tbaa !10
%438 = getelementptr inbounds %union.rec, %union.rec* %.in10530, i64 0, i32 0, i32 0, i64 1, i32 1
store %union.rec* %.in10530, %union.rec** %438, align 8, !tbaa !10
%439 = getelementptr inbounds %union.rec, %union.rec* %.in10530, i64 0, i32 0, i32 0, i64 1, i32 0
store %union.rec* %.in10530, %union.rec** %439, align 8, !tbaa !10
%440 = getelementptr inbounds %union.rec, %union.rec* %.in10530, i64 0, i32 0, i32 0, i64 0, i32 1
store %union.rec* %.in10530, %union.rec** %440, align 8, !tbaa !10
%441 = getelementptr %union.rec, %union.rec* %.in10530, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %.in10530, %union.rec** %441, align 8, !tbaa !10
%442 = getelementptr inbounds %union.rec, %union.rec* %.in10530, i64 0, i32 0, i32 2
%os212997 = bitcast %union.SECOND_UNION* %442 to %struct.anon.0*
%oprecedence2998 = bitcast %union.SECOND_UNION* %442 to i8*
store i8 %prec2899.0, i8* %oprecedence2998, align 8, !tbaa !10
%443 = load %struct.word_type*, %struct.word_type** %79, align 8, !tbaa !8
%ou23000 = getelementptr inbounds %struct.word_type, %struct.word_type* %443, i64 0, i32 2
%os213001 = bitcast %union.SECOND_UNION* %ou23000 to %struct.anon.0*
%ovspace3002 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os213001, i64 0, i32 2
%444 = load i8, i8* %ovspace3002, align 2, !tbaa !10
%ovspace3006 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os212997, i64 0, i32 2
store i8 %444, i8* %ovspace3006, align 2, !tbaa !10
%ohspace3010 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os213001, i64 0, i32 1
%445 = load i8, i8* %ohspace3010, align 1, !tbaa !10
%ohspace3014 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os212997, i64 0, i32 1
store i8 %445, i8* %ohspace3014, align 1, !tbaa !10
%os53015 = bitcast %union.rec* %.in10530 to %struct.gapobj_type*
%446 = getelementptr inbounds %struct.gapobj_type, %struct.gapobj_type* %os53015, i64 0, i32 3, i32 0
%bf.load3017 = load i16, i16* %446, align 4
%bf.clear3023 = and i16 %bf.load3017, -769
%bf.set3024 = or i16 %bf.clear3023, 512
store i16 %bf.set3024, i16* %446, align 4
%ofile_num3028 = getelementptr inbounds %struct.word_type, %struct.word_type* %443, i64 0, i32 1, i32 0, i32 2
%447 = load i16, i16* %ofile_num3028, align 2, !tbaa !10
%448 = getelementptr inbounds %union.rec, %union.rec* %.in10530, i64 0, i32 0, i32 1, i32 0, i32 2
store i16 %447, i16* %448, align 2, !tbaa !10
%oline_num3036 = getelementptr inbounds %struct.word_type, %struct.word_type* %443, i64 0, i32 1, i32 0, i32 3
%bf.load3037 = load i32, i32* %oline_num3036, align 4
%bf.clear3038 = and i32 %bf.load3037, 1048575
%449 = getelementptr inbounds %union.rec, %union.rec* %.in10530, i64 0, i32 0, i32 1, i32 0, i32 3
%bf.load3043 = load i32, i32* %449, align 4
%bf.clear3045 = and i32 %bf.load3043, -1048576
%bf.set3046 = or i32 %bf.clear3045, %bf.clear3038
store i32 %bf.set3046, i32* %449, align 4
%bf.load3051 = load i32, i32* %oline_num3036, align 4
%bf.lshr3052 = and i32 %bf.load3051, -1048576
%bf.set3061 = or i32 %bf.lshr3052, %bf.clear3038
store i32 %bf.set3061, i32* %449, align 4
%inc3062 = add nsw i32 %436, 1
store i32 %inc3062, i32* @ttop, align 4, !tbaa !4
%cmp3063 = icmp slt i32 %436, 99
br i1 %cmp3063, label %if.then3065, label %if.else3068
if.then3065: ; preds = %if.end2972
%idxprom3066 = sext i32 %inc3062 to i64
%arrayidx3067 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom3066
store %union.rec* %.in10530, %union.rec** %arrayidx3067, align 8, !tbaa !8
br label %if.end3079
if.else3068: ; preds = %if.end2972
%idxprom307010241 = zext i32 %436 to i64
%arrayidx3071 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom307010241
%450 = bitcast %union.rec** %arrayidx3071 to %struct.word_type**
%451 = load %struct.word_type*, %struct.word_type** %450, align 8, !tbaa !8
%ofpos3074 = getelementptr inbounds %struct.word_type, %struct.word_type* %451, i64 0, i32 1, i32 0
%call3075 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 2, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos3074) #5
br label %if.end3079
if.end3079: ; preds = %if.else3068, %if.then3065, %while.body2942, %if.else2895, %if.else2866
%452 = load i32, i32* @ttop, align 4, !tbaa !4
%inc3080 = add nsw i32 %452, 1
store i32 %inc3080, i32* @ttop, align 4, !tbaa !4
%cmp3081 = icmp slt i32 %452, 99
br i1 %cmp3081, label %if.then3083, label %if.else3086
if.then3083: ; preds = %if.end3079
%453 = load %union.rec*, %union.rec** %t, align 8, !tbaa !8
%idxprom3084 = sext i32 %inc3080 to i64
%arrayidx3085 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom3084
store %union.rec* %453, %union.rec** %arrayidx3085, align 8, !tbaa !8
%454 = bitcast %union.rec* %453 to %struct.closure_type*
br label %if.end3094
if.else3086: ; preds = %if.end3079
%idxprom308810240 = zext i32 %452 to i64
%arrayidx3089 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom308810240
%455 = bitcast %union.rec** %arrayidx3089 to %struct.word_type**
%456 = load %struct.word_type*, %struct.word_type** %455, align 8, !tbaa !8
%ofpos3092 = getelementptr inbounds %struct.word_type, %struct.word_type* %456, i64 0, i32 1, i32 0
%call3093 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 2, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos3092) #5
%.pre10486 = load %struct.closure_type*, %struct.closure_type** %83, align 8, !tbaa !8
br label %if.end3094
if.end3094: ; preds = %if.else3086, %if.then3083
%457 = phi %struct.closure_type* [ %.pre10486, %if.else3086 ], [ %454, %if.then3083 ]
%oactual3096 = getelementptr inbounds %struct.closure_type, %struct.closure_type* %457, i64 0, i32 5
%458 = bitcast %union.rec** %oactual3096 to %struct.word_type**
%459 = load %struct.word_type*, %struct.word_type** %458, align 8, !tbaa !10
%ou23098 = getelementptr inbounds %struct.word_type, %struct.word_type* %459, i64 0, i32 2
%os263099 = bitcast %union.SECOND_UNION* %ou23098 to %struct.anon.5*
%ohas_rpar3100 = getelementptr inbounds %struct.anon.5, %struct.anon.5* %os263099, i64 0, i32 1
%460 = bitcast [3 x i8]* %ohas_rpar3100 to i24*
%bf.load3101 = load i24, i24* %460, align 1
%461 = and i24 %bf.load3101, 8
%tobool3105.not = icmp eq i24 %461, 0
br i1 %tobool3105.not, label %if.else3107, label %if.end3116
if.else3107: ; preds = %if.end3094
%call3108 = call fastcc i32 @Reduce()
%462 = load i32, i32* @ttop, align 4, !tbaa !4
%cmp3109 = icmp eq i32 %462, %4
br i1 %cmp3109, label %cleanup9179, label %if.end3116
if.end3116: ; preds = %if.else3107, %if.end3094
%obj_prev.21 = phi i32 [ %call3108, %if.else3107 ], [ 0, %if.end3094 ]
%call3117 = call %union.rec* @LexGetToken() #5
store %union.rec* %call3117, %union.rec** %t, align 8, !tbaa !8
br label %for.cond581.backedge
sw.bb3118: ; preds = %for.cond581
%ofpos3121 = getelementptr %union.FIRST_UNION, %union.FIRST_UNION* %85, i64 0, i32 0
%call3122 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 22, i8* noundef getelementptr inbounds ([24 x i8], [24 x i8]* @.str.31, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos3121) #5
br label %for.cond581.backedge
sw.bb3123: ; preds = %for.cond581
%463 = getelementptr inbounds %union.rec, %union.rec* %84, i64 0, i32 0, i32 5
%464 = load %union.rec*, %union.rec** %463, align 8, !tbaa !10
%cmp3126 = icmp eq %union.rec* %464, null
br i1 %cmp3126, label %if.then3128, label %sw.bb3138
if.then3128: ; preds = %sw.bb3123
%ofpos3131 = getelementptr %union.FIRST_UNION, %union.FIRST_UNION* %85, i64 0, i32 0
%call3132 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 23, i8* noundef getelementptr inbounds ([18 x i8], [18 x i8]* @.str.32, i64 0, i64 0), i32 noundef 2, %struct.FILE_POS* noundef nonnull %ofpos3131, i8* noundef getelementptr inbounds ([7 x i8], [7 x i8]* @.str.33, i64 0, i64 0), i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.17, i64 0, i64 0)) #5
%465 = load %struct.word_type*, %struct.word_type** %79, align 8, !tbaa !8
%otype3136 = getelementptr inbounds %struct.word_type, %struct.word_type* %465, i64 0, i32 1, i32 0, i32 0
store i8 102, i8* %otype3136, align 8, !tbaa !10
br label %sw.bb3138
sw.bb3138: ; preds = %if.then3128, %sw.bb3123, %for.cond581
%466 = phi %struct.word_type* [ %87, %sw.bb3123 ], [ %465, %if.then3128 ], [ %87, %for.cond581 ]
%tobool3139.not = icmp eq i32 %obj_prev.1, 0
br i1 %tobool3139.not, label %if.end3321, label %if.then3140
if.then3140: ; preds = %sw.bb3138
%ou23144 = getelementptr inbounds %struct.word_type, %struct.word_type* %466, i64 0, i32 2
%os213145 = bitcast %union.SECOND_UNION* %ou23144 to %struct.anon.0*
%ohspace3146 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os213145, i64 0, i32 1
%467 = load i8, i8* %ohspace3146, align 1, !tbaa !10
%conv3147 = zext i8 %467 to i32
%ovspace3151 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os213145, i64 0, i32 2
%468 = load i8, i8* %ovspace3151, align 2, !tbaa !10
%conv3152 = zext i8 %468 to i32
%add3153 = sub nsw i32 0, %conv3152
%cmp3154.not = icmp eq i32 %conv3147, %add3153
br i1 %cmp3154.not, label %if.else3157, label %land.rhs3174.preheader
if.else3157: ; preds = %if.then3140
%otype3161 = getelementptr inbounds %struct.word_type, %struct.word_type* %466, i64 0, i32 1, i32 0, i32 0
%469 = load i8, i8* %otype3161, align 8, !tbaa !10
%cmp3163 = icmp eq i8 %469, 102
%cmp3166 = icmp eq i32 %obj_prev.1, 2
%or.cond9206 = select i1 %cmp3163, i1 true, i1 %cmp3166
%.10145 = select i1 %or.cond9206, i8 7, i8 103
br label %land.rhs3174.preheader
land.rhs3174.preheader: ; preds = %if.else3157, %if.then3140
%typ3141.0 = phi i32 [ 100, %if.then3140 ], [ 101, %if.else3157 ]
%prec3142.0 = phi i8 [ 7, %if.then3140 ], [ %.10145, %if.else3157 ]
br label %land.rhs3174
land.rhs3174: ; preds = %while.body3185, %land.rhs3174.preheader
%470 = load i32, i32* @ttop, align 4, !tbaa !4
%idxprom3175 = sext i32 %470 to i64
%arrayidx3176 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom3175
%471 = bitcast %union.rec** %arrayidx3176 to %struct.word_type**
%472 = load %struct.word_type*, %struct.word_type** %471, align 8, !tbaa !8
%ou23178 = getelementptr inbounds %struct.word_type, %struct.word_type* %472, i64 0, i32 2
%oprecedence3180 = bitcast %union.SECOND_UNION* %ou23178 to i8*
%473 = load i8, i8* %oprecedence3180, align 8, !tbaa !10
%cmp3182.not = icmp ugt i8 %prec3142.0, %473
br i1 %cmp3182.not, label %if.then3189, label %while.body3185
while.body3185: ; preds = %land.rhs3174
%call3186 = call fastcc i32 @Reduce()
%tobool3173.not = icmp eq i32 %call3186, 0
br i1 %tobool3173.not, label %if.end3321, label %land.rhs3174, !llvm.loop !18
if.then3189: ; preds = %land.rhs3174
%474 = zext i32 %typ3141.0 to i64
%arrayidx3191 = getelementptr inbounds [0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 %474
%475 = load i8, i8* %arrayidx3191, align 1, !tbaa !10
%conv3192 = zext i8 %475 to i32
store i32 %conv3192, i32* @zz_size, align 4, !tbaa !4
%476 = zext i8 %475 to i64
%arrayidx3200 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %476
%477 = load %union.rec*, %union.rec** %arrayidx3200, align 8, !tbaa !8
%cmp3201 = icmp eq %union.rec* %477, null
br i1 %cmp3201, label %if.then3203, label %if.else3205
if.then3203: ; preds = %if.then3189
%478 = load %struct.FILE_POS*, %struct.FILE_POS** @no_fpos, align 8, !tbaa !8
%call3204 = call %union.rec* @GetMemory(i32 noundef %conv3192, %struct.FILE_POS* noundef %478) #5
store %union.rec* %call3204, %union.rec** @zz_hold, align 8, !tbaa !8
%.pre10484 = load i32, i32* @ttop, align 4, !tbaa !4
br label %if.end3215
if.else3205: ; preds = %if.then3189
store %union.rec* %477, %union.rec** @zz_hold, align 8, !tbaa !8
%opred3211 = getelementptr inbounds %union.rec, %union.rec* %477, i64 0, i32 0, i32 0, i64 0, i32 0
%479 = load %union.rec*, %union.rec** %opred3211, align 8, !tbaa !10
store %union.rec* %479, %union.rec** %arrayidx3200, align 8, !tbaa !8
br label %if.end3215
if.end3215: ; preds = %if.else3205, %if.then3203
%480 = phi i32 [ %.pre10484, %if.then3203 ], [ %470, %if.else3205 ]
%.in10528 = phi %union.rec* [ %call3204, %if.then3203 ], [ %477, %if.else3205 ]
%conv3216 = trunc i32 %typ3141.0 to i8
%481 = getelementptr inbounds %union.rec, %union.rec* %.in10528, i64 0, i32 0, i32 1, i32 0, i32 0
store i8 %conv3216, i8* %481, align 8, !tbaa !10
%482 = getelementptr inbounds %union.rec, %union.rec* %.in10528, i64 0, i32 0, i32 0, i64 1, i32 1
store %union.rec* %.in10528, %union.rec** %482, align 8, !tbaa !10
%483 = getelementptr inbounds %union.rec, %union.rec* %.in10528, i64 0, i32 0, i32 0, i64 1, i32 0
store %union.rec* %.in10528, %union.rec** %483, align 8, !tbaa !10
%484 = getelementptr inbounds %union.rec, %union.rec* %.in10528, i64 0, i32 0, i32 0, i64 0, i32 1
store %union.rec* %.in10528, %union.rec** %484, align 8, !tbaa !10
%485 = getelementptr %union.rec, %union.rec* %.in10528, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %.in10528, %union.rec** %485, align 8, !tbaa !10
%486 = getelementptr inbounds %union.rec, %union.rec* %.in10528, i64 0, i32 0, i32 2
%os213240 = bitcast %union.SECOND_UNION* %486 to %struct.anon.0*
%oprecedence3241 = bitcast %union.SECOND_UNION* %486 to i8*
store i8 %prec3142.0, i8* %oprecedence3241, align 8, !tbaa !10
%487 = load %struct.word_type*, %struct.word_type** %79, align 8, !tbaa !8
%ou23243 = getelementptr inbounds %struct.word_type, %struct.word_type* %487, i64 0, i32 2
%os213244 = bitcast %union.SECOND_UNION* %ou23243 to %struct.anon.0*
%ovspace3245 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os213244, i64 0, i32 2
%488 = load i8, i8* %ovspace3245, align 2, !tbaa !10
%ovspace3249 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os213240, i64 0, i32 2
store i8 %488, i8* %ovspace3249, align 2, !tbaa !10
%ohspace3253 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os213244, i64 0, i32 1
%489 = load i8, i8* %ohspace3253, align 1, !tbaa !10
%ohspace3257 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os213240, i64 0, i32 1
store i8 %489, i8* %ohspace3257, align 1, !tbaa !10
%os53258 = bitcast %union.rec* %.in10528 to %struct.gapobj_type*
%490 = getelementptr inbounds %struct.gapobj_type, %struct.gapobj_type* %os53258, i64 0, i32 3, i32 0
%bf.load3260 = load i16, i16* %490, align 4
%bf.clear3266 = and i16 %bf.load3260, -769
%bf.set3267 = or i16 %bf.clear3266, 512
store i16 %bf.set3267, i16* %490, align 4
%ofile_num3271 = getelementptr inbounds %struct.word_type, %struct.word_type* %487, i64 0, i32 1, i32 0, i32 2
%491 = load i16, i16* %ofile_num3271, align 2, !tbaa !10
%492 = getelementptr inbounds %union.rec, %union.rec* %.in10528, i64 0, i32 0, i32 1, i32 0, i32 2
store i16 %491, i16* %492, align 2, !tbaa !10
%oline_num3279 = getelementptr inbounds %struct.word_type, %struct.word_type* %487, i64 0, i32 1, i32 0, i32 3
%bf.load3280 = load i32, i32* %oline_num3279, align 4
%bf.clear3281 = and i32 %bf.load3280, 1048575
%493 = getelementptr inbounds %union.rec, %union.rec* %.in10528, i64 0, i32 0, i32 1, i32 0, i32 3
%bf.load3286 = load i32, i32* %493, align 4
%bf.clear3288 = and i32 %bf.load3286, -1048576
%bf.set3289 = or i32 %bf.clear3288, %bf.clear3281
store i32 %bf.set3289, i32* %493, align 4
%bf.load3294 = load i32, i32* %oline_num3279, align 4
%bf.lshr3295 = and i32 %bf.load3294, -1048576
%bf.set3304 = or i32 %bf.lshr3295, %bf.clear3281
store i32 %bf.set3304, i32* %493, align 4
%inc3305 = add nsw i32 %480, 1
store i32 %inc3305, i32* @ttop, align 4, !tbaa !4
%cmp3306 = icmp slt i32 %480, 99
br i1 %cmp3306, label %if.then3308, label %if.else3311
if.then3308: ; preds = %if.end3215
%idxprom3309 = sext i32 %inc3305 to i64
%arrayidx3310 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom3309
store %union.rec* %.in10528, %union.rec** %arrayidx3310, align 8, !tbaa !8
br label %if.end3321
if.else3311: ; preds = %if.end3215
%idxprom331310245 = zext i32 %480 to i64
%arrayidx3314 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom331310245
%494 = bitcast %union.rec** %arrayidx3314 to %struct.word_type**
%495 = load %struct.word_type*, %struct.word_type** %494, align 8, !tbaa !8
%ofpos3317 = getelementptr inbounds %struct.word_type, %struct.word_type* %495, i64 0, i32 1, i32 0
%call3318 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 2, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos3317) #5
br label %if.end3321
if.end3321: ; preds = %if.else3311, %if.then3308, %while.body3185, %sw.bb3138
%496 = load i32, i32* @ttop, align 4, !tbaa !4
%inc3322 = add nsw i32 %496, 1
store i32 %inc3322, i32* @ttop, align 4, !tbaa !4
%cmp3323 = icmp slt i32 %496, 99
br i1 %cmp3323, label %if.then3325, label %if.else3328
if.then3325: ; preds = %if.end3321
%497 = load %union.rec*, %union.rec** %t, align 8, !tbaa !8
%idxprom3326 = sext i32 %inc3322 to i64
%arrayidx3327 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom3326
store %union.rec* %497, %union.rec** %arrayidx3327, align 8, !tbaa !8
br label %if.end3336
if.else3328: ; preds = %if.end3321
%idxprom333010244 = zext i32 %496 to i64
%arrayidx3331 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom333010244
%498 = bitcast %union.rec** %arrayidx3331 to %struct.word_type**
%499 = load %struct.word_type*, %struct.word_type** %498, align 8, !tbaa !8
%ofpos3334 = getelementptr inbounds %struct.word_type, %struct.word_type* %499, i64 0, i32 1, i32 0
%call3335 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 2, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos3334) #5
br label %if.end3336
if.end3336: ; preds = %if.else3328, %if.then3325
%call3337 = call %union.rec* @LexGetToken() #5
store %union.rec* %call3337, %union.rec** %t, align 8, !tbaa !8
br label %for.cond581.backedge
sw.bb3338: ; preds = %for.cond581
%500 = getelementptr inbounds %union.rec, %union.rec* %84, i64 0, i32 0, i32 5
%501 = load %union.rec*, %union.rec** %500, align 8, !tbaa !10
%cmp3341 = icmp eq %union.rec* %501, null
br i1 %cmp3341, label %if.then3343, label %if.end3572
if.then3343: ; preds = %sw.bb3338
%call3344 = call %union.rec* @LexGetToken() #5
%502 = getelementptr inbounds %union.rec, %union.rec* %call3344, i64 0, i32 0, i32 1
%otype3348 = getelementptr %union.FIRST_UNION, %union.FIRST_UNION* %502, i64 0, i32 0, i32 0
%503 = load i8, i8* %otype3348, align 8, !tbaa !10
switch i8 %503, label %if.else3560 [
i8 2, label %if.then3352
i8 53, label %if.then3404
i8 54, label %if.then3454
i8 11, label %land.lhs.true3504
]
if.then3352: ; preds = %if.then3343
%504 = getelementptr inbounds %union.rec, %union.rec* %call3344, i64 0, i32 0, i32 5
%505 = load %union.rec*, %union.rec** %504, align 8, !tbaa !10
%506 = load %struct.closure_type*, %struct.closure_type** %83, align 8, !tbaa !8
%oactual3356 = getelementptr inbounds %struct.closure_type, %struct.closure_type* %506, i64 0, i32 5
store %union.rec* %505, %union.rec** %oactual3356, align 8, !tbaa !10
store %union.rec* %call3344, %union.rec** @zz_hold, align 8, !tbaa !8
%507 = load i8, i8* %otype3348, align 8, !tbaa !10
%.off10164 = add i8 %507, -11
%switch10165 = icmp ult i8 %.off10164, 2
%508 = getelementptr inbounds %union.rec, %union.rec* %call3344, i64 0, i32 0, i32 1, i32 0, i32 1
%idxprom3383 = zext i8 %507 to i64
%arrayidx3384 = getelementptr inbounds [0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 %idxprom3383
%cond3387.in.in = select i1 %switch10165, i8* %508, i8* %arrayidx3384
%cond3387.in = load i8, i8* %cond3387.in.in, align 1, !tbaa !10
%cond3387 = zext i8 %cond3387.in to i32
store i32 %cond3387, i32* @zz_size, align 4, !tbaa !4
%509 = zext i8 %cond3387.in to i64
%arrayidx3389 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %509
%510 = load %union.rec*, %union.rec** %arrayidx3389, align 8, !tbaa !8
%opred3393 = getelementptr %union.rec, %union.rec* %call3344, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %510, %union.rec** %opred3393, align 8, !tbaa !10
%511 = load %union.rec*, %union.rec** @zz_hold, align 8, !tbaa !8
%512 = load i32, i32* @zz_size, align 4, !tbaa !4
%idxprom3394 = sext i32 %512 to i64
%arrayidx3395 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %idxprom3394
store %union.rec* %511, %union.rec** %arrayidx3395, align 8, !tbaa !8
br label %if.end3572
if.then3404: ; preds = %if.then3343
%513 = load %union.rec*, %union.rec** @VerbatimSym, align 8, !tbaa !8
%514 = load %struct.closure_type*, %struct.closure_type** %83, align 8, !tbaa !8
%oactual3406 = getelementptr inbounds %struct.closure_type, %struct.closure_type* %514, i64 0, i32 5
store %union.rec* %513, %union.rec** %oactual3406, align 8, !tbaa !10
store %union.rec* %call3344, %union.rec** @zz_hold, align 8, !tbaa !8
%515 = load i8, i8* %otype3348, align 8, !tbaa !10
%.off10166 = add i8 %515, -11
%switch10167 = icmp ult i8 %.off10166, 2
%516 = getelementptr inbounds %union.rec, %union.rec* %call3344, i64 0, i32 0, i32 1, i32 0, i32 1
%idxprom3433 = zext i8 %515 to i64
%arrayidx3434 = getelementptr inbounds [0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 %idxprom3433
%cond3437.in.in = select i1 %switch10167, i8* %516, i8* %arrayidx3434
%cond3437.in = load i8, i8* %cond3437.in.in, align 1, !tbaa !10
%cond3437 = zext i8 %cond3437.in to i32
store i32 %cond3437, i32* @zz_size, align 4, !tbaa !4
%517 = zext i8 %cond3437.in to i64
%arrayidx3439 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %517
%518 = load %union.rec*, %union.rec** %arrayidx3439, align 8, !tbaa !8
%opred3443 = getelementptr %union.rec, %union.rec* %call3344, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %518, %union.rec** %opred3443, align 8, !tbaa !10
%519 = load %union.rec*, %union.rec** @zz_hold, align 8, !tbaa !8
%520 = load i32, i32* @zz_size, align 4, !tbaa !4
%idxprom3444 = sext i32 %520 to i64
%arrayidx3445 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %idxprom3444
store %union.rec* %519, %union.rec** %arrayidx3445, align 8, !tbaa !8
br label %if.end3572
if.then3454: ; preds = %if.then3343
%521 = load %union.rec*, %union.rec** @RawVerbatimSym, align 8, !tbaa !8
%522 = load %struct.closure_type*, %struct.closure_type** %83, align 8, !tbaa !8
%oactual3456 = getelementptr inbounds %struct.closure_type, %struct.closure_type* %522, i64 0, i32 5
store %union.rec* %521, %union.rec** %oactual3456, align 8, !tbaa !10
store %union.rec* %call3344, %union.rec** @zz_hold, align 8, !tbaa !8
%523 = load i8, i8* %otype3348, align 8, !tbaa !10
%.off10168 = add i8 %523, -11
%switch10169 = icmp ult i8 %.off10168, 2
%524 = getelementptr inbounds %union.rec, %union.rec* %call3344, i64 0, i32 0, i32 1, i32 0, i32 1
%idxprom3483 = zext i8 %523 to i64
%arrayidx3484 = getelementptr inbounds [0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 %idxprom3483
%cond3487.in.in = select i1 %switch10169, i8* %524, i8* %arrayidx3484
%cond3487.in = load i8, i8* %cond3487.in.in, align 1, !tbaa !10
%cond3487 = zext i8 %cond3487.in to i32
store i32 %cond3487, i32* @zz_size, align 4, !tbaa !4
%525 = zext i8 %cond3487.in to i64
%arrayidx3489 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %525
%526 = load %union.rec*, %union.rec** %arrayidx3489, align 8, !tbaa !8
%opred3493 = getelementptr %union.rec, %union.rec* %call3344, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %526, %union.rec** %opred3493, align 8, !tbaa !10
%527 = load %union.rec*, %union.rec** @zz_hold, align 8, !tbaa !8
%528 = load i32, i32* @zz_size, align 4, !tbaa !4
%idxprom3494 = sext i32 %528 to i64
%arrayidx3495 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %idxprom3494
store %union.rec* %527, %union.rec** %arrayidx3495, align 8, !tbaa !8
br label %if.end3572
land.lhs.true3504: ; preds = %if.then3343
%ostring3506 = getelementptr inbounds %union.rec, %union.rec* %call3344, i64 0, i32 0, i32 4
%arrayidx3507 = bitcast %union.FOURTH_UNION* %ostring3506 to i8*
%529 = load i8, i8* %arrayidx3507, align 8, !tbaa !10
%cmp3509 = icmp eq i8 %529, 64
br i1 %cmp3509, label %if.then3511, label %if.else3560
if.then3511: ; preds = %land.lhs.true3504
%ofpos3514 = getelementptr %union.FIRST_UNION, %union.FIRST_UNION* %502, i64 0, i32 0
%call3518 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 24, i8* noundef getelementptr inbounds ([47 x i8], [47 x i8]* @.str.34, i64 0, i64 0), i32 noundef 2, %struct.FILE_POS* noundef nonnull %ofpos3514, %union.FOURTH_UNION* noundef nonnull %ostring3506, i8* noundef getelementptr inbounds ([5 x i8], [5 x i8]* @.str.35, i64 0, i64 0)) #5
%530 = load %struct.closure_type*, %struct.closure_type** %83, align 8, !tbaa !8
%oactual3520 = getelementptr inbounds %struct.closure_type, %struct.closure_type* %530, i64 0, i32 5
store %union.rec* null, %union.rec** %oactual3520, align 8, !tbaa !10
store %union.rec* %call3344, %union.rec** @zz_hold, align 8, !tbaa !8
%531 = load i8, i8* %otype3348, align 8, !tbaa !10
%.off10170 = add i8 %531, -11
%switch10171 = icmp ult i8 %.off10170, 2
%532 = getelementptr inbounds %union.rec, %union.rec* %call3344, i64 0, i32 0, i32 1, i32 0, i32 1
%idxprom3547 = zext i8 %531 to i64
%arrayidx3548 = getelementptr inbounds [0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 %idxprom3547
%cond3551.in.in = select i1 %switch10171, i8* %532, i8* %arrayidx3548
%cond3551.in = load i8, i8* %cond3551.in.in, align 1, !tbaa !10
%cond3551 = zext i8 %cond3551.in to i32
store i32 %cond3551, i32* @zz_size, align 4, !tbaa !4
%533 = zext i8 %cond3551.in to i64
%arrayidx3553 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %533
%534 = load %union.rec*, %union.rec** %arrayidx3553, align 8, !tbaa !8
%opred3557 = getelementptr %union.rec, %union.rec* %call3344, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %534, %union.rec** %opred3557, align 8, !tbaa !10
%535 = load %union.rec*, %union.rec** @zz_hold, align 8, !tbaa !8
%536 = load i32, i32* @zz_size, align 4, !tbaa !4
%idxprom3558 = sext i32 %536 to i64
%arrayidx3559 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %idxprom3558
store %union.rec* %535, %union.rec** %arrayidx3559, align 8, !tbaa !8
br label %if.end3572
if.else3560: ; preds = %land.lhs.true3504, %if.then3343
%ofpos3563 = getelementptr %union.FIRST_UNION, %union.FIRST_UNION* %502, i64 0, i32 0
%call3564 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 25, i8* noundef getelementptr inbounds ([25 x i8], [25 x i8]* @.str.36, i64 0, i64 0), i32 noundef 2, %struct.FILE_POS* noundef nonnull %ofpos3563, i8* noundef getelementptr inbounds ([5 x i8], [5 x i8]* @.str.35, i64 0, i64 0)) #5
%537 = load %struct.closure_type*, %struct.closure_type** %83, align 8, !tbaa !8
%oactual3566 = getelementptr inbounds %struct.closure_type, %struct.closure_type* %537, i64 0, i32 5
store %union.rec* null, %union.rec** %oactual3566, align 8, !tbaa !10
br label %if.end3572
if.end3572: ; preds = %if.else3560, %if.then3511, %if.then3454, %if.then3404, %if.then3352, %sw.bb3338
%x.0 = phi %union.rec* [ null, %if.then3352 ], [ null, %if.then3404 ], [ null, %if.then3454 ], [ null, %if.then3511 ], [ %call3344, %if.else3560 ], [ null, %sw.bb3338 ]
br label %for.cond3573
for.cond3573: ; preds = %for.cond3573.backedge, %if.end3572
%obj_prev.23 = phi i32 [ %obj_prev.1, %if.end3572 ], [ %obj_prev.23.be, %for.cond3573.backedge ]
%tobool3574.not = icmp eq i32 %obj_prev.23, 0
br i1 %tobool3574.not, label %if.then3575, label %if.else3595
if.then3575: ; preds = %for.cond3573
%538 = load %struct.word_type*, %struct.word_type** %79, align 8, !tbaa !8
%ofpos3578 = getelementptr inbounds %struct.word_type, %struct.word_type* %538, i64 0, i32 1, i32 0
%call3579 = call %union.rec* @MakeWord(i32 noundef 11, i8* noundef getelementptr inbounds ([1 x i8], [1 x i8]* @.str.27, i64 0, i64 0), %struct.FILE_POS* noundef nonnull %ofpos3578) #5
store %union.rec* %call3579, %union.rec** @zz_hold, align 8, !tbaa !8
%539 = load i32, i32* @otop, align 4, !tbaa !4
%inc3580 = add nsw i32 %539, 1
store i32 %inc3580, i32* @otop, align 4, !tbaa !4
%cmp3581 = icmp slt i32 %539, 99
br i1 %cmp3581, label %if.then3583, label %if.else3586
if.then3583: ; preds = %if.then3575
%idxprom3584 = sext i32 %inc3580 to i64
%arrayidx3585 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom3584
store %union.rec* %call3579, %union.rec** %arrayidx3585, align 8, !tbaa !8
br label %for.cond3573.backedge
for.cond3573.backedge: ; preds = %if.then3611, %if.else3586, %if.then3583
%obj_prev.23.be = phi i32 [ %call3612, %if.then3611 ], [ 1, %if.else3586 ], [ 1, %if.then3583 ]
br label %for.cond3573
if.else3586: ; preds = %if.then3575
%idxprom358810247 = zext i32 %539 to i64
%arrayidx3589 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom358810247
%540 = bitcast %union.rec** %arrayidx3589 to %struct.word_type**
%541 = load %struct.word_type*, %struct.word_type** %540, align 8, !tbaa !8
%ofpos3592 = getelementptr inbounds %struct.word_type, %struct.word_type* %541, i64 0, i32 1, i32 0
%call3593 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 1, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos3592) #5
br label %for.cond3573.backedge
if.else3595: ; preds = %for.cond3573
%542 = load i32, i32* @ttop, align 4, !tbaa !4
%idxprom3596 = sext i32 %542 to i64
%arrayidx3597 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom3596
%543 = bitcast %union.rec** %arrayidx3597 to %struct.word_type**
%544 = load %struct.word_type*, %struct.word_type** %543, align 8, !tbaa !8
%ou23599 = getelementptr inbounds %struct.word_type, %struct.word_type* %544, i64 0, i32 2
%oprecedence3601 = bitcast %union.SECOND_UNION* %ou23599 to i8*
%545 = load i8, i8* %oprecedence3601, align 8, !tbaa !10
%546 = load %struct.word_type*, %struct.word_type** %79, align 8, !tbaa !8
%ou23604 = getelementptr inbounds %struct.word_type, %struct.word_type* %546, i64 0, i32 2
%oprecedence3606 = bitcast %union.SECOND_UNION* %ou23604 to i8*
%547 = load i8, i8* %oprecedence3606, align 8, !tbaa !10
%cmp3609.not = icmp ult i8 %545, %547
br i1 %cmp3609.not, label %for.end3623, label %if.then3611
if.then3611: ; preds = %if.else3595
%call3612 = call fastcc i32 @Reduce()
%548 = load i32, i32* @ttop, align 4, !tbaa !4
%cmp3613 = icmp eq i32 %548, %4
br i1 %cmp3613, label %if.then3615, label %for.cond3573.backedge
if.then3615: ; preds = %if.then3611
%549 = load %union.rec*, %union.rec** %t, align 8, !tbaa !8
br label %cleanup9179
for.end3623: ; preds = %if.else3595
%inc3624 = add nsw i32 %542, 1
store i32 %inc3624, i32* @ttop, align 4, !tbaa !4
%cmp3625 = icmp slt i32 %542, 99
br i1 %cmp3625, label %if.then3627, label %if.else3630
if.then3627: ; preds = %for.end3623
%idxprom3628 = sext i32 %inc3624 to i64
%arrayidx3629 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom3628
%550 = bitcast %union.rec** %arrayidx3629 to %struct.word_type**
store %struct.word_type* %546, %struct.word_type** %550, align 8, !tbaa !8
br label %if.end3638
if.else3630: ; preds = %for.end3623
%ofpos3636 = getelementptr inbounds %struct.word_type, %struct.word_type* %544, i64 0, i32 1, i32 0
%call3637 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 2, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos3636) #5
br label %if.end3638
if.end3638: ; preds = %if.else3630, %if.then3627
%call3639 = call fastcc i32 @Reduce()
%551 = load i32, i32* @ttop, align 4, !tbaa !4
%cmp3640 = icmp eq i32 %551, %4
br i1 %cmp3640, label %cleanup9179, label %if.end3646
if.end3646: ; preds = %if.end3638
%cmp3647.not = icmp eq %union.rec* %x.0, null
br i1 %cmp3647.not, label %cond.false3650, label %cond.end3652
cond.false3650: ; preds = %if.end3646
%call3651 = call %union.rec* @LexGetToken() #5
br label %cond.end3652
cond.end3652: ; preds = %cond.false3650, %if.end3646
%cond3653 = phi %union.rec* [ %call3651, %cond.false3650 ], [ %x.0, %if.end3646 ]
store %union.rec* %cond3653, %union.rec** %t, align 8, !tbaa !8
br label %for.cond581.backedge
for.cond3655: ; preds = %for.cond3655.backedge, %for.cond581
%obj_prev.25 = phi i32 [ %obj_prev.25.be, %for.cond3655.backedge ], [ %obj_prev.1, %for.cond581 ]
%tobool3656.not = icmp eq i32 %obj_prev.25, 0
br i1 %tobool3656.not, label %if.then3657, label %if.else3677
if.then3657: ; preds = %for.cond3655
%552 = load %struct.word_type*, %struct.word_type** %79, align 8, !tbaa !8
%ofpos3660 = getelementptr inbounds %struct.word_type, %struct.word_type* %552, i64 0, i32 1, i32 0
%call3661 = call %union.rec* @MakeWord(i32 noundef 11, i8* noundef getelementptr inbounds ([1 x i8], [1 x i8]* @.str.27, i64 0, i64 0), %struct.FILE_POS* noundef nonnull %ofpos3660) #5
store %union.rec* %call3661, %union.rec** @zz_hold, align 8, !tbaa !8
%553 = load i32, i32* @otop, align 4, !tbaa !4
%inc3662 = add nsw i32 %553, 1
store i32 %inc3662, i32* @otop, align 4, !tbaa !4
%cmp3663 = icmp slt i32 %553, 99
br i1 %cmp3663, label %if.then3665, label %if.else3668
if.then3665: ; preds = %if.then3657
%idxprom3666 = sext i32 %inc3662 to i64
%arrayidx3667 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom3666
store %union.rec* %call3661, %union.rec** %arrayidx3667, align 8, !tbaa !8
br label %for.cond3655.backedge
for.cond3655.backedge: ; preds = %if.then3693, %if.else3668, %if.then3665
%obj_prev.25.be = phi i32 [ %call3694, %if.then3693 ], [ 1, %if.else3668 ], [ 1, %if.then3665 ]
br label %for.cond3655
if.else3668: ; preds = %if.then3657
%idxprom367010248 = zext i32 %553 to i64
%arrayidx3671 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom367010248
%554 = bitcast %union.rec** %arrayidx3671 to %struct.word_type**
%555 = load %struct.word_type*, %struct.word_type** %554, align 8, !tbaa !8
%ofpos3674 = getelementptr inbounds %struct.word_type, %struct.word_type* %555, i64 0, i32 1, i32 0
%call3675 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 1, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos3674) #5
br label %for.cond3655.backedge
if.else3677: ; preds = %for.cond3655
%556 = load i32, i32* @ttop, align 4, !tbaa !4
%idxprom3678 = sext i32 %556 to i64
%arrayidx3679 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom3678
%557 = bitcast %union.rec** %arrayidx3679 to %struct.word_type**
%558 = load %struct.word_type*, %struct.word_type** %557, align 8, !tbaa !8
%ou23681 = getelementptr inbounds %struct.word_type, %struct.word_type* %558, i64 0, i32 2
%oprecedence3683 = bitcast %union.SECOND_UNION* %ou23681 to i8*
%559 = load i8, i8* %oprecedence3683, align 8, !tbaa !10
%560 = load %struct.word_type*, %struct.word_type** %79, align 8, !tbaa !8
%ou23686 = getelementptr inbounds %struct.word_type, %struct.word_type* %560, i64 0, i32 2
%oprecedence3688 = bitcast %union.SECOND_UNION* %ou23686 to i8*
%561 = load i8, i8* %oprecedence3688, align 8, !tbaa !10
%cmp3691.not = icmp ult i8 %559, %561
br i1 %cmp3691.not, label %for.end3705, label %if.then3693
if.then3693: ; preds = %if.else3677
%call3694 = call fastcc i32 @Reduce()
%562 = load i32, i32* @ttop, align 4, !tbaa !4
%cmp3695 = icmp eq i32 %562, %4
br i1 %cmp3695, label %if.then3697, label %for.cond3655.backedge
if.then3697: ; preds = %if.then3693
%563 = load %union.rec*, %union.rec** %t, align 8, !tbaa !8
br label %cleanup9179
for.end3705: ; preds = %if.else3677
%inc3706 = add nsw i32 %556, 1
store i32 %inc3706, i32* @ttop, align 4, !tbaa !4
%cmp3707 = icmp slt i32 %556, 99
br i1 %cmp3707, label %if.then3709, label %if.else3712
if.then3709: ; preds = %for.end3705
%idxprom3710 = sext i32 %inc3706 to i64
%arrayidx3711 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom3710
%564 = bitcast %union.rec** %arrayidx3711 to %struct.word_type**
store %struct.word_type* %560, %struct.word_type** %564, align 8, !tbaa !8
br label %if.end3720
if.else3712: ; preds = %for.end3705
%ofpos3718 = getelementptr inbounds %struct.word_type, %struct.word_type* %558, i64 0, i32 1, i32 0
%call3719 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 2, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos3718) #5
br label %if.end3720
if.end3720: ; preds = %if.else3712, %if.then3709
%call3721 = call fastcc i32 @Reduce()
%565 = load i32, i32* @ttop, align 4, !tbaa !4
%cmp3722 = icmp eq i32 %565, %4
br i1 %cmp3722, label %cleanup9179, label %if.end3728
if.end3728: ; preds = %if.end3720
%call3729 = call %union.rec* @LexGetToken() #5
store %union.rec* %call3729, %union.rec** %t, align 8, !tbaa !8
br label %for.cond581.backedge
sw.bb3730: ; preds = %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581, %for.cond581
%ofpos3733 = getelementptr inbounds %union.rec, %union.rec* %84, i64 0, i32 0, i32 1, i32 0
%566 = getelementptr inbounds %union.rec, %union.rec* %84, i64 0, i32 0, i32 5
%567 = load %union.rec*, %union.rec** %566, align 8, !tbaa !10
%call3736 = call i8* @SymName(%union.rec* noundef %567) #5
%call3737 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 26, i8* noundef getelementptr inbounds ([23 x i8], [23 x i8]* @.str.37, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos3733, i8* noundef %call3736) #5
br label %for.cond581.backedge
sw.bb3738: ; preds = %for.cond581
%call3739 = call fastcc %union.rec* @ParseEnvClosure(%union.rec* noundef nonnull %84, %union.rec* noundef %encl)
%tobool3740.not = icmp eq i32 %obj_prev.1, 0
br i1 %tobool3740.not, label %if.end3922, label %if.then3741
if.then3741: ; preds = %sw.bb3738
%568 = getelementptr inbounds %union.rec, %union.rec* %call3739, i64 0, i32 0, i32 2
%os213746 = bitcast %union.SECOND_UNION* %568 to %struct.anon.0*
%ohspace3747 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os213746, i64 0, i32 1
%569 = load i8, i8* %ohspace3747, align 1, !tbaa !10
%conv3748 = zext i8 %569 to i32
%ovspace3752 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os213746, i64 0, i32 2
%570 = load i8, i8* %ovspace3752, align 2, !tbaa !10
%conv3753 = zext i8 %570 to i32
%add3754 = sub nsw i32 0, %conv3753
%cmp3755.not = icmp eq i32 %conv3748, %add3754
br i1 %cmp3755.not, label %if.else3758, label %land.rhs3775.preheader
if.else3758: ; preds = %if.then3741
%otype3762 = getelementptr inbounds %union.rec, %union.rec* %call3739, i64 0, i32 0, i32 1, i32 0, i32 0
%571 = load i8, i8* %otype3762, align 8, !tbaa !10
%cmp3764 = icmp eq i8 %571, 102
%cmp3767 = icmp eq i32 %obj_prev.1, 2
%or.cond9207 = select i1 %cmp3764, i1 true, i1 %cmp3767
%.10146 = select i1 %or.cond9207, i8 7, i8 103
br label %land.rhs3775.preheader
land.rhs3775.preheader: ; preds = %if.else3758, %if.then3741
%typ3742.0 = phi i32 [ 100, %if.then3741 ], [ 101, %if.else3758 ]
%prec3743.0 = phi i8 [ 7, %if.then3741 ], [ %.10146, %if.else3758 ]
br label %land.rhs3775
land.rhs3775: ; preds = %while.body3786, %land.rhs3775.preheader
%572 = load i32, i32* @ttop, align 4, !tbaa !4
%idxprom3776 = sext i32 %572 to i64
%arrayidx3777 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom3776
%573 = bitcast %union.rec** %arrayidx3777 to %struct.word_type**
%574 = load %struct.word_type*, %struct.word_type** %573, align 8, !tbaa !8
%ou23779 = getelementptr inbounds %struct.word_type, %struct.word_type* %574, i64 0, i32 2
%oprecedence3781 = bitcast %union.SECOND_UNION* %ou23779 to i8*
%575 = load i8, i8* %oprecedence3781, align 8, !tbaa !10
%cmp3783.not = icmp ugt i8 %prec3743.0, %575
br i1 %cmp3783.not, label %if.then3790, label %while.body3786
while.body3786: ; preds = %land.rhs3775
%call3787 = call fastcc i32 @Reduce()
%tobool3774.not = icmp eq i32 %call3787, 0
br i1 %tobool3774.not, label %if.end3922, label %land.rhs3775, !llvm.loop !19
if.then3790: ; preds = %land.rhs3775
%576 = zext i32 %typ3742.0 to i64
%arrayidx3792 = getelementptr inbounds [0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 %576
%577 = load i8, i8* %arrayidx3792, align 1, !tbaa !10
%conv3793 = zext i8 %577 to i32
store i32 %conv3793, i32* @zz_size, align 4, !tbaa !4
%578 = zext i8 %577 to i64
%arrayidx3801 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %578
%579 = load %union.rec*, %union.rec** %arrayidx3801, align 8, !tbaa !8
%cmp3802 = icmp eq %union.rec* %579, null
br i1 %cmp3802, label %if.then3804, label %if.else3806
if.then3804: ; preds = %if.then3790
%580 = load %struct.FILE_POS*, %struct.FILE_POS** @no_fpos, align 8, !tbaa !8
%call3805 = call %union.rec* @GetMemory(i32 noundef %conv3793, %struct.FILE_POS* noundef %580) #5
store %union.rec* %call3805, %union.rec** @zz_hold, align 8, !tbaa !8
%.pre10483 = load i32, i32* @ttop, align 4, !tbaa !4
br label %if.end3816
if.else3806: ; preds = %if.then3790
store %union.rec* %579, %union.rec** @zz_hold, align 8, !tbaa !8
%opred3812 = getelementptr inbounds %union.rec, %union.rec* %579, i64 0, i32 0, i32 0, i64 0, i32 0
%581 = load %union.rec*, %union.rec** %opred3812, align 8, !tbaa !10
store %union.rec* %581, %union.rec** %arrayidx3801, align 8, !tbaa !8
br label %if.end3816
if.end3816: ; preds = %if.else3806, %if.then3804
%582 = phi i32 [ %.pre10483, %if.then3804 ], [ %572, %if.else3806 ]
%.in10526 = phi %union.rec* [ %call3805, %if.then3804 ], [ %579, %if.else3806 ]
%conv3817 = trunc i32 %typ3742.0 to i8
%583 = getelementptr inbounds %union.rec, %union.rec* %.in10526, i64 0, i32 0, i32 1, i32 0, i32 0
store i8 %conv3817, i8* %583, align 8, !tbaa !10
%584 = getelementptr inbounds %union.rec, %union.rec* %.in10526, i64 0, i32 0, i32 0, i64 1, i32 1
store %union.rec* %.in10526, %union.rec** %584, align 8, !tbaa !10
%585 = getelementptr inbounds %union.rec, %union.rec* %.in10526, i64 0, i32 0, i32 0, i64 1, i32 0
store %union.rec* %.in10526, %union.rec** %585, align 8, !tbaa !10
%586 = getelementptr inbounds %union.rec, %union.rec* %.in10526, i64 0, i32 0, i32 0, i64 0, i32 1
store %union.rec* %.in10526, %union.rec** %586, align 8, !tbaa !10
%587 = getelementptr %union.rec, %union.rec* %.in10526, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %.in10526, %union.rec** %587, align 8, !tbaa !10
%588 = getelementptr inbounds %union.rec, %union.rec* %.in10526, i64 0, i32 0, i32 2
%os213841 = bitcast %union.SECOND_UNION* %588 to %struct.anon.0*
%oprecedence3842 = bitcast %union.SECOND_UNION* %588 to i8*
store i8 %prec3743.0, i8* %oprecedence3842, align 8, !tbaa !10
%589 = load i8, i8* %ovspace3752, align 2, !tbaa !10
%ovspace3850 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os213841, i64 0, i32 2
store i8 %589, i8* %ovspace3850, align 2, !tbaa !10
%590 = load i8, i8* %ohspace3747, align 1, !tbaa !10
%ohspace3858 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os213841, i64 0, i32 1
store i8 %590, i8* %ohspace3858, align 1, !tbaa !10
%os53859 = bitcast %union.rec* %.in10526 to %struct.gapobj_type*
%591 = getelementptr inbounds %struct.gapobj_type, %struct.gapobj_type* %os53859, i64 0, i32 3, i32 0
%bf.load3861 = load i16, i16* %591, align 4
%bf.clear3867 = and i16 %bf.load3861, -769
%bf.set3868 = or i16 %bf.clear3867, 512
store i16 %bf.set3868, i16* %591, align 4
%ofile_num3872 = getelementptr inbounds %union.rec, %union.rec* %call3739, i64 0, i32 0, i32 1, i32 0, i32 2
%592 = load i16, i16* %ofile_num3872, align 2, !tbaa !10
%593 = getelementptr inbounds %union.rec, %union.rec* %.in10526, i64 0, i32 0, i32 1, i32 0, i32 2
store i16 %592, i16* %593, align 2, !tbaa !10
%oline_num3880 = getelementptr inbounds %union.rec, %union.rec* %call3739, i64 0, i32 0, i32 1, i32 0, i32 3
%bf.load3881 = load i32, i32* %oline_num3880, align 4
%bf.clear3882 = and i32 %bf.load3881, 1048575
%594 = getelementptr inbounds %union.rec, %union.rec* %.in10526, i64 0, i32 0, i32 1, i32 0, i32 3
%bf.load3887 = load i32, i32* %594, align 4
%bf.clear3889 = and i32 %bf.load3887, -1048576
%bf.set3890 = or i32 %bf.clear3889, %bf.clear3882
store i32 %bf.set3890, i32* %594, align 4
%bf.load3895 = load i32, i32* %oline_num3880, align 4
%bf.lshr3896 = and i32 %bf.load3895, -1048576
%bf.set3905 = or i32 %bf.lshr3896, %bf.clear3882
store i32 %bf.set3905, i32* %594, align 4
%inc3906 = add nsw i32 %582, 1
store i32 %inc3906, i32* @ttop, align 4, !tbaa !4
%cmp3907 = icmp slt i32 %582, 99
br i1 %cmp3907, label %if.then3909, label %if.else3912
if.then3909: ; preds = %if.end3816
%idxprom3910 = sext i32 %inc3906 to i64
%arrayidx3911 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom3910
store %union.rec* %.in10526, %union.rec** %arrayidx3911, align 8, !tbaa !8
br label %if.end3922
if.else3912: ; preds = %if.end3816
%idxprom391410250 = zext i32 %582 to i64
%arrayidx3915 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom391410250
%595 = bitcast %union.rec** %arrayidx3915 to %struct.word_type**
%596 = load %struct.word_type*, %struct.word_type** %595, align 8, !tbaa !8
%ofpos3918 = getelementptr inbounds %struct.word_type, %struct.word_type* %596, i64 0, i32 1, i32 0
%call3919 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 2, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos3918) #5
br label %if.end3922
if.end3922: ; preds = %if.else3912, %if.then3909, %while.body3786, %sw.bb3738
store %union.rec* %call3739, %union.rec** @zz_hold, align 8, !tbaa !8
%597 = load i32, i32* @otop, align 4, !tbaa !4
%inc3923 = add nsw i32 %597, 1
store i32 %inc3923, i32* @otop, align 4, !tbaa !4
%cmp3924 = icmp slt i32 %597, 99
br i1 %cmp3924, label %if.then3926, label %if.else3929
if.then3926: ; preds = %if.end3922
%idxprom3927 = sext i32 %inc3923 to i64
%arrayidx3928 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom3927
store %union.rec* %call3739, %union.rec** %arrayidx3928, align 8, !tbaa !8
br label %if.end3937
if.else3929: ; preds = %if.end3922
%idxprom393110249 = zext i32 %597 to i64
%arrayidx3932 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom393110249
%598 = bitcast %union.rec** %arrayidx3932 to %struct.word_type**
%599 = load %struct.word_type*, %struct.word_type** %598, align 8, !tbaa !8
%ofpos3935 = getelementptr inbounds %struct.word_type, %struct.word_type* %599, i64 0, i32 1, i32 0
%call3936 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 1, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos3935) #5
br label %if.end3937
if.end3937: ; preds = %if.else3929, %if.then3926
%call3938 = call %union.rec* @LexGetToken() #5
store %union.rec* %call3938, %union.rec** %t, align 8, !tbaa !8
br label %for.cond581.backedge
sw.bb3939: ; preds = %for.cond581
%call3940 = call i64 @LexNextTokenPos() #5
%600 = trunc i64 %call3940 to i32
%conv3944 = add i32 %600, -5
store i32 %conv3944, i32* %offset, align 4, !tbaa !4
%601 = load %union.rec*, %union.rec** %t, align 8, !tbaa !8
store %union.rec* %601, %union.rec** @zz_hold, align 8, !tbaa !8
%otype3948 = getelementptr inbounds %union.rec, %union.rec* %601, i64 0, i32 0, i32 1, i32 0, i32 0
%602 = load i8, i8* %otype3948, align 8, !tbaa !10
%.off10172 = add i8 %602, -11
%switch10173 = icmp ult i8 %.off10172, 2
%603 = getelementptr inbounds %union.rec, %union.rec* %601, i64 0, i32 0, i32 1, i32 0, i32 1
%idxprom3971 = zext i8 %602 to i64
%arrayidx3972 = getelementptr inbounds [0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 %idxprom3971
%cond3975.in.in = select i1 %switch10173, i8* %603, i8* %arrayidx3972
%cond3975.in = load i8, i8* %cond3975.in.in, align 1, !tbaa !10
%cond3975 = zext i8 %cond3975.in to i32
store i32 %cond3975, i32* @zz_size, align 4, !tbaa !4
%604 = zext i8 %cond3975.in to i64
%arrayidx3977 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %604
%605 = load %union.rec*, %union.rec** %arrayidx3977, align 8, !tbaa !8
%opred3981 = getelementptr %union.rec, %union.rec* %601, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %605, %union.rec** %opred3981, align 8, !tbaa !10
%606 = load %union.rec*, %union.rec** @zz_hold, align 8, !tbaa !8
%607 = load i32, i32* @zz_size, align 4, !tbaa !4
%idxprom3982 = sext i32 %607 to i64
%arrayidx3983 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %idxprom3982
store %union.rec* %606, %union.rec** %arrayidx3983, align 8, !tbaa !8
%call3984 = call %union.rec* @LexGetToken() #5
store %union.rec* %call3984, %union.rec** %t, align 8, !tbaa !8
%call3985 = call %union.rec* @Parse(%union.rec** noundef nonnull %t, %union.rec* noundef %encl, i32 noundef 0, i32 noundef 0)
%call3986 = call %union.rec* @SetEnv(%union.rec* noundef %call3985, %union.rec* noundef null) #5
store %union.rec* %call3986, %union.rec** %env, align 8, !tbaa !8
%tobool3987.not = icmp eq i32 %obj_prev.1, 0
br i1 %tobool3987.not, label %if.end4169, label %if.then3988
if.then3988: ; preds = %sw.bb3939
%608 = getelementptr inbounds %union.rec, %union.rec* %call3986, i64 0, i32 0, i32 2
%os213993 = bitcast %union.SECOND_UNION* %608 to %struct.anon.0*
%ohspace3994 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os213993, i64 0, i32 1
%609 = load i8, i8* %ohspace3994, align 1, !tbaa !10
%conv3995 = zext i8 %609 to i32
%ovspace3999 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os213993, i64 0, i32 2
%610 = load i8, i8* %ovspace3999, align 2, !tbaa !10
%conv4000 = zext i8 %610 to i32
%add4001 = sub nsw i32 0, %conv4000
%cmp4002.not = icmp eq i32 %conv3995, %add4001
br i1 %cmp4002.not, label %if.else4005, label %land.rhs4022.preheader
if.else4005: ; preds = %if.then3988
%otype4009 = getelementptr inbounds %union.rec, %union.rec* %call3986, i64 0, i32 0, i32 1, i32 0, i32 0
%611 = load i8, i8* %otype4009, align 8, !tbaa !10
%cmp4011 = icmp eq i8 %611, 102
%cmp4014 = icmp eq i32 %obj_prev.1, 2
%or.cond9208 = select i1 %cmp4011, i1 true, i1 %cmp4014
%.10147 = select i1 %or.cond9208, i8 7, i8 103
br label %land.rhs4022.preheader
land.rhs4022.preheader: ; preds = %if.else4005, %if.then3988
%typ3989.0 = phi i32 [ 100, %if.then3988 ], [ 101, %if.else4005 ]
%prec3990.0 = phi i8 [ 7, %if.then3988 ], [ %.10147, %if.else4005 ]
br label %land.rhs4022
land.rhs4022: ; preds = %while.body4033, %land.rhs4022.preheader
%612 = load i32, i32* @ttop, align 4, !tbaa !4
%idxprom4023 = sext i32 %612 to i64
%arrayidx4024 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom4023
%613 = bitcast %union.rec** %arrayidx4024 to %struct.word_type**
%614 = load %struct.word_type*, %struct.word_type** %613, align 8, !tbaa !8
%ou24026 = getelementptr inbounds %struct.word_type, %struct.word_type* %614, i64 0, i32 2
%oprecedence4028 = bitcast %union.SECOND_UNION* %ou24026 to i8*
%615 = load i8, i8* %oprecedence4028, align 8, !tbaa !10
%cmp4030.not = icmp ugt i8 %prec3990.0, %615
br i1 %cmp4030.not, label %if.then4037, label %while.body4033
while.body4033: ; preds = %land.rhs4022
%call4034 = call fastcc i32 @Reduce()
%tobool4021.not = icmp eq i32 %call4034, 0
br i1 %tobool4021.not, label %if.end4169, label %land.rhs4022, !llvm.loop !20
if.then4037: ; preds = %land.rhs4022
%616 = zext i32 %typ3989.0 to i64
%arrayidx4039 = getelementptr inbounds [0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 %616
%617 = load i8, i8* %arrayidx4039, align 1, !tbaa !10
%conv4040 = zext i8 %617 to i32
store i32 %conv4040, i32* @zz_size, align 4, !tbaa !4
%618 = zext i8 %617 to i64
%arrayidx4048 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %618
%619 = load %union.rec*, %union.rec** %arrayidx4048, align 8, !tbaa !8
%cmp4049 = icmp eq %union.rec* %619, null
br i1 %cmp4049, label %if.then4051, label %if.else4053
if.then4051: ; preds = %if.then4037
%620 = load %struct.FILE_POS*, %struct.FILE_POS** @no_fpos, align 8, !tbaa !8
%call4052 = call %union.rec* @GetMemory(i32 noundef %conv4040, %struct.FILE_POS* noundef %620) #5
store %union.rec* %call4052, %union.rec** @zz_hold, align 8, !tbaa !8
%.pre10482 = load i32, i32* @ttop, align 4, !tbaa !4
br label %if.end4063
if.else4053: ; preds = %if.then4037
store %union.rec* %619, %union.rec** @zz_hold, align 8, !tbaa !8
%opred4059 = getelementptr inbounds %union.rec, %union.rec* %619, i64 0, i32 0, i32 0, i64 0, i32 0
%621 = load %union.rec*, %union.rec** %opred4059, align 8, !tbaa !10
store %union.rec* %621, %union.rec** %arrayidx4048, align 8, !tbaa !8
br label %if.end4063
if.end4063: ; preds = %if.else4053, %if.then4051
%622 = phi i32 [ %.pre10482, %if.then4051 ], [ %612, %if.else4053 ]
%.in10524 = phi %union.rec* [ %call4052, %if.then4051 ], [ %619, %if.else4053 ]
%conv4064 = trunc i32 %typ3989.0 to i8
%623 = getelementptr inbounds %union.rec, %union.rec* %.in10524, i64 0, i32 0, i32 1, i32 0, i32 0
store i8 %conv4064, i8* %623, align 8, !tbaa !10
%624 = getelementptr inbounds %union.rec, %union.rec* %.in10524, i64 0, i32 0, i32 0, i64 1, i32 1
store %union.rec* %.in10524, %union.rec** %624, align 8, !tbaa !10
%625 = getelementptr inbounds %union.rec, %union.rec* %.in10524, i64 0, i32 0, i32 0, i64 1, i32 0
store %union.rec* %.in10524, %union.rec** %625, align 8, !tbaa !10
%626 = getelementptr inbounds %union.rec, %union.rec* %.in10524, i64 0, i32 0, i32 0, i64 0, i32 1
store %union.rec* %.in10524, %union.rec** %626, align 8, !tbaa !10
%627 = getelementptr %union.rec, %union.rec* %.in10524, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %.in10524, %union.rec** %627, align 8, !tbaa !10
%628 = getelementptr inbounds %union.rec, %union.rec* %.in10524, i64 0, i32 0, i32 2
%os214088 = bitcast %union.SECOND_UNION* %628 to %struct.anon.0*
%oprecedence4089 = bitcast %union.SECOND_UNION* %628 to i8*
store i8 %prec3990.0, i8* %oprecedence4089, align 8, !tbaa !10
%629 = load %struct.word_type*, %struct.word_type** %82, align 8, !tbaa !8
%ou24091 = getelementptr inbounds %struct.word_type, %struct.word_type* %629, i64 0, i32 2
%os214092 = bitcast %union.SECOND_UNION* %ou24091 to %struct.anon.0*
%ovspace4093 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os214092, i64 0, i32 2
%630 = load i8, i8* %ovspace4093, align 2, !tbaa !10
%ovspace4097 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os214088, i64 0, i32 2
store i8 %630, i8* %ovspace4097, align 2, !tbaa !10
%ohspace4101 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os214092, i64 0, i32 1
%631 = load i8, i8* %ohspace4101, align 1, !tbaa !10
%ohspace4105 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os214088, i64 0, i32 1
store i8 %631, i8* %ohspace4105, align 1, !tbaa !10
%os54106 = bitcast %union.rec* %.in10524 to %struct.gapobj_type*
%632 = getelementptr inbounds %struct.gapobj_type, %struct.gapobj_type* %os54106, i64 0, i32 3, i32 0
%bf.load4108 = load i16, i16* %632, align 4
%bf.clear4114 = and i16 %bf.load4108, -769
%bf.set4115 = or i16 %bf.clear4114, 512
store i16 %bf.set4115, i16* %632, align 4
%ofile_num4119 = getelementptr inbounds %struct.word_type, %struct.word_type* %629, i64 0, i32 1, i32 0, i32 2
%633 = load i16, i16* %ofile_num4119, align 2, !tbaa !10
%634 = getelementptr inbounds %union.rec, %union.rec* %.in10524, i64 0, i32 0, i32 1, i32 0, i32 2
store i16 %633, i16* %634, align 2, !tbaa !10
%oline_num4127 = getelementptr inbounds %struct.word_type, %struct.word_type* %629, i64 0, i32 1, i32 0, i32 3
%bf.load4128 = load i32, i32* %oline_num4127, align 4
%bf.clear4129 = and i32 %bf.load4128, 1048575
%635 = getelementptr inbounds %union.rec, %union.rec* %.in10524, i64 0, i32 0, i32 1, i32 0, i32 3
%bf.load4134 = load i32, i32* %635, align 4
%bf.clear4136 = and i32 %bf.load4134, -1048576
%bf.set4137 = or i32 %bf.clear4136, %bf.clear4129
store i32 %bf.set4137, i32* %635, align 4
%bf.load4142 = load i32, i32* %oline_num4127, align 4
%bf.lshr4143 = and i32 %bf.load4142, -1048576
%bf.set4152 = or i32 %bf.lshr4143, %bf.clear4129
store i32 %bf.set4152, i32* %635, align 4
%inc4153 = add nsw i32 %622, 1
store i32 %inc4153, i32* @ttop, align 4, !tbaa !4
%cmp4154 = icmp slt i32 %622, 99
br i1 %cmp4154, label %if.then4156, label %if.else4159
if.then4156: ; preds = %if.end4063
%idxprom4157 = sext i32 %inc4153 to i64
%arrayidx4158 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom4157
store %union.rec* %.in10524, %union.rec** %arrayidx4158, align 8, !tbaa !8
br label %if.end4169
if.else4159: ; preds = %if.end4063
%idxprom416110253 = zext i32 %622 to i64
%arrayidx4162 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom416110253
%636 = bitcast %union.rec** %arrayidx4162 to %struct.word_type**
%637 = load %struct.word_type*, %struct.word_type** %636, align 8, !tbaa !8
%ofpos4165 = getelementptr inbounds %struct.word_type, %struct.word_type* %637, i64 0, i32 1, i32 0
%call4166 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 2, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos4165) #5
br label %if.end4169
if.end4169: ; preds = %if.else4159, %if.then4156, %while.body4033, %sw.bb3939
%638 = load %union.rec*, %union.rec** %env, align 8, !tbaa !8
store %union.rec* %638, %union.rec** @zz_hold, align 8, !tbaa !8
%639 = load i32, i32* @otop, align 4, !tbaa !4
%inc4170 = add nsw i32 %639, 1
store i32 %inc4170, i32* @otop, align 4, !tbaa !4
%cmp4171 = icmp slt i32 %639, 99
br i1 %cmp4171, label %if.then4173, label %if.else4176
if.then4173: ; preds = %if.end4169
%idxprom4174 = sext i32 %inc4170 to i64
%arrayidx4175 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom4174
store %union.rec* %638, %union.rec** %arrayidx4175, align 8, !tbaa !8
br label %if.end4184
if.else4176: ; preds = %if.end4169
%idxprom417810252 = zext i32 %639 to i64
%arrayidx4179 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom417810252
%640 = bitcast %union.rec** %arrayidx4179 to %struct.word_type**
%641 = load %struct.word_type*, %struct.word_type** %640, align 8, !tbaa !8
%ofpos4182 = getelementptr inbounds %struct.word_type, %struct.word_type* %641, i64 0, i32 1, i32 0
%call4183 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 1, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos4182) #5
br label %if.end4184
if.end4184: ; preds = %if.else4176, %if.then4173
%call4185 = call %union.rec* @LexGetToken() #5
store %union.rec* %call4185, %union.rec** %t, align 8, !tbaa !8
%ofile_num4189 = getelementptr inbounds %union.rec, %union.rec* %call4185, i64 0, i32 0, i32 1, i32 0, i32 2
%642 = load i16, i16* %ofile_num4189, align 2, !tbaa !10
%643 = load i32, i32* %offset, align 4, !tbaa !4
%644 = load %union.rec*, %union.rec** %env, align 8, !tbaa !8
call void @EnvReadInsert(i16 noundef zeroext %642, i32 noundef %643, %union.rec* noundef %644) #5
br label %for.cond581.backedge
sw.bb4190: ; preds = %for.cond581
%call4191 = call i64 @LexNextTokenPos() #5
%645 = trunc i64 %call4191 to i32
%conv4195 = add i32 %645, -5
store i32 %conv4195, i32* %offset, align 4, !tbaa !4
%646 = load %union.rec*, %union.rec** %t, align 8, !tbaa !8
store %union.rec* %646, %union.rec** @zz_hold, align 8, !tbaa !8
%otype4199 = getelementptr inbounds %union.rec, %union.rec* %646, i64 0, i32 0, i32 1, i32 0, i32 0
%647 = load i8, i8* %otype4199, align 8, !tbaa !10
%.off10174 = add i8 %647, -11
%switch10175 = icmp ult i8 %.off10174, 2
%648 = getelementptr inbounds %union.rec, %union.rec* %646, i64 0, i32 0, i32 1, i32 0, i32 1
%idxprom4222 = zext i8 %647 to i64
%arrayidx4223 = getelementptr inbounds [0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 %idxprom4222
%cond4226.in.in = select i1 %switch10175, i8* %648, i8* %arrayidx4223
%cond4226.in = load i8, i8* %cond4226.in.in, align 1, !tbaa !10
%cond4226 = zext i8 %cond4226.in to i32
store i32 %cond4226, i32* @zz_size, align 4, !tbaa !4
%649 = zext i8 %cond4226.in to i64
%arrayidx4228 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %649
%650 = load %union.rec*, %union.rec** %arrayidx4228, align 8, !tbaa !8
%opred4232 = getelementptr %union.rec, %union.rec* %646, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %650, %union.rec** %opred4232, align 8, !tbaa !10
%651 = load %union.rec*, %union.rec** @zz_hold, align 8, !tbaa !8
%652 = load i32, i32* @zz_size, align 4, !tbaa !4
%idxprom4233 = sext i32 %652 to i64
%arrayidx4234 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %idxprom4233
store %union.rec* %651, %union.rec** %arrayidx4234, align 8, !tbaa !8
%call4235 = call %union.rec* @LexGetToken() #5
store %union.rec* %call4235, %union.rec** %t, align 8, !tbaa !8
%call4236 = call %union.rec* @Parse(%union.rec** noundef nonnull %t, %union.rec* noundef %encl, i32 noundef 0, i32 noundef 0)
store %union.rec* %call4236, %union.rec** %env, align 8, !tbaa !8
%call4237 = call %union.rec* @LexGetToken() #5
store %union.rec* %call4237, %union.rec** %t, align 8, !tbaa !8
%call4238 = call %union.rec* @Parse(%union.rec** noundef nonnull %t, %union.rec* noundef %encl, i32 noundef 0, i32 noundef 0)
%653 = load %union.rec*, %union.rec** %env, align 8, !tbaa !8
%call4239 = call %union.rec* @SetEnv(%union.rec* noundef %call4238, %union.rec* noundef %653) #5
store %union.rec* %call4239, %union.rec** %env, align 8, !tbaa !8
%tobool4240.not = icmp eq i32 %obj_prev.1, 0
br i1 %tobool4240.not, label %if.end4422, label %if.then4241
if.then4241: ; preds = %sw.bb4190
%654 = getelementptr inbounds %union.rec, %union.rec* %call4239, i64 0, i32 0, i32 2
%os214246 = bitcast %union.SECOND_UNION* %654 to %struct.anon.0*
%ohspace4247 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os214246, i64 0, i32 1
%655 = load i8, i8* %ohspace4247, align 1, !tbaa !10
%conv4248 = zext i8 %655 to i32
%ovspace4252 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os214246, i64 0, i32 2
%656 = load i8, i8* %ovspace4252, align 2, !tbaa !10
%conv4253 = zext i8 %656 to i32
%add4254 = sub nsw i32 0, %conv4253
%cmp4255.not = icmp eq i32 %conv4248, %add4254
br i1 %cmp4255.not, label %if.else4258, label %land.rhs4275.preheader
if.else4258: ; preds = %if.then4241
%otype4262 = getelementptr inbounds %union.rec, %union.rec* %call4239, i64 0, i32 0, i32 1, i32 0, i32 0
%657 = load i8, i8* %otype4262, align 8, !tbaa !10
%cmp4264 = icmp eq i8 %657, 102
%cmp4267 = icmp eq i32 %obj_prev.1, 2
%or.cond9209 = select i1 %cmp4264, i1 true, i1 %cmp4267
%.10148 = select i1 %or.cond9209, i8 7, i8 103
br label %land.rhs4275.preheader
land.rhs4275.preheader: ; preds = %if.else4258, %if.then4241
%typ4242.0 = phi i32 [ 100, %if.then4241 ], [ 101, %if.else4258 ]
%prec4243.0 = phi i8 [ 7, %if.then4241 ], [ %.10148, %if.else4258 ]
br label %land.rhs4275
land.rhs4275: ; preds = %while.body4286, %land.rhs4275.preheader
%658 = load i32, i32* @ttop, align 4, !tbaa !4
%idxprom4276 = sext i32 %658 to i64
%arrayidx4277 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom4276
%659 = bitcast %union.rec** %arrayidx4277 to %struct.word_type**
%660 = load %struct.word_type*, %struct.word_type** %659, align 8, !tbaa !8
%ou24279 = getelementptr inbounds %struct.word_type, %struct.word_type* %660, i64 0, i32 2
%oprecedence4281 = bitcast %union.SECOND_UNION* %ou24279 to i8*
%661 = load i8, i8* %oprecedence4281, align 8, !tbaa !10
%cmp4283.not = icmp ugt i8 %prec4243.0, %661
br i1 %cmp4283.not, label %if.then4290, label %while.body4286
while.body4286: ; preds = %land.rhs4275
%call4287 = call fastcc i32 @Reduce()
%tobool4274.not = icmp eq i32 %call4287, 0
br i1 %tobool4274.not, label %if.end4422, label %land.rhs4275, !llvm.loop !21
if.then4290: ; preds = %land.rhs4275
%662 = zext i32 %typ4242.0 to i64
%arrayidx4292 = getelementptr inbounds [0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 %662
%663 = load i8, i8* %arrayidx4292, align 1, !tbaa !10
%conv4293 = zext i8 %663 to i32
store i32 %conv4293, i32* @zz_size, align 4, !tbaa !4
%664 = zext i8 %663 to i64
%arrayidx4301 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %664
%665 = load %union.rec*, %union.rec** %arrayidx4301, align 8, !tbaa !8
%cmp4302 = icmp eq %union.rec* %665, null
br i1 %cmp4302, label %if.then4304, label %if.else4306
if.then4304: ; preds = %if.then4290
%666 = load %struct.FILE_POS*, %struct.FILE_POS** @no_fpos, align 8, !tbaa !8
%call4305 = call %union.rec* @GetMemory(i32 noundef %conv4293, %struct.FILE_POS* noundef %666) #5
store %union.rec* %call4305, %union.rec** @zz_hold, align 8, !tbaa !8
%.pre10481 = load i32, i32* @ttop, align 4, !tbaa !4
br label %if.end4316
if.else4306: ; preds = %if.then4290
store %union.rec* %665, %union.rec** @zz_hold, align 8, !tbaa !8
%opred4312 = getelementptr inbounds %union.rec, %union.rec* %665, i64 0, i32 0, i32 0, i64 0, i32 0
%667 = load %union.rec*, %union.rec** %opred4312, align 8, !tbaa !10
store %union.rec* %667, %union.rec** %arrayidx4301, align 8, !tbaa !8
br label %if.end4316
if.end4316: ; preds = %if.else4306, %if.then4304
%668 = phi i32 [ %.pre10481, %if.then4304 ], [ %658, %if.else4306 ]
%.in10522 = phi %union.rec* [ %call4305, %if.then4304 ], [ %665, %if.else4306 ]
%conv4317 = trunc i32 %typ4242.0 to i8
%669 = getelementptr inbounds %union.rec, %union.rec* %.in10522, i64 0, i32 0, i32 1, i32 0, i32 0
store i8 %conv4317, i8* %669, align 8, !tbaa !10
%670 = getelementptr inbounds %union.rec, %union.rec* %.in10522, i64 0, i32 0, i32 0, i64 1, i32 1
store %union.rec* %.in10522, %union.rec** %670, align 8, !tbaa !10
%671 = getelementptr inbounds %union.rec, %union.rec* %.in10522, i64 0, i32 0, i32 0, i64 1, i32 0
store %union.rec* %.in10522, %union.rec** %671, align 8, !tbaa !10
%672 = getelementptr inbounds %union.rec, %union.rec* %.in10522, i64 0, i32 0, i32 0, i64 0, i32 1
store %union.rec* %.in10522, %union.rec** %672, align 8, !tbaa !10
%673 = getelementptr %union.rec, %union.rec* %.in10522, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %.in10522, %union.rec** %673, align 8, !tbaa !10
%674 = getelementptr inbounds %union.rec, %union.rec* %.in10522, i64 0, i32 0, i32 2
%os214341 = bitcast %union.SECOND_UNION* %674 to %struct.anon.0*
%oprecedence4342 = bitcast %union.SECOND_UNION* %674 to i8*
store i8 %prec4243.0, i8* %oprecedence4342, align 8, !tbaa !10
%675 = load %struct.word_type*, %struct.word_type** %82, align 8, !tbaa !8
%ou24344 = getelementptr inbounds %struct.word_type, %struct.word_type* %675, i64 0, i32 2
%os214345 = bitcast %union.SECOND_UNION* %ou24344 to %struct.anon.0*
%ovspace4346 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os214345, i64 0, i32 2
%676 = load i8, i8* %ovspace4346, align 2, !tbaa !10
%ovspace4350 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os214341, i64 0, i32 2
store i8 %676, i8* %ovspace4350, align 2, !tbaa !10
%ohspace4354 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os214345, i64 0, i32 1
%677 = load i8, i8* %ohspace4354, align 1, !tbaa !10
%ohspace4358 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os214341, i64 0, i32 1
store i8 %677, i8* %ohspace4358, align 1, !tbaa !10
%os54359 = bitcast %union.rec* %.in10522 to %struct.gapobj_type*
%678 = getelementptr inbounds %struct.gapobj_type, %struct.gapobj_type* %os54359, i64 0, i32 3, i32 0
%bf.load4361 = load i16, i16* %678, align 4
%bf.clear4367 = and i16 %bf.load4361, -769
%bf.set4368 = or i16 %bf.clear4367, 512
store i16 %bf.set4368, i16* %678, align 4
%ofile_num4372 = getelementptr inbounds %struct.word_type, %struct.word_type* %675, i64 0, i32 1, i32 0, i32 2
%679 = load i16, i16* %ofile_num4372, align 2, !tbaa !10
%680 = getelementptr inbounds %union.rec, %union.rec* %.in10522, i64 0, i32 0, i32 1, i32 0, i32 2
store i16 %679, i16* %680, align 2, !tbaa !10
%oline_num4380 = getelementptr inbounds %struct.word_type, %struct.word_type* %675, i64 0, i32 1, i32 0, i32 3
%bf.load4381 = load i32, i32* %oline_num4380, align 4
%bf.clear4382 = and i32 %bf.load4381, 1048575
%681 = getelementptr inbounds %union.rec, %union.rec* %.in10522, i64 0, i32 0, i32 1, i32 0, i32 3
%bf.load4387 = load i32, i32* %681, align 4
%bf.clear4389 = and i32 %bf.load4387, -1048576
%bf.set4390 = or i32 %bf.clear4389, %bf.clear4382
store i32 %bf.set4390, i32* %681, align 4
%bf.load4395 = load i32, i32* %oline_num4380, align 4
%bf.lshr4396 = and i32 %bf.load4395, -1048576
%bf.set4405 = or i32 %bf.lshr4396, %bf.clear4382
store i32 %bf.set4405, i32* %681, align 4
%inc4406 = add nsw i32 %668, 1
store i32 %inc4406, i32* @ttop, align 4, !tbaa !4
%cmp4407 = icmp slt i32 %668, 99
br i1 %cmp4407, label %if.then4409, label %if.else4412
if.then4409: ; preds = %if.end4316
%idxprom4410 = sext i32 %inc4406 to i64
%arrayidx4411 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom4410
store %union.rec* %.in10522, %union.rec** %arrayidx4411, align 8, !tbaa !8
br label %if.end4422
if.else4412: ; preds = %if.end4316
%idxprom441410256 = zext i32 %668 to i64
%arrayidx4415 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom441410256
%682 = bitcast %union.rec** %arrayidx4415 to %struct.word_type**
%683 = load %struct.word_type*, %struct.word_type** %682, align 8, !tbaa !8
%ofpos4418 = getelementptr inbounds %struct.word_type, %struct.word_type* %683, i64 0, i32 1, i32 0
%call4419 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 2, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos4418) #5
br label %if.end4422
if.end4422: ; preds = %if.else4412, %if.then4409, %while.body4286, %sw.bb4190
%684 = load %union.rec*, %union.rec** %env, align 8, !tbaa !8
store %union.rec* %684, %union.rec** @zz_hold, align 8, !tbaa !8
%685 = load i32, i32* @otop, align 4, !tbaa !4
%inc4423 = add nsw i32 %685, 1
store i32 %inc4423, i32* @otop, align 4, !tbaa !4
%cmp4424 = icmp slt i32 %685, 99
br i1 %cmp4424, label %if.then4426, label %if.else4429
if.then4426: ; preds = %if.end4422
%idxprom4427 = sext i32 %inc4423 to i64
%arrayidx4428 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom4427
store %union.rec* %684, %union.rec** %arrayidx4428, align 8, !tbaa !8
br label %if.end4437
if.else4429: ; preds = %if.end4422
%idxprom443110255 = zext i32 %685 to i64
%arrayidx4432 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom443110255
%686 = bitcast %union.rec** %arrayidx4432 to %struct.word_type**
%687 = load %struct.word_type*, %struct.word_type** %686, align 8, !tbaa !8
%ofpos4435 = getelementptr inbounds %struct.word_type, %struct.word_type* %687, i64 0, i32 1, i32 0
%call4436 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 1, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos4435) #5
br label %if.end4437
if.end4437: ; preds = %if.else4429, %if.then4426
%call4438 = call %union.rec* @LexGetToken() #5
store %union.rec* %call4438, %union.rec** %t, align 8, !tbaa !8
%ofile_num4442 = getelementptr inbounds %union.rec, %union.rec* %call4438, i64 0, i32 0, i32 1, i32 0, i32 2
%688 = load i16, i16* %ofile_num4442, align 2, !tbaa !10
%689 = load i32, i32* %offset, align 4, !tbaa !4
%690 = load %union.rec*, %union.rec** %env, align 8, !tbaa !8
call void @EnvReadInsert(i16 noundef zeroext %688, i32 noundef %689, %union.rec* noundef %690) #5
br label %for.cond581.backedge
sw.bb4443: ; preds = %for.cond581
store %union.rec* %84, %union.rec** @zz_hold, align 8, !tbaa !8
%cond4474.in = load i8, i8* getelementptr inbounds ([0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 85), align 1, !tbaa !10
%cond4474 = zext i8 %cond4474.in to i32
store i32 %cond4474, i32* @zz_size, align 4, !tbaa !4
%691 = zext i8 %cond4474.in to i64
%arrayidx4476 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %691
%692 = load %union.rec*, %union.rec** %arrayidx4476, align 8, !tbaa !8
%opred4480 = getelementptr %union.rec, %union.rec* %84, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %692, %union.rec** %opred4480, align 8, !tbaa !10
%693 = load %union.rec*, %union.rec** @zz_hold, align 8, !tbaa !8
%694 = load i32, i32* @zz_size, align 4, !tbaa !4
%idxprom4481 = sext i32 %694 to i64
%arrayidx4482 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %idxprom4481
store %union.rec* %693, %union.rec** %arrayidx4482, align 8, !tbaa !8
%call4483 = call %union.rec* @LexGetToken() #5
store %union.rec* %call4483, %union.rec** %t, align 8, !tbaa !8
%695 = load i8, i8* getelementptr inbounds ([0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 82), align 1, !tbaa !10
%conv4484 = zext i8 %695 to i32
store i32 %conv4484, i32* @zz_size, align 4, !tbaa !4
%696 = zext i8 %695 to i64
%arrayidx4492 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %696
%697 = load %union.rec*, %union.rec** %arrayidx4492, align 8, !tbaa !8
%cmp4493 = icmp eq %union.rec* %697, null
br i1 %cmp4493, label %if.then4495, label %if.else4497
if.then4495: ; preds = %sw.bb4443
%698 = load %struct.FILE_POS*, %struct.FILE_POS** @no_fpos, align 8, !tbaa !8
%call4496 = call %union.rec* @GetMemory(i32 noundef %conv4484, %struct.FILE_POS* noundef %698) #5
store %union.rec* %call4496, %union.rec** @zz_hold, align 8, !tbaa !8
br label %if.end4507
if.else4497: ; preds = %sw.bb4443
store %union.rec* %697, %union.rec** @zz_hold, align 8, !tbaa !8
%opred4503 = getelementptr inbounds %union.rec, %union.rec* %697, i64 0, i32 0, i32 0, i64 0, i32 0
%699 = load %union.rec*, %union.rec** %opred4503, align 8, !tbaa !10
store %union.rec* %699, %union.rec** %arrayidx4492, align 8, !tbaa !8
br label %if.end4507
if.end4507: ; preds = %if.else4497, %if.then4495
%.in10518 = phi %union.rec* [ %call4496, %if.then4495 ], [ %697, %if.else4497 ]
%700 = getelementptr inbounds %union.rec, %union.rec* %.in10518, i64 0, i32 0, i32 1, i32 0, i32 0
store i8 82, i8* %700, align 8, !tbaa !10
%701 = getelementptr inbounds %union.rec, %union.rec* %.in10518, i64 0, i32 0, i32 0, i64 1, i32 1
store %union.rec* %.in10518, %union.rec** %701, align 8, !tbaa !10
%702 = getelementptr inbounds %union.rec, %union.rec* %.in10518, i64 0, i32 0, i32 0, i64 1, i32 0
store %union.rec* %.in10518, %union.rec** %702, align 8, !tbaa !10
%703 = getelementptr inbounds %union.rec, %union.rec* %.in10518, i64 0, i32 0, i32 0, i64 0, i32 1
store %union.rec* %.in10518, %union.rec** %703, align 8, !tbaa !10
%704 = getelementptr %union.rec, %union.rec* %.in10518, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %.in10518, %union.rec** %704, align 8, !tbaa !10
%tobool4528.not = icmp eq i32 %obj_prev.1, 0
br i1 %tobool4528.not, label %if.end4710, label %if.then4529
if.then4529: ; preds = %if.end4507
%705 = getelementptr inbounds %union.rec, %union.rec* %.in10518, i64 0, i32 0, i32 2
%os214534 = bitcast %union.SECOND_UNION* %705 to %struct.anon.0*
%ohspace4535 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os214534, i64 0, i32 1
%706 = load i8, i8* %ohspace4535, align 1, !tbaa !10
%conv4536 = zext i8 %706 to i32
%ovspace4540 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os214534, i64 0, i32 2
%707 = load i8, i8* %ovspace4540, align 2, !tbaa !10
%conv4541 = zext i8 %707 to i32
%add4542 = sub nsw i32 0, %conv4541
%cmp4543.not = icmp eq i32 %conv4536, %add4542
%cmp4555 = icmp eq i32 %obj_prev.1, 2
%.10149 = select i1 %cmp4555, i8 7, i8 103
%typ4530.0 = select i1 %cmp4543.not, i32 101, i32 100
%prec4531.0 = select i1 %cmp4543.not, i8 %.10149, i8 7
br label %land.rhs4563
land.rhs4563: ; preds = %while.body4574, %if.then4529
%708 = load i32, i32* @ttop, align 4, !tbaa !4
%idxprom4564 = sext i32 %708 to i64
%arrayidx4565 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom4564
%709 = bitcast %union.rec** %arrayidx4565 to %struct.word_type**
%710 = load %struct.word_type*, %struct.word_type** %709, align 8, !tbaa !8
%ou24567 = getelementptr inbounds %struct.word_type, %struct.word_type* %710, i64 0, i32 2
%oprecedence4569 = bitcast %union.SECOND_UNION* %ou24567 to i8*
%711 = load i8, i8* %oprecedence4569, align 8, !tbaa !10
%cmp4571.not = icmp ugt i8 %prec4531.0, %711
br i1 %cmp4571.not, label %if.then4578, label %while.body4574
while.body4574: ; preds = %land.rhs4563
%call4575 = call fastcc i32 @Reduce()
%tobool4562.not = icmp eq i32 %call4575, 0
br i1 %tobool4562.not, label %if.end4710, label %land.rhs4563, !llvm.loop !22
if.then4578: ; preds = %land.rhs4563
%712 = zext i32 %typ4530.0 to i64
%arrayidx4580 = getelementptr inbounds [0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 %712
%713 = load i8, i8* %arrayidx4580, align 1, !tbaa !10
%conv4581 = zext i8 %713 to i32
store i32 %conv4581, i32* @zz_size, align 4, !tbaa !4
%714 = zext i8 %713 to i64
%arrayidx4589 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %714
%715 = load %union.rec*, %union.rec** %arrayidx4589, align 8, !tbaa !8
%cmp4590 = icmp eq %union.rec* %715, null
br i1 %cmp4590, label %if.then4592, label %if.else4594
if.then4592: ; preds = %if.then4578
%716 = load %struct.FILE_POS*, %struct.FILE_POS** @no_fpos, align 8, !tbaa !8
%call4593 = call %union.rec* @GetMemory(i32 noundef %conv4581, %struct.FILE_POS* noundef %716) #5
store %union.rec* %call4593, %union.rec** @zz_hold, align 8, !tbaa !8
%.pre10480 = load i32, i32* @ttop, align 4, !tbaa !4
br label %if.end4604
if.else4594: ; preds = %if.then4578
store %union.rec* %715, %union.rec** @zz_hold, align 8, !tbaa !8
%opred4600 = getelementptr inbounds %union.rec, %union.rec* %715, i64 0, i32 0, i32 0, i64 0, i32 0
%717 = load %union.rec*, %union.rec** %opred4600, align 8, !tbaa !10
store %union.rec* %717, %union.rec** %arrayidx4589, align 8, !tbaa !8
br label %if.end4604
if.end4604: ; preds = %if.else4594, %if.then4592
%718 = phi i32 [ %.pre10480, %if.then4592 ], [ %708, %if.else4594 ]
%.in10520 = phi %union.rec* [ %call4593, %if.then4592 ], [ %715, %if.else4594 ]
%conv4605 = trunc i32 %typ4530.0 to i8
%719 = getelementptr inbounds %union.rec, %union.rec* %.in10520, i64 0, i32 0, i32 1, i32 0, i32 0
store i8 %conv4605, i8* %719, align 8, !tbaa !10
%720 = getelementptr inbounds %union.rec, %union.rec* %.in10520, i64 0, i32 0, i32 0, i64 1, i32 1
store %union.rec* %.in10520, %union.rec** %720, align 8, !tbaa !10
%721 = getelementptr inbounds %union.rec, %union.rec* %.in10520, i64 0, i32 0, i32 0, i64 1, i32 0
store %union.rec* %.in10520, %union.rec** %721, align 8, !tbaa !10
%722 = getelementptr inbounds %union.rec, %union.rec* %.in10520, i64 0, i32 0, i32 0, i64 0, i32 1
store %union.rec* %.in10520, %union.rec** %722, align 8, !tbaa !10
%723 = getelementptr %union.rec, %union.rec* %.in10520, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %.in10520, %union.rec** %723, align 8, !tbaa !10
%724 = getelementptr inbounds %union.rec, %union.rec* %.in10520, i64 0, i32 0, i32 2
%os214629 = bitcast %union.SECOND_UNION* %724 to %struct.anon.0*
%oprecedence4630 = bitcast %union.SECOND_UNION* %724 to i8*
store i8 %prec4531.0, i8* %oprecedence4630, align 8, !tbaa !10
%725 = load i8, i8* %ovspace4540, align 2, !tbaa !10
%ovspace4638 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os214629, i64 0, i32 2
store i8 %725, i8* %ovspace4638, align 2, !tbaa !10
%726 = load i8, i8* %ohspace4535, align 1, !tbaa !10
%ohspace4646 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os214629, i64 0, i32 1
store i8 %726, i8* %ohspace4646, align 1, !tbaa !10
%os54647 = bitcast %union.rec* %.in10520 to %struct.gapobj_type*
%727 = getelementptr inbounds %struct.gapobj_type, %struct.gapobj_type* %os54647, i64 0, i32 3, i32 0
%bf.load4649 = load i16, i16* %727, align 4
%bf.clear4655 = and i16 %bf.load4649, -769
%bf.set4656 = or i16 %bf.clear4655, 512
store i16 %bf.set4656, i16* %727, align 4
%728 = getelementptr inbounds %union.rec, %union.rec* %.in10518, i64 0, i32 0, i32 1, i32 0, i32 2
%729 = load i16, i16* %728, align 2, !tbaa !10
%730 = getelementptr inbounds %union.rec, %union.rec* %.in10520, i64 0, i32 0, i32 1, i32 0, i32 2
store i16 %729, i16* %730, align 2, !tbaa !10
%731 = getelementptr inbounds %union.rec, %union.rec* %.in10518, i64 0, i32 0, i32 1, i32 0, i32 3
%bf.load4669 = load i32, i32* %731, align 4
%bf.clear4670 = and i32 %bf.load4669, 1048575
%732 = getelementptr inbounds %union.rec, %union.rec* %.in10520, i64 0, i32 0, i32 1, i32 0, i32 3
%bf.load4675 = load i32, i32* %732, align 4
%bf.clear4677 = and i32 %bf.load4675, -1048576
%bf.set4678 = or i32 %bf.clear4677, %bf.clear4670
store i32 %bf.set4678, i32* %732, align 4
%bf.load4683 = load i32, i32* %731, align 4
%bf.lshr4684 = and i32 %bf.load4683, -1048576
%bf.set4693 = or i32 %bf.lshr4684, %bf.clear4670
store i32 %bf.set4693, i32* %732, align 4
%inc4694 = add nsw i32 %718, 1
store i32 %inc4694, i32* @ttop, align 4, !tbaa !4
%cmp4695 = icmp slt i32 %718, 99
br i1 %cmp4695, label %if.then4697, label %if.else4700
if.then4697: ; preds = %if.end4604
%idxprom4698 = sext i32 %inc4694 to i64
%arrayidx4699 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom4698
store %union.rec* %.in10520, %union.rec** %arrayidx4699, align 8, !tbaa !8
br label %if.end4710
if.else4700: ; preds = %if.end4604
%idxprom470210259 = zext i32 %718 to i64
%arrayidx4703 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom470210259
%733 = bitcast %union.rec** %arrayidx4703 to %struct.word_type**
%734 = load %struct.word_type*, %struct.word_type** %733, align 8, !tbaa !8
%ofpos4706 = getelementptr inbounds %struct.word_type, %struct.word_type* %734, i64 0, i32 1, i32 0
%call4707 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 2, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos4706) #5
br label %if.end4710
if.end4710: ; preds = %if.else4700, %if.then4697, %while.body4574, %if.end4507
store %union.rec* %.in10518, %union.rec** @zz_hold, align 8, !tbaa !8
%735 = load i32, i32* @otop, align 4, !tbaa !4
%inc4711 = add nsw i32 %735, 1
store i32 %inc4711, i32* @otop, align 4, !tbaa !4
%cmp4712 = icmp slt i32 %735, 99
br i1 %cmp4712, label %if.then4714, label %if.else4717
if.then4714: ; preds = %if.end4710
%idxprom4715 = sext i32 %inc4711 to i64
%arrayidx4716 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom4715
store %union.rec* %.in10518, %union.rec** %arrayidx4716, align 8, !tbaa !8
br label %for.cond581.backedge
if.else4717: ; preds = %if.end4710
%idxprom471910258 = zext i32 %735 to i64
%arrayidx4720 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom471910258
%736 = bitcast %union.rec** %arrayidx4720 to %struct.word_type**
%737 = load %struct.word_type*, %struct.word_type** %736, align 8, !tbaa !8
%ofpos4723 = getelementptr inbounds %struct.word_type, %struct.word_type* %737, i64 0, i32 1, i32 0
%call4724 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 1, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos4723) #5
br label %for.cond581.backedge
sw.bb4726: ; preds = %for.cond581
store %union.rec* %84, %union.rec** @zz_hold, align 8, !tbaa !8
%cond4757.in = load i8, i8* getelementptr inbounds ([0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 86), align 1, !tbaa !10
%cond4757 = zext i8 %cond4757.in to i32
store i32 %cond4757, i32* @zz_size, align 4, !tbaa !4
%738 = zext i8 %cond4757.in to i64
%arrayidx4759 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %738
%739 = load %union.rec*, %union.rec** %arrayidx4759, align 8, !tbaa !8
%opred4763 = getelementptr %union.rec, %union.rec* %84, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %739, %union.rec** %opred4763, align 8, !tbaa !10
%740 = load %union.rec*, %union.rec** @zz_hold, align 8, !tbaa !8
%741 = load i32, i32* @zz_size, align 4, !tbaa !4
%idxprom4764 = sext i32 %741 to i64
%arrayidx4765 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %idxprom4764
store %union.rec* %740, %union.rec** %arrayidx4765, align 8, !tbaa !8
%call4766 = call %union.rec* @LexGetToken() #5
store %union.rec* %call4766, %union.rec** %t, align 8, !tbaa !8
%otype4770 = getelementptr inbounds %union.rec, %union.rec* %call4766, i64 0, i32 0, i32 1, i32 0, i32 0
%742 = load i8, i8* %otype4770, align 8, !tbaa !10
%cmp4772.not = icmp eq i8 %742, 12
%743 = bitcast %union.rec* %call4766 to %struct.word_type*
br i1 %cmp4772.not, label %lor.lhs.false4774, label %if.then4781
lor.lhs.false4774: ; preds = %sw.bb4726
%ostring4776 = getelementptr inbounds %union.rec, %union.rec* %call4766, i64 0, i32 0, i32 4
%arraydecay4777 = bitcast %union.FOURTH_UNION* %ostring4776 to i8*
%call4778 = call i32 (i8*, i8*, ...) @__isoc99_sscanf(i8* noundef nonnull %arraydecay4777, i8* noundef getelementptr inbounds ([6 x i8], [6 x i8]* @.str.38, i64 0, i64 0), i32* noundef nonnull %offset, i32* noundef nonnull %lnum) #5
%cmp4779.not = icmp eq i32 %call4778, 2
br i1 %cmp4779.not, label %if.end4786, label %lor.lhs.false4774.if.then4781_crit_edge
lor.lhs.false4774.if.then4781_crit_edge: ; preds = %lor.lhs.false4774
%.pre10478 = load %struct.word_type*, %struct.word_type** %79, align 8, !tbaa !8
br label %if.then4781
if.then4781: ; preds = %lor.lhs.false4774.if.then4781_crit_edge, %sw.bb4726
%744 = phi %struct.word_type* [ %.pre10478, %lor.lhs.false4774.if.then4781_crit_edge ], [ %743, %sw.bb4726 ]
%ofpos4784 = getelementptr inbounds %struct.word_type, %struct.word_type* %744, i64 0, i32 1, i32 0
%call4785 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 37, i8* noundef getelementptr inbounds ([34 x i8], [34 x i8]* @.str.39, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos4784) #5
br label %if.end4786
if.end4786: ; preds = %if.then4781, %lor.lhs.false4774
%745 = load %struct.word_type*, %struct.word_type** %79, align 8, !tbaa !8
%ofile_num4790 = getelementptr inbounds %struct.word_type, %struct.word_type* %745, i64 0, i32 1, i32 0, i32 2
%746 = load i16, i16* %ofile_num4790, align 2, !tbaa !10
%747 = load i32, i32* %offset, align 4, !tbaa !4
%call4791 = call i32 @EnvReadRetrieve(i16 noundef zeroext %746, i32 noundef %747, %union.rec** noundef nonnull %env) #5
%tobool4792.not = icmp eq i32 %call4791, 0
br i1 %tobool4792.not, label %if.then4793, label %if.else4839
if.then4793: ; preds = %if.end4786
%748 = load %struct.word_type*, %struct.word_type** %79, align 8, !tbaa !8
%ofile_num4797 = getelementptr inbounds %struct.word_type, %struct.word_type* %748, i64 0, i32 1, i32 0, i32 2
%749 = load i16, i16* %ofile_num4797, align 2, !tbaa !10
%750 = load i32, i32* %offset, align 4, !tbaa !4
%751 = load i32, i32* %lnum, align 4, !tbaa !4
call void @LexPush(i16 noundef zeroext %749, i32 noundef %750, i32 noundef 3, i32 noundef %751, i32 noundef 1) #5
%752 = load %union.rec*, %union.rec** %t, align 8, !tbaa !8
store %union.rec* %752, %union.rec** @zz_hold, align 8, !tbaa !8
%otype4801 = getelementptr inbounds %union.rec, %union.rec* %752, i64 0, i32 0, i32 1, i32 0, i32 0
%753 = load i8, i8* %otype4801, align 8, !tbaa !10
%.off10180 = add i8 %753, -11
%switch10181 = icmp ult i8 %.off10180, 2
%754 = getelementptr inbounds %union.rec, %union.rec* %752, i64 0, i32 0, i32 1, i32 0, i32 1
%idxprom4824 = zext i8 %753 to i64
%arrayidx4825 = getelementptr inbounds [0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 %idxprom4824
%cond4828.in.in = select i1 %switch10181, i8* %754, i8* %arrayidx4825
%cond4828.in = load i8, i8* %cond4828.in.in, align 1, !tbaa !10
%cond4828 = zext i8 %cond4828.in to i32
store i32 %cond4828, i32* @zz_size, align 4, !tbaa !4
%755 = zext i8 %cond4828.in to i64
%arrayidx4830 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %755
%756 = load %union.rec*, %union.rec** %arrayidx4830, align 8, !tbaa !8
%opred4834 = getelementptr %union.rec, %union.rec* %752, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %756, %union.rec** %opred4834, align 8, !tbaa !10
%757 = load %union.rec*, %union.rec** @zz_hold, align 8, !tbaa !8
%758 = load i32, i32* @zz_size, align 4, !tbaa !4
%idxprom4835 = sext i32 %758 to i64
%arrayidx4836 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %idxprom4835
store %union.rec* %757, %union.rec** %arrayidx4836, align 8, !tbaa !8
%call4837 = call %union.rec* @LexGetToken() #5
store %union.rec* %call4837, %union.rec** %t, align 8, !tbaa !8
%call4838 = call %union.rec* @Parse(%union.rec** noundef nonnull %t, %union.rec* noundef %encl, i32 noundef 0, i32 noundef 0)
store %union.rec* %call4838, %union.rec** %env, align 8, !tbaa !8
call void @LexPop() #5
br label %if.end4879
if.else4839: ; preds = %if.end4786
%759 = load %union.rec*, %union.rec** %t, align 8, !tbaa !8
store %union.rec* %759, %union.rec** @zz_hold, align 8, !tbaa !8
%otype4843 = getelementptr inbounds %union.rec, %union.rec* %759, i64 0, i32 0, i32 1, i32 0, i32 0
%760 = load i8, i8* %otype4843, align 8, !tbaa !10
%.off10182 = add i8 %760, -11
%switch10183 = icmp ult i8 %.off10182, 2
%761 = getelementptr inbounds %union.rec, %union.rec* %759, i64 0, i32 0, i32 1, i32 0, i32 1
%idxprom4866 = zext i8 %760 to i64
%arrayidx4867 = getelementptr inbounds [0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 %idxprom4866
%cond4870.in.in = select i1 %switch10183, i8* %761, i8* %arrayidx4867
%cond4870.in = load i8, i8* %cond4870.in.in, align 1, !tbaa !10
%cond4870 = zext i8 %cond4870.in to i32
store i32 %cond4870, i32* @zz_size, align 4, !tbaa !4
%762 = zext i8 %cond4870.in to i64
%arrayidx4872 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %762
%763 = load %union.rec*, %union.rec** %arrayidx4872, align 8, !tbaa !8
%opred4876 = getelementptr %union.rec, %union.rec* %759, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %763, %union.rec** %opred4876, align 8, !tbaa !10
%764 = load %union.rec*, %union.rec** @zz_hold, align 8, !tbaa !8
%765 = load i32, i32* @zz_size, align 4, !tbaa !4
%idxprom4877 = sext i32 %765 to i64
%arrayidx4878 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %idxprom4877
store %union.rec* %764, %union.rec** %arrayidx4878, align 8, !tbaa !8
br label %if.end4879
if.end4879: ; preds = %if.else4839, %if.then4793
%tobool4880.not = icmp eq i32 %obj_prev.1, 0
br i1 %tobool4880.not, label %if.end5062, label %if.then4881
if.then4881: ; preds = %if.end4879
%766 = load %struct.word_type*, %struct.word_type** %82, align 8, !tbaa !8
%ou24885 = getelementptr inbounds %struct.word_type, %struct.word_type* %766, i64 0, i32 2
%os214886 = bitcast %union.SECOND_UNION* %ou24885 to %struct.anon.0*
%ohspace4887 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os214886, i64 0, i32 1
%767 = load i8, i8* %ohspace4887, align 1, !tbaa !10
%conv4888 = zext i8 %767 to i32
%ovspace4892 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os214886, i64 0, i32 2
%768 = load i8, i8* %ovspace4892, align 2, !tbaa !10
%conv4893 = zext i8 %768 to i32
%add4894 = sub nsw i32 0, %conv4893
%cmp4895.not = icmp eq i32 %conv4888, %add4894
br i1 %cmp4895.not, label %if.else4898, label %land.rhs4915.preheader
if.else4898: ; preds = %if.then4881
%otype4902 = getelementptr inbounds %struct.word_type, %struct.word_type* %766, i64 0, i32 1, i32 0, i32 0
%769 = load i8, i8* %otype4902, align 8, !tbaa !10
%cmp4904 = icmp eq i8 %769, 102
%cmp4907 = icmp eq i32 %obj_prev.1, 2
%or.cond9211 = select i1 %cmp4904, i1 true, i1 %cmp4907
%.10150 = select i1 %or.cond9211, i8 7, i8 103
br label %land.rhs4915.preheader
land.rhs4915.preheader: ; preds = %if.else4898, %if.then4881
%typ4882.0 = phi i32 [ 100, %if.then4881 ], [ 101, %if.else4898 ]
%prec4883.0 = phi i8 [ 7, %if.then4881 ], [ %.10150, %if.else4898 ]
br label %land.rhs4915
land.rhs4915: ; preds = %while.body4926, %land.rhs4915.preheader
%770 = load i32, i32* @ttop, align 4, !tbaa !4
%idxprom4916 = sext i32 %770 to i64
%arrayidx4917 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom4916
%771 = bitcast %union.rec** %arrayidx4917 to %struct.word_type**
%772 = load %struct.word_type*, %struct.word_type** %771, align 8, !tbaa !8
%ou24919 = getelementptr inbounds %struct.word_type, %struct.word_type* %772, i64 0, i32 2
%oprecedence4921 = bitcast %union.SECOND_UNION* %ou24919 to i8*
%773 = load i8, i8* %oprecedence4921, align 8, !tbaa !10
%cmp4923.not = icmp ugt i8 %prec4883.0, %773
br i1 %cmp4923.not, label %if.then4930, label %while.body4926
while.body4926: ; preds = %land.rhs4915
%call4927 = call fastcc i32 @Reduce()
%tobool4914.not = icmp eq i32 %call4927, 0
br i1 %tobool4914.not, label %if.end5062, label %land.rhs4915, !llvm.loop !23
if.then4930: ; preds = %land.rhs4915
%774 = zext i32 %typ4882.0 to i64
%arrayidx4932 = getelementptr inbounds [0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 %774
%775 = load i8, i8* %arrayidx4932, align 1, !tbaa !10
%conv4933 = zext i8 %775 to i32
store i32 %conv4933, i32* @zz_size, align 4, !tbaa !4
%776 = zext i8 %775 to i64
%arrayidx4941 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %776
%777 = load %union.rec*, %union.rec** %arrayidx4941, align 8, !tbaa !8
%cmp4942 = icmp eq %union.rec* %777, null
br i1 %cmp4942, label %if.then4944, label %if.else4946
if.then4944: ; preds = %if.then4930
%778 = load %struct.FILE_POS*, %struct.FILE_POS** @no_fpos, align 8, !tbaa !8
%call4945 = call %union.rec* @GetMemory(i32 noundef %conv4933, %struct.FILE_POS* noundef %778) #5
store %union.rec* %call4945, %union.rec** @zz_hold, align 8, !tbaa !8
%.pre10479 = load i32, i32* @ttop, align 4, !tbaa !4
br label %if.end4956
if.else4946: ; preds = %if.then4930
store %union.rec* %777, %union.rec** @zz_hold, align 8, !tbaa !8
%opred4952 = getelementptr inbounds %union.rec, %union.rec* %777, i64 0, i32 0, i32 0, i64 0, i32 0
%779 = load %union.rec*, %union.rec** %opred4952, align 8, !tbaa !10
store %union.rec* %779, %union.rec** %arrayidx4941, align 8, !tbaa !8
br label %if.end4956
if.end4956: ; preds = %if.else4946, %if.then4944
%780 = phi i32 [ %.pre10479, %if.then4944 ], [ %770, %if.else4946 ]
%.in10516 = phi %union.rec* [ %call4945, %if.then4944 ], [ %777, %if.else4946 ]
%conv4957 = trunc i32 %typ4882.0 to i8
%781 = getelementptr inbounds %union.rec, %union.rec* %.in10516, i64 0, i32 0, i32 1, i32 0, i32 0
store i8 %conv4957, i8* %781, align 8, !tbaa !10
%782 = getelementptr inbounds %union.rec, %union.rec* %.in10516, i64 0, i32 0, i32 0, i64 1, i32 1
store %union.rec* %.in10516, %union.rec** %782, align 8, !tbaa !10
%783 = getelementptr inbounds %union.rec, %union.rec* %.in10516, i64 0, i32 0, i32 0, i64 1, i32 0
store %union.rec* %.in10516, %union.rec** %783, align 8, !tbaa !10
%784 = getelementptr inbounds %union.rec, %union.rec* %.in10516, i64 0, i32 0, i32 0, i64 0, i32 1
store %union.rec* %.in10516, %union.rec** %784, align 8, !tbaa !10
%785 = getelementptr %union.rec, %union.rec* %.in10516, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %.in10516, %union.rec** %785, align 8, !tbaa !10
%786 = getelementptr inbounds %union.rec, %union.rec* %.in10516, i64 0, i32 0, i32 2
%os214981 = bitcast %union.SECOND_UNION* %786 to %struct.anon.0*
%oprecedence4982 = bitcast %union.SECOND_UNION* %786 to i8*
store i8 %prec4883.0, i8* %oprecedence4982, align 8, !tbaa !10
%787 = load %struct.word_type*, %struct.word_type** %82, align 8, !tbaa !8
%ou24984 = getelementptr inbounds %struct.word_type, %struct.word_type* %787, i64 0, i32 2
%os214985 = bitcast %union.SECOND_UNION* %ou24984 to %struct.anon.0*
%ovspace4986 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os214985, i64 0, i32 2
%788 = load i8, i8* %ovspace4986, align 2, !tbaa !10
%ovspace4990 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os214981, i64 0, i32 2
store i8 %788, i8* %ovspace4990, align 2, !tbaa !10
%ohspace4994 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os214985, i64 0, i32 1
%789 = load i8, i8* %ohspace4994, align 1, !tbaa !10
%ohspace4998 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os214981, i64 0, i32 1
store i8 %789, i8* %ohspace4998, align 1, !tbaa !10
%os54999 = bitcast %union.rec* %.in10516 to %struct.gapobj_type*
%790 = getelementptr inbounds %struct.gapobj_type, %struct.gapobj_type* %os54999, i64 0, i32 3, i32 0
%bf.load5001 = load i16, i16* %790, align 4
%bf.clear5007 = and i16 %bf.load5001, -769
%bf.set5008 = or i16 %bf.clear5007, 512
store i16 %bf.set5008, i16* %790, align 4
%ofile_num5012 = getelementptr inbounds %struct.word_type, %struct.word_type* %787, i64 0, i32 1, i32 0, i32 2
%791 = load i16, i16* %ofile_num5012, align 2, !tbaa !10
%792 = getelementptr inbounds %union.rec, %union.rec* %.in10516, i64 0, i32 0, i32 1, i32 0, i32 2
store i16 %791, i16* %792, align 2, !tbaa !10
%oline_num5020 = getelementptr inbounds %struct.word_type, %struct.word_type* %787, i64 0, i32 1, i32 0, i32 3
%bf.load5021 = load i32, i32* %oline_num5020, align 4
%bf.clear5022 = and i32 %bf.load5021, 1048575
%793 = getelementptr inbounds %union.rec, %union.rec* %.in10516, i64 0, i32 0, i32 1, i32 0, i32 3
%bf.load5027 = load i32, i32* %793, align 4
%bf.clear5029 = and i32 %bf.load5027, -1048576
%bf.set5030 = or i32 %bf.clear5029, %bf.clear5022
store i32 %bf.set5030, i32* %793, align 4
%bf.load5035 = load i32, i32* %oline_num5020, align 4
%bf.lshr5036 = and i32 %bf.load5035, -1048576
%bf.set5045 = or i32 %bf.lshr5036, %bf.clear5022
store i32 %bf.set5045, i32* %793, align 4
%inc5046 = add nsw i32 %780, 1
store i32 %inc5046, i32* @ttop, align 4, !tbaa !4
%cmp5047 = icmp slt i32 %780, 99
br i1 %cmp5047, label %if.then5049, label %if.else5052
if.then5049: ; preds = %if.end4956
%idxprom5050 = sext i32 %inc5046 to i64
%arrayidx5051 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom5050
store %union.rec* %.in10516, %union.rec** %arrayidx5051, align 8, !tbaa !8
br label %if.end5062
if.else5052: ; preds = %if.end4956
%idxprom505410263 = zext i32 %780 to i64
%arrayidx5055 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom505410263
%794 = bitcast %union.rec** %arrayidx5055 to %struct.word_type**
%795 = load %struct.word_type*, %struct.word_type** %794, align 8, !tbaa !8
%ofpos5058 = getelementptr inbounds %struct.word_type, %struct.word_type* %795, i64 0, i32 1, i32 0
%call5059 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 2, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos5058) #5
br label %if.end5062
if.end5062: ; preds = %if.else5052, %if.then5049, %while.body4926, %if.end4879
%796 = load %union.rec*, %union.rec** %env, align 8, !tbaa !8
store %union.rec* %796, %union.rec** @zz_hold, align 8, !tbaa !8
%797 = load i32, i32* @otop, align 4, !tbaa !4
%inc5063 = add nsw i32 %797, 1
store i32 %inc5063, i32* @otop, align 4, !tbaa !4
%cmp5064 = icmp slt i32 %797, 99
br i1 %cmp5064, label %if.then5066, label %if.else5069
if.then5066: ; preds = %if.end5062
%idxprom5067 = sext i32 %inc5063 to i64
%arrayidx5068 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom5067
store %union.rec* %796, %union.rec** %arrayidx5068, align 8, !tbaa !8
br label %if.end5077
if.else5069: ; preds = %if.end5062
%idxprom507110262 = zext i32 %797 to i64
%arrayidx5072 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom507110262
%798 = bitcast %union.rec** %arrayidx5072 to %struct.word_type**
%799 = load %struct.word_type*, %struct.word_type** %798, align 8, !tbaa !8
%ofpos5075 = getelementptr inbounds %struct.word_type, %struct.word_type* %799, i64 0, i32 1, i32 0
%call5076 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 1, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos5075) #5
br label %if.end5077
if.end5077: ; preds = %if.else5069, %if.then5066
%call5078 = call %union.rec* @LexGetToken() #5
store %union.rec* %call5078, %union.rec** %t, align 8, !tbaa !8
br label %for.cond581.backedge
sw.bb5079: ; preds = %for.cond581
store %union.rec* %84, %union.rec** @zz_hold, align 8, !tbaa !8
%cond5110.in = load i8, i8* getelementptr inbounds ([0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 87), align 1, !tbaa !10
%cond5110 = zext i8 %cond5110.in to i32
store i32 %cond5110, i32* @zz_size, align 4, !tbaa !4
%800 = zext i8 %cond5110.in to i64
%arrayidx5112 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %800
%801 = load %union.rec*, %union.rec** %arrayidx5112, align 8, !tbaa !8
%opred5116 = getelementptr %union.rec, %union.rec* %84, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %801, %union.rec** %opred5116, align 8, !tbaa !10
%802 = load %union.rec*, %union.rec** @zz_hold, align 8, !tbaa !8
%803 = load i32, i32* @zz_size, align 4, !tbaa !4
%idxprom5117 = sext i32 %803 to i64
%arrayidx5118 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %idxprom5117
store %union.rec* %802, %union.rec** %arrayidx5118, align 8, !tbaa !8
%call5119 = call %union.rec* @LexGetToken() #5
store %union.rec* %call5119, %union.rec** %t, align 8, !tbaa !8
%call5120 = call %union.rec* @Parse(%union.rec** noundef nonnull %t, %union.rec* noundef %encl, i32 noundef 0, i32 noundef 0)
store %union.rec* %call5120, %union.rec** %env, align 8, !tbaa !8
store i32 0, i32* %scope_count, align 4, !tbaa !4
call void @SetScope(%union.rec* noundef %call5120, i32* noundef nonnull %scope_count, i32 noundef 0)
%call5121 = call %union.rec* @LexGetToken() #5
store %union.rec* %call5121, %union.rec** %t, align 8, !tbaa !8
%call5122 = call %union.rec* @Parse(%union.rec** noundef nonnull %t, %union.rec* noundef %encl, i32 noundef 0, i32 noundef 0)
%804 = load i32, i32* %scope_count, align 4, !tbaa !4
%cmp512410396 = icmp sgt i32 %804, 0
br i1 %cmp512410396, label %for.body5126, label %for.end5129
for.body5126: ; preds = %for.body5126, %sw.bb5079
%i.010397 = phi i32 [ %inc5128, %for.body5126 ], [ 0, %sw.bb5079 ]
call void @PopScope() #5
%inc5128 = add nuw nsw i32 %i.010397, 1
%exitcond10455.not = icmp eq i32 %inc5128, %804
br i1 %exitcond10455.not, label %for.end5129, label %for.body5126, !llvm.loop !24
for.end5129: ; preds = %for.body5126, %sw.bb5079
%805 = load %union.rec*, %union.rec** %env, align 8, !tbaa !8
call void @AttachEnv(%union.rec* noundef %805, %union.rec* noundef %call5122) #5
%tobool5130.not = icmp eq i32 %obj_prev.1, 0
br i1 %tobool5130.not, label %if.end5312, label %if.then5131
if.then5131: ; preds = %for.end5129
%806 = getelementptr inbounds %union.rec, %union.rec* %call5122, i64 0, i32 0, i32 2
%os215136 = bitcast %union.SECOND_UNION* %806 to %struct.anon.0*
%ohspace5137 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os215136, i64 0, i32 1
%807 = load i8, i8* %ohspace5137, align 1, !tbaa !10
%conv5138 = zext i8 %807 to i32
%ovspace5142 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os215136, i64 0, i32 2
%808 = load i8, i8* %ovspace5142, align 2, !tbaa !10
%conv5143 = zext i8 %808 to i32
%add5144 = sub nsw i32 0, %conv5143
%cmp5145.not = icmp eq i32 %conv5138, %add5144
br i1 %cmp5145.not, label %if.else5148, label %land.rhs5165.preheader
if.else5148: ; preds = %if.then5131
%otype5152 = getelementptr inbounds %union.rec, %union.rec* %call5122, i64 0, i32 0, i32 1, i32 0, i32 0
%809 = load i8, i8* %otype5152, align 8, !tbaa !10
%cmp5154 = icmp eq i8 %809, 102
%cmp5157 = icmp eq i32 %obj_prev.1, 2
%or.cond9212 = select i1 %cmp5154, i1 true, i1 %cmp5157
%.10151 = select i1 %or.cond9212, i8 7, i8 103
br label %land.rhs5165.preheader
land.rhs5165.preheader: ; preds = %if.else5148, %if.then5131
%typ5132.0 = phi i32 [ 100, %if.then5131 ], [ 101, %if.else5148 ]
%prec5133.0 = phi i8 [ 7, %if.then5131 ], [ %.10151, %if.else5148 ]
br label %land.rhs5165
land.rhs5165: ; preds = %while.body5176, %land.rhs5165.preheader
%810 = load i32, i32* @ttop, align 4, !tbaa !4
%idxprom5166 = sext i32 %810 to i64
%arrayidx5167 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom5166
%811 = bitcast %union.rec** %arrayidx5167 to %struct.word_type**
%812 = load %struct.word_type*, %struct.word_type** %811, align 8, !tbaa !8
%ou25169 = getelementptr inbounds %struct.word_type, %struct.word_type* %812, i64 0, i32 2
%oprecedence5171 = bitcast %union.SECOND_UNION* %ou25169 to i8*
%813 = load i8, i8* %oprecedence5171, align 8, !tbaa !10
%cmp5173.not = icmp ugt i8 %prec5133.0, %813
br i1 %cmp5173.not, label %if.then5180, label %while.body5176
while.body5176: ; preds = %land.rhs5165
%call5177 = call fastcc i32 @Reduce()
%tobool5164.not = icmp eq i32 %call5177, 0
br i1 %tobool5164.not, label %if.end5312, label %land.rhs5165, !llvm.loop !25
if.then5180: ; preds = %land.rhs5165
%814 = zext i32 %typ5132.0 to i64
%arrayidx5182 = getelementptr inbounds [0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 %814
%815 = load i8, i8* %arrayidx5182, align 1, !tbaa !10
%conv5183 = zext i8 %815 to i32
store i32 %conv5183, i32* @zz_size, align 4, !tbaa !4
%816 = zext i8 %815 to i64
%arrayidx5191 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %816
%817 = load %union.rec*, %union.rec** %arrayidx5191, align 8, !tbaa !8
%cmp5192 = icmp eq %union.rec* %817, null
br i1 %cmp5192, label %if.then5194, label %if.else5196
if.then5194: ; preds = %if.then5180
%818 = load %struct.FILE_POS*, %struct.FILE_POS** @no_fpos, align 8, !tbaa !8
%call5195 = call %union.rec* @GetMemory(i32 noundef %conv5183, %struct.FILE_POS* noundef %818) #5
store %union.rec* %call5195, %union.rec** @zz_hold, align 8, !tbaa !8
%.pre10477 = load i32, i32* @ttop, align 4, !tbaa !4
br label %if.end5206
if.else5196: ; preds = %if.then5180
store %union.rec* %817, %union.rec** @zz_hold, align 8, !tbaa !8
%opred5202 = getelementptr inbounds %union.rec, %union.rec* %817, i64 0, i32 0, i32 0, i64 0, i32 0
%819 = load %union.rec*, %union.rec** %opred5202, align 8, !tbaa !10
store %union.rec* %819, %union.rec** %arrayidx5191, align 8, !tbaa !8
br label %if.end5206
if.end5206: ; preds = %if.else5196, %if.then5194
%820 = phi i32 [ %.pre10477, %if.then5194 ], [ %810, %if.else5196 ]
%.in10514 = phi %union.rec* [ %call5195, %if.then5194 ], [ %817, %if.else5196 ]
%conv5207 = trunc i32 %typ5132.0 to i8
%821 = getelementptr inbounds %union.rec, %union.rec* %.in10514, i64 0, i32 0, i32 1, i32 0, i32 0
store i8 %conv5207, i8* %821, align 8, !tbaa !10
%822 = getelementptr inbounds %union.rec, %union.rec* %.in10514, i64 0, i32 0, i32 0, i64 1, i32 1
store %union.rec* %.in10514, %union.rec** %822, align 8, !tbaa !10
%823 = getelementptr inbounds %union.rec, %union.rec* %.in10514, i64 0, i32 0, i32 0, i64 1, i32 0
store %union.rec* %.in10514, %union.rec** %823, align 8, !tbaa !10
%824 = getelementptr inbounds %union.rec, %union.rec* %.in10514, i64 0, i32 0, i32 0, i64 0, i32 1
store %union.rec* %.in10514, %union.rec** %824, align 8, !tbaa !10
%825 = getelementptr %union.rec, %union.rec* %.in10514, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %.in10514, %union.rec** %825, align 8, !tbaa !10
%826 = getelementptr inbounds %union.rec, %union.rec* %.in10514, i64 0, i32 0, i32 2
%os215231 = bitcast %union.SECOND_UNION* %826 to %struct.anon.0*
%oprecedence5232 = bitcast %union.SECOND_UNION* %826 to i8*
store i8 %prec5133.0, i8* %oprecedence5232, align 8, !tbaa !10
%827 = load i8, i8* %ovspace5142, align 2, !tbaa !10
%ovspace5240 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os215231, i64 0, i32 2
store i8 %827, i8* %ovspace5240, align 2, !tbaa !10
%828 = load i8, i8* %ohspace5137, align 1, !tbaa !10
%ohspace5248 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os215231, i64 0, i32 1
store i8 %828, i8* %ohspace5248, align 1, !tbaa !10
%os55249 = bitcast %union.rec* %.in10514 to %struct.gapobj_type*
%829 = getelementptr inbounds %struct.gapobj_type, %struct.gapobj_type* %os55249, i64 0, i32 3, i32 0
%bf.load5251 = load i16, i16* %829, align 4
%bf.clear5257 = and i16 %bf.load5251, -769
%bf.set5258 = or i16 %bf.clear5257, 512
store i16 %bf.set5258, i16* %829, align 4
%ofile_num5262 = getelementptr inbounds %union.rec, %union.rec* %call5122, i64 0, i32 0, i32 1, i32 0, i32 2
%830 = load i16, i16* %ofile_num5262, align 2, !tbaa !10
%831 = getelementptr inbounds %union.rec, %union.rec* %.in10514, i64 0, i32 0, i32 1, i32 0, i32 2
store i16 %830, i16* %831, align 2, !tbaa !10
%oline_num5270 = getelementptr inbounds %union.rec, %union.rec* %call5122, i64 0, i32 0, i32 1, i32 0, i32 3
%bf.load5271 = load i32, i32* %oline_num5270, align 4
%bf.clear5272 = and i32 %bf.load5271, 1048575
%832 = getelementptr inbounds %union.rec, %union.rec* %.in10514, i64 0, i32 0, i32 1, i32 0, i32 3
%bf.load5277 = load i32, i32* %832, align 4
%bf.clear5279 = and i32 %bf.load5277, -1048576
%bf.set5280 = or i32 %bf.clear5279, %bf.clear5272
store i32 %bf.set5280, i32* %832, align 4
%bf.load5285 = load i32, i32* %oline_num5270, align 4
%bf.lshr5286 = and i32 %bf.load5285, -1048576
%bf.set5295 = or i32 %bf.lshr5286, %bf.clear5272
store i32 %bf.set5295, i32* %832, align 4
%inc5296 = add nsw i32 %820, 1
store i32 %inc5296, i32* @ttop, align 4, !tbaa !4
%cmp5297 = icmp slt i32 %820, 99
br i1 %cmp5297, label %if.then5299, label %if.else5302
if.then5299: ; preds = %if.end5206
%idxprom5300 = sext i32 %inc5296 to i64
%arrayidx5301 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom5300
store %union.rec* %.in10514, %union.rec** %arrayidx5301, align 8, !tbaa !8
br label %if.end5312
if.else5302: ; preds = %if.end5206
%idxprom530410266 = zext i32 %820 to i64
%arrayidx5305 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom530410266
%833 = bitcast %union.rec** %arrayidx5305 to %struct.word_type**
%834 = load %struct.word_type*, %struct.word_type** %833, align 8, !tbaa !8
%ofpos5308 = getelementptr inbounds %struct.word_type, %struct.word_type* %834, i64 0, i32 1, i32 0
%call5309 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 2, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos5308) #5
br label %if.end5312
if.end5312: ; preds = %if.else5302, %if.then5299, %while.body5176, %for.end5129
store %union.rec* %call5122, %union.rec** @zz_hold, align 8, !tbaa !8
%835 = load i32, i32* @otop, align 4, !tbaa !4
%inc5313 = add nsw i32 %835, 1
store i32 %inc5313, i32* @otop, align 4, !tbaa !4
%cmp5314 = icmp slt i32 %835, 99
br i1 %cmp5314, label %if.then5316, label %if.else5319
if.then5316: ; preds = %if.end5312
%idxprom5317 = sext i32 %inc5313 to i64
%arrayidx5318 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom5317
store %union.rec* %call5122, %union.rec** %arrayidx5318, align 8, !tbaa !8
br label %if.end5327
if.else5319: ; preds = %if.end5312
%idxprom532110265 = zext i32 %835 to i64
%arrayidx5322 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom532110265
%836 = bitcast %union.rec** %arrayidx5322 to %struct.word_type**
%837 = load %struct.word_type*, %struct.word_type** %836, align 8, !tbaa !8
%ofpos5325 = getelementptr inbounds %struct.word_type, %struct.word_type* %837, i64 0, i32 1, i32 0
%call5326 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 1, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos5325) #5
br label %if.end5327
if.end5327: ; preds = %if.else5319, %if.then5316
%call5328 = call %union.rec* @LexGetToken() #5
store %union.rec* %call5328, %union.rec** %t, align 8, !tbaa !8
br label %for.cond581.backedge
sw.bb5329: ; preds = %for.cond581
store %union.rec* %84, %union.rec** @zz_hold, align 8, !tbaa !8
%cond5360.in = load i8, i8* getelementptr inbounds ([0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 90), align 1, !tbaa !10
%cond5360 = zext i8 %cond5360.in to i32
store i32 %cond5360, i32* @zz_size, align 4, !tbaa !4
%838 = zext i8 %cond5360.in to i64
%arrayidx5362 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %838
%839 = load %union.rec*, %union.rec** %arrayidx5362, align 8, !tbaa !8
%opred5366 = getelementptr %union.rec, %union.rec* %84, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %839, %union.rec** %opred5366, align 8, !tbaa !10
%840 = load %union.rec*, %union.rec** @zz_hold, align 8, !tbaa !8
%841 = load i32, i32* @zz_size, align 4, !tbaa !4
%idxprom5367 = sext i32 %841 to i64
%arrayidx5368 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %idxprom5367
store %union.rec* %840, %union.rec** %arrayidx5368, align 8, !tbaa !8
%call5369 = call %union.rec* @LexGetToken() #5
store %union.rec* %call5369, %union.rec** %t, align 8, !tbaa !8
%842 = getelementptr inbounds %union.rec, %union.rec* %call5369, i64 0, i32 0, i32 1
%otype5373 = getelementptr %union.FIRST_UNION, %union.FIRST_UNION* %842, i64 0, i32 0, i32 0
%843 = load i8, i8* %otype5373, align 8, !tbaa !10
%cmp5375.not = icmp eq i8 %843, 2
br i1 %cmp5375.not, label %if.end5382, label %if.then5377
if.then5377: ; preds = %sw.bb5329
%ofpos5380 = getelementptr %union.FIRST_UNION, %union.FIRST_UNION* %842, i64 0, i32 0
%call5381 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 27, i8* noundef getelementptr inbounds ([29 x i8], [29 x i8]* @.str.40, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos5380, i8* noundef getelementptr inbounds ([6 x i8], [6 x i8]* @.str.41, i64 0, i64 0)) #5
%.pre10473 = load %union.rec*, %union.rec** %t, align 8, !tbaa !8
br label %if.end5382
if.end5382: ; preds = %if.then5377, %sw.bb5329
%844 = phi %union.rec* [ %.pre10473, %if.then5377 ], [ %call5369, %sw.bb5329 ]
%845 = getelementptr inbounds %union.rec, %union.rec* %844, i64 0, i32 0, i32 5
%846 = bitcast %union.rec** %845 to %struct.symbol_type**
%847 = load %struct.symbol_type*, %struct.symbol_type** %846, align 8, !tbaa !10
%ouse_invocation5386 = getelementptr inbounds %struct.symbol_type, %struct.symbol_type* %847, i64 0, i32 11
%848 = load %union.rec*, %union.rec** %ouse_invocation5386, align 8, !tbaa !10
%cmp5387 = icmp eq %union.rec* %848, null
br i1 %cmp5387, label %if.then5389, label %if.end5394
if.then5389: ; preds = %if.end5382
%ofpos5392 = getelementptr inbounds %union.rec, %union.rec* %844, i64 0, i32 0, i32 1, i32 0
%call5393 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 28, i8* noundef getelementptr inbounds ([39 x i8], [39 x i8]* @.str.42, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos5392, i8* noundef getelementptr inbounds ([5 x i8], [5 x i8]* @.str.18, i64 0, i64 0)) #5
%.pre10474 = load %union.rec*, %union.rec** %ouse_invocation5386, align 8, !tbaa !10
br label %if.end5394
if.end5394: ; preds = %if.then5389, %if.end5382
%849 = phi %union.rec* [ %.pre10474, %if.then5389 ], [ %848, %if.end5382 ]
%850 = load %struct.FILE_POS*, %struct.FILE_POS** @no_fpos, align 8, !tbaa !8
%call5397 = call %union.rec* @CopyObject(%union.rec* noundef %849, %struct.FILE_POS* noundef %850) #5
%link.0.in10391 = getelementptr inbounds %union.rec, %union.rec* %call5397, i64 0, i32 0, i32 0, i64 0, i32 0
%link.010392 = load %union.rec*, %union.rec** %link.0.in10391, align 8, !tbaa !10
%cmp5403.not10393 = icmp eq %union.rec* %link.010392, %call5397
br i1 %cmp5403.not10393, label %for.end5554, label %for.body5405
for.cond5402.loopexit: ; preds = %for.cond5410
%link.0.in = getelementptr inbounds %union.rec, %union.rec* %link.010394, i64 0, i32 0, i32 0, i64 0, i32 0
%link.0 = load %union.rec*, %union.rec** %link.0.in, align 8, !tbaa !10
%cmp5403.not = icmp eq %union.rec* %link.0, %call5397
br i1 %cmp5403.not, label %for.end5554, label %for.body5405, !llvm.loop !26
for.body5405: ; preds = %for.cond5402.loopexit, %if.end5394
%link.010394 = phi %union.rec* [ %link.0, %for.cond5402.loopexit ], [ %link.010392, %if.end5394 ]
%opred5409 = getelementptr inbounds %union.rec, %union.rec* %link.010394, i64 0, i32 0, i32 0, i64 1, i32 0
br label %for.cond5410
for.cond5410: ; preds = %for.inc5419, %for.body5405
%y.2.in = phi %union.rec** [ %opred5409, %for.body5405 ], [ %opred5423, %for.inc5419 ]
%851 = bitcast %union.rec** %y.2.in to %struct.word_type**
%y.210116 = load %struct.word_type*, %struct.word_type** %851, align 8, !tbaa !10
%otype5414 = getelementptr inbounds %struct.word_type, %struct.word_type* %y.210116, i64 0, i32 1, i32 0, i32 0
%852 = load i8, i8* %otype5414, align 8, !tbaa !10
switch i8 %852, label %for.cond5402.loopexit [
i8 0, label %for.inc5419
i8 82, label %if.then5432
]
for.inc5419: ; preds = %for.cond5410
%opred5423 = getelementptr inbounds %struct.word_type, %struct.word_type* %y.210116, i64 0, i32 0, i64 1, i32 0
br label %for.cond5410, !llvm.loop !27
if.then5432: ; preds = %for.cond5410
store %union.rec* %link.010394, %union.rec** @xx_link, align 8, !tbaa !8
%osucc5436 = getelementptr inbounds %union.rec, %union.rec* %link.010394, i64 0, i32 0, i32 0, i64 1, i32 1
%853 = load %union.rec*, %union.rec** %osucc5436, align 8, !tbaa !10
%cmp5437 = icmp eq %union.rec* %853, %link.010394
br i1 %cmp5437, label %cond.end5469, label %cond.false5440
cond.false5440: ; preds = %if.then5432
store %union.rec* %853, %union.rec** @zz_res, align 8, !tbaa !8
%854 = getelementptr inbounds %union.rec, %union.rec* %link.010394, i64 0, i32 0, i32 0, i64 1, i32 0
%855 = load %union.rec*, %union.rec** %854, align 8, !tbaa !10
%opred5452 = getelementptr inbounds %union.rec, %union.rec* %853, i64 0, i32 0, i32 0, i64 1, i32 0
store %union.rec* %855, %union.rec** %opred5452, align 8, !tbaa !10
%856 = bitcast %union.rec** %854 to %struct.word_type**
%857 = load %struct.word_type*, %struct.word_type** %856, align 8, !tbaa !10
%osucc5460 = getelementptr inbounds %struct.word_type, %struct.word_type* %857, i64 0, i32 0, i64 1, i32 1
store %union.rec* %853, %union.rec** %osucc5460, align 8, !tbaa !10
store %union.rec* %link.010394, %union.rec** %osucc5436, align 8, !tbaa !10
store %union.rec* %link.010394, %union.rec** %opred5409, align 8, !tbaa !10
br label %cond.end5469
cond.end5469: ; preds = %cond.false5440, %if.then5432
store %union.rec* %link.010394, %union.rec** @zz_hold, align 8, !tbaa !8
%osucc5474 = getelementptr inbounds %union.rec, %union.rec* %link.010394, i64 0, i32 0, i32 0, i64 0, i32 1
%858 = load %union.rec*, %union.rec** %osucc5474, align 8, !tbaa !10
%cmp5475 = icmp eq %union.rec* %858, %link.010394
br i1 %cmp5475, label %cond.end5507, label %cond.false5478
cond.false5478: ; preds = %cond.end5469
store %union.rec* %858, %union.rec** @zz_res, align 8, !tbaa !8
%opred5486 = getelementptr %union.rec, %union.rec* %link.010394, i64 0, i32 0, i32 0, i64 0, i32 0
%859 = load %union.rec*, %union.rec** %opred5486, align 8, !tbaa !10
%opred5490 = getelementptr inbounds %union.rec, %union.rec* %858, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %859, %union.rec** %opred5490, align 8, !tbaa !10
%860 = load %union.rec*, %union.rec** @zz_res, align 8, !tbaa !8
%861 = load %struct.word_type**, %struct.word_type*** bitcast (%union.rec** @zz_hold to %struct.word_type***), align 8, !tbaa !8
%862 = load %struct.word_type*, %struct.word_type** %861, align 8, !tbaa !10
%osucc5498 = getelementptr inbounds %struct.word_type, %struct.word_type* %862, i64 0, i32 0, i64 0, i32 1
store %union.rec* %860, %union.rec** %osucc5498, align 8, !tbaa !10
%osucc5502 = getelementptr inbounds %struct.word_type*, %struct.word_type** %861, i64 1
%863 = bitcast %struct.word_type** %osucc5502 to %struct.word_type***
store %struct.word_type** %861, %struct.word_type*** %863, align 8, !tbaa !10
%864 = bitcast %struct.word_type** %861 to %struct.word_type***
store %struct.word_type** %861, %struct.word_type*** %864, align 8, !tbaa !10
%.pre10475 = load %union.rec*, %union.rec** @xx_link, align 8, !tbaa !8
br label %cond.end5507
cond.end5507: ; preds = %cond.false5478, %cond.end5469
%865 = phi %union.rec* [ %link.010394, %cond.end5469 ], [ %.pre10475, %cond.false5478 ]
store %union.rec* %865, %union.rec** @zz_hold, align 8, !tbaa !8
%otype5512 = getelementptr inbounds %union.rec, %union.rec* %865, i64 0, i32 0, i32 1, i32 0, i32 0
%866 = load i8, i8* %otype5512, align 8, !tbaa !10
%.off10188 = add i8 %866, -11
%switch10189 = icmp ult i8 %.off10188, 2
%867 = getelementptr inbounds %union.rec, %union.rec* %865, i64 0, i32 0, i32 1, i32 0, i32 1
%idxprom5535 = zext i8 %866 to i64
%arrayidx5536 = getelementptr inbounds [0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 %idxprom5535
%cond5539.in.in = select i1 %switch10189, i8* %867, i8* %arrayidx5536
%cond5539.in = load i8, i8* %cond5539.in.in, align 1, !tbaa !10
%cond5539 = zext i8 %cond5539.in to i32
store i32 %cond5539, i32* @zz_size, align 4, !tbaa !4
%868 = zext i8 %cond5539.in to i64
%arrayidx5541 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %868
%869 = load %union.rec*, %union.rec** %arrayidx5541, align 8, !tbaa !8
%opred5545 = getelementptr %union.rec, %union.rec* %865, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %869, %union.rec** %opred5545, align 8, !tbaa !10
%870 = load %union.rec*, %union.rec** @zz_hold, align 8, !tbaa !8
%871 = load i32, i32* @zz_size, align 4, !tbaa !4
%idxprom5546 = sext i32 %871 to i64
%arrayidx5547 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %idxprom5546
store %union.rec* %870, %union.rec** %arrayidx5547, align 8, !tbaa !8
br label %for.end5554
for.end5554: ; preds = %cond.end5507, %for.cond5402.loopexit, %if.end5394
%tobool5555.not = icmp eq i32 %obj_prev.1, 0
br i1 %tobool5555.not, label %if.end5737, label %if.then5556
if.then5556: ; preds = %for.end5554
%872 = getelementptr inbounds %union.rec, %union.rec* %call5397, i64 0, i32 0, i32 2
%os215561 = bitcast %union.SECOND_UNION* %872 to %struct.anon.0*
%ohspace5562 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os215561, i64 0, i32 1
%873 = load i8, i8* %ohspace5562, align 1, !tbaa !10
%conv5563 = zext i8 %873 to i32
%ovspace5567 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os215561, i64 0, i32 2
%874 = load i8, i8* %ovspace5567, align 2, !tbaa !10
%conv5568 = zext i8 %874 to i32
%add5569 = sub nsw i32 0, %conv5568
%cmp5570.not = icmp eq i32 %conv5563, %add5569
br i1 %cmp5570.not, label %if.else5573, label %land.rhs5590.preheader
if.else5573: ; preds = %if.then5556
%otype5577 = getelementptr inbounds %union.rec, %union.rec* %call5397, i64 0, i32 0, i32 1, i32 0, i32 0
%875 = load i8, i8* %otype5577, align 8, !tbaa !10
%cmp5579 = icmp eq i8 %875, 102
%cmp5582 = icmp eq i32 %obj_prev.1, 2
%or.cond9213 = select i1 %cmp5579, i1 true, i1 %cmp5582
%.10152 = select i1 %or.cond9213, i8 7, i8 103
br label %land.rhs5590.preheader
land.rhs5590.preheader: ; preds = %if.else5573, %if.then5556
%typ5557.0 = phi i32 [ 100, %if.then5556 ], [ 101, %if.else5573 ]
%prec5558.0 = phi i8 [ 7, %if.then5556 ], [ %.10152, %if.else5573 ]
br label %land.rhs5590
land.rhs5590: ; preds = %while.body5601, %land.rhs5590.preheader
%876 = load i32, i32* @ttop, align 4, !tbaa !4
%idxprom5591 = sext i32 %876 to i64
%arrayidx5592 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom5591
%877 = bitcast %union.rec** %arrayidx5592 to %struct.word_type**
%878 = load %struct.word_type*, %struct.word_type** %877, align 8, !tbaa !8
%ou25594 = getelementptr inbounds %struct.word_type, %struct.word_type* %878, i64 0, i32 2
%oprecedence5596 = bitcast %union.SECOND_UNION* %ou25594 to i8*
%879 = load i8, i8* %oprecedence5596, align 8, !tbaa !10
%cmp5598.not = icmp ugt i8 %prec5558.0, %879
br i1 %cmp5598.not, label %if.then5605, label %while.body5601
while.body5601: ; preds = %land.rhs5590
%call5602 = call fastcc i32 @Reduce()
%tobool5589.not = icmp eq i32 %call5602, 0
br i1 %tobool5589.not, label %if.end5737, label %land.rhs5590, !llvm.loop !28
if.then5605: ; preds = %land.rhs5590
%880 = zext i32 %typ5557.0 to i64
%arrayidx5607 = getelementptr inbounds [0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 %880
%881 = load i8, i8* %arrayidx5607, align 1, !tbaa !10
%conv5608 = zext i8 %881 to i32
store i32 %conv5608, i32* @zz_size, align 4, !tbaa !4
%882 = zext i8 %881 to i64
%arrayidx5616 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %882
%883 = load %union.rec*, %union.rec** %arrayidx5616, align 8, !tbaa !8
%cmp5617 = icmp eq %union.rec* %883, null
br i1 %cmp5617, label %if.then5619, label %if.else5621
if.then5619: ; preds = %if.then5605
%884 = load %struct.FILE_POS*, %struct.FILE_POS** @no_fpos, align 8, !tbaa !8
%call5620 = call %union.rec* @GetMemory(i32 noundef %conv5608, %struct.FILE_POS* noundef %884) #5
store %union.rec* %call5620, %union.rec** @zz_hold, align 8, !tbaa !8
%.pre10476 = load i32, i32* @ttop, align 4, !tbaa !4
br label %if.end5631
if.else5621: ; preds = %if.then5605
store %union.rec* %883, %union.rec** @zz_hold, align 8, !tbaa !8
%opred5627 = getelementptr inbounds %union.rec, %union.rec* %883, i64 0, i32 0, i32 0, i64 0, i32 0
%885 = load %union.rec*, %union.rec** %opred5627, align 8, !tbaa !10
store %union.rec* %885, %union.rec** %arrayidx5616, align 8, !tbaa !8
br label %if.end5631
if.end5631: ; preds = %if.else5621, %if.then5619
%886 = phi i32 [ %.pre10476, %if.then5619 ], [ %876, %if.else5621 ]
%.in10512 = phi %union.rec* [ %call5620, %if.then5619 ], [ %883, %if.else5621 ]
%conv5632 = trunc i32 %typ5557.0 to i8
%887 = getelementptr inbounds %union.rec, %union.rec* %.in10512, i64 0, i32 0, i32 1, i32 0, i32 0
store i8 %conv5632, i8* %887, align 8, !tbaa !10
%888 = getelementptr inbounds %union.rec, %union.rec* %.in10512, i64 0, i32 0, i32 0, i64 1, i32 1
store %union.rec* %.in10512, %union.rec** %888, align 8, !tbaa !10
%889 = getelementptr inbounds %union.rec, %union.rec* %.in10512, i64 0, i32 0, i32 0, i64 1, i32 0
store %union.rec* %.in10512, %union.rec** %889, align 8, !tbaa !10
%890 = getelementptr inbounds %union.rec, %union.rec* %.in10512, i64 0, i32 0, i32 0, i64 0, i32 1
store %union.rec* %.in10512, %union.rec** %890, align 8, !tbaa !10
%891 = getelementptr %union.rec, %union.rec* %.in10512, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %.in10512, %union.rec** %891, align 8, !tbaa !10
%892 = getelementptr inbounds %union.rec, %union.rec* %.in10512, i64 0, i32 0, i32 2
%os215656 = bitcast %union.SECOND_UNION* %892 to %struct.anon.0*
%oprecedence5657 = bitcast %union.SECOND_UNION* %892 to i8*
store i8 %prec5558.0, i8* %oprecedence5657, align 8, !tbaa !10
%893 = load i8, i8* %ovspace5567, align 2, !tbaa !10
%ovspace5665 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os215656, i64 0, i32 2
store i8 %893, i8* %ovspace5665, align 2, !tbaa !10
%894 = load i8, i8* %ohspace5562, align 1, !tbaa !10
%ohspace5673 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os215656, i64 0, i32 1
store i8 %894, i8* %ohspace5673, align 1, !tbaa !10
%os55674 = bitcast %union.rec* %.in10512 to %struct.gapobj_type*
%895 = getelementptr inbounds %struct.gapobj_type, %struct.gapobj_type* %os55674, i64 0, i32 3, i32 0
%bf.load5676 = load i16, i16* %895, align 4
%bf.clear5682 = and i16 %bf.load5676, -769
%bf.set5683 = or i16 %bf.clear5682, 512
store i16 %bf.set5683, i16* %895, align 4
%ofile_num5687 = getelementptr inbounds %union.rec, %union.rec* %call5397, i64 0, i32 0, i32 1, i32 0, i32 2
%896 = load i16, i16* %ofile_num5687, align 2, !tbaa !10
%897 = getelementptr inbounds %union.rec, %union.rec* %.in10512, i64 0, i32 0, i32 1, i32 0, i32 2
store i16 %896, i16* %897, align 2, !tbaa !10
%oline_num5695 = getelementptr inbounds %union.rec, %union.rec* %call5397, i64 0, i32 0, i32 1, i32 0, i32 3
%bf.load5696 = load i32, i32* %oline_num5695, align 4
%bf.clear5697 = and i32 %bf.load5696, 1048575
%898 = getelementptr inbounds %union.rec, %union.rec* %.in10512, i64 0, i32 0, i32 1, i32 0, i32 3
%bf.load5702 = load i32, i32* %898, align 4
%bf.clear5704 = and i32 %bf.load5702, -1048576
%bf.set5705 = or i32 %bf.clear5704, %bf.clear5697
store i32 %bf.set5705, i32* %898, align 4
%bf.load5710 = load i32, i32* %oline_num5695, align 4
%bf.lshr5711 = and i32 %bf.load5710, -1048576
%bf.set5720 = or i32 %bf.lshr5711, %bf.clear5697
store i32 %bf.set5720, i32* %898, align 4
%inc5721 = add nsw i32 %886, 1
store i32 %inc5721, i32* @ttop, align 4, !tbaa !4
%cmp5722 = icmp slt i32 %886, 99
br i1 %cmp5722, label %if.then5724, label %if.else5727
if.then5724: ; preds = %if.end5631
%idxprom5725 = sext i32 %inc5721 to i64
%arrayidx5726 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom5725
store %union.rec* %.in10512, %union.rec** %arrayidx5726, align 8, !tbaa !8
br label %if.end5737
if.else5727: ; preds = %if.end5631
%idxprom572910269 = zext i32 %886 to i64
%arrayidx5730 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom572910269
%899 = bitcast %union.rec** %arrayidx5730 to %struct.word_type**
%900 = load %struct.word_type*, %struct.word_type** %899, align 8, !tbaa !8
%ofpos5733 = getelementptr inbounds %struct.word_type, %struct.word_type* %900, i64 0, i32 1, i32 0
%call5734 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 2, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos5733) #5
br label %if.end5737
if.end5737: ; preds = %if.else5727, %if.then5724, %while.body5601, %for.end5554
store %union.rec* %call5397, %union.rec** @zz_hold, align 8, !tbaa !8
%901 = load i32, i32* @otop, align 4, !tbaa !4
%inc5738 = add nsw i32 %901, 1
store i32 %inc5738, i32* @otop, align 4, !tbaa !4
%cmp5739 = icmp slt i32 %901, 99
br i1 %cmp5739, label %if.then5741, label %if.else5744
if.then5741: ; preds = %if.end5737
%idxprom5742 = sext i32 %inc5738 to i64
%arrayidx5743 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom5742
store %union.rec* %call5397, %union.rec** %arrayidx5743, align 8, !tbaa !8
br label %if.end5752
if.else5744: ; preds = %if.end5737
%idxprom574610268 = zext i32 %901 to i64
%arrayidx5747 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom574610268
%902 = bitcast %union.rec** %arrayidx5747 to %struct.word_type**
%903 = load %struct.word_type*, %struct.word_type** %902, align 8, !tbaa !8
%ofpos5750 = getelementptr inbounds %struct.word_type, %struct.word_type* %903, i64 0, i32 1, i32 0
%call5751 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 1, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos5750) #5
br label %if.end5752
if.end5752: ; preds = %if.else5744, %if.then5741
%call5753 = call %union.rec* @LexGetToken() #5
store %union.rec* %call5753, %union.rec** %t, align 8, !tbaa !8
br label %for.cond581.backedge
sw.bb5754: ; preds = %for.cond581
call void @SuppressVisible() #5
%904 = load %union.rec*, %union.rec** %t, align 8, !tbaa !8
store %union.rec* %904, %union.rec** @zz_hold, align 8, !tbaa !8
%otype5758 = getelementptr inbounds %union.rec, %union.rec* %904, i64 0, i32 0, i32 1, i32 0, i32 0
%905 = load i8, i8* %otype5758, align 8, !tbaa !10
%.off10190 = add i8 %905, -11
%switch10191 = icmp ult i8 %.off10190, 2
%906 = getelementptr inbounds %union.rec, %union.rec* %904, i64 0, i32 0, i32 1, i32 0, i32 1
%idxprom5781 = zext i8 %905 to i64
%arrayidx5782 = getelementptr inbounds [0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 %idxprom5781
%cond5785.in.in = select i1 %switch10191, i8* %906, i8* %arrayidx5782
%cond5785.in = load i8, i8* %cond5785.in.in, align 1, !tbaa !10
%cond5785 = zext i8 %cond5785.in to i32
store i32 %cond5785, i32* @zz_size, align 4, !tbaa !4
%907 = zext i8 %cond5785.in to i64
%arrayidx5787 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %907
%908 = load %union.rec*, %union.rec** %arrayidx5787, align 8, !tbaa !8
%opred5791 = getelementptr %union.rec, %union.rec* %904, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %908, %union.rec** %opred5791, align 8, !tbaa !10
%909 = load %union.rec*, %union.rec** @zz_hold, align 8, !tbaa !8
%910 = load i32, i32* @zz_size, align 4, !tbaa !4
%idxprom5792 = sext i32 %910 to i64
%arrayidx5793 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %idxprom5792
store %union.rec* %909, %union.rec** %arrayidx5793, align 8, !tbaa !8
%call5794 = call %union.rec* @LexGetToken() #5
store %union.rec* %call5794, %union.rec** %t, align 8, !tbaa !8
call void @UnSuppressVisible() #5
%911 = load %struct.word_type*, %struct.word_type** %79, align 8, !tbaa !8
%ou15796 = getelementptr inbounds %struct.word_type, %struct.word_type* %911, i64 0, i32 1
%otype5798 = getelementptr %union.FIRST_UNION, %union.FIRST_UNION* %ou15796, i64 0, i32 0, i32 0
%912 = load i8, i8* %otype5798, align 8, !tbaa !10
%cmp5800.not = icmp eq i8 %912, 2
%913 = bitcast %struct.word_type* %911 to %union.rec*
br i1 %cmp5800.not, label %sw.bb5808, label %if.then5802
if.then5802: ; preds = %sw.bb5754
%ofpos5805 = getelementptr %union.FIRST_UNION, %union.FIRST_UNION* %ou15796, i64 0, i32 0
%call5806 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 29, i8* noundef getelementptr inbounds ([29 x i8], [29 x i8]* @.str.40, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos5805, i8* noundef getelementptr inbounds ([4 x i8], [4 x i8]* @.str.43, i64 0, i64 0)) #5
%.pre10457 = load %union.rec*, %union.rec** %t, align 8, !tbaa !8
br label %sw.bb5808
sw.bb5808: ; preds = %if.then5802, %sw.bb5754, %for.cond581
%914 = phi %union.rec* [ %913, %sw.bb5754 ], [ %.pre10457, %if.then5802 ], [ %84, %for.cond581 ]
%915 = getelementptr inbounds %union.rec, %union.rec* %914, i64 0, i32 0, i32 5
%916 = load %union.rec*, %union.rec** %915, align 8, !tbaa !10
call void @PushScope(%union.rec* noundef %916, i32 noundef 1, i32 noundef 0) #5
%call5811 = call %union.rec* @LexGetToken() #5
store %union.rec* %call5811, %union.rec** %t, align 8, !tbaa !8
%otype5815 = getelementptr inbounds %union.rec, %union.rec* %call5811, i64 0, i32 0, i32 1, i32 0, i32 0
%917 = load i8, i8* %otype5815, align 8, !tbaa !10
%cmp5817 = icmp eq i8 %917, 107
br i1 %cmp5817, label %if.then5819, label %if.end5861
if.then5819: ; preds = %sw.bb5808
store %union.rec* %call5811, %union.rec** @zz_hold, align 8, !tbaa !8
%cond5850.in = load i8, i8* getelementptr inbounds ([0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 107), align 1, !tbaa !10
%cond5850 = zext i8 %cond5850.in to i32
store i32 %cond5850, i32* @zz_size, align 4, !tbaa !4
%918 = zext i8 %cond5850.in to i64
%arrayidx5852 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %918
%919 = load %union.rec*, %union.rec** %arrayidx5852, align 8, !tbaa !8
%opred5856 = getelementptr %union.rec, %union.rec* %call5811, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %919, %union.rec** %opred5856, align 8, !tbaa !10
%920 = load %union.rec*, %union.rec** @zz_hold, align 8, !tbaa !8
%921 = load i32, i32* @zz_size, align 4, !tbaa !4
%idxprom5857 = sext i32 %921 to i64
%arrayidx5858 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %idxprom5857
store %union.rec* %920, %union.rec** %arrayidx5858, align 8, !tbaa !8
%call5859 = call %union.rec* @LexGetToken() #5
store %union.rec* %call5859, %union.rec** %t, align 8, !tbaa !8
br label %if.end5861
if.end5861: ; preds = %if.then5819, %sw.bb5808
call void @PopScope() #5
%922 = load %struct.word_type*, %struct.word_type** %79, align 8, !tbaa !8
%otype5865 = getelementptr inbounds %struct.word_type, %struct.word_type* %922, i64 0, i32 1, i32 0, i32 0
%923 = load i8, i8* %otype5865, align 8, !tbaa !10
%924 = and i8 %923, -2
%switch10195 = icmp eq i8 %924, 6
br i1 %switch10195, label %if.then5877, label %if.end6076
if.then5877: ; preds = %if.end5861
%tobool5878.not = icmp eq i32 %obj_prev.1, 0
br i1 %tobool5878.not, label %if.end6060, label %if.then5879
if.then5879: ; preds = %if.then5877
%925 = getelementptr inbounds %union.rec, %union.rec* %914, i64 0, i32 0, i32 2
%os215884 = bitcast %union.SECOND_UNION* %925 to %struct.anon.0*
%ohspace5885 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os215884, i64 0, i32 1
%926 = load i8, i8* %ohspace5885, align 1, !tbaa !10
%conv5886 = zext i8 %926 to i32
%ovspace5890 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os215884, i64 0, i32 2
%927 = load i8, i8* %ovspace5890, align 2, !tbaa !10
%conv5891 = zext i8 %927 to i32
%add5892 = sub nsw i32 0, %conv5891
%cmp5893.not = icmp eq i32 %conv5886, %add5892
br i1 %cmp5893.not, label %if.else5896, label %land.rhs5913.preheader
if.else5896: ; preds = %if.then5879
%otype5900 = getelementptr inbounds %union.rec, %union.rec* %914, i64 0, i32 0, i32 1, i32 0, i32 0
%928 = load i8, i8* %otype5900, align 8, !tbaa !10
%cmp5902 = icmp eq i8 %928, 102
%cmp5905 = icmp eq i32 %obj_prev.1, 2
%or.cond9214 = select i1 %cmp5902, i1 true, i1 %cmp5905
%.10153 = select i1 %or.cond9214, i8 7, i8 103
br label %land.rhs5913.preheader
land.rhs5913.preheader: ; preds = %if.else5896, %if.then5879
%typ5880.0 = phi i32 [ 100, %if.then5879 ], [ 101, %if.else5896 ]
%prec5881.0 = phi i8 [ 7, %if.then5879 ], [ %.10153, %if.else5896 ]
br label %land.rhs5913
land.rhs5913: ; preds = %while.body5924, %land.rhs5913.preheader
%929 = load i32, i32* @ttop, align 4, !tbaa !4
%idxprom5914 = sext i32 %929 to i64
%arrayidx5915 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom5914
%930 = bitcast %union.rec** %arrayidx5915 to %struct.word_type**
%931 = load %struct.word_type*, %struct.word_type** %930, align 8, !tbaa !8
%ou25917 = getelementptr inbounds %struct.word_type, %struct.word_type* %931, i64 0, i32 2
%oprecedence5919 = bitcast %union.SECOND_UNION* %ou25917 to i8*
%932 = load i8, i8* %oprecedence5919, align 8, !tbaa !10
%cmp5921.not = icmp ugt i8 %prec5881.0, %932
br i1 %cmp5921.not, label %if.then5928, label %while.body5924
while.body5924: ; preds = %land.rhs5913
%call5925 = call fastcc i32 @Reduce()
%tobool5912.not = icmp eq i32 %call5925, 0
br i1 %tobool5912.not, label %if.end6060, label %land.rhs5913, !llvm.loop !29
if.then5928: ; preds = %land.rhs5913
%933 = zext i32 %typ5880.0 to i64
%arrayidx5930 = getelementptr inbounds [0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 %933
%934 = load i8, i8* %arrayidx5930, align 1, !tbaa !10
%conv5931 = zext i8 %934 to i32
store i32 %conv5931, i32* @zz_size, align 4, !tbaa !4
%935 = zext i8 %934 to i64
%arrayidx5939 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %935
%936 = load %union.rec*, %union.rec** %arrayidx5939, align 8, !tbaa !8
%cmp5940 = icmp eq %union.rec* %936, null
br i1 %cmp5940, label %if.then5942, label %if.else5944
if.then5942: ; preds = %if.then5928
%937 = load %struct.FILE_POS*, %struct.FILE_POS** @no_fpos, align 8, !tbaa !8
%call5943 = call %union.rec* @GetMemory(i32 noundef %conv5931, %struct.FILE_POS* noundef %937) #5
store %union.rec* %call5943, %union.rec** @zz_hold, align 8, !tbaa !8
%.pre10472 = load i32, i32* @ttop, align 4, !tbaa !4
br label %if.end5954
if.else5944: ; preds = %if.then5928
store %union.rec* %936, %union.rec** @zz_hold, align 8, !tbaa !8
%opred5950 = getelementptr inbounds %union.rec, %union.rec* %936, i64 0, i32 0, i32 0, i64 0, i32 0
%938 = load %union.rec*, %union.rec** %opred5950, align 8, !tbaa !10
store %union.rec* %938, %union.rec** %arrayidx5939, align 8, !tbaa !8
br label %if.end5954
if.end5954: ; preds = %if.else5944, %if.then5942
%939 = phi i32 [ %.pre10472, %if.then5942 ], [ %929, %if.else5944 ]
%.in10510 = phi %union.rec* [ %call5943, %if.then5942 ], [ %936, %if.else5944 ]
%conv5955 = trunc i32 %typ5880.0 to i8
%940 = getelementptr inbounds %union.rec, %union.rec* %.in10510, i64 0, i32 0, i32 1, i32 0, i32 0
store i8 %conv5955, i8* %940, align 8, !tbaa !10
%941 = getelementptr inbounds %union.rec, %union.rec* %.in10510, i64 0, i32 0, i32 0, i64 1, i32 1
store %union.rec* %.in10510, %union.rec** %941, align 8, !tbaa !10
%942 = getelementptr inbounds %union.rec, %union.rec* %.in10510, i64 0, i32 0, i32 0, i64 1, i32 0
store %union.rec* %.in10510, %union.rec** %942, align 8, !tbaa !10
%943 = getelementptr inbounds %union.rec, %union.rec* %.in10510, i64 0, i32 0, i32 0, i64 0, i32 1
store %union.rec* %.in10510, %union.rec** %943, align 8, !tbaa !10
%944 = getelementptr %union.rec, %union.rec* %.in10510, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %.in10510, %union.rec** %944, align 8, !tbaa !10
%945 = getelementptr inbounds %union.rec, %union.rec* %.in10510, i64 0, i32 0, i32 2
%os215979 = bitcast %union.SECOND_UNION* %945 to %struct.anon.0*
%oprecedence5980 = bitcast %union.SECOND_UNION* %945 to i8*
store i8 %prec5881.0, i8* %oprecedence5980, align 8, !tbaa !10
%946 = load i8, i8* %ovspace5890, align 2, !tbaa !10
%ovspace5988 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os215979, i64 0, i32 2
store i8 %946, i8* %ovspace5988, align 2, !tbaa !10
%947 = load i8, i8* %ohspace5885, align 1, !tbaa !10
%ohspace5996 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os215979, i64 0, i32 1
store i8 %947, i8* %ohspace5996, align 1, !tbaa !10
%os55997 = bitcast %union.rec* %.in10510 to %struct.gapobj_type*
%948 = getelementptr inbounds %struct.gapobj_type, %struct.gapobj_type* %os55997, i64 0, i32 3, i32 0
%bf.load5999 = load i16, i16* %948, align 4
%bf.clear6005 = and i16 %bf.load5999, -769
%bf.set6006 = or i16 %bf.clear6005, 512
store i16 %bf.set6006, i16* %948, align 4
%ofile_num6010 = getelementptr inbounds %union.rec, %union.rec* %914, i64 0, i32 0, i32 1, i32 0, i32 2
%949 = load i16, i16* %ofile_num6010, align 2, !tbaa !10
%950 = getelementptr inbounds %union.rec, %union.rec* %.in10510, i64 0, i32 0, i32 1, i32 0, i32 2
store i16 %949, i16* %950, align 2, !tbaa !10
%oline_num6018 = getelementptr inbounds %union.rec, %union.rec* %914, i64 0, i32 0, i32 1, i32 0, i32 3
%bf.load6019 = load i32, i32* %oline_num6018, align 4
%bf.clear6020 = and i32 %bf.load6019, 1048575
%951 = getelementptr inbounds %union.rec, %union.rec* %.in10510, i64 0, i32 0, i32 1, i32 0, i32 3
%bf.load6025 = load i32, i32* %951, align 4
%bf.clear6027 = and i32 %bf.load6025, -1048576
%bf.set6028 = or i32 %bf.clear6027, %bf.clear6020
store i32 %bf.set6028, i32* %951, align 4
%bf.load6033 = load i32, i32* %oline_num6018, align 4
%bf.lshr6034 = and i32 %bf.load6033, -1048576
%bf.set6043 = or i32 %bf.lshr6034, %bf.clear6020
store i32 %bf.set6043, i32* %951, align 4
%inc6044 = add nsw i32 %939, 1
store i32 %inc6044, i32* @ttop, align 4, !tbaa !4
%cmp6045 = icmp slt i32 %939, 99
br i1 %cmp6045, label %if.then6047, label %if.else6050
if.then6047: ; preds = %if.end5954
%idxprom6048 = sext i32 %inc6044 to i64
%arrayidx6049 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom6048
store %union.rec* %.in10510, %union.rec** %arrayidx6049, align 8, !tbaa !8
br label %if.end6060
if.else6050: ; preds = %if.end5954
%idxprom605210272 = zext i32 %939 to i64
%arrayidx6053 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom605210272
%952 = bitcast %union.rec** %arrayidx6053 to %struct.word_type**
%953 = load %struct.word_type*, %struct.word_type** %952, align 8, !tbaa !8
%ofpos6056 = getelementptr inbounds %struct.word_type, %struct.word_type* %953, i64 0, i32 1, i32 0
%call6057 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 2, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos6056) #5
br label %if.end6060
if.end6060: ; preds = %if.else6050, %if.then6047, %while.body5924, %if.then5877
store %union.rec* %914, %union.rec** @zz_hold, align 8, !tbaa !8
%954 = load i32, i32* @otop, align 4, !tbaa !4
%inc6061 = add nsw i32 %954, 1
store i32 %inc6061, i32* @otop, align 4, !tbaa !4
%cmp6062 = icmp slt i32 %954, 99
br i1 %cmp6062, label %if.then6064, label %if.else6067
if.then6064: ; preds = %if.end6060
%idxprom6065 = sext i32 %inc6061 to i64
%arrayidx6066 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom6065
store %union.rec* %914, %union.rec** %arrayidx6066, align 8, !tbaa !8
br label %for.cond581.backedge
for.cond581.backedge: ; preds = %sw.default, %if.end9168, %if.then8959, %if.then8938, %if.else8775, %if.then8772, %if.end8768, %if.else8726, %if.else8719, %if.end8717, %if.else6067, %if.then6064, %if.end5752, %if.end5327, %if.end5077, %if.else4717, %if.then4714, %if.end4437, %if.end4184, %if.end3937, %sw.bb3730, %if.end3728, %cond.end3652, %if.end3336, %sw.bb3118, %if.end3116, %if.end2829, %if.end2093, %if.else1800, %if.then1797, %if.end1559, %if.end1025, %if.end825
%scope_count.promoted10377.be = phi i32 [ %scope_count.promoted10377, %sw.default ], [ %scope_count.promoted10377, %if.then8938 ], [ %scope_count.promoted10377, %if.then8959 ], [ %scope_count.promoted10377, %if.end9168 ], [ %inc658510368.lcssa10379, %if.end8717 ], [ %inc658510368.lcssa10379, %if.else8719 ], [ %inc658510368.lcssa10379, %if.then8772 ], [ %inc658510368.lcssa10379, %if.end8768 ], [ %inc658510368.lcssa10379, %if.else8775 ], [ %inc658510368.lcssa10379, %if.else8726 ], [ %scope_count.promoted10377, %if.end5752 ], [ %804, %if.end5327 ], [ %scope_count.promoted10377, %if.end5077 ], [ %scope_count.promoted10377, %if.end4437 ], [ %scope_count.promoted10377, %if.end4184 ], [ %scope_count.promoted10377, %if.end3937 ], [ %scope_count.promoted10377, %sw.bb3730 ], [ %scope_count.promoted10377, %if.end3728 ], [ %scope_count.promoted10377, %cond.end3652 ], [ %scope_count.promoted10377, %if.end3336 ], [ %scope_count.promoted10377, %sw.bb3118 ], [ %scope_count.promoted10377, %if.end3116 ], [ %scope_count.promoted10377, %if.end2829 ], [ %scope_count.promoted10377, %if.end2093 ], [ %scope_count.promoted10377, %if.end1559 ], [ %scope_count.promoted10377, %if.end1025 ], [ %scope_count.promoted10377, %if.end825 ], [ %scope_count.promoted10377, %if.else1800 ], [ %scope_count.promoted10377, %if.then1797 ], [ %scope_count.promoted10377, %if.else4717 ], [ %scope_count.promoted10377, %if.then4714 ], [ %scope_count.promoted10377, %if.else6067 ], [ %scope_count.promoted10377, %if.then6064 ]
%obj_prev.1.be = phi i32 [ %obj_prev.1, %sw.default ], [ 0, %if.then8938 ], [ 0, %if.then8959 ], [ %call9169, %if.end9168 ], [ 1, %if.end8717 ], [ %obj_prev.41, %if.else8719 ], [ %call8769, %if.then8772 ], [ %call8769, %if.end8768 ], [ %obj_prev.41, %if.else8775 ], [ %obj_prev.41, %if.else8726 ], [ 1, %if.end5752 ], [ 1, %if.end5327 ], [ 1, %if.end5077 ], [ 1, %if.end4437 ], [ 1, %if.end4184 ], [ 1, %if.end3937 ], [ %obj_prev.1, %sw.bb3730 ], [ %call3721, %if.end3728 ], [ %call3639, %cond.end3652 ], [ 0, %if.end3336 ], [ %obj_prev.1, %sw.bb3118 ], [ %obj_prev.21, %if.end3116 ], [ 1, %if.end2829 ], [ %obj_prev.11, %if.end2093 ], [ 0, %if.end1559 ], [ 1, %if.end1025 ], [ 1, %if.end825 ], [ 1, %if.else1800 ], [ 1, %if.then1797 ], [ 1, %if.else4717 ], [ 1, %if.then4714 ], [ 1, %if.else6067 ], [ 1, %if.then6064 ]
br label %for.cond581
if.else6067: ; preds = %if.end6060
%idxprom606910271 = zext i32 %954 to i64
%arrayidx6070 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom606910271
%955 = bitcast %union.rec** %arrayidx6070 to %struct.word_type**
%956 = load %struct.word_type*, %struct.word_type** %955, align 8, !tbaa !8
%ofpos6073 = getelementptr inbounds %struct.word_type, %struct.word_type* %956, i64 0, i32 1, i32 0
%call6074 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 1, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos6073) #5
br label %for.cond581.backedge
if.end6076: ; preds = %if.end5861
%957 = getelementptr inbounds %union.rec, %union.rec* %916, i64 0, i32 0, i32 2
%os266079 = bitcast %union.SECOND_UNION* %957 to %struct.anon.5*
%ohas_lpar6080 = getelementptr inbounds %struct.anon.5, %struct.anon.5* %os266079, i64 0, i32 1
%958 = bitcast [3 x i8]* %ohas_lpar6080 to i24*
%bf.load6081 = load i24, i24* %958, align 1
%959 = and i24 %bf.load6081, 4
%tobool6085.not = icmp eq i24 %959, 0
br i1 %tobool6085.not, label %if.else6145, label %for.cond6087.preheader
for.cond6087.preheader: ; preds = %if.end6076
%960 = getelementptr inbounds %union.rec, %union.rec* %914, i64 0, i32 0, i32 2
%oprecedence6120 = bitcast %union.SECOND_UNION* %960 to i8*
%ofpos6092 = getelementptr inbounds %union.rec, %union.rec* %914, i64 0, i32 0, i32 1, i32 0
br label %for.cond6087
for.cond6087: ; preds = %for.cond6087.backedge, %for.cond6087.preheader
%obj_prev.35 = phi i32 [ %obj_prev.1, %for.cond6087.preheader ], [ %obj_prev.35.be, %for.cond6087.backedge ]
%tobool6088.not = icmp eq i32 %obj_prev.35, 0
br i1 %tobool6088.not, label %if.then6089, label %if.else6109
if.then6089: ; preds = %for.cond6087
%call6093 = call %union.rec* @MakeWord(i32 noundef 11, i8* noundef getelementptr inbounds ([1 x i8], [1 x i8]* @.str.27, i64 0, i64 0), %struct.FILE_POS* noundef nonnull %ofpos6092) #5
store %union.rec* %call6093, %union.rec** @zz_hold, align 8, !tbaa !8
%961 = load i32, i32* @otop, align 4, !tbaa !4
%inc6094 = add nsw i32 %961, 1
store i32 %inc6094, i32* @otop, align 4, !tbaa !4
%cmp6095 = icmp slt i32 %961, 99
br i1 %cmp6095, label %if.then6097, label %if.else6100
if.then6097: ; preds = %if.then6089
%idxprom6098 = sext i32 %inc6094 to i64
%arrayidx6099 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom6098
store %union.rec* %call6093, %union.rec** %arrayidx6099, align 8, !tbaa !8
br label %for.cond6087.backedge
for.cond6087.backedge: ; preds = %if.then6132, %if.else6100, %if.then6097
%obj_prev.35.be = phi i32 [ %call6133, %if.then6132 ], [ 1, %if.else6100 ], [ 1, %if.then6097 ]
br label %for.cond6087
if.else6100: ; preds = %if.then6089
%idxprom610210292 = zext i32 %961 to i64
%arrayidx6103 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom610210292
%962 = bitcast %union.rec** %arrayidx6103 to %struct.word_type**
%963 = load %struct.word_type*, %struct.word_type** %962, align 8, !tbaa !8
%ofpos6106 = getelementptr inbounds %struct.word_type, %struct.word_type* %963, i64 0, i32 1, i32 0
%call6107 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 1, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos6106) #5
br label %for.cond6087.backedge
if.else6109: ; preds = %for.cond6087
%964 = load i32, i32* @ttop, align 4, !tbaa !4
%idxprom6110 = sext i32 %964 to i64
%arrayidx6111 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom6110
%965 = bitcast %union.rec** %arrayidx6111 to %struct.word_type**
%966 = load %struct.word_type*, %struct.word_type** %965, align 8, !tbaa !8
%ou26113 = getelementptr inbounds %struct.word_type, %struct.word_type* %966, i64 0, i32 2
%oprecedence6115 = bitcast %union.SECOND_UNION* %ou26113 to i8*
%967 = load i8, i8* %oprecedence6115, align 8, !tbaa !10
%conv6116 = zext i8 %967 to i32
%968 = load i8, i8* %oprecedence6120, align 8, !tbaa !10
%conv6121 = zext i8 %968 to i32
%bf.load6125 = load i24, i24* %958, align 1
%bf.lshr6126 = lshr i24 %bf.load6125, 4
%bf.clear6127 = and i24 %bf.lshr6126, 1
%bf.cast6128 = zext i24 %bf.clear6127 to i32
%add6129 = add nuw nsw i32 %bf.cast6128, %conv6121
%cmp6130.not = icmp ugt i32 %add6129, %conv6116
br i1 %cmp6130.not, label %if.end6329, label %if.then6132
if.then6132: ; preds = %if.else6109
%call6133 = call fastcc i32 @Reduce()
%969 = load i32, i32* @ttop, align 4, !tbaa !4
%cmp6134 = icmp eq i32 %969, %4
br i1 %cmp6134, label %cleanup9179, label %for.cond6087.backedge
if.else6145: ; preds = %if.end6076
%tobool6146.not = icmp eq i32 %obj_prev.1, 0
br i1 %tobool6146.not, label %if.end6329, label %if.then6147
if.then6147: ; preds = %if.else6145
%970 = getelementptr inbounds %union.rec, %union.rec* %914, i64 0, i32 0, i32 2
%os216152 = bitcast %union.SECOND_UNION* %970 to %struct.anon.0*
%ohspace6153 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os216152, i64 0, i32 1
%971 = load i8, i8* %ohspace6153, align 1, !tbaa !10
%conv6154 = zext i8 %971 to i32
%ovspace6158 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os216152, i64 0, i32 2
%972 = load i8, i8* %ovspace6158, align 2, !tbaa !10
%conv6159 = zext i8 %972 to i32
%add6160 = sub nsw i32 0, %conv6159
%cmp6161.not = icmp eq i32 %conv6154, %add6160
br i1 %cmp6161.not, label %if.else6164, label %land.rhs6181.preheader
if.else6164: ; preds = %if.then6147
%otype6168 = getelementptr inbounds %union.rec, %union.rec* %914, i64 0, i32 0, i32 1, i32 0, i32 0
%973 = load i8, i8* %otype6168, align 8, !tbaa !10
%cmp6170 = icmp eq i8 %973, 102
%cmp6173 = icmp eq i32 %obj_prev.1, 2
%or.cond9215 = select i1 %cmp6170, i1 true, i1 %cmp6173
%.10154 = select i1 %or.cond9215, i8 7, i8 103
br label %land.rhs6181.preheader
land.rhs6181.preheader: ; preds = %if.else6164, %if.then6147
%typ6148.0 = phi i32 [ 100, %if.then6147 ], [ 101, %if.else6164 ]
%prec6149.0 = phi i8 [ 7, %if.then6147 ], [ %.10154, %if.else6164 ]
br label %land.rhs6181
land.rhs6181: ; preds = %while.body6192, %land.rhs6181.preheader
%974 = load i32, i32* @ttop, align 4, !tbaa !4
%idxprom6182 = sext i32 %974 to i64
%arrayidx6183 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom6182
%975 = bitcast %union.rec** %arrayidx6183 to %struct.word_type**
%976 = load %struct.word_type*, %struct.word_type** %975, align 8, !tbaa !8
%ou26185 = getelementptr inbounds %struct.word_type, %struct.word_type* %976, i64 0, i32 2
%oprecedence6187 = bitcast %union.SECOND_UNION* %ou26185 to i8*
%977 = load i8, i8* %oprecedence6187, align 8, !tbaa !10
%cmp6189.not = icmp ugt i8 %prec6149.0, %977
br i1 %cmp6189.not, label %if.then6196, label %while.body6192
while.body6192: ; preds = %land.rhs6181
%call6193 = call fastcc i32 @Reduce()
%tobool6180.not = icmp eq i32 %call6193, 0
br i1 %tobool6180.not, label %if.end6329, label %land.rhs6181, !llvm.loop !30
if.then6196: ; preds = %land.rhs6181
%978 = zext i32 %typ6148.0 to i64
%arrayidx6198 = getelementptr inbounds [0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 %978
%979 = load i8, i8* %arrayidx6198, align 1, !tbaa !10
%conv6199 = zext i8 %979 to i32
store i32 %conv6199, i32* @zz_size, align 4, !tbaa !4
%980 = zext i8 %979 to i64
%arrayidx6207 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %980
%981 = load %union.rec*, %union.rec** %arrayidx6207, align 8, !tbaa !8
%cmp6208 = icmp eq %union.rec* %981, null
br i1 %cmp6208, label %if.then6210, label %if.else6212
if.then6210: ; preds = %if.then6196
%982 = load %struct.FILE_POS*, %struct.FILE_POS** @no_fpos, align 8, !tbaa !8
%call6211 = call %union.rec* @GetMemory(i32 noundef %conv6199, %struct.FILE_POS* noundef %982) #5
store %union.rec* %call6211, %union.rec** @zz_hold, align 8, !tbaa !8
%.pre10458 = load i32, i32* @ttop, align 4, !tbaa !4
br label %if.end6222
if.else6212: ; preds = %if.then6196
store %union.rec* %981, %union.rec** @zz_hold, align 8, !tbaa !8
%opred6218 = getelementptr inbounds %union.rec, %union.rec* %981, i64 0, i32 0, i32 0, i64 0, i32 0
%983 = load %union.rec*, %union.rec** %opred6218, align 8, !tbaa !10
store %union.rec* %983, %union.rec** %arrayidx6207, align 8, !tbaa !8
br label %if.end6222
if.end6222: ; preds = %if.else6212, %if.then6210
%984 = phi i32 [ %.pre10458, %if.then6210 ], [ %974, %if.else6212 ]
%.in10508 = phi %union.rec* [ %call6211, %if.then6210 ], [ %981, %if.else6212 ]
%conv6223 = trunc i32 %typ6148.0 to i8
%985 = getelementptr inbounds %union.rec, %union.rec* %.in10508, i64 0, i32 0, i32 1, i32 0, i32 0
store i8 %conv6223, i8* %985, align 8, !tbaa !10
%986 = getelementptr inbounds %union.rec, %union.rec* %.in10508, i64 0, i32 0, i32 0, i64 1, i32 1
store %union.rec* %.in10508, %union.rec** %986, align 8, !tbaa !10
%987 = getelementptr inbounds %union.rec, %union.rec* %.in10508, i64 0, i32 0, i32 0, i64 1, i32 0
store %union.rec* %.in10508, %union.rec** %987, align 8, !tbaa !10
%988 = getelementptr inbounds %union.rec, %union.rec* %.in10508, i64 0, i32 0, i32 0, i64 0, i32 1
store %union.rec* %.in10508, %union.rec** %988, align 8, !tbaa !10
%989 = getelementptr %union.rec, %union.rec* %.in10508, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %.in10508, %union.rec** %989, align 8, !tbaa !10
%990 = getelementptr inbounds %union.rec, %union.rec* %.in10508, i64 0, i32 0, i32 2
%os216247 = bitcast %union.SECOND_UNION* %990 to %struct.anon.0*
%oprecedence6248 = bitcast %union.SECOND_UNION* %990 to i8*
store i8 %prec6149.0, i8* %oprecedence6248, align 8, !tbaa !10
%991 = load i8, i8* %ovspace6158, align 2, !tbaa !10
%ovspace6256 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os216247, i64 0, i32 2
store i8 %991, i8* %ovspace6256, align 2, !tbaa !10
%992 = load i8, i8* %ohspace6153, align 1, !tbaa !10
%ohspace6264 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os216247, i64 0, i32 1
store i8 %992, i8* %ohspace6264, align 1, !tbaa !10
%os56265 = bitcast %union.rec* %.in10508 to %struct.gapobj_type*
%993 = getelementptr inbounds %struct.gapobj_type, %struct.gapobj_type* %os56265, i64 0, i32 3, i32 0
%bf.load6267 = load i16, i16* %993, align 4
%bf.clear6273 = and i16 %bf.load6267, -769
%bf.set6274 = or i16 %bf.clear6273, 512
store i16 %bf.set6274, i16* %993, align 4
%ofile_num6278 = getelementptr inbounds %union.rec, %union.rec* %914, i64 0, i32 0, i32 1, i32 0, i32 2
%994 = load i16, i16* %ofile_num6278, align 2, !tbaa !10
%995 = getelementptr inbounds %union.rec, %union.rec* %.in10508, i64 0, i32 0, i32 1, i32 0, i32 2
store i16 %994, i16* %995, align 2, !tbaa !10
%oline_num6286 = getelementptr inbounds %union.rec, %union.rec* %914, i64 0, i32 0, i32 1, i32 0, i32 3
%bf.load6287 = load i32, i32* %oline_num6286, align 4
%bf.clear6288 = and i32 %bf.load6287, 1048575
%996 = getelementptr inbounds %union.rec, %union.rec* %.in10508, i64 0, i32 0, i32 1, i32 0, i32 3
%bf.load6293 = load i32, i32* %996, align 4
%bf.clear6295 = and i32 %bf.load6293, -1048576
%bf.set6296 = or i32 %bf.clear6295, %bf.clear6288
store i32 %bf.set6296, i32* %996, align 4
%bf.load6301 = load i32, i32* %oline_num6286, align 4
%bf.lshr6302 = and i32 %bf.load6301, -1048576
%bf.set6311 = or i32 %bf.lshr6302, %bf.clear6288
store i32 %bf.set6311, i32* %996, align 4
%inc6312 = add nsw i32 %984, 1
store i32 %inc6312, i32* @ttop, align 4, !tbaa !4
%cmp6313 = icmp slt i32 %984, 99
br i1 %cmp6313, label %if.then6315, label %if.else6318
if.then6315: ; preds = %if.end6222
%idxprom6316 = sext i32 %inc6312 to i64
%arrayidx6317 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom6316
store %union.rec* %.in10508, %union.rec** %arrayidx6317, align 8, !tbaa !8
br label %if.end6329
if.else6318: ; preds = %if.end6222
%idxprom632010290 = zext i32 %984 to i64
%arrayidx6321 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom632010290
%997 = bitcast %union.rec** %arrayidx6321 to %struct.word_type**
%998 = load %struct.word_type*, %struct.word_type** %997, align 8, !tbaa !8
%ofpos6324 = getelementptr inbounds %struct.word_type, %struct.word_type* %998, i64 0, i32 1, i32 0
%call6325 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 2, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos6324) #5
br label %if.end6329
if.end6329: ; preds = %if.else6318, %if.then6315, %while.body6192, %if.else6145, %if.else6109
%999 = load i32, i32* @ttop, align 4, !tbaa !4
%inc6330 = add nsw i32 %999, 1
store i32 %inc6330, i32* @ttop, align 4, !tbaa !4
%cmp6331 = icmp slt i32 %999, 99
br i1 %cmp6331, label %if.then6333, label %if.else6336
if.then6333: ; preds = %if.end6329
%idxprom6334 = sext i32 %inc6330 to i64
%arrayidx6335 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom6334
store %union.rec* %914, %union.rec** %arrayidx6335, align 8, !tbaa !8
br label %if.end6344
if.else6336: ; preds = %if.end6329
%idxprom633810289 = zext i32 %999 to i64
%arrayidx6339 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom633810289
%1000 = bitcast %union.rec** %arrayidx6339 to %struct.word_type**
%1001 = load %struct.word_type*, %struct.word_type** %1000, align 8, !tbaa !8
%ofpos6342 = getelementptr inbounds %struct.word_type, %struct.word_type* %1001, i64 0, i32 1, i32 0
%call6343 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 2, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos6342) #5
br label %if.end6344
if.end6344: ; preds = %if.else6336, %if.then6333
%bf.load6349 = load i24, i24* %958, align 1
%1002 = and i24 %bf.load6349, 8
%tobool6353.not = icmp eq i24 %1002, 0
br i1 %tobool6353.not, label %if.else6355, label %if.end6364
if.else6355: ; preds = %if.end6344
%call6356 = call fastcc i32 @Reduce()
%1003 = load i32, i32* @ttop, align 4, !tbaa !4
%cmp6357 = icmp eq i32 %1003, %4
br i1 %cmp6357, label %cleanup9179, label %if.end6364
if.end6364: ; preds = %if.else6355, %if.end6344
%obj_prev.38 = phi i32 [ %call6356, %if.else6355 ], [ 0, %if.end6344 ]
%1004 = load %union.rec*, %union.rec** @StartSym, align 8, !tbaa !8
%cmp6365 = icmp ne %union.rec* %1004, %encl
%or.cond9216 = and i1 %cmp6368, %cmp6365
br i1 %or.cond9216, label %if.then6370, label %if.end6418
if.then6370: ; preds = %if.end6364
%bf.load6374 = load i24, i24* %958, align 1
%1005 = and i24 %bf.load6374, 64
%tobool6378.not = icmp eq i24 %1005, 0
br i1 %tobool6378.not, label %if.else6413, label %if.then6379
if.then6379: ; preds = %if.then6370
%bf.load6383 = load i24, i24* %81, align 1
%bf.set6385 = or i24 %bf.load6383, 1048576
store i24 %bf.set6385, i24* %81, align 1
%1006 = and i24 %bf.load6383, 32768
%tobool6393.not = icmp eq i24 %1006, 0
br i1 %tobool6393.not, label %lor.end, label %lor.end.thread
lor.end: ; preds = %if.then6379
%bf.load6398 = load i24, i24* %958, align 1
%1007 = and i24 %bf.load6398, 32768
%tobool6402.not = icmp eq i24 %1007, 0
br i1 %tobool6402.not, label %1008, label %lor.end.thread
lor.end.thread: ; preds = %lor.end, %if.then6379
br label %1008
1008: ; preds = %lor.end.thread, %lor.end
%1009 = phi i24 [ 32768, %lor.end.thread ], [ 0, %lor.end ]
%bf.clear6410 = and i24 %bf.set6385, -32769
%bf.set6411 = or i24 %1009, %bf.clear6410
store i24 %bf.set6411, i24* %81, align 1
br label %if.end6418
if.else6413: ; preds = %if.then6370
br i1 %cmp5817, label %if.end6418, label %if.then6415
if.then6415: ; preds = %if.else6413
call void @InsertUses(%union.rec* noundef nonnull %encl, %union.rec* noundef nonnull %916) #5
br label %if.end6418
if.end6418: ; preds = %if.then6415, %if.else6413, %1008, %if.end6364
%cmp6851 = icmp eq %union.rec* %914, null
%opred6862 = getelementptr inbounds %union.rec, %union.rec* %914, i64 0, i32 0, i32 0, i64 0, i32 0
%opred6870 = getelementptr %union.rec, %union.rec* %914, i64 0, i32 0, i32 0, i64 0, i32 0
br label %while.cond6419
while.cond6419: ; preds = %cleanup, %if.end6418
%inc658510368.lcssa10379 = phi i32 [ %scope_count.promoted10377, %if.end6418 ], [ %inc658510368.lcssa10378, %cleanup ]
%compulsory_count.0 = phi i32 [ 0, %if.end6418 ], [ %compulsory_count.2, %cleanup ]
%1010 = load %union.rec*, %union.rec** %t, align 8, !tbaa !8
%otype6423 = getelementptr inbounds %union.rec, %union.rec* %1010, i64 0, i32 0, i32 1, i32 0, i32 0
%1011 = load i8, i8* %otype6423, align 8, !tbaa !10
switch i8 %1011, label %while.end6937.loopexit [
i8 2, label %land.lhs.true6427
i8 102, label %land.rhs6451
]
land.lhs.true6427: ; preds = %while.cond6419
%1012 = getelementptr inbounds %union.rec, %union.rec* %1010, i64 0, i32 0, i32 5
%1013 = load %union.rec*, %union.rec** %1012, align 8, !tbaa !10
%oenclosing = getelementptr inbounds %union.rec, %union.rec* %1013, i64 0, i32 0, i32 3
%1014 = bitcast %union.THIRD_UNION* %oenclosing to %union.rec**
%1015 = load %union.rec*, %union.rec** %1014, align 8, !tbaa !10
%cmp6431 = icmp eq %union.rec* %1015, %916
br i1 %cmp6431, label %land.lhs.true6433, label %while.end6937.loopexit
land.lhs.true6433: ; preds = %land.lhs.true6427
%otype6439 = getelementptr inbounds %union.rec, %union.rec* %1013, i64 0, i32 0, i32 1, i32 0, i32 0
%1016 = load i8, i8* %otype6439, align 8, !tbaa !10
%cmp6441 = icmp eq i8 %1016, -111
br i1 %cmp6441, label %if.then6470, label %while.end6937.loopexit
land.rhs6451: ; preds = %while.cond6419
%1017 = getelementptr inbounds %union.rec, %union.rec* %1010, i64 0, i32 0, i32 2
%oprecedence6455 = bitcast %union.SECOND_UNION* %1017 to i8*
%1018 = load i8, i8* %oprecedence6455, align 8, !tbaa !10
%cmp6457.not = icmp eq i8 %1018, 3
br i1 %cmp6457.not, label %while.end6937.loopexit, label %if.else6527
if.then6470: ; preds = %land.lhs.true6433
%call6471 = call %union.rec* @LexGetToken() #5
store %union.rec* %call6471, %union.rec** %t, align 8, !tbaa !8
%otype6475 = getelementptr inbounds %union.rec, %union.rec* %call6471, i64 0, i32 0, i32 1, i32 0, i32 0
%1019 = load i8, i8* %otype6475, align 8, !tbaa !10
%cmp6477.not = icmp eq i8 %1019, 102
br i1 %cmp6477.not, label %if.end6549, label %cleanup.thread
cleanup.thread: ; preds = %if.then6470
%1020 = getelementptr inbounds %union.rec, %union.rec* %1010, i64 0, i32 0, i32 1
%otype646610549.le = getelementptr %union.FIRST_UNION, %union.FIRST_UNION* %1020, i64 0, i32 0, i32 0
store i32 %inc658510368.lcssa10379, i32* %scope_count, align 4, !tbaa !4
%ofpos6482 = getelementptr %union.FIRST_UNION, %union.FIRST_UNION* %1020, i64 0, i32 0
%1021 = getelementptr inbounds %union.rec, %union.rec* %1010, i64 0, i32 0, i32 5
%1022 = load %union.rec*, %union.rec** %1021, align 8, !tbaa !10
%call6485 = call i8* @SymName(%union.rec* noundef %1022) #5
%call6486 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 30, i8* noundef getelementptr inbounds ([34 x i8], [34 x i8]* @.str.44, i64 0, i64 0), i32 noundef 2, %struct.FILE_POS* noundef nonnull %ofpos6482, i8* noundef getelementptr inbounds ([2 x i8], [2 x i8]* @.str.17, i64 0, i64 0), i8* noundef %call6485) #5
store %union.rec* %1010, %union.rec** @zz_hold, align 8, !tbaa !8
%1023 = load i8, i8* %otype646610549.le, align 8, !tbaa !10
%.off10196 = add i8 %1023, -11
%switch10197 = icmp ult i8 %.off10196, 2
%1024 = getelementptr inbounds %union.rec, %union.rec* %1010, i64 0, i32 0, i32 1, i32 0, i32 1
%idxprom6513 = zext i8 %1023 to i64
%arrayidx6514 = getelementptr inbounds [0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 %idxprom6513
%cond6517.in.in = select i1 %switch10197, i8* %1024, i8* %arrayidx6514
%cond6517.in = load i8, i8* %cond6517.in.in, align 1, !tbaa !10
%cond6517 = zext i8 %cond6517.in to i32
store i32 %cond6517, i32* @zz_size, align 4, !tbaa !4
%1025 = zext i8 %cond6517.in to i64
%arrayidx6519 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %1025
%1026 = load %union.rec*, %union.rec** %arrayidx6519, align 8, !tbaa !8
%opred6523 = getelementptr %union.rec, %union.rec* %1010, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %1026, %union.rec** %opred6523, align 8, !tbaa !10
%1027 = load %union.rec*, %union.rec** @zz_hold, align 8, !tbaa !8
%1028 = load i32, i32* @zz_size, align 4, !tbaa !4
%idxprom6524 = sext i32 %1028 to i64
%arrayidx6525 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %idxprom6524
store %union.rec* %1027, %union.rec** %arrayidx6525, align 8, !tbaa !8
br label %while.end6937
if.else6527: ; preds = %land.rhs6451
%ofpos6530 = getelementptr inbounds %union.rec, %union.rec* %1010, i64 0, i32 0, i32 1, i32 0
%1029 = getelementptr inbounds %union.rec, %union.rec* %1010, i64 0, i32 0, i32 2
%os216533 = bitcast %union.SECOND_UNION* %1029 to %struct.anon.0*
%ovspace6534 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os216533, i64 0, i32 2
%1030 = load i8, i8* %ovspace6534, align 2, !tbaa !10
%ohspace6538 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os216533, i64 0, i32 1
%1031 = load i8, i8* %ohspace6538, align 1, !tbaa !10
%oprecedence6542 = bitcast %union.SECOND_UNION* %1029 to i8*
%1032 = load i8, i8* %oprecedence6542, align 8, !tbaa !10
%call6543 = call %union.rec* @ChildSymWithCode(%union.rec* noundef %914, i8 noundef zeroext %1032) #5
%call6544 = call %union.rec* @NewToken(i8 noundef zeroext 2, %struct.FILE_POS* noundef nonnull %ofpos6530, i8 noundef zeroext %1030, i8 noundef zeroext %1031, i8 noundef zeroext 0, %union.rec* noundef %call6543) #5
%1033 = load %struct.word_type*, %struct.word_type** %79, align 8, !tbaa !8
%ou26546 = getelementptr inbounds %struct.word_type, %struct.word_type* %1033, i64 0, i32 2
%oprecedence6548 = bitcast %union.SECOND_UNION* %ou26546 to i8*
store i8 3, i8* %oprecedence6548, align 8, !tbaa !10
br label %if.end6549
if.end6549: ; preds = %if.else6527, %if.then6470
%new_par.0 = phi %union.rec* [ %1010, %if.then6470 ], [ %call6544, %if.else6527 ]
%1034 = getelementptr inbounds %union.rec, %union.rec* %new_par.0, i64 0, i32 0, i32 5
%1035 = bitcast %union.rec** %1034 to %struct.symbol_type**
%1036 = load %struct.symbol_type*, %struct.symbol_type** %1035, align 8, !tbaa !10
%oimports = getelementptr inbounds %struct.symbol_type, %struct.symbol_type* %1036, i64 0, i32 9
%1037 = load %union.rec*, %union.rec** %oimports, align 8, !tbaa !10
%cmp6553.not = icmp eq %union.rec* %1037, null
%1038 = bitcast %struct.symbol_type* %1036 to %union.rec*
br i1 %cmp6553.not, label %if.end6592, label %for.cond6560.preheader
for.cond6560.preheader: ; preds = %if.end6549
%link.1.in10369 = getelementptr inbounds %union.rec, %union.rec* %1037, i64 0, i32 0, i32 0, i64 0, i32 1
%link.110370 = load %union.rec*, %union.rec** %link.1.in10369, align 8, !tbaa !10
%cmp6561.not10371 = icmp eq %union.rec* %link.110370, %1037
br i1 %cmp6561.not10371, label %if.end6592, label %for.cond6568.preheader
for.cond6568.preheader: ; preds = %for.end6582, %for.cond6560.preheader
%link.110373 = phi %union.rec* [ %link.1, %for.end6582 ], [ %link.110370, %for.cond6560.preheader ]
%inc65851036810372 = phi i32 [ %inc6585, %for.end6582 ], [ 0, %for.cond6560.preheader ]
br label %for.cond6568
for.cond6568: ; preds = %for.cond6568, %for.cond6568.preheader
%link.1.pn = phi %union.rec* [ %y.3, %for.cond6568 ], [ %link.110373, %for.cond6568.preheader ]
%y.3.in = getelementptr inbounds %union.rec, %union.rec* %link.1.pn, i64 0, i32 0, i32 0, i64 1, i32 0
%y.3 = load %union.rec*, %union.rec** %y.3.in, align 8, !tbaa !10
%otype6572 = getelementptr inbounds %union.rec, %union.rec* %y.3, i64 0, i32 0, i32 1, i32 0, i32 0
%1039 = load i8, i8* %otype6572, align 8, !tbaa !10
%cmp6574 = icmp eq i8 %1039, 0
br i1 %cmp6574, label %for.cond6568, label %for.end6582, !llvm.loop !31
for.end6582: ; preds = %for.cond6568
%1040 = getelementptr inbounds %union.rec, %union.rec* %y.3, i64 0, i32 0, i32 5
%1041 = load %union.rec*, %union.rec** %1040, align 8, !tbaa !10
call void @PushScope(%union.rec* noundef %1041, i32 noundef 0, i32 noundef 1) #5
%inc6585 = add nuw nsw i32 %inc65851036810372, 1
%link.1.in = getelementptr inbounds %union.rec, %union.rec* %link.110373, i64 0, i32 0, i32 0, i64 0, i32 1
%link.1 = load %union.rec*, %union.rec** %link.1.in, align 8, !tbaa !10
%cmp6561.not = icmp eq %union.rec* %link.1, %1037
br i1 %cmp6561.not, label %if.end6592.loopexit, label %for.cond6568.preheader, !llvm.loop !32
if.end6592.loopexit: ; preds = %for.end6582
%.pre10469 = load %union.rec*, %union.rec** %1034, align 8, !tbaa !10
br label %if.end6592
if.end6592: ; preds = %if.end6592.loopexit, %for.cond6560.preheader, %if.end6549
%1042 = phi %union.rec* [ %1038, %if.end6549 ], [ %1038, %for.cond6560.preheader ], [ %.pre10469, %if.end6592.loopexit ]
%inc658510368.lcssa10378 = phi i32 [ 0, %if.end6549 ], [ 0, %for.cond6560.preheader ], [ %inc6585, %if.end6592.loopexit ]
call void @PushScope(%union.rec* noundef %1042, i32 noundef 0, i32 noundef 0) #5
%call6595 = call %union.rec* @Parse(%union.rec** noundef nonnull %t, %union.rec* noundef %encl, i32 noundef 0, i32 noundef 0)
call void @PopScope() #5
%1043 = getelementptr inbounds %union.rec, %union.rec* %new_par.0, i64 0, i32 0, i32 1
%otype6599 = getelementptr %union.FIRST_UNION, %union.FIRST_UNION* %1043, i64 0, i32 0, i32 0
store i8 10, i8* %otype6599, align 8, !tbaa !10
%1044 = load i8, i8* getelementptr inbounds ([0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 0), align 1, !tbaa !10
%conv6600 = zext i8 %1044 to i32
store i32 %conv6600, i32* @zz_size, align 4, !tbaa !4
%1045 = zext i8 %1044 to i64
%arrayidx6608 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %1045
%1046 = load %union.rec*, %union.rec** %arrayidx6608, align 8, !tbaa !8
%cmp6609 = icmp eq %union.rec* %1046, null
br i1 %cmp6609, label %if.then6611, label %if.else6613
if.then6611: ; preds = %if.end6592
%1047 = load %struct.FILE_POS*, %struct.FILE_POS** @no_fpos, align 8, !tbaa !8
%call6612 = call %union.rec* @GetMemory(i32 noundef %conv6600, %struct.FILE_POS* noundef %1047) #5
br label %cond.end6682
if.else6613: ; preds = %if.end6592
store %union.rec* %1046, %union.rec** @zz_hold, align 8, !tbaa !8
%opred6619 = getelementptr inbounds %union.rec, %union.rec* %1046, i64 0, i32 0, i32 0, i64 0, i32 0
%1048 = load %union.rec*, %union.rec** %opred6619, align 8, !tbaa !10
store %union.rec* %1048, %union.rec** %arrayidx6608, align 8, !tbaa !8
br label %cond.end6682
cond.end6682: ; preds = %if.else6613, %if.then6611
%.in10504 = phi %union.rec* [ %call6612, %if.then6611 ], [ %1046, %if.else6613 ]
%1049 = getelementptr inbounds %union.rec, %union.rec* %.in10504, i64 0, i32 0, i32 1, i32 0, i32 0
store i8 0, i8* %1049, align 8, !tbaa !10
%1050 = getelementptr inbounds %union.rec, %union.rec* %.in10504, i64 0, i32 0, i32 0, i64 1, i32 1
store %union.rec* %.in10504, %union.rec** %1050, align 8, !tbaa !10
%1051 = getelementptr inbounds %union.rec, %union.rec* %.in10504, i64 0, i32 0, i32 0, i64 1, i32 0
store %union.rec* %.in10504, %union.rec** %1051, align 8, !tbaa !10
%1052 = getelementptr inbounds %union.rec, %union.rec* %.in10504, i64 0, i32 0, i32 0, i64 0, i32 1
store %union.rec* %.in10504, %union.rec** %1052, align 8, !tbaa !10
%1053 = getelementptr %union.rec, %union.rec* %.in10504, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %.in10504, %union.rec** %1053, align 8, !tbaa !10
store %union.rec* %.in10504, %union.rec** @xx_link, align 8, !tbaa !8
store %union.rec* %.in10504, %union.rec** @zz_res, align 8, !tbaa !8
store %union.rec* %new_par.0, %union.rec** @zz_hold, align 8, !tbaa !8
%opred6655 = getelementptr inbounds %union.rec, %union.rec* %new_par.0, i64 0, i32 0, i32 0, i64 0, i32 0
%1054 = load %union.rec*, %union.rec** %opred6655, align 8, !tbaa !10
store %union.rec* %1054, %union.rec** @zz_tmp, align 8, !tbaa !8
%opred6659 = getelementptr %union.rec, %union.rec* %.in10504, i64 0, i32 0, i32 0, i64 0, i32 0
%1055 = load %union.rec*, %union.rec** %opred6659, align 8, !tbaa !10
%opred6663 = getelementptr %union.rec, %union.rec* %new_par.0, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %1055, %union.rec** %opred6663, align 8, !tbaa !10
%1056 = load %union.rec*, %union.rec** @zz_hold, align 8, !tbaa !8
%1057 = load %struct.word_type**, %struct.word_type*** bitcast (%union.rec** @zz_res to %struct.word_type***), align 8, !tbaa !8
%1058 = load %struct.word_type*, %struct.word_type** %1057, align 8, !tbaa !10
%osucc6671 = getelementptr inbounds %struct.word_type, %struct.word_type* %1058, i64 0, i32 0, i64 0, i32 1
store %union.rec* %1056, %union.rec** %osucc6671, align 8, !tbaa !10
%1059 = load %union.rec*, %union.rec** @zz_tmp, align 8, !tbaa !8
%opred6675 = bitcast %struct.word_type** %1057 to %union.rec**
store %union.rec* %1059, %union.rec** %opred6675, align 8, !tbaa !10
%1060 = load %union.rec*, %union.rec** @zz_res, align 8, !tbaa !8
%1061 = load %struct.word_type*, %struct.word_type** bitcast (%union.rec** @zz_tmp to %struct.word_type**), align 8, !tbaa !8
%osucc6679 = getelementptr inbounds %struct.word_type, %struct.word_type* %1061, i64 0, i32 0, i64 0, i32 1
store %union.rec* %1060, %union.rec** %osucc6679, align 8, !tbaa !10
%.pre10470 = load %union.rec*, %union.rec** @xx_link, align 8, !tbaa !8
store %union.rec* %.pre10470, %union.rec** @zz_res, align 8, !tbaa !8
store %union.rec* %call6595, %union.rec** @zz_hold, align 8, !tbaa !8
%cmp6684 = icmp eq %union.rec* %call6595, null
%cmp6688 = icmp eq %union.rec* %.pre10470, null
%or.cond10199 = select i1 %cmp6684, i1 true, i1 %cmp6688
br i1 %or.cond10199, label %cond.end6722, label %cond.false6691
cond.false6691: ; preds = %cond.end6682
%opred6695 = getelementptr inbounds %union.rec, %union.rec* %call6595, i64 0, i32 0, i32 0, i64 1, i32 0
%1062 = load %union.rec*, %union.rec** %opred6695, align 8, !tbaa !10
store %union.rec* %1062, %union.rec** @zz_tmp, align 8, !tbaa !8
%1063 = getelementptr inbounds %union.rec, %union.rec* %.pre10470, i64 0, i32 0, i32 0, i64 1, i32 0
%1064 = load %union.rec*, %union.rec** %1063, align 8, !tbaa !10
%1065 = getelementptr inbounds %union.rec, %union.rec* %call6595, i64 0, i32 0, i32 0, i64 1, i32 0
store %union.rec* %1064, %union.rec** %1065, align 8, !tbaa !10
%1066 = bitcast %union.rec** %1063 to %struct.word_type**
%1067 = load %struct.word_type*, %struct.word_type** %1066, align 8, !tbaa !10
%osucc6711 = getelementptr inbounds %struct.word_type, %struct.word_type* %1067, i64 0, i32 0, i64 1, i32 1
store %union.rec* %call6595, %union.rec** %osucc6711, align 8, !tbaa !10
store %union.rec* %1062, %union.rec** %1063, align 8, !tbaa !10
%osucc6719 = getelementptr inbounds %union.rec, %union.rec* %1062, i64 0, i32 0, i32 0, i64 1, i32 1
store %union.rec* %.pre10470, %union.rec** %osucc6719, align 8, !tbaa !10
br label %cond.end6722
cond.end6722: ; preds = %cond.false6691, %cond.end6682
%cmp672510374 = icmp sgt i32 %inc658510368.lcssa10378, 0
br i1 %cmp672510374, label %for.body6727, label %for.cond6735.preheader
for.body6727: ; preds = %for.body6727, %cond.end6722
%i.110375 = phi i32 [ %inc6729, %for.body6727 ], [ 0, %cond.end6722 ]
call void @PopScope() #5
%inc6729 = add nuw nsw i32 %i.110375, 1
%exitcond.not = icmp eq i32 %inc6729, %inc658510368.lcssa10378
br i1 %exitcond.not, label %for.cond6735.preheader, label %for.body6727, !llvm.loop !33
for.cond6735.preheader: ; preds = %for.body6727, %cond.end6722
br label %for.cond6735
for.cond6735: ; preds = %if.end6767, %for.cond6735.preheader
%.pn10111 = phi %union.rec* [ %link.2, %if.end6767 ], [ %914, %for.cond6735.preheader ]
%link.2.in = getelementptr inbounds %union.rec, %union.rec* %.pn10111, i64 0, i32 0, i32 0, i64 0, i32 1
%link.2 = load %union.rec*, %union.rec** %link.2.in, align 8, !tbaa !10
%cmp6736.not = icmp eq %union.rec* %link.2, %914
br i1 %cmp6736.not, label %for.end6792, label %for.cond6743
for.cond6743: ; preds = %for.cond6743, %for.cond6735
%link.2.pn = phi %union.rec* [ %y.4, %for.cond6743 ], [ %link.2, %for.cond6735 ]
%y.4.in = getelementptr inbounds %union.rec, %union.rec* %link.2.pn, i64 0, i32 0, i32 0, i64 1, i32 0
%y.4 = load %union.rec*, %union.rec** %y.4.in, align 8, !tbaa !10
%otype6747 = getelementptr inbounds %union.rec, %union.rec* %y.4, i64 0, i32 0, i32 1, i32 0, i32 0
%1068 = load i8, i8* %otype6747, align 8, !tbaa !10
switch i8 %1068, label %if.then6765 [
i8 0, label %for.cond6743
i8 10, label %if.end6767
]
if.then6765: ; preds = %for.cond6743
%1069 = load %struct.FILE_POS*, %struct.FILE_POS** @no_fpos, align 8, !tbaa !8
%call6766 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 1, i32 noundef 2, i8* noundef getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 noundef 0, %struct.FILE_POS* noundef %1069, i8* noundef getelementptr inbounds ([23 x i8], [23 x i8]* @.str.45, i64 0, i64 0)) #5
br label %if.end6767
if.end6767: ; preds = %if.then6765, %for.cond6743
%1070 = load %union.rec*, %union.rec** %1034, align 8, !tbaa !10
%1071 = getelementptr inbounds %union.rec, %union.rec* %y.4, i64 0, i32 0, i32 5
%1072 = load %union.rec*, %union.rec** %1071, align 8, !tbaa !10
%cmp6772 = icmp eq %union.rec* %1070, %1072
br i1 %cmp6772, label %for.end6792.thread, label %for.cond6735, !llvm.loop !34
for.end6792.thread: ; preds = %if.end6767
%ofpos6777 = getelementptr %union.FIRST_UNION, %union.FIRST_UNION* %1043, i64 0, i32 0
%call6780 = call i8* @SymName(%union.rec* noundef %1070) #5
%1073 = load %union.rec*, %union.rec** %915, align 8, !tbaa !10
%call6783 = call i8* @SymName(%union.rec* noundef %1073) #5
%call6784 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 31, i8* noundef getelementptr inbounds ([39 x i8], [39 x i8]* @.str.46, i64 0, i64 0), i32 noundef 2, %struct.FILE_POS* noundef nonnull %ofpos6777, i8* noundef %call6780, i8* noundef %call6783) #5
%call6785 = call i32 @DisposeObject(%union.rec* noundef nonnull %new_par.0) #5
br label %if.end6931
for.end6792: ; preds = %for.cond6735
%cmp6793.not = icmp eq %union.rec* %new_par.0, null
br i1 %cmp6793.not, label %if.end6931, label %if.then6795
if.then6795: ; preds = %for.end6792
%1074 = load %struct.symbol_type*, %struct.symbol_type** %1035, align 8, !tbaa !10
%ois_compulsory = getelementptr inbounds %struct.symbol_type, %struct.symbol_type* %1074, i64 0, i32 16
%bf.load6799 = load i8, i8* %ois_compulsory, align 2
%1075 = lshr i8 %bf.load6799, 6
%.lobit = and i8 %1075, 1
%1076 = zext i8 %.lobit to i32
%spec.select = add nsw i32 %compulsory_count.0, %1076
%1077 = load i8, i8* getelementptr inbounds ([0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 0), align 1, !tbaa !10
%conv6807 = zext i8 %1077 to i32
store i32 %conv6807, i32* @zz_size, align 4, !tbaa !4
%1078 = zext i8 %1077 to i64
%arrayidx6815 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %1078
%1079 = load %union.rec*, %union.rec** %arrayidx6815, align 8, !tbaa !8
%cmp6816 = icmp eq %union.rec* %1079, null
br i1 %cmp6816, label %if.then6818, label %if.else6820
if.then6818: ; preds = %if.then6795
%1080 = load %struct.FILE_POS*, %struct.FILE_POS** @no_fpos, align 8, !tbaa !8
%call6819 = call %union.rec* @GetMemory(i32 noundef %conv6807, %struct.FILE_POS* noundef %1080) #5
br label %if.end6830
if.else6820: ; preds = %if.then6795
store %union.rec* %1079, %union.rec** @zz_hold, align 8, !tbaa !8
%opred6826 = getelementptr inbounds %union.rec, %union.rec* %1079, i64 0, i32 0, i32 0, i64 0, i32 0
%1081 = load %union.rec*, %union.rec** %opred6826, align 8, !tbaa !10
store %union.rec* %1081, %union.rec** %arrayidx6815, align 8, !tbaa !8
br label %if.end6830
if.end6830: ; preds = %if.else6820, %if.then6818
%.in10506 = phi %union.rec* [ %call6819, %if.then6818 ], [ %1079, %if.else6820 ]
%1082 = getelementptr inbounds %union.rec, %union.rec* %.in10506, i64 0, i32 0, i32 1, i32 0, i32 0
store i8 0, i8* %1082, align 8, !tbaa !10
%1083 = getelementptr inbounds %union.rec, %union.rec* %.in10506, i64 0, i32 0, i32 0, i64 1, i32 1
store %union.rec* %.in10506, %union.rec** %1083, align 8, !tbaa !10
%1084 = getelementptr inbounds %union.rec, %union.rec* %.in10506, i64 0, i32 0, i32 0, i64 1, i32 0
store %union.rec* %.in10506, %union.rec** %1084, align 8, !tbaa !10
%1085 = getelementptr inbounds %union.rec, %union.rec* %.in10506, i64 0, i32 0, i32 0, i64 0, i32 1
store %union.rec* %.in10506, %union.rec** %1085, align 8, !tbaa !10
%1086 = getelementptr %union.rec, %union.rec* %.in10506, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %.in10506, %union.rec** %1086, align 8, !tbaa !10
store %union.rec* %.in10506, %union.rec** @xx_link, align 8, !tbaa !8
store %union.rec* %.in10506, %union.rec** @zz_res, align 8, !tbaa !8
store %union.rec* %914, %union.rec** @zz_hold, align 8, !tbaa !8
%cmp6855 = icmp eq %union.rec* %.in10506, null
%or.cond10200 = select i1 %cmp6851, i1 true, i1 %cmp6855
br i1 %or.cond10200, label %cond.end6889.thread, label %cond.end6889
cond.end6889.thread: ; preds = %if.end6830
store %union.rec* %new_par.0, %union.rec** @zz_hold, align 8, !tbaa !8
br label %cond.false6898
cond.end6889: ; preds = %if.end6830
%1087 = load %union.rec*, %union.rec** %opred6862, align 8, !tbaa !10
store %union.rec* %1087, %union.rec** @zz_tmp, align 8, !tbaa !8
%opred6866 = getelementptr %union.rec, %union.rec* %.in10506, i64 0, i32 0, i32 0, i64 0, i32 0
%1088 = load %union.rec*, %union.rec** %opred6866, align 8, !tbaa !10
store %union.rec* %1088, %union.rec** %opred6870, align 8, !tbaa !10
%1089 = load %union.rec*, %union.rec** @zz_hold, align 8, !tbaa !8
%1090 = load %struct.word_type**, %struct.word_type*** bitcast (%union.rec** @zz_res to %struct.word_type***), align 8, !tbaa !8
%1091 = load %struct.word_type*, %struct.word_type** %1090, align 8, !tbaa !10
%osucc6878 = getelementptr inbounds %struct.word_type, %struct.word_type* %1091, i64 0, i32 0, i64 0, i32 1
store %union.rec* %1089, %union.rec** %osucc6878, align 8, !tbaa !10
%1092 = load %union.rec*, %union.rec** @zz_tmp, align 8, !tbaa !8
%opred6882 = bitcast %struct.word_type** %1090 to %union.rec**
store %union.rec* %1092, %union.rec** %opred6882, align 8, !tbaa !10
%1093 = load %union.rec*, %union.rec** @zz_res, align 8, !tbaa !8
%1094 = load %struct.word_type*, %struct.word_type** bitcast (%union.rec** @zz_tmp to %struct.word_type**), align 8, !tbaa !8
%osucc6886 = getelementptr inbounds %struct.word_type, %struct.word_type* %1094, i64 0, i32 0, i64 0, i32 1
store %union.rec* %1093, %union.rec** %osucc6886, align 8, !tbaa !10
%.pre10471 = load %union.rec*, %union.rec** @xx_link, align 8, !tbaa !8
store %union.rec* %.pre10471, %union.rec** @zz_res, align 8, !tbaa !8
store %union.rec* %new_par.0, %union.rec** @zz_hold, align 8, !tbaa !8
%cmp6895 = icmp eq %union.rec* %.pre10471, null
br i1 %cmp6895, label %if.end6931, label %cond.false6898
cond.false6898: ; preds = %cond.end6889, %cond.end6889.thread
%1095 = phi %union.rec* [ %.in10506, %cond.end6889.thread ], [ %.pre10471, %cond.end6889 ]
%opred6902 = getelementptr inbounds %union.rec, %union.rec* %new_par.0, i64 0, i32 0, i32 0, i64 1, i32 0
%1096 = load %union.rec*, %union.rec** %opred6902, align 8, !tbaa !10
store %union.rec* %1096, %union.rec** @zz_tmp, align 8, !tbaa !8
%1097 = getelementptr inbounds %union.rec, %union.rec* %1095, i64 0, i32 0, i32 0, i64 1, i32 0
%1098 = load %union.rec*, %union.rec** %1097, align 8, !tbaa !10
%1099 = getelementptr inbounds %union.rec, %union.rec* %new_par.0, i64 0, i32 0, i32 0, i64 1, i32 0
store %union.rec* %1098, %union.rec** %1099, align 8, !tbaa !10
%1100 = bitcast %union.rec** %1097 to %struct.word_type**
%1101 = load %struct.word_type*, %struct.word_type** %1100, align 8, !tbaa !10
%osucc6918 = getelementptr inbounds %struct.word_type, %struct.word_type* %1101, i64 0, i32 0, i64 1, i32 1
store %union.rec* %new_par.0, %union.rec** %osucc6918, align 8, !tbaa !10
store %union.rec* %1096, %union.rec** %1097, align 8, !tbaa !10
%osucc6926 = getelementptr inbounds %union.rec, %union.rec* %1096, i64 0, i32 0, i32 0, i64 1, i32 1
store %union.rec* %1095, %union.rec** %osucc6926, align 8, !tbaa !10
br label %if.end6931
if.end6931: ; preds = %cond.false6898, %cond.end6889, %for.end6792, %for.end6792.thread
%compulsory_count.2 = phi i32 [ %spec.select, %cond.false6898 ], [ %compulsory_count.0, %for.end6792 ], [ %spec.select, %cond.end6889 ], [ %compulsory_count.0, %for.end6792.thread ]
call void @PushScope(%union.rec* noundef %916, i32 noundef 1, i32 noundef 0) #5
%1102 = load %union.rec*, %union.rec** %t, align 8, !tbaa !8
%cmp6932 = icmp eq %union.rec* %1102, null
br i1 %cmp6932, label %if.then6934, label %cleanup
if.then6934: ; preds = %if.end6931
%call6935 = call %union.rec* @LexGetToken() #5
store %union.rec* %call6935, %union.rec** %t, align 8, !tbaa !8
br label %cleanup
cleanup: ; preds = %if.then6934, %if.end6931
call void @PopScope() #5
br label %while.cond6419
while.end6937.loopexit: ; preds = %land.rhs6451, %land.lhs.true6433, %land.lhs.true6427, %while.cond6419
store i32 %inc658510368.lcssa10379, i32* %scope_count, align 4, !tbaa !4
br label %while.end6937
while.end6937: ; preds = %while.end6937.loopexit, %cleanup.thread
%os66938 = bitcast %union.rec* %916 to %struct.symbol_type*
%ohas_compulsory = getelementptr inbounds %struct.symbol_type, %struct.symbol_type* %os66938, i64 0, i32 13
%1103 = load i16, i16* %ohas_compulsory, align 2, !tbaa !10
%conv6939 = zext i16 %1103 to i32
%cmp6940 = icmp slt i32 %compulsory_count.0, %conv6939
br i1 %cmp6940, label %for.cond6947.preheader, label %if.end7050
for.cond6947.preheader: ; preds = %while.end6937
%xlink.0.in10386 = getelementptr inbounds %union.rec, %union.rec* %916, i64 0, i32 0, i32 0, i64 0, i32 1
%xlink.010387 = load %union.rec*, %union.rec** %xlink.0.in10386, align 8, !tbaa !10
%cmp6948.not10388 = icmp eq %union.rec* %xlink.010387, %916
br i1 %cmp6948.not10388, label %if.end7050, label %for.cond6955.preheader.lr.ph
for.cond6955.preheader.lr.ph: ; preds = %for.cond6947.preheader
%link.3.in10381 = getelementptr inbounds %union.rec, %union.rec* %914, i64 0, i32 0, i32 0, i64 0, i32 1
%ofpos7038 = getelementptr inbounds %union.rec, %union.rec* %914, i64 0, i32 0, i32 1, i32 0
br label %for.cond6955.preheader
for.cond6955.preheader: ; preds = %for.inc7044, %for.cond6955.preheader.lr.ph
%xlink.010389 = phi %union.rec* [ %xlink.010387, %for.cond6955.preheader.lr.ph ], [ %xlink.0, %for.inc7044 ]
br label %for.cond6955
for.cond6955: ; preds = %for.cond6955, %for.cond6955.preheader
%xlink.0.pn = phi %union.rec* [ %tmp.0, %for.cond6955 ], [ %xlink.010389, %for.cond6955.preheader ]
%tmp.0.in = getelementptr inbounds %union.rec, %union.rec* %xlink.0.pn, i64 0, i32 0, i32 0, i64 1, i32 0
%tmp.0 = load %union.rec*, %union.rec** %tmp.0.in, align 8, !tbaa !10
%otype6959 = getelementptr inbounds %union.rec, %union.rec* %tmp.0, i64 0, i32 0, i32 1, i32 0, i32 0
%1104 = load i8, i8* %otype6959, align 8, !tbaa !10
switch i8 %1104, label %for.inc7044 [
i8 0, label %for.cond6955
i8 -111, label %land.lhs.true6977
]
land.lhs.true6977: ; preds = %for.cond6955
%os66978 = bitcast %union.rec* %tmp.0 to %struct.symbol_type*
%ois_compulsory6979 = getelementptr inbounds %struct.symbol_type, %struct.symbol_type* %os66978, i64 0, i32 16
%bf.load6980 = load i8, i8* %ois_compulsory6979, align 2
%1105 = and i8 %bf.load6980, 64
%tobool6984.not = icmp eq i8 %1105, 0
br i1 %tobool6984.not, label %for.inc7044, label %for.cond6990.preheader
for.cond6990.preheader: ; preds = %land.lhs.true6977
%link.310382 = load %union.rec*, %union.rec** %link.3.in10381, align 8, !tbaa !10
%cmp6991.not10383 = icmp eq %union.rec* %link.310382, %914
br i1 %cmp6991.not10383, label %if.then7035, label %for.cond6998.preheader
for.cond6998.preheader: ; preds = %for.inc7027, %for.cond6990.preheader
%link.310384 = phi %union.rec* [ %link.3, %for.inc7027 ], [ %link.310382, %for.cond6990.preheader ]
br label %for.cond6998
for.cond6998: ; preds = %for.cond6998, %for.cond6998.preheader
%link.3.pn = phi %union.rec* [ %y.5, %for.cond6998 ], [ %link.310384, %for.cond6998.preheader ]
%y.5.in = getelementptr inbounds %union.rec, %union.rec* %link.3.pn, i64 0, i32 0, i32 0, i64 1, i32 0
%y.5 = load %union.rec*, %union.rec** %y.5.in, align 8, !tbaa !10
%otype7002 = getelementptr inbounds %union.rec, %union.rec* %y.5, i64 0, i32 0, i32 1, i32 0, i32 0
%1106 = load i8, i8* %otype7002, align 8, !tbaa !10
switch i8 %1106, label %for.inc7027 [
i8 0, label %for.cond6998
i8 10, label %land.lhs.true7020
]
land.lhs.true7020: ; preds = %for.cond6998
%1107 = getelementptr inbounds %union.rec, %union.rec* %y.5, i64 0, i32 0, i32 5
%1108 = load %union.rec*, %union.rec** %1107, align 8, !tbaa !10
%cmp7023 = icmp eq %union.rec* %1108, %tmp.0
br i1 %cmp7023, label %for.inc7044, label %for.inc7027
for.inc7027: ; preds = %land.lhs.true7020, %for.cond6998
%link.3.in = getelementptr inbounds %union.rec, %union.rec* %link.310384, i64 0, i32 0, i32 0, i64 0, i32 1
%link.3 = load %union.rec*, %union.rec** %link.3.in, align 8, !tbaa !10
%cmp6991.not = icmp eq %union.rec* %link.3, %914
br i1 %cmp6991.not, label %if.then7035, label %for.cond6998.preheader, !llvm.loop !35
if.then7035: ; preds = %for.inc7027, %for.cond6990.preheader
%call7039 = call i8* @SymName(%union.rec* noundef %tmp.0) #5
%call7040 = call i8* @SymName(%union.rec* noundef %916) #5
%call7041 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 38, i8* noundef getelementptr inbounds ([37 x i8], [37 x i8]* @.str.47, i64 0, i64 0), i32 noundef 2, %struct.FILE_POS* noundef nonnull %ofpos7038, i8* noundef %call7039, i8* noundef %call7040) #5
br label %for.inc7044
for.inc7044: ; preds = %if.then7035, %land.lhs.true7020, %land.lhs.true6977, %for.cond6955
%xlink.0.in = getelementptr inbounds %union.rec, %union.rec* %xlink.010389, i64 0, i32 0, i32 0, i64 0, i32 1
%xlink.0 = load %union.rec*, %union.rec** %xlink.0.in, align 8, !tbaa !10
%cmp6948.not = icmp eq %union.rec* %xlink.0, %916
br i1 %cmp6948.not, label %if.end7050, label %for.cond6955.preheader, !llvm.loop !36
if.end7050: ; preds = %for.inc7044, %for.cond6947.preheader, %while.end6937
%1109 = load %union.rec*, %union.rec** %t, align 8, !tbaa !8
%otype7054 = getelementptr inbounds %union.rec, %union.rec* %1109, i64 0, i32 0, i32 1, i32 0, i32 0
%1110 = load i8, i8* %otype7054, align 8, !tbaa !10
%cmp7056 = icmp eq i8 %1110, 104
br i1 %cmp7056, label %if.then7058, label %if.end7078
if.then7058: ; preds = %if.end7050
%bf.load7063 = load i24, i24* %958, align 1
%1111 = and i24 %bf.load7063, 8
%tobool7067.not = icmp eq i24 %1111, 0
br i1 %tobool7067.not, label %if.then7068, label %if.else7074
if.then7068: ; preds = %if.then7058
%ofpos7071 = getelementptr inbounds %union.rec, %union.rec* %914, i64 0, i32 0, i32 1, i32 0
%call7072 = call i8* @SymName(%union.rec* noundef nonnull %916) #5
%call7073 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 32, i8* noundef getelementptr inbounds ([49 x i8], [49 x i8]* @.str.48, i64 0, i64 0), i32 noundef 2, %struct.FILE_POS* noundef nonnull %ofpos7071, i8* noundef getelementptr inbounds ([7 x i8], [7 x i8]* @.str.33, i64 0, i64 0), i8* noundef %call7072) #5
br label %if.end7078
if.else7074: ; preds = %if.then7058
%1112 = getelementptr inbounds %union.rec, %union.rec* %1109, i64 0, i32 0, i32 5
store %union.rec* %916, %union.rec** %1112, align 8, !tbaa !10
br label %if.end7078
if.end7078: ; preds = %if.else7074, %if.then7068, %if.end7050
br i1 %tobool7079.not, label %if.end8289, label %land.lhs.true7080
land.lhs.true7080: ; preds = %if.end7078
%bf.load7085 = load i24, i24* %958, align 1
%1113 = and i24 %bf.load7085, 16448
%1114 = icmp eq i24 %1113, 64
br i1 %1114, label %land.lhs.true7099, label %if.end8289
land.lhs.true7099: ; preds = %land.lhs.true7080
%1115 = getelementptr inbounds %union.rec, %union.rec* %916, i64 0, i32 0, i32 8
%1116 = load %union.rec*, %union.rec** %1115, align 8, !tbaa !10
%cmp7101 = icmp eq %union.rec* %1116, null
br i1 %cmp7101, label %if.then7103, label %if.end8289
if.then7103: ; preds = %land.lhs.true7099
%1117 = and i24 %bf.load7085, 8
%tobool7112.not = icmp eq i24 %1117, 0
br i1 %tobool7112.not, label %if.then7119, label %lor.lhs.false7113
lor.lhs.false7113: ; preds = %if.then7103
%call7114 = call %union.rec* @ChildSym(%union.rec* noundef nonnull %916, i32 noundef 146) #5
%os67115 = bitcast %union.rec* %call7114 to %struct.symbol_type*
%ouses_count = getelementptr inbounds %struct.symbol_type, %struct.symbol_type* %os67115, i64 0, i32 14
%1118 = load i8, i8* %ouses_count, align 4, !tbaa !10
%cmp7117 = icmp ult i8 %1118, 2
br i1 %cmp7117, label %lor.lhs.false7113.if.then7119_crit_edge, label %if.end8289
lor.lhs.false7113.if.then7119_crit_edge: ; preds = %lor.lhs.false7113
%bf.load7124.pre = load i24, i24* %958, align 1
br label %if.then7119
if.then7119: ; preds = %lor.lhs.false7113.if.then7119_crit_edge, %if.then7103
%bf.load7124 = phi i24 [ %bf.load7124.pre, %lor.lhs.false7113.if.then7119_crit_edge ], [ %bf.load7085, %if.then7103 ]
%1119 = load i32, i32* @ttop, align 4
%1120 = shl i24 %bf.load7124, 20
%sext = ashr i24 %1120, 23
%sub7130 = sext i24 %sext to i32
%cond7133 = add i32 %1119, %sub7130
%1121 = sext i32 %cond7133 to i64
br label %while.cond7134
while.cond7134: ; preds = %while.cond7134, %if.then7119
%indvars.iv = phi i64 [ %indvars.iv.next, %while.cond7134 ], [ %1121, %if.then7119 ]
%arrayidx7136 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %indvars.iv
%1122 = bitcast %union.rec** %arrayidx7136 to %struct.word_type**
%1123 = load %struct.word_type*, %struct.word_type** %1122, align 8, !tbaa !8
%otype7140 = getelementptr inbounds %struct.word_type, %struct.word_type* %1123, i64 0, i32 1, i32 0, i32 0
%1124 = load i8, i8* %otype7140, align 8, !tbaa !10
%1125 = icmp ult i8 %1124, 102
%indvars.iv.next = add i64 %indvars.iv, -1
br i1 %1125, label %while.cond7134, label %while.end7178, !llvm.loop !37
while.end7178: ; preds = %while.cond7134
switch i8 %1124, label %if.end8289 [
i8 102, label %land.lhs.true7198
i8 104, label %land.lhs.true7198
]
land.lhs.true7198: ; preds = %while.end7178, %while.end7178
%sub7199 = shl i64 %indvars.iv, 32
%sext10499 = add i64 %sub7199, -4294967296
%idxprom7200 = ashr exact i64 %sext10499, 32
%arrayidx7201 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom7200
%1126 = bitcast %union.rec** %arrayidx7201 to %struct.word_type**
%1127 = load %struct.word_type*, %struct.word_type** %1126, align 8, !tbaa !8
%otype7205 = getelementptr inbounds %struct.word_type, %struct.word_type* %1127, i64 0, i32 1, i32 0, i32 0
%1128 = load i8, i8* %otype7205, align 8, !tbaa !10
%cmp7207 = icmp eq i8 %1128, 110
br i1 %cmp7207, label %if.then7209, label %if.end8289
if.then7209: ; preds = %land.lhs.true7198
%1129 = and i24 %bf.load7124, 8
%tobool7218.not = icmp eq i24 %1129, 0
br i1 %tobool7218.not, label %if.end7502, label %if.then7219
if.then7219: ; preds = %if.then7209
%1130 = load i8, i8* getelementptr inbounds ([0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 2), align 1, !tbaa !10
%conv7220 = zext i8 %1130 to i32
store i32 %conv7220, i32* @zz_size, align 4, !tbaa !4
%1131 = zext i8 %1130 to i64
%arrayidx7228 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %1131
%1132 = load %union.rec*, %union.rec** %arrayidx7228, align 8, !tbaa !8
%cmp7229 = icmp eq %union.rec* %1132, null
br i1 %cmp7229, label %if.then7231, label %if.else7233
if.then7231: ; preds = %if.then7219
%1133 = load %struct.FILE_POS*, %struct.FILE_POS** @no_fpos, align 8, !tbaa !8
%call7232 = call %union.rec* @GetMemory(i32 noundef %conv7220, %struct.FILE_POS* noundef %1133) #5
store %union.rec* %call7232, %union.rec** @zz_hold, align 8, !tbaa !8
br label %if.end7243
if.else7233: ; preds = %if.then7219
store %union.rec* %1132, %union.rec** @zz_hold, align 8, !tbaa !8
%opred7239 = getelementptr inbounds %union.rec, %union.rec* %1132, i64 0, i32 0, i32 0, i64 0, i32 0
%1134 = load %union.rec*, %union.rec** %opred7239, align 8, !tbaa !10
store %union.rec* %1134, %union.rec** %arrayidx7228, align 8, !tbaa !8
br label %if.end7243
if.end7243: ; preds = %if.else7233, %if.then7231
%.in10500 = phi %union.rec* [ %call7232, %if.then7231 ], [ %1132, %if.else7233 ]
%1135 = getelementptr inbounds %union.rec, %union.rec* %.in10500, i64 0, i32 0, i32 1, i32 0, i32 0
store i8 2, i8* %1135, align 8, !tbaa !10
%1136 = getelementptr inbounds %union.rec, %union.rec* %.in10500, i64 0, i32 0, i32 0, i64 1, i32 1
store %union.rec* %.in10500, %union.rec** %1136, align 8, !tbaa !10
%1137 = getelementptr inbounds %union.rec, %union.rec* %.in10500, i64 0, i32 0, i32 0, i64 1, i32 0
store %union.rec* %.in10500, %union.rec** %1137, align 8, !tbaa !10
%1138 = getelementptr inbounds %union.rec, %union.rec* %.in10500, i64 0, i32 0, i32 0, i64 0, i32 1
store %union.rec* %.in10500, %union.rec** %1138, align 8, !tbaa !10
%1139 = getelementptr %union.rec, %union.rec* %.in10500, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %.in10500, %union.rec** %1139, align 8, !tbaa !10
%1140 = load %union.rec*, %union.rec** @InputSym, align 8, !tbaa !8
%1141 = getelementptr inbounds %union.rec, %union.rec* %.in10500, i64 0, i32 0, i32 5
store %union.rec* %1140, %union.rec** %1141, align 8, !tbaa !10
%1142 = load %struct.word_type*, %struct.word_type** %79, align 8, !tbaa !8
%ofile_num7269 = getelementptr inbounds %struct.word_type, %struct.word_type* %1142, i64 0, i32 1, i32 0, i32 2
%1143 = load i16, i16* %ofile_num7269, align 2, !tbaa !10
%1144 = getelementptr inbounds %union.rec, %union.rec* %.in10500, i64 0, i32 0, i32 1, i32 0, i32 2
store i16 %1143, i16* %1144, align 2, !tbaa !10
%oline_num7277 = getelementptr inbounds %struct.word_type, %struct.word_type* %1142, i64 0, i32 1, i32 0, i32 3
%bf.load7278 = load i32, i32* %oline_num7277, align 4
%bf.clear7279 = and i32 %bf.load7278, 1048575
%1145 = getelementptr inbounds %union.rec, %union.rec* %.in10500, i64 0, i32 0, i32 1, i32 0, i32 3
%bf.load7284 = load i32, i32* %1145, align 4
%bf.clear7286 = and i32 %bf.load7284, -1048576
%bf.set7287 = or i32 %bf.clear7286, %bf.clear7279
store i32 %bf.set7287, i32* %1145, align 4
%bf.load7292 = load i32, i32* %oline_num7277, align 4
%bf.lshr7293 = and i32 %bf.load7292, -1048576
%bf.set7302 = or i32 %bf.lshr7293, %bf.clear7279
store i32 %bf.set7302, i32* %1145, align 4
%tobool7303.not = icmp eq i32 %obj_prev.38, 0
br i1 %tobool7303.not, label %if.end7485, label %if.then7304
if.then7304: ; preds = %if.end7243
%1146 = getelementptr inbounds %union.rec, %union.rec* %.in10500, i64 0, i32 0, i32 2
%os217309 = bitcast %union.SECOND_UNION* %1146 to %struct.anon.0*
%ohspace7310 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os217309, i64 0, i32 1
%1147 = load i8, i8* %ohspace7310, align 1, !tbaa !10
%conv7311 = zext i8 %1147 to i32
%ovspace7315 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os217309, i64 0, i32 2
%1148 = load i8, i8* %ovspace7315, align 2, !tbaa !10
%conv7316 = zext i8 %1148 to i32
%add7317 = sub nsw i32 0, %conv7316
%cmp7318.not = icmp eq i32 %conv7311, %add7317
%cmp7330 = icmp eq i32 %obj_prev.38, 2
%.10157 = select i1 %cmp7330, i8 7, i8 103
%typ7305.0 = select i1 %cmp7318.not, i32 101, i32 100
%prec7306.0 = select i1 %cmp7318.not, i8 %.10157, i8 7
br label %land.rhs7338
land.rhs7338: ; preds = %while.body7349, %if.then7304
%1149 = load i32, i32* @ttop, align 4, !tbaa !4
%idxprom7339 = sext i32 %1149 to i64
%arrayidx7340 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom7339
%1150 = bitcast %union.rec** %arrayidx7340 to %struct.word_type**
%1151 = load %struct.word_type*, %struct.word_type** %1150, align 8, !tbaa !8
%ou27342 = getelementptr inbounds %struct.word_type, %struct.word_type* %1151, i64 0, i32 2
%oprecedence7344 = bitcast %union.SECOND_UNION* %ou27342 to i8*
%1152 = load i8, i8* %oprecedence7344, align 8, !tbaa !10
%cmp7346.not = icmp ugt i8 %prec7306.0, %1152
br i1 %cmp7346.not, label %if.then7353, label %while.body7349
while.body7349: ; preds = %land.rhs7338
%call7350 = call fastcc i32 @Reduce()
%tobool7337.not = icmp eq i32 %call7350, 0
br i1 %tobool7337.not, label %if.end7485, label %land.rhs7338, !llvm.loop !38
if.then7353: ; preds = %land.rhs7338
%1153 = zext i32 %typ7305.0 to i64
%arrayidx7355 = getelementptr inbounds [0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 %1153
%1154 = load i8, i8* %arrayidx7355, align 1, !tbaa !10
%conv7356 = zext i8 %1154 to i32
store i32 %conv7356, i32* @zz_size, align 4, !tbaa !4
%1155 = zext i8 %1154 to i64
%arrayidx7364 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %1155
%1156 = load %union.rec*, %union.rec** %arrayidx7364, align 8, !tbaa !8
%cmp7365 = icmp eq %union.rec* %1156, null
br i1 %cmp7365, label %if.then7367, label %if.else7369
if.then7367: ; preds = %if.then7353
%1157 = load %struct.FILE_POS*, %struct.FILE_POS** @no_fpos, align 8, !tbaa !8
%call7368 = call %union.rec* @GetMemory(i32 noundef %conv7356, %struct.FILE_POS* noundef %1157) #5
store %union.rec* %call7368, %union.rec** @zz_hold, align 8, !tbaa !8
%.pre10463 = load i32, i32* @ttop, align 4, !tbaa !4
br label %if.end7379
if.else7369: ; preds = %if.then7353
store %union.rec* %1156, %union.rec** @zz_hold, align 8, !tbaa !8
%opred7375 = getelementptr inbounds %union.rec, %union.rec* %1156, i64 0, i32 0, i32 0, i64 0, i32 0
%1158 = load %union.rec*, %union.rec** %opred7375, align 8, !tbaa !10
store %union.rec* %1158, %union.rec** %arrayidx7364, align 8, !tbaa !8
br label %if.end7379
if.end7379: ; preds = %if.else7369, %if.then7367
%1159 = phi i32 [ %.pre10463, %if.then7367 ], [ %1149, %if.else7369 ]
%.in10502 = phi %union.rec* [ %call7368, %if.then7367 ], [ %1156, %if.else7369 ]
%conv7380 = trunc i32 %typ7305.0 to i8
%1160 = getelementptr inbounds %union.rec, %union.rec* %.in10502, i64 0, i32 0, i32 1, i32 0, i32 0
store i8 %conv7380, i8* %1160, align 8, !tbaa !10
%1161 = getelementptr inbounds %union.rec, %union.rec* %.in10502, i64 0, i32 0, i32 0, i64 1, i32 1
store %union.rec* %.in10502, %union.rec** %1161, align 8, !tbaa !10
%1162 = getelementptr inbounds %union.rec, %union.rec* %.in10502, i64 0, i32 0, i32 0, i64 1, i32 0
store %union.rec* %.in10502, %union.rec** %1162, align 8, !tbaa !10
%1163 = getelementptr inbounds %union.rec, %union.rec* %.in10502, i64 0, i32 0, i32 0, i64 0, i32 1
store %union.rec* %.in10502, %union.rec** %1163, align 8, !tbaa !10
%1164 = getelementptr %union.rec, %union.rec* %.in10502, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %.in10502, %union.rec** %1164, align 8, !tbaa !10
%1165 = getelementptr inbounds %union.rec, %union.rec* %.in10502, i64 0, i32 0, i32 2
%oprecedence7405 = bitcast %union.SECOND_UNION* %1165 to i8*
store i8 %prec7306.0, i8* %oprecedence7405, align 8, !tbaa !10
%os57422 = bitcast %union.rec* %.in10502 to %struct.gapobj_type*
%1166 = getelementptr inbounds %struct.gapobj_type, %struct.gapobj_type* %os57422, i64 0, i32 3, i32 0
%bf.load7424 = load i16, i16* %1166, align 4
%bf.clear7430 = and i16 %bf.load7424, -769
%bf.set7431 = or i16 %bf.clear7430, 512
store i16 %bf.set7431, i16* %1166, align 4
%inc7469 = add nsw i32 %1159, 1
store i32 %inc7469, i32* @ttop, align 4, !tbaa !4
%cmp7470 = icmp slt i32 %1159, 99
br i1 %cmp7470, label %if.then7472, label %if.else7475
if.then7472: ; preds = %if.end7379
%idxprom7473 = sext i32 %inc7469 to i64
%arrayidx7474 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom7473
store %union.rec* %.in10502, %union.rec** %arrayidx7474, align 8, !tbaa !8
br label %if.end7485
if.else7475: ; preds = %if.end7379
%idxprom747710286 = zext i32 %1159 to i64
%arrayidx7478 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom747710286
%1167 = bitcast %union.rec** %arrayidx7478 to %struct.word_type**
%1168 = load %struct.word_type*, %struct.word_type** %1167, align 8, !tbaa !8
%ofpos7481 = getelementptr inbounds %struct.word_type, %struct.word_type* %1168, i64 0, i32 1, i32 0
%call7482 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 2, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos7481) #5
br label %if.end7485
if.end7485: ; preds = %if.else7475, %if.then7472, %while.body7349, %if.end7243
%tmp.2.in.in = phi %union.rec* [ %.in10500, %if.end7243 ], [ %.in10502, %if.then7472 ], [ %.in10502, %if.else7475 ], [ %.in10500, %while.body7349 ]
store %union.rec* %tmp.2.in.in, %union.rec** @zz_hold, align 8, !tbaa !8
%1169 = load i32, i32* @otop, align 4, !tbaa !4
%inc7486 = add nsw i32 %1169, 1
store i32 %inc7486, i32* @otop, align 4, !tbaa !4
%cmp7487 = icmp slt i32 %1169, 99
br i1 %cmp7487, label %if.then7489, label %if.else7492
if.then7489: ; preds = %if.end7485
%idxprom7490 = sext i32 %inc7486 to i64
%arrayidx7491 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom7490
store %union.rec* %tmp.2.in.in, %union.rec** %arrayidx7491, align 8, !tbaa !8
br label %if.end7500
if.else7492: ; preds = %if.end7485
%idxprom749410285 = zext i32 %1169 to i64
%arrayidx7495 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom749410285
%1170 = bitcast %union.rec** %arrayidx7495 to %struct.word_type**
%1171 = load %struct.word_type*, %struct.word_type** %1170, align 8, !tbaa !8
%ofpos7498 = getelementptr inbounds %struct.word_type, %struct.word_type* %1171, i64 0, i32 1, i32 0
%call7499 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 1, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos7498) #5
br label %if.end7500
if.end7500: ; preds = %if.else7492, %if.then7489
%call7501 = call fastcc i32 @Reduce()
br label %if.end7502
if.end7502: ; preds = %if.end7500, %if.then7209
%1172 = load i32, i32* @otop, align 4, !tbaa !4
%dec7503 = add nsw i32 %1172, -1
store i32 %dec7503, i32* @otop, align 4, !tbaa !4
%idxprom7504 = sext i32 %1172 to i64
%arrayidx7505 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom7504
%1173 = load %union.rec*, %union.rec** %arrayidx7505, align 8, !tbaa !8
%call7506 = call %union.rec* @TransferBegin(%union.rec* noundef %1173) #5
%otype7510 = getelementptr inbounds %union.rec, %union.rec* %call7506, i64 0, i32 0, i32 1, i32 0, i32 0
%1174 = load i8, i8* %otype7510, align 8, !tbaa !10
%cmp7512 = icmp eq i8 %1174, 2
br i1 %cmp7512, label %if.then7514, label %if.end8250
if.then7514: ; preds = %if.end7502
%bf.load7519 = load i24, i24* %958, align 1
%1175 = and i24 %bf.load7519, 8
%tobool7523.not = icmp eq i24 %1175, 0
br i1 %tobool7523.not, label %if.else8050, label %if.then7524
if.then7524: ; preds = %if.then7514
%opred7528 = getelementptr inbounds %union.rec, %union.rec* %call7506, i64 0, i32 0, i32 0, i64 0, i32 0
%1176 = bitcast %union.rec* %call7506 to %struct.word_type**
%1177 = load %struct.word_type*, %struct.word_type** %1176, align 8, !tbaa !10
%opred7532 = getelementptr inbounds %struct.word_type, %struct.word_type* %1177, i64 0, i32 0, i64 1, i32 0
%1178 = bitcast %struct.word_type* %1177 to %union.rec*
br label %for.cond7533
for.cond7533: ; preds = %for.inc7542, %if.then7524
%tmp.3.in = phi %union.rec** [ %opred7532, %if.then7524 ], [ %opred7546, %for.inc7542 ]
%tmp.3 = load %union.rec*, %union.rec** %tmp.3.in, align 8, !tbaa !10
%otype7537 = getelementptr inbounds %union.rec, %union.rec* %tmp.3, i64 0, i32 0, i32 1, i32 0, i32 0
%1179 = load i8, i8* %otype7537, align 8, !tbaa !10
switch i8 %1179, label %if.then7565 [
i8 0, label %for.inc7542
i8 10, label %land.lhs.true7555
]
for.inc7542: ; preds = %for.cond7533
%opred7546 = getelementptr inbounds %union.rec, %union.rec* %tmp.3, i64 0, i32 0, i32 0, i64 1, i32 0
br label %for.cond7533, !llvm.loop !39
land.lhs.true7555: ; preds = %for.cond7533
%1180 = getelementptr inbounds %union.rec, %union.rec* %tmp.3, i64 0, i32 0, i32 5
%1181 = bitcast %union.rec** %1180 to %struct.word_type**
%1182 = load %struct.word_type*, %struct.word_type** %1181, align 8, !tbaa !10
%otype7561 = getelementptr inbounds %struct.word_type, %struct.word_type* %1182, i64 0, i32 1, i32 0, i32 0
%1183 = load i8, i8* %otype7561, align 8, !tbaa !10
%cmp7563 = icmp eq i8 %1183, -110
br i1 %cmp7563, label %if.end7567, label %if.then7565
if.then7565: ; preds = %land.lhs.true7555, %for.cond7533
%1184 = load %struct.FILE_POS*, %struct.FILE_POS** @no_fpos, align 8, !tbaa !8
%call7566 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 1, i32 noundef 2, i8* noundef getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 noundef 0, %struct.FILE_POS* noundef %1184, i8* noundef getelementptr inbounds ([24 x i8], [24 x i8]* @.str.49, i64 0, i64 0)) #5
%.pre10464 = load %union.rec*, %union.rec** %opred7528, align 8, !tbaa !10
br label %if.end7567
if.end7567: ; preds = %if.then7565, %land.lhs.true7555
%1185 = phi %union.rec* [ %.pre10464, %if.then7565 ], [ %1178, %land.lhs.true7555 ]
store %union.rec* %1185, %union.rec** @xx_link, align 8, !tbaa !8
%osucc7575 = getelementptr inbounds %union.rec, %union.rec* %1185, i64 0, i32 0, i32 0, i64 1, i32 1
%1186 = load %union.rec*, %union.rec** %osucc7575, align 8, !tbaa !10
%cmp7576 = icmp eq %union.rec* %1186, %1185
br i1 %cmp7576, label %cond.end7608, label %cond.false7579
cond.false7579: ; preds = %if.end7567
store %union.rec* %1186, %union.rec** @zz_res, align 8, !tbaa !8
%1187 = getelementptr inbounds %union.rec, %union.rec* %1185, i64 0, i32 0, i32 0, i64 1, i32 0
%1188 = load %union.rec*, %union.rec** %1187, align 8, !tbaa !10
%opred7591 = getelementptr inbounds %union.rec, %union.rec* %1186, i64 0, i32 0, i32 0, i64 1, i32 0
store %union.rec* %1188, %union.rec** %opred7591, align 8, !tbaa !10
%1189 = bitcast %union.rec** %1187 to %struct.word_type**
%1190 = load %struct.word_type*, %struct.word_type** %1189, align 8, !tbaa !10
%osucc7599 = getelementptr inbounds %struct.word_type, %struct.word_type* %1190, i64 0, i32 0, i64 1, i32 1
store %union.rec* %1186, %union.rec** %osucc7599, align 8, !tbaa !10
store %union.rec* %1185, %union.rec** %osucc7575, align 8, !tbaa !10
%opred7607 = getelementptr inbounds %union.rec, %union.rec* %1185, i64 0, i32 0, i32 0, i64 1, i32 0
store %union.rec* %1185, %union.rec** %opred7607, align 8, !tbaa !10
br label %cond.end7608
cond.end7608: ; preds = %cond.false7579, %if.end7567
%cond7609 = phi %union.rec* [ %1186, %cond.false7579 ], [ null, %if.end7567 ]
store %union.rec* %cond7609, %union.rec** @xx_tmp, align 8, !tbaa !8
store %union.rec* %1185, %union.rec** @zz_hold, align 8, !tbaa !8
%osucc7613 = getelementptr inbounds %union.rec, %union.rec* %1185, i64 0, i32 0, i32 0, i64 0, i32 1
%1191 = load %union.rec*, %union.rec** %osucc7613, align 8, !tbaa !10
%cmp7614 = icmp eq %union.rec* %1191, %1185
br i1 %cmp7614, label %cond.end7646, label %cond.false7617
cond.false7617: ; preds = %cond.end7608
store %union.rec* %1191, %union.rec** @zz_res, align 8, !tbaa !8
%opred7625 = getelementptr %union.rec, %union.rec* %1185, i64 0, i32 0, i32 0, i64 0, i32 0
%1192 = load %union.rec*, %union.rec** %opred7625, align 8, !tbaa !10
%opred7629 = getelementptr inbounds %union.rec, %union.rec* %1191, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %1192, %union.rec** %opred7629, align 8, !tbaa !10
%1193 = load %union.rec*, %union.rec** @zz_res, align 8, !tbaa !8
%1194 = load %struct.word_type**, %struct.word_type*** bitcast (%union.rec** @zz_hold to %struct.word_type***), align 8, !tbaa !8
%1195 = load %struct.word_type*, %struct.word_type** %1194, align 8, !tbaa !10
%osucc7637 = getelementptr inbounds %struct.word_type, %struct.word_type* %1195, i64 0, i32 0, i64 0, i32 1
store %union.rec* %1193, %union.rec** %osucc7637, align 8, !tbaa !10
%osucc7641 = getelementptr inbounds %struct.word_type*, %struct.word_type** %1194, i64 1
%1196 = bitcast %struct.word_type** %osucc7641 to %struct.word_type***
store %struct.word_type** %1194, %struct.word_type*** %1196, align 8, !tbaa !10
%1197 = bitcast %struct.word_type** %1194 to %struct.word_type***
store %struct.word_type** %1194, %struct.word_type*** %1197, align 8, !tbaa !10
%.pre10465 = load %union.rec*, %union.rec** @xx_link, align 8, !tbaa !8
br label %cond.end7646
cond.end7646: ; preds = %cond.false7617, %cond.end7608
%1198 = phi %union.rec* [ %1185, %cond.end7608 ], [ %.pre10465, %cond.false7617 ]
store %union.rec* %1198, %union.rec** @zz_hold, align 8, !tbaa !8
%otype7651 = getelementptr inbounds %union.rec, %union.rec* %1198, i64 0, i32 0, i32 1, i32 0, i32 0
%1199 = load i8, i8* %otype7651, align 8, !tbaa !10
%.off10201 = add i8 %1199, -11
%switch10202 = icmp ult i8 %.off10201, 2
%1200 = getelementptr inbounds %union.rec, %union.rec* %1198, i64 0, i32 0, i32 1, i32 0, i32 1
%idxprom7674 = zext i8 %1199 to i64
%arrayidx7675 = getelementptr inbounds [0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 %idxprom7674
%cond7678.in.in = select i1 %switch10202, i8* %1200, i8* %arrayidx7675
%cond7678.in = load i8, i8* %cond7678.in.in, align 1, !tbaa !10
%cond7678 = zext i8 %cond7678.in to i32
store i32 %cond7678, i32* @zz_size, align 4, !tbaa !4
%1201 = zext i8 %cond7678.in to i64
%arrayidx7680 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %1201
%1202 = load %union.rec*, %union.rec** %arrayidx7680, align 8, !tbaa !8
%opred7684 = getelementptr %union.rec, %union.rec* %1198, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %1202, %union.rec** %opred7684, align 8, !tbaa !10
%1203 = load %union.rec*, %union.rec** @zz_hold, align 8, !tbaa !8
%1204 = load i32, i32* @zz_size, align 4, !tbaa !4
%idxprom7685 = sext i32 %1204 to i64
%arrayidx7686 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %idxprom7685
store %union.rec* %1203, %union.rec** %arrayidx7686, align 8, !tbaa !8
%1205 = load %union.rec*, %union.rec** @xx_tmp, align 8, !tbaa !8
%osucc7690 = getelementptr inbounds %union.rec, %union.rec* %1205, i64 0, i32 0, i32 0, i64 1, i32 1
%1206 = load %union.rec*, %union.rec** %osucc7690, align 8, !tbaa !10
%cmp7691 = icmp eq %union.rec* %1206, %1205
br i1 %cmp7691, label %if.then7693, label %if.end7695
if.then7693: ; preds = %cond.end7646
%call7694 = call i32 @DisposeObject(%union.rec* noundef nonnull %1205) #5
br label %if.end7695
if.end7695: ; preds = %if.then7693, %cond.end7646
%bf.load7700 = load i24, i24* %958, align 1
%1207 = and i24 %bf.load7700, 4
%tobool7704.not = icmp eq i24 %1207, 0
br i1 %tobool7704.not, label %if.end8034, label %if.then7705
if.then7705: ; preds = %if.end7695
%osucc7709 = getelementptr inbounds %union.rec, %union.rec* %call7506, i64 0, i32 0, i32 0, i64 0, i32 1
%1208 = bitcast %union.rec** %osucc7709 to %struct.word_type**
%1209 = load %struct.word_type*, %struct.word_type** %1208, align 8, !tbaa !10
%opred7713 = getelementptr inbounds %struct.word_type, %struct.word_type* %1209, i64 0, i32 0, i64 1, i32 0
br label %for.cond7714
for.cond7714: ; preds = %for.inc7723, %if.then7705
%tmp.4.in = phi %union.rec** [ %opred7713, %if.then7705 ], [ %opred7727, %for.inc7723 ]
%tmp.4 = load %union.rec*, %union.rec** %tmp.4.in, align 8, !tbaa !10
%otype7718 = getelementptr inbounds %union.rec, %union.rec* %tmp.4, i64 0, i32 0, i32 1, i32 0, i32 0
%1210 = load i8, i8* %otype7718, align 8, !tbaa !10
switch i8 %1210, label %if.then7746 [
i8 0, label %for.inc7723
i8 10, label %land.lhs.true7736
]
for.inc7723: ; preds = %for.cond7714
%opred7727 = getelementptr inbounds %union.rec, %union.rec* %tmp.4, i64 0, i32 0, i32 0, i64 1, i32 0
br label %for.cond7714, !llvm.loop !40
land.lhs.true7736: ; preds = %for.cond7714
%1211 = getelementptr inbounds %union.rec, %union.rec* %tmp.4, i64 0, i32 0, i32 5
%1212 = bitcast %union.rec** %1211 to %struct.word_type**
%1213 = load %struct.word_type*, %struct.word_type** %1212, align 8, !tbaa !10
%otype7742 = getelementptr inbounds %struct.word_type, %struct.word_type* %1213, i64 0, i32 1, i32 0, i32 0
%1214 = load i8, i8* %otype7742, align 8, !tbaa !10
%cmp7744 = icmp eq i8 %1214, -112
br i1 %cmp7744, label %if.end7748, label %if.then7746
if.then7746: ; preds = %land.lhs.true7736, %for.cond7714
%1215 = load %struct.FILE_POS*, %struct.FILE_POS** @no_fpos, align 8, !tbaa !8
%call7747 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 1, i32 noundef 2, i8* noundef getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 noundef 0, %struct.FILE_POS* noundef %1215, i8* noundef getelementptr inbounds ([24 x i8], [24 x i8]* @.str.50, i64 0, i64 0)) #5
br label %if.end7748
if.end7748: ; preds = %if.then7746, %land.lhs.true7736
%osucc7752 = getelementptr inbounds %union.rec, %union.rec* %tmp.4, i64 0, i32 0, i32 0, i64 0, i32 1
%1216 = bitcast %union.rec** %osucc7752 to %struct.word_type**
%1217 = load %struct.word_type*, %struct.word_type** %1216, align 8, !tbaa !10
%opred7756 = getelementptr inbounds %struct.word_type, %struct.word_type* %1217, i64 0, i32 0, i64 1, i32 0
br label %for.cond7757
for.cond7757: ; preds = %for.cond7757, %if.end7748
%tmp.5.in = phi %union.rec** [ %opred7756, %if.end7748 ], [ %opred7770, %for.cond7757 ]
%tmp.5 = load %union.rec*, %union.rec** %tmp.5.in, align 8, !tbaa !10
%otype7761 = getelementptr inbounds %union.rec, %union.rec* %tmp.5, i64 0, i32 0, i32 1, i32 0, i32 0
%1218 = load i8, i8* %otype7761, align 8, !tbaa !10
%cmp7763 = icmp eq i8 %1218, 0
%opred7770 = getelementptr inbounds %union.rec, %union.rec* %tmp.5, i64 0, i32 0, i32 0, i64 1, i32 0
br i1 %cmp7763, label %for.cond7757, label %for.end7771, !llvm.loop !41
for.end7771: ; preds = %for.cond7757
store %union.rec* %tmp.5, %union.rec** @zz_hold, align 8, !tbaa !8
%1219 = load i32, i32* @otop, align 4, !tbaa !4
%inc7772 = add nsw i32 %1219, 1
store i32 %inc7772, i32* @otop, align 4, !tbaa !4
%cmp7773 = icmp slt i32 %1219, 99
br i1 %cmp7773, label %if.then7775, label %if.else7778
if.then7775: ; preds = %for.end7771
%idxprom7776 = sext i32 %inc7772 to i64
%arrayidx7777 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom7776
store %union.rec* %tmp.5, %union.rec** %arrayidx7777, align 8, !tbaa !8
br label %if.end7786
if.else7778: ; preds = %for.end7771
%idxprom778010283 = zext i32 %1219 to i64
%arrayidx7781 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom778010283
%1220 = bitcast %union.rec** %arrayidx7781 to %struct.word_type**
%1221 = load %struct.word_type*, %struct.word_type** %1220, align 8, !tbaa !8
%ofpos7784 = getelementptr inbounds %struct.word_type, %struct.word_type* %1221, i64 0, i32 1, i32 0
%call7785 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 1, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos7784) #5
br label %if.end7786
if.end7786: ; preds = %if.else7778, %if.then7775
%osucc7790 = getelementptr inbounds %union.rec, %union.rec* %tmp.5, i64 0, i32 0, i32 0, i64 1, i32 1
%1222 = load %union.rec*, %union.rec** %osucc7790, align 8, !tbaa !10
store %union.rec* %1222, %union.rec** @xx_link, align 8, !tbaa !8
%osucc7794 = getelementptr inbounds %union.rec, %union.rec* %1222, i64 0, i32 0, i32 0, i64 1, i32 1
%1223 = load %union.rec*, %union.rec** %osucc7794, align 8, !tbaa !10
%cmp7795 = icmp eq %union.rec* %1223, %1222
br i1 %cmp7795, label %cond.end7827, label %cond.false7798
cond.false7798: ; preds = %if.end7786
store %union.rec* %1223, %union.rec** @zz_res, align 8, !tbaa !8
%1224 = getelementptr inbounds %union.rec, %union.rec* %1222, i64 0, i32 0, i32 0, i64 1, i32 0
%1225 = load %union.rec*, %union.rec** %1224, align 8, !tbaa !10
%opred7810 = getelementptr inbounds %union.rec, %union.rec* %1223, i64 0, i32 0, i32 0, i64 1, i32 0
store %union.rec* %1225, %union.rec** %opred7810, align 8, !tbaa !10
%1226 = bitcast %union.rec** %1224 to %struct.word_type**
%1227 = load %struct.word_type*, %struct.word_type** %1226, align 8, !tbaa !10
%osucc7818 = getelementptr inbounds %struct.word_type, %struct.word_type* %1227, i64 0, i32 0, i64 1, i32 1
store %union.rec* %1223, %union.rec** %osucc7818, align 8, !tbaa !10
store %union.rec* %1222, %union.rec** %osucc7794, align 8, !tbaa !10
%opred7826 = getelementptr inbounds %union.rec, %union.rec* %1222, i64 0, i32 0, i32 0, i64 1, i32 0
store %union.rec* %1222, %union.rec** %opred7826, align 8, !tbaa !10
br label %cond.end7827
cond.end7827: ; preds = %cond.false7798, %if.end7786
store %union.rec* %1222, %union.rec** @zz_hold, align 8, !tbaa !8
%osucc7832 = getelementptr inbounds %union.rec, %union.rec* %1222, i64 0, i32 0, i32 0, i64 0, i32 1
%1228 = load %union.rec*, %union.rec** %osucc7832, align 8, !tbaa !10
%cmp7833 = icmp eq %union.rec* %1228, %1222
br i1 %cmp7833, label %cond.end7865, label %cond.false7836
cond.false7836: ; preds = %cond.end7827
store %union.rec* %1228, %union.rec** @zz_res, align 8, !tbaa !8
%opred7844 = getelementptr %union.rec, %union.rec* %1222, i64 0, i32 0, i32 0, i64 0, i32 0
%1229 = load %union.rec*, %union.rec** %opred7844, align 8, !tbaa !10
%opred7848 = getelementptr inbounds %union.rec, %union.rec* %1228, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %1229, %union.rec** %opred7848, align 8, !tbaa !10
%1230 = load %union.rec*, %union.rec** @zz_res, align 8, !tbaa !8
%1231 = load %struct.word_type**, %struct.word_type*** bitcast (%union.rec** @zz_hold to %struct.word_type***), align 8, !tbaa !8
%1232 = load %struct.word_type*, %struct.word_type** %1231, align 8, !tbaa !10
%osucc7856 = getelementptr inbounds %struct.word_type, %struct.word_type* %1232, i64 0, i32 0, i64 0, i32 1
store %union.rec* %1230, %union.rec** %osucc7856, align 8, !tbaa !10
%osucc7860 = getelementptr inbounds %struct.word_type*, %struct.word_type** %1231, i64 1
%1233 = bitcast %struct.word_type** %osucc7860 to %struct.word_type***
store %struct.word_type** %1231, %struct.word_type*** %1233, align 8, !tbaa !10
%1234 = bitcast %struct.word_type** %1231 to %struct.word_type***
store %struct.word_type** %1231, %struct.word_type*** %1234, align 8, !tbaa !10
%.pre10466 = load %union.rec*, %union.rec** @xx_link, align 8, !tbaa !8
br label %cond.end7865
cond.end7865: ; preds = %cond.false7836, %cond.end7827
%1235 = phi %union.rec* [ %1222, %cond.end7827 ], [ %.pre10466, %cond.false7836 ]
store %union.rec* %1235, %union.rec** @zz_hold, align 8, !tbaa !8
%otype7870 = getelementptr inbounds %union.rec, %union.rec* %1235, i64 0, i32 0, i32 1, i32 0, i32 0
%1236 = load i8, i8* %otype7870, align 8, !tbaa !10
%.off10203 = add i8 %1236, -11
%switch10204 = icmp ult i8 %.off10203, 2
%1237 = getelementptr inbounds %union.rec, %union.rec* %1235, i64 0, i32 0, i32 1, i32 0, i32 1
%idxprom7893 = zext i8 %1236 to i64
%arrayidx7894 = getelementptr inbounds [0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 %idxprom7893
%cond7897.in.in = select i1 %switch10204, i8* %1237, i8* %arrayidx7894
%cond7897.in = load i8, i8* %cond7897.in.in, align 1, !tbaa !10
%cond7897 = zext i8 %cond7897.in to i32
store i32 %cond7897, i32* @zz_size, align 4, !tbaa !4
%1238 = zext i8 %cond7897.in to i64
%arrayidx7899 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %1238
%1239 = load %union.rec*, %union.rec** %arrayidx7899, align 8, !tbaa !8
%opred7903 = getelementptr %union.rec, %union.rec* %1235, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %1239, %union.rec** %opred7903, align 8, !tbaa !10
%1240 = load %union.rec*, %union.rec** @zz_hold, align 8, !tbaa !8
%1241 = load i32, i32* @zz_size, align 4, !tbaa !4
%idxprom7904 = sext i32 %1241 to i64
%arrayidx7905 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %idxprom7904
store %union.rec* %1240, %union.rec** %arrayidx7905, align 8, !tbaa !8
%1242 = load %union.rec*, %union.rec** %osucc7709, align 8, !tbaa !10
store %union.rec* %1242, %union.rec** @xx_link, align 8, !tbaa !8
%osucc7913 = getelementptr inbounds %union.rec, %union.rec* %1242, i64 0, i32 0, i32 0, i64 1, i32 1
%1243 = load %union.rec*, %union.rec** %osucc7913, align 8, !tbaa !10
%cmp7914 = icmp eq %union.rec* %1243, %1242
br i1 %cmp7914, label %cond.end7946, label %cond.false7917
cond.false7917: ; preds = %cond.end7865
store %union.rec* %1243, %union.rec** @zz_res, align 8, !tbaa !8
%1244 = getelementptr inbounds %union.rec, %union.rec* %1242, i64 0, i32 0, i32 0, i64 1, i32 0
%1245 = load %union.rec*, %union.rec** %1244, align 8, !tbaa !10
%opred7929 = getelementptr inbounds %union.rec, %union.rec* %1243, i64 0, i32 0, i32 0, i64 1, i32 0
store %union.rec* %1245, %union.rec** %opred7929, align 8, !tbaa !10
%1246 = bitcast %union.rec** %1244 to %struct.word_type**
%1247 = load %struct.word_type*, %struct.word_type** %1246, align 8, !tbaa !10
%osucc7937 = getelementptr inbounds %struct.word_type, %struct.word_type* %1247, i64 0, i32 0, i64 1, i32 1
store %union.rec* %1243, %union.rec** %osucc7937, align 8, !tbaa !10
store %union.rec* %1242, %union.rec** %osucc7913, align 8, !tbaa !10
%opred7945 = getelementptr inbounds %union.rec, %union.rec* %1242, i64 0, i32 0, i32 0, i64 1, i32 0
store %union.rec* %1242, %union.rec** %opred7945, align 8, !tbaa !10
br label %cond.end7946
cond.end7946: ; preds = %cond.false7917, %cond.end7865
%cond7947 = phi %union.rec* [ %1243, %cond.false7917 ], [ null, %cond.end7865 ]
store %union.rec* %cond7947, %union.rec** @xx_tmp, align 8, !tbaa !8
store %union.rec* %1242, %union.rec** @zz_hold, align 8, !tbaa !8
%osucc7951 = getelementptr inbounds %union.rec, %union.rec* %1242, i64 0, i32 0, i32 0, i64 0, i32 1
%1248 = load %union.rec*, %union.rec** %osucc7951, align 8, !tbaa !10
%cmp7952 = icmp eq %union.rec* %1248, %1242
br i1 %cmp7952, label %cond.end7984, label %cond.false7955
cond.false7955: ; preds = %cond.end7946
store %union.rec* %1248, %union.rec** @zz_res, align 8, !tbaa !8
%opred7963 = getelementptr %union.rec, %union.rec* %1242, i64 0, i32 0, i32 0, i64 0, i32 0
%1249 = load %union.rec*, %union.rec** %opred7963, align 8, !tbaa !10
%opred7967 = getelementptr inbounds %union.rec, %union.rec* %1248, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %1249, %union.rec** %opred7967, align 8, !tbaa !10
%1250 = load %union.rec*, %union.rec** @zz_res, align 8, !tbaa !8
%1251 = load %struct.word_type**, %struct.word_type*** bitcast (%union.rec** @zz_hold to %struct.word_type***), align 8, !tbaa !8
%1252 = load %struct.word_type*, %struct.word_type** %1251, align 8, !tbaa !10
%osucc7975 = getelementptr inbounds %struct.word_type, %struct.word_type* %1252, i64 0, i32 0, i64 0, i32 1
store %union.rec* %1250, %union.rec** %osucc7975, align 8, !tbaa !10
%osucc7979 = getelementptr inbounds %struct.word_type*, %struct.word_type** %1251, i64 1
%1253 = bitcast %struct.word_type** %osucc7979 to %struct.word_type***
store %struct.word_type** %1251, %struct.word_type*** %1253, align 8, !tbaa !10
%1254 = bitcast %struct.word_type** %1251 to %struct.word_type***
store %struct.word_type** %1251, %struct.word_type*** %1254, align 8, !tbaa !10
%.pre10467 = load %union.rec*, %union.rec** @xx_link, align 8, !tbaa !8
br label %cond.end7984
cond.end7984: ; preds = %cond.false7955, %cond.end7946
%1255 = phi %union.rec* [ %1242, %cond.end7946 ], [ %.pre10467, %cond.false7955 ]
store %union.rec* %1255, %union.rec** @zz_hold, align 8, !tbaa !8
%otype7989 = getelementptr inbounds %union.rec, %union.rec* %1255, i64 0, i32 0, i32 1, i32 0, i32 0
%1256 = load i8, i8* %otype7989, align 8, !tbaa !10
%.off10205 = add i8 %1256, -11
%switch10206 = icmp ult i8 %.off10205, 2
%1257 = getelementptr inbounds %union.rec, %union.rec* %1255, i64 0, i32 0, i32 1, i32 0, i32 1
%idxprom8012 = zext i8 %1256 to i64
%arrayidx8013 = getelementptr inbounds [0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 %idxprom8012
%cond8016.in.in = select i1 %switch10206, i8* %1257, i8* %arrayidx8013
%cond8016.in = load i8, i8* %cond8016.in.in, align 1, !tbaa !10
%cond8016 = zext i8 %cond8016.in to i32
store i32 %cond8016, i32* @zz_size, align 4, !tbaa !4
%1258 = zext i8 %cond8016.in to i64
%arrayidx8018 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %1258
%1259 = load %union.rec*, %union.rec** %arrayidx8018, align 8, !tbaa !8
%opred8022 = getelementptr %union.rec, %union.rec* %1255, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %1259, %union.rec** %opred8022, align 8, !tbaa !10
%1260 = load %union.rec*, %union.rec** @zz_hold, align 8, !tbaa !8
%1261 = load i32, i32* @zz_size, align 4, !tbaa !4
%idxprom8023 = sext i32 %1261 to i64
%arrayidx8024 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %idxprom8023
store %union.rec* %1260, %union.rec** %arrayidx8024, align 8, !tbaa !8
%1262 = load %union.rec*, %union.rec** @xx_tmp, align 8, !tbaa !8
%osucc8028 = getelementptr inbounds %union.rec, %union.rec* %1262, i64 0, i32 0, i32 0, i64 1, i32 1
%1263 = load %union.rec*, %union.rec** %osucc8028, align 8, !tbaa !10
%cmp8029 = icmp eq %union.rec* %1263, %1262
br i1 %cmp8029, label %if.then8031, label %if.end8034
if.then8031: ; preds = %cond.end7984
%call8032 = call i32 @DisposeObject(%union.rec* noundef nonnull %1262) #5
br label %if.end8034
if.end8034: ; preds = %if.then8031, %cond.end7984, %if.end7695
%1264 = load i32, i32* @ttop, align 4, !tbaa !4
%inc8035 = add nsw i32 %1264, 1
store i32 %inc8035, i32* @ttop, align 4, !tbaa !4
%cmp8036 = icmp slt i32 %1264, 99
br i1 %cmp8036, label %if.then8038, label %if.else8041
if.then8038: ; preds = %if.end8034
%idxprom8039 = sext i32 %inc8035 to i64
%arrayidx8040 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom8039
store %union.rec* %call7506, %union.rec** %arrayidx8040, align 8, !tbaa !8
br label %if.end8289
if.else8041: ; preds = %if.end8034
%idxprom804310282 = zext i32 %1264 to i64
%arrayidx8044 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom804310282
%1265 = bitcast %union.rec** %arrayidx8044 to %struct.word_type**
%1266 = load %struct.word_type*, %struct.word_type** %1265, align 8, !tbaa !8
%ofpos8047 = getelementptr inbounds %struct.word_type, %struct.word_type* %1266, i64 0, i32 1, i32 0
%call8048 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 2, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos8047) #5
br label %if.end8289
if.else8050: ; preds = %if.then7514
store %union.rec* %call7506, %union.rec** @zz_hold, align 8, !tbaa !8
%1267 = load i32, i32* @otop, align 4, !tbaa !4
%inc8051 = add nsw i32 %1267, 1
store i32 %inc8051, i32* @otop, align 4, !tbaa !4
%cmp8052 = icmp slt i32 %1267, 99
br i1 %cmp8052, label %if.then8054, label %if.else8057
if.then8054: ; preds = %if.else8050
%idxprom8055 = sext i32 %inc8051 to i64
%arrayidx8056 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom8055
store %union.rec* %call7506, %union.rec** %arrayidx8056, align 8, !tbaa !8
br label %if.end8289
if.else8057: ; preds = %if.else8050
%idxprom805910281 = zext i32 %1267 to i64
%arrayidx8060 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom805910281
%1268 = bitcast %union.rec** %arrayidx8060 to %struct.word_type**
%1269 = load %struct.word_type*, %struct.word_type** %1268, align 8, !tbaa !8
%ofpos8063 = getelementptr inbounds %struct.word_type, %struct.word_type* %1269, i64 0, i32 1, i32 0
%call8064 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 1, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos8063) #5
br label %if.end8289
if.end8250: ; preds = %if.end7502
%1270 = load i32, i32* @ttop, align 4, !tbaa !4
%inc8251 = add nsw i32 %1270, 1
store i32 %inc8251, i32* @ttop, align 4, !tbaa !4
%cmp8252 = icmp slt i32 %1270, 99
br i1 %cmp8252, label %if.then8254, label %if.else8257
if.then8254: ; preds = %if.end8250
%idxprom8255 = sext i32 %inc8251 to i64
%arrayidx8256 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom8255
store %union.rec* %call7506, %union.rec** %arrayidx8256, align 8, !tbaa !8
br label %if.end8265
if.else8257: ; preds = %if.end8250
%idxprom825910284 = zext i32 %1270 to i64
%arrayidx8260 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom825910284
%1271 = bitcast %union.rec** %arrayidx8260 to %struct.word_type**
%1272 = load %struct.word_type*, %struct.word_type** %1271, align 8, !tbaa !8
%ofpos8263 = getelementptr inbounds %struct.word_type, %struct.word_type* %1272, i64 0, i32 1, i32 0
%call8264 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 2, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos8263) #5
br label %if.end8265
if.end8265: ; preds = %if.else8257, %if.then8254
%bf.load8270 = load i24, i24* %958, align 1
%1273 = and i24 %bf.load8270, 8
%tobool8274.not = icmp eq i24 %1273, 0
br i1 %tobool8274.not, label %if.else8276, label %if.end8289
if.else8276: ; preds = %if.end8265
%call8277 = call fastcc i32 @Reduce()
%1274 = load i32, i32* @ttop, align 4, !tbaa !4
%cmp8278 = icmp eq i32 %1274, %4
br i1 %cmp8278, label %cleanup9179, label %if.end8289
if.end8289: ; preds = %if.else8276, %if.end8265, %if.else8057, %if.then8054, %if.else8041, %if.then8038, %land.lhs.true7198, %while.end7178, %lor.lhs.false7113, %land.lhs.true7099, %land.lhs.true7080, %if.end7078
%x.1 = phi %union.rec* [ %call7506, %if.else8276 ], [ %914, %land.lhs.true7198 ], [ %914, %lor.lhs.false7113 ], [ %914, %land.lhs.true7099 ], [ %914, %land.lhs.true7080 ], [ %914, %if.end7078 ], [ %914, %while.end7178 ], [ %call7506, %if.else8041 ], [ %call7506, %if.then8038 ], [ %call7506, %if.else8057 ], [ %call7506, %if.then8054 ], [ %call7506, %if.end8265 ]
%obj_prev.41 = phi i32 [ %call8277, %if.else8276 ], [ %obj_prev.38, %land.lhs.true7198 ], [ %obj_prev.38, %lor.lhs.false7113 ], [ %obj_prev.38, %land.lhs.true7099 ], [ %obj_prev.38, %land.lhs.true7080 ], [ %obj_prev.38, %if.end7078 ], [ %obj_prev.38, %while.end7178 ], [ 0, %if.else8041 ], [ 0, %if.then8038 ], [ 1, %if.else8057 ], [ 1, %if.then8054 ], [ 0, %if.end8265 ]
%1275 = getelementptr inbounds %union.rec, %union.rec* %916, i64 0, i32 0, i32 8
%1276 = load %union.rec*, %union.rec** %1275, align 8, !tbaa !10
%cmp8292.not = icmp eq %union.rec* %1276, null
br i1 %cmp8292.not, label %if.else8726, label %if.then8294
if.then8294: ; preds = %if.end8289
%1277 = load %struct.word_type*, %struct.word_type** %79, align 8, !tbaa !8
%otype8298 = getelementptr inbounds %struct.word_type, %struct.word_type* %1277, i64 0, i32 1, i32 0, i32 0
%1278 = load i8, i8* %otype8298, align 8, !tbaa !10
switch i8 %1278, label %if.else8719 [
i8 104, label %if.then8310
i8 102, label %if.then8310
]
if.then8310: ; preds = %if.then8294, %if.then8294
%cmp8316 = icmp eq i8 %1278, 104
%conv8317 = zext i1 %cmp8316 to i32
%ofpos8320 = getelementptr inbounds %struct.word_type, %struct.word_type* %1277, i64 0, i32 1, i32 0
%call8321 = call %union.rec* @FilterCreate(i32 noundef %conv8317, %union.rec* noundef nonnull %916, %struct.FILE_POS* noundef nonnull %ofpos8320) #5
%tobool8322.not = icmp eq i32 %obj_prev.41, 0
br i1 %tobool8322.not, label %if.end8504, label %if.then8323
if.then8323: ; preds = %if.then8310
%1279 = load %struct.word_type*, %struct.word_type** %79, align 8, !tbaa !8
%ou28327 = getelementptr inbounds %struct.word_type, %struct.word_type* %1279, i64 0, i32 2
%os218328 = bitcast %union.SECOND_UNION* %ou28327 to %struct.anon.0*
%ohspace8329 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os218328, i64 0, i32 1
%1280 = load i8, i8* %ohspace8329, align 1, !tbaa !10
%conv8330 = zext i8 %1280 to i32
%ovspace8334 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os218328, i64 0, i32 2
%1281 = load i8, i8* %ovspace8334, align 2, !tbaa !10
%conv8335 = zext i8 %1281 to i32
%add8336 = sub nsw i32 0, %conv8335
%cmp8337.not = icmp eq i32 %conv8330, %add8336
br i1 %cmp8337.not, label %if.else8340, label %if.end8354
if.else8340: ; preds = %if.then8323
%otype8344 = getelementptr inbounds %struct.word_type, %struct.word_type* %1279, i64 0, i32 1, i32 0, i32 0
%1282 = load i8, i8* %otype8344, align 8, !tbaa !10
%cmp8346 = icmp eq i8 %1282, 102
%cmp8349 = icmp eq i32 %obj_prev.41, 2
%or.cond9220 = select i1 %cmp8346, i1 true, i1 %cmp8349
%.10158 = select i1 %or.cond9220, i8 7, i8 103
br label %if.end8354
if.end8354: ; preds = %if.else8340, %if.then8323
%typ8324.0 = phi i32 [ 100, %if.then8323 ], [ 101, %if.else8340 ]
%prec8325.0 = phi i8 [ 7, %if.then8323 ], [ %.10158, %if.else8340 ]
br label %land.rhs8357
land.rhs8357: ; preds = %while.body8368, %if.end8354
%1283 = load i32, i32* @ttop, align 4, !tbaa !4
%idxprom8358 = sext i32 %1283 to i64
%arrayidx8359 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom8358
%1284 = bitcast %union.rec** %arrayidx8359 to %struct.word_type**
%1285 = load %struct.word_type*, %struct.word_type** %1284, align 8, !tbaa !8
%ou28361 = getelementptr inbounds %struct.word_type, %struct.word_type* %1285, i64 0, i32 2
%oprecedence8363 = bitcast %union.SECOND_UNION* %ou28361 to i8*
%1286 = load i8, i8* %oprecedence8363, align 8, !tbaa !10
%cmp8365.not = icmp ugt i8 %prec8325.0, %1286
br i1 %cmp8365.not, label %if.then8372, label %while.body8368
while.body8368: ; preds = %land.rhs8357
%call8369 = call fastcc i32 @Reduce()
%tobool8356.not = icmp eq i32 %call8369, 0
br i1 %tobool8356.not, label %if.end8504, label %land.rhs8357, !llvm.loop !42
if.then8372: ; preds = %land.rhs8357
%1287 = zext i32 %typ8324.0 to i64
%arrayidx8374 = getelementptr inbounds [0 x i8], [0 x i8]* @zz_lengths, i64 0, i64 %1287
%1288 = load i8, i8* %arrayidx8374, align 1, !tbaa !10
%conv8375 = zext i8 %1288 to i32
store i32 %conv8375, i32* @zz_size, align 4, !tbaa !4
%1289 = zext i8 %1288 to i64
%arrayidx8383 = getelementptr inbounds [0 x %union.rec*], [0 x %union.rec*]* @zz_free, i64 0, i64 %1289
%1290 = load %union.rec*, %union.rec** %arrayidx8383, align 8, !tbaa !8
%cmp8384 = icmp eq %union.rec* %1290, null
br i1 %cmp8384, label %if.then8386, label %if.else8388
if.then8386: ; preds = %if.then8372
%1291 = load %struct.FILE_POS*, %struct.FILE_POS** @no_fpos, align 8, !tbaa !8
%call8387 = call %union.rec* @GetMemory(i32 noundef %conv8375, %struct.FILE_POS* noundef %1291) #5
store %union.rec* %call8387, %union.rec** @zz_hold, align 8, !tbaa !8
%.pre10468 = load i32, i32* @ttop, align 4, !tbaa !4
br label %if.end8398
if.else8388: ; preds = %if.then8372
store %union.rec* %1290, %union.rec** @zz_hold, align 8, !tbaa !8
%opred8394 = getelementptr inbounds %union.rec, %union.rec* %1290, i64 0, i32 0, i32 0, i64 0, i32 0
%1292 = load %union.rec*, %union.rec** %opred8394, align 8, !tbaa !10
store %union.rec* %1292, %union.rec** %arrayidx8383, align 8, !tbaa !8
br label %if.end8398
if.end8398: ; preds = %if.else8388, %if.then8386
%1293 = phi i32 [ %.pre10468, %if.then8386 ], [ %1283, %if.else8388 ]
%.in = phi %union.rec* [ %call8387, %if.then8386 ], [ %1290, %if.else8388 ]
%conv8399 = trunc i32 %typ8324.0 to i8
%1294 = getelementptr inbounds %union.rec, %union.rec* %.in, i64 0, i32 0, i32 1, i32 0, i32 0
store i8 %conv8399, i8* %1294, align 8, !tbaa !10
%1295 = getelementptr inbounds %union.rec, %union.rec* %.in, i64 0, i32 0, i32 0, i64 1, i32 1
store %union.rec* %.in, %union.rec** %1295, align 8, !tbaa !10
%1296 = getelementptr inbounds %union.rec, %union.rec* %.in, i64 0, i32 0, i32 0, i64 1, i32 0
store %union.rec* %.in, %union.rec** %1296, align 8, !tbaa !10
%1297 = getelementptr inbounds %union.rec, %union.rec* %.in, i64 0, i32 0, i32 0, i64 0, i32 1
store %union.rec* %.in, %union.rec** %1297, align 8, !tbaa !10
%1298 = getelementptr %union.rec, %union.rec* %.in, i64 0, i32 0, i32 0, i64 0, i32 0
store %union.rec* %.in, %union.rec** %1298, align 8, !tbaa !10
%1299 = getelementptr inbounds %union.rec, %union.rec* %.in, i64 0, i32 0, i32 2
%os218423 = bitcast %union.SECOND_UNION* %1299 to %struct.anon.0*
%oprecedence8424 = bitcast %union.SECOND_UNION* %1299 to i8*
store i8 %prec8325.0, i8* %oprecedence8424, align 8, !tbaa !10
%1300 = load %struct.word_type*, %struct.word_type** %79, align 8, !tbaa !8
%ou28426 = getelementptr inbounds %struct.word_type, %struct.word_type* %1300, i64 0, i32 2
%os218427 = bitcast %union.SECOND_UNION* %ou28426 to %struct.anon.0*
%ovspace8428 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os218427, i64 0, i32 2
%1301 = load i8, i8* %ovspace8428, align 2, !tbaa !10
%ovspace8432 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os218423, i64 0, i32 2
store i8 %1301, i8* %ovspace8432, align 2, !tbaa !10
%ohspace8436 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os218427, i64 0, i32 1
%1302 = load i8, i8* %ohspace8436, align 1, !tbaa !10
%ohspace8440 = getelementptr inbounds %struct.anon.0, %struct.anon.0* %os218423, i64 0, i32 1
store i8 %1302, i8* %ohspace8440, align 1, !tbaa !10
%os58441 = bitcast %union.rec* %.in to %struct.gapobj_type*
%1303 = getelementptr inbounds %struct.gapobj_type, %struct.gapobj_type* %os58441, i64 0, i32 3, i32 0
%bf.load8443 = load i16, i16* %1303, align 4
%bf.clear8449 = and i16 %bf.load8443, -769
%bf.set8450 = or i16 %bf.clear8449, 512
store i16 %bf.set8450, i16* %1303, align 4
%ofile_num8454 = getelementptr inbounds %struct.word_type, %struct.word_type* %1300, i64 0, i32 1, i32 0, i32 2
%1304 = load i16, i16* %ofile_num8454, align 2, !tbaa !10
%1305 = getelementptr inbounds %union.rec, %union.rec* %.in, i64 0, i32 0, i32 1, i32 0, i32 2
store i16 %1304, i16* %1305, align 2, !tbaa !10
%oline_num8462 = getelementptr inbounds %struct.word_type, %struct.word_type* %1300, i64 0, i32 1, i32 0, i32 3
%bf.load8463 = load i32, i32* %oline_num8462, align 4
%bf.clear8464 = and i32 %bf.load8463, 1048575
%1306 = getelementptr inbounds %union.rec, %union.rec* %.in, i64 0, i32 0, i32 1, i32 0, i32 3
%bf.load8469 = load i32, i32* %1306, align 4
%bf.clear8471 = and i32 %bf.load8469, -1048576
%bf.set8472 = or i32 %bf.clear8471, %bf.clear8464
store i32 %bf.set8472, i32* %1306, align 4
%bf.load8477 = load i32, i32* %oline_num8462, align 4
%bf.lshr8478 = and i32 %bf.load8477, -1048576
%bf.set8487 = or i32 %bf.lshr8478, %bf.clear8464
store i32 %bf.set8487, i32* %1306, align 4
%inc8488 = add nsw i32 %1293, 1
store i32 %inc8488, i32* @ttop, align 4, !tbaa !4
%cmp8489 = icmp slt i32 %1293, 99
br i1 %cmp8489, label %if.then8491, label %if.else8494
if.then8491: ; preds = %if.end8398
%idxprom8492 = sext i32 %inc8488 to i64
%arrayidx8493 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom8492
store %union.rec* %.in, %union.rec** %arrayidx8493, align 8, !tbaa !8
br label %if.end8504
if.else8494: ; preds = %if.end8398
%idxprom849610279 = zext i32 %1293 to i64
%arrayidx8497 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom849610279
%1307 = bitcast %union.rec** %arrayidx8497 to %struct.word_type**
%1308 = load %struct.word_type*, %struct.word_type** %1307, align 8, !tbaa !8
%ofpos8500 = getelementptr inbounds %struct.word_type, %struct.word_type* %1308, i64 0, i32 1, i32 0
%call8501 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 2, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos8500) #5
br label %if.end8504
if.end8504: ; preds = %if.else8494, %if.then8491, %while.body8368, %if.then8310
%tmp.7 = phi %union.rec* [ %call8321, %if.then8310 ], [ %.in, %if.then8491 ], [ %.in, %if.else8494 ], [ %call8321, %while.body8368 ]
%1309 = load i32, i32* @ttop, align 4, !tbaa !4
%inc8505 = add nsw i32 %1309, 1
store i32 %inc8505, i32* @ttop, align 4, !tbaa !4
%cmp8506 = icmp slt i32 %1309, 99
br i1 %cmp8506, label %if.then8508, label %if.else8511
if.then8508: ; preds = %if.end8504
%1310 = load %union.rec*, %union.rec** %t, align 8, !tbaa !8
%idxprom8509 = sext i32 %inc8505 to i64
%arrayidx8510 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom8509
store %union.rec* %1310, %union.rec** %arrayidx8510, align 8, !tbaa !8
br label %if.end8702
if.else8511: ; preds = %if.end8504
%idxprom851310278 = zext i32 %1309 to i64
%arrayidx8514 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom851310278
%1311 = bitcast %union.rec** %arrayidx8514 to %struct.word_type**
%1312 = load %struct.word_type*, %struct.word_type** %1311, align 8, !tbaa !8
%ofpos8517 = getelementptr inbounds %struct.word_type, %struct.word_type* %1312, i64 0, i32 1, i32 0
%call8518 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 2, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos8517) #5
br label %if.end8702
if.end8702: ; preds = %if.else8511, %if.then8508
store %union.rec* %tmp.7, %union.rec** @zz_hold, align 8, !tbaa !8
%1313 = load i32, i32* @otop, align 4, !tbaa !4
%inc8703 = add nsw i32 %1313, 1
store i32 %inc8703, i32* @otop, align 4, !tbaa !4
%cmp8704 = icmp slt i32 %1313, 99
br i1 %cmp8704, label %if.then8706, label %if.else8709
if.then8706: ; preds = %if.end8702
%idxprom8707 = sext i32 %inc8703 to i64
%arrayidx8708 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom8707
store %union.rec* %tmp.7, %union.rec** %arrayidx8708, align 8, !tbaa !8
br label %if.end8717
if.else8709: ; preds = %if.end8702
%idxprom871110277 = zext i32 %1313 to i64
%arrayidx8712 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom871110277
%1314 = bitcast %union.rec** %arrayidx8712 to %struct.word_type**
%1315 = load %struct.word_type*, %struct.word_type** %1314, align 8, !tbaa !8
%ofpos8715 = getelementptr inbounds %struct.word_type, %struct.word_type* %1315, i64 0, i32 1, i32 0
%call8716 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 1, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos8715) #5
br label %if.end8717
if.end8717: ; preds = %if.else8709, %if.then8706
%call8718 = call %union.rec* @LexGetToken() #5
store %union.rec* %call8718, %union.rec** %t, align 8, !tbaa !8
br label %for.cond581.backedge
if.else8719: ; preds = %if.then8294
%ofpos8722 = getelementptr inbounds %union.rec, %union.rec* %x.1, i64 0, i32 0, i32 1, i32 0
%call8723 = call i8* @SymName(%union.rec* noundef nonnull %916) #5
%call8724 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 33, i8* noundef getelementptr inbounds ([49 x i8], [49 x i8]* @.str.51, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos8722, i8* noundef %call8723) #5
br label %for.cond581.backedge
if.else8726: ; preds = %if.end8289
%bf.load8730 = load i24, i24* %958, align 1
%1316 = and i24 %bf.load8730, 256
%tobool8734.not = icmp eq i24 %1316, 0
br i1 %tobool8734.not, label %for.cond581.backedge, label %if.then8735
if.then8735: ; preds = %if.else8726
%1317 = load %struct.word_type*, %struct.word_type** %79, align 8, !tbaa !8
%ou18737 = getelementptr inbounds %struct.word_type, %struct.word_type* %1317, i64 0, i32 1
%otype8739 = getelementptr %union.FIRST_UNION, %union.FIRST_UNION* %ou18737, i64 0, i32 0, i32 0
%1318 = load i8, i8* %otype8739, align 8, !tbaa !10
switch i8 %1318, label %if.else8775 [
i8 104, label %if.then8751
i8 102, label %if.then8751
]
if.then8751: ; preds = %if.then8735, %if.then8735
call void @PushScope(%union.rec* noundef nonnull %916, i32 noundef 0, i32 noundef 1) #5
%call8752 = call %union.rec* @ChildSym(%union.rec* noundef nonnull %916, i32 noundef 146) #5
call void @PushScope(%union.rec* noundef %call8752, i32 noundef 0, i32 noundef 0) #5
%call8753 = call %union.rec* @Parse(%union.rec** noundef nonnull %t, %union.rec* noundef %encl, i32 noundef 0, i32 noundef 1)
store %union.rec* %call8753, %union.rec** @zz_hold, align 8, !tbaa !8
%1319 = load i32, i32* @otop, align 4, !tbaa !4
%inc8754 = add nsw i32 %1319, 1
store i32 %inc8754, i32* @otop, align 4, !tbaa !4
%cmp8755 = icmp slt i32 %1319, 99
br i1 %cmp8755, label %if.then8757, label %if.else8760
if.then8757: ; preds = %if.then8751
%idxprom8758 = sext i32 %inc8754 to i64
%arrayidx8759 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom8758
store %union.rec* %call8753, %union.rec** %arrayidx8759, align 8, !tbaa !8
br label %if.end8768
if.else8760: ; preds = %if.then8751
%idxprom876210276 = zext i32 %1319 to i64
%arrayidx8763 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom876210276
%1320 = bitcast %union.rec** %arrayidx8763 to %struct.word_type**
%1321 = load %struct.word_type*, %struct.word_type** %1320, align 8, !tbaa !8
%ofpos8766 = getelementptr inbounds %struct.word_type, %struct.word_type* %1321, i64 0, i32 1, i32 0
%call8767 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 1, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos8766) #5
br label %if.end8768
if.end8768: ; preds = %if.else8760, %if.then8757
%call8769 = call fastcc i32 @Reduce()
call void @PopScope() #5
call void @PopScope() #5
%1322 = load %union.rec*, %union.rec** %t, align 8, !tbaa !8
%cmp8770 = icmp eq %union.rec* %1322, null
br i1 %cmp8770, label %if.then8772, label %for.cond581.backedge
if.then8772: ; preds = %if.end8768
%call8773 = call %union.rec* @LexGetToken() #5
store %union.rec* %call8773, %union.rec** %t, align 8, !tbaa !8
br label %for.cond581.backedge
if.else8775: ; preds = %if.then8735
%ofpos8778 = getelementptr %union.FIRST_UNION, %union.FIRST_UNION* %ou18737, i64 0, i32 0
%call8779 = call i8* @SymName(%union.rec* noundef nonnull %916) #5
%call8780 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 34, i8* noundef getelementptr inbounds ([48 x i8], [48 x i8]* @.str.52, i64 0, i64 0), i32 noundef 2, %struct.FILE_POS* noundef nonnull %ofpos8778, i8* noundef %call8779) #5
br label %for.cond581.backedge
for.cond8785: ; preds = %for.cond8785.backedge, %for.cond581
%obj_prev.44 = phi i32 [ %obj_prev.44.be, %for.cond8785.backedge ], [ %obj_prev.1, %for.cond581 ]
%tobool8786.not = icmp eq i32 %obj_prev.44, 0
br i1 %tobool8786.not, label %if.then8787, label %if.else8807
if.then8787: ; preds = %for.cond8785
%1323 = load %struct.word_type*, %struct.word_type** %79, align 8, !tbaa !8
%ofpos8790 = getelementptr inbounds %struct.word_type, %struct.word_type* %1323, i64 0, i32 1, i32 0
%call8791 = call %union.rec* @MakeWord(i32 noundef 11, i8* noundef getelementptr inbounds ([1 x i8], [1 x i8]* @.str.27, i64 0, i64 0), %struct.FILE_POS* noundef nonnull %ofpos8790) #5
store %union.rec* %call8791, %union.rec** @zz_hold, align 8, !tbaa !8
%1324 = load i32, i32* @otop, align 4, !tbaa !4
%inc8792 = add nsw i32 %1324, 1
store i32 %inc8792, i32* @otop, align 4, !tbaa !4
%cmp8793 = icmp slt i32 %1324, 99
br i1 %cmp8793, label %if.then8795, label %if.else8798
if.then8795: ; preds = %if.then8787
%idxprom8796 = sext i32 %inc8792 to i64
%arrayidx8797 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom8796
store %union.rec* %call8791, %union.rec** %arrayidx8797, align 8, !tbaa !8
br label %for.cond8785.backedge
for.cond8785.backedge: ; preds = %if.then8823, %if.else8798, %if.then8795
%obj_prev.44.be = phi i32 [ %call8824, %if.then8823 ], [ 1, %if.else8798 ], [ 1, %if.then8795 ]
br label %for.cond8785
if.else8798: ; preds = %if.then8787
%idxprom880010293 = zext i32 %1324 to i64
%arrayidx8801 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom880010293
%1325 = bitcast %union.rec** %arrayidx8801 to %struct.word_type**
%1326 = load %struct.word_type*, %struct.word_type** %1325, align 8, !tbaa !8
%ofpos8804 = getelementptr inbounds %struct.word_type, %struct.word_type* %1326, i64 0, i32 1, i32 0
%call8805 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 1, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos8804) #5
br label %for.cond8785.backedge
if.else8807: ; preds = %for.cond8785
%1327 = load i32, i32* @ttop, align 4, !tbaa !4
%idxprom8808 = sext i32 %1327 to i64
%arrayidx8809 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom8808
%1328 = bitcast %union.rec** %arrayidx8809 to %struct.word_type**
%1329 = load %struct.word_type*, %struct.word_type** %1328, align 8, !tbaa !8
%ou28811 = getelementptr inbounds %struct.word_type, %struct.word_type* %1329, i64 0, i32 2
%oprecedence8813 = bitcast %union.SECOND_UNION* %ou28811 to i8*
%1330 = load i8, i8* %oprecedence8813, align 8, !tbaa !10
%1331 = load %struct.word_type*, %struct.word_type** %79, align 8, !tbaa !8
%ou28816 = getelementptr inbounds %struct.word_type, %struct.word_type* %1331, i64 0, i32 2
%oprecedence8818 = bitcast %union.SECOND_UNION* %ou28816 to i8*
%1332 = load i8, i8* %oprecedence8818, align 8, !tbaa !10
%cmp8821.not.not = icmp ult i8 %1332, %1330
br i1 %cmp8821.not.not, label %if.then8823, label %for.end8835
if.then8823: ; preds = %if.else8807
%call8824 = call fastcc i32 @Reduce()
%1333 = load i32, i32* @ttop, align 4, !tbaa !4
%cmp8825 = icmp eq i32 %1333, %4
br i1 %cmp8825, label %if.then8827, label %for.cond8785.backedge
if.then8827: ; preds = %if.then8823
%1334 = load %union.rec*, %union.rec** %t, align 8, !tbaa !8
br label %cleanup9179
for.end8835: ; preds = %if.else8807
%inc8836 = add nsw i32 %1327, 1
store i32 %inc8836, i32* @ttop, align 4, !tbaa !4
%cmp8837 = icmp slt i32 %1327, 99
br i1 %cmp8837, label %if.then8839, label %if.else8842
if.then8839: ; preds = %for.end8835
%idxprom8840 = sext i32 %inc8836 to i64
%arrayidx8841 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @tok_stack, i64 0, i64 %idxprom8840
%1335 = bitcast %union.rec** %arrayidx8841 to %struct.word_type**
store %struct.word_type* %1331, %struct.word_type** %1335, align 8, !tbaa !8
br label %if.end8850
if.else8842: ; preds = %for.end8835
%ofpos8848 = getelementptr inbounds %struct.word_type, %struct.word_type* %1329, i64 0, i32 1, i32 0
%call8849 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 2, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos8848) #5
br label %if.end8850
if.end8850: ; preds = %if.else8842, %if.then8839
%1336 = load i32, i32* @otop, align 4, !tbaa !4
%idxprom8851 = sext i32 %1336 to i64
%arrayidx8852 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom8851
%1337 = load %union.rec*, %union.rec** %arrayidx8852, align 8, !tbaa !8
%otype8856 = getelementptr inbounds %union.rec, %union.rec* %1337, i64 0, i32 0, i32 1, i32 0, i32 0
%1338 = load i8, i8* %otype8856, align 8, !tbaa !10
switch i8 %1338, label %if.end8934.thread [
i8 2, label %if.end8934
i8 6, label %land.lhs.true8885
i8 7, label %land.lhs.true8885
]
land.lhs.true8885: ; preds = %if.end8850, %if.end8850
%osucc8891 = getelementptr inbounds %union.rec, %union.rec* %1337, i64 0, i32 0, i32 0, i64 0, i32 1
%1339 = load %union.rec*, %union.rec** %osucc8891, align 8, !tbaa !10
%cmp8894.not = icmp eq %union.rec* %1339, %1337
br i1 %cmp8894.not, label %if.end8934.thread, label %for.cond8907
for.cond8907: ; preds = %for.cond8907, %land.lhs.true8885
%.pn = phi %union.rec* [ %tmp.10, %for.cond8907 ], [ %1339, %land.lhs.true8885 ]
%tmp.10.in = getelementptr inbounds %union.rec, %union.rec* %.pn, i64 0, i32 0, i32 0, i64 1, i32 0
%tmp.10 = load %union.rec*, %union.rec** %tmp.10.in, align 8, !tbaa !10
%otype8911 = getelementptr inbounds %union.rec, %union.rec* %tmp.10, i64 0, i32 0, i32 1, i32 0, i32 0
%1340 = load i8, i8* %otype8911, align 8, !tbaa !10
switch i8 %1340, label %if.end8934.thread [
i8 0, label %for.cond8907
i8 2, label %if.end8934
]
if.end8934.thread: ; preds = %for.cond8907, %land.lhs.true8885, %if.end8850
%call893510214 = call %union.rec* @LexGetToken() #5
store %union.rec* %call893510214, %union.rec** %t, align 8, !tbaa !8
br label %if.then8938
if.end8934: ; preds = %for.cond8907, %if.end8850
%.pn10298 = phi %union.rec* [ %1337, %if.end8850 ], [ %tmp.10, %for.cond8907 ]
%xsym.0.in = getelementptr inbounds %union.rec, %union.rec* %.pn10298, i64 0, i32 0, i32 5
%xsym.0 = load %union.rec*, %union.rec** %xsym.0.in, align 8, !tbaa !10
%call8935 = call %union.rec* @LexGetToken() #5
store %union.rec* %call8935, %union.rec** %t, align 8, !tbaa !8
%cmp8936 = icmp eq %union.rec* %xsym.0, null
br i1 %cmp8936, label %if.then8938, label %if.else8943
if.then8938: ; preds = %if.end8934, %if.end8934.thread
%ofpos8941 = getelementptr %union.FIRST_UNION, %union.FIRST_UNION* %85, i64 0, i32 0
%call8942 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 35, i8* noundef getelementptr inbounds ([29 x i8], [29 x i8]* @.str.53, i64 0, i64 0), i32 noundef 2, %struct.FILE_POS* noundef nonnull %ofpos8941, i8* noundef getelementptr inbounds ([6 x i8], [6 x i8]* @.str.54, i64 0, i64 0)) #5
br label %for.cond581.backedge
if.else8943: ; preds = %if.end8934
%1341 = getelementptr inbounds %union.rec, %union.rec* %call8935, i64 0, i32 0, i32 1
%otype8947 = getelementptr %union.FIRST_UNION, %union.FIRST_UNION* %1341, i64 0, i32 0, i32 0
%1342 = load i8, i8* %otype8947, align 8, !tbaa !10
switch i8 %1342, label %if.then8959 [
i8 104, label %if.else8964
i8 102, label %if.else8964
]
if.then8959: ; preds = %if.else8943
%ofpos8962 = getelementptr %union.FIRST_UNION, %union.FIRST_UNION* %1341, i64 0, i32 0
%call8963 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 36, i8* noundef getelementptr inbounds ([49 x i8], [49 x i8]* @.str.51, i64 0, i64 0), i32 noundef 2, %struct.FILE_POS* noundef nonnull %ofpos8962, i8* noundef getelementptr inbounds ([6 x i8], [6 x i8]* @.str.54, i64 0, i64 0)) #5
br label %for.cond581.backedge
if.else8964: ; preds = %if.else8943, %if.else8943
call void @PushScope(%union.rec* noundef nonnull %xsym.0, i32 noundef 0, i32 noundef 1) #5
%call8965 = call %union.rec* @Parse(%union.rec** noundef nonnull %t, %union.rec* noundef %encl, i32 noundef 0, i32 noundef 0)
store %union.rec* %call8965, %union.rec** @zz_hold, align 8, !tbaa !8
%1343 = load i32, i32* @otop, align 4, !tbaa !4
%inc9149 = add nsw i32 %1343, 1
store i32 %inc9149, i32* @otop, align 4, !tbaa !4
%cmp9150 = icmp slt i32 %1343, 99
br i1 %cmp9150, label %if.then9152, label %if.else9155
if.then9152: ; preds = %if.else8964
%idxprom9153 = sext i32 %inc9149 to i64
%arrayidx9154 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom9153
store %union.rec* %call8965, %union.rec** %arrayidx9154, align 8, !tbaa !8
br label %if.end9163
if.else9155: ; preds = %if.else8964
%idxprom915710294 = zext i32 %1343 to i64
%arrayidx9158 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom915710294
%1344 = bitcast %union.rec** %arrayidx9158 to %struct.word_type**
%1345 = load %struct.word_type*, %struct.word_type** %1344, align 8, !tbaa !8
%ofpos9161 = getelementptr inbounds %struct.word_type, %struct.word_type* %1345, i64 0, i32 1, i32 0
%call9162 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 6, i32 noundef 1, i8* noundef getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i32 noundef 1, %struct.FILE_POS* noundef nonnull %ofpos9161) #5
br label %if.end9163
if.end9163: ; preds = %if.else9155, %if.then9152
call void @PopScope() #5
%1346 = load %union.rec*, %union.rec** %t, align 8, !tbaa !8
%cmp9164 = icmp eq %union.rec* %1346, null
br i1 %cmp9164, label %if.then9166, label %if.end9168
if.then9166: ; preds = %if.end9163
%call9167 = call %union.rec* @LexGetToken() #5
store %union.rec* %call9167, %union.rec** %t, align 8, !tbaa !8
br label %if.end9168
if.end9168: ; preds = %if.then9166, %if.end9163
%call9169 = call fastcc i32 @Reduce()
br label %for.cond581.backedge
sw.default: ; preds = %for.cond581
%conv586 = zext i8 %86 to i32
%1347 = load %struct.FILE_POS*, %struct.FILE_POS** @no_fpos, align 8, !tbaa !8
%call9177 = call i8* @Image(i32 noundef %conv586) #5
%call9178 = call i8* (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 noundef 1, i32 noundef 3, i8* noundef getelementptr inbounds ([23 x i8], [23 x i8]* @.str.55, i64 0, i64 0), i32 noundef 0, %struct.FILE_POS* noundef %1347, i8* noundef getelementptr inbounds ([7 x i8], [7 x i8]* @.str.56, i64 0, i64 0), i8* noundef %call9177) #5
br label %for.cond581.backedge
cleanup9179: ; preds = %if.then8827, %if.else8276, %if.else6355, %if.then6132, %if.end3720, %if.then3697, %if.end3638, %if.then3615, %if.else3107, %if.then2886, %if.else2371, %if.then2150, %if.else2084, %if.then1864, %if.then1070
%.sink = phi %union.rec* [ %1334, %if.then8827 ], [ %563, %if.then3697 ], [ %549, %if.then3615 ], [ %422, %if.then2886 ], [ %316, %if.then2150 ], [ %259, %if.then1864 ], [ %175, %if.then1070 ], [ %914, %if.then6132 ], [ null, %if.else2084 ], [ null, %if.else2371 ], [ null, %if.else3107 ], [ null, %if.end3638 ], [ null, %if.end3720 ], [ null, %if.else6355 ], [ null, %if.else8276 ]
store %union.rec* %.sink, %union.rec** %token, align 8, !tbaa !8
%1348 = load i32, i32* @otop, align 4, !tbaa !4
%dec8828 = add nsw i32 %1348, -1
store i32 %dec8828, i32* @otop, align 4, !tbaa !4
%idxprom8829 = sext i32 %1348 to i64
%arrayidx8830 = getelementptr inbounds [100 x %union.rec*], [100 x %union.rec*]* @obj_stack, i64 0, i64 %idxprom8829
%retval.0 = load %union.rec*, %union.rec** %arrayidx8830, align 8, !tbaa !8
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %5) #5
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %3) #5
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %2) #5
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %1) #5
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %0) #5
ret %union.rec* %retval.0
}
; Function Attrs: nounwind uwtable
declare hidden fastcc i32 @Reduce() unnamed_addr #2
declare %union.rec* @GetMemory(i32 noundef, %struct.FILE_POS* noundef) local_unnamed_addr #1
declare %union.rec* @LexGetToken() local_unnamed_addr #1
declare void @ReadDefinitions(%union.rec** noundef, %union.rec* noundef, i8 noundef zeroext) local_unnamed_addr #1
declare i32 @ErrorSeen() local_unnamed_addr #1
; Function Attrs: argmemonly mustprogress nofree nounwind readonly willreturn
declare i32 @strcmp(i8* nocapture noundef, i8* nocapture noundef) local_unnamed_addr #3
declare %union.rec* @CrossExpand(%union.rec* noundef, %union.rec* noundef, %struct.STYLE* noundef, %union.rec** noundef, %union.rec** noundef) local_unnamed_addr #1
; Function Attrs: nounwind uwtable
declare hidden fastcc void @HuntCommandOptions(%union.rec* noundef) unnamed_addr #2
declare void @AttachEnv(%union.rec* noundef, %union.rec* noundef) local_unnamed_addr #1
declare %union.rec* @SetEnv(%union.rec* noundef, %union.rec* noundef) local_unnamed_addr #1
declare i8* @SymName(%union.rec* noundef) local_unnamed_addr #1
declare void @ReadPrependDef(i32 noundef, %union.rec* noundef) local_unnamed_addr #1
declare void @ReadDatabaseDef(i32 noundef, %union.rec* noundef) local_unnamed_addr #1
declare %union.rec* @DbCreate(%union.rec* noundef) local_unnamed_addr #1
declare %union.rec* @DbLoad(%union.rec* noundef, i32 noundef, i32 noundef, %union.rec* noundef, i32 noundef) local_unnamed_addr #1
declare void @FlattenUses() local_unnamed_addr #1
declare void @TransferInit(%union.rec* noundef) local_unnamed_addr #1
declare void @TransferComponent(%union.rec* noundef) local_unnamed_addr #1
declare %union.rec* @LexScanVerbatim(%struct._IO_FILE* noundef, i32 noundef, %struct.FILE_POS* noundef, i32 noundef) local_unnamed_addr #1
; Function Attrs: nounwind uwtable
declare hidden fastcc %union.rec* @ParseEnvClosure(%union.rec* noundef, %union.rec* noundef) unnamed_addr #2
declare i64 @LexNextTokenPos() local_unnamed_addr #1
declare void @EnvReadInsert(i16 noundef zeroext, i32 noundef, %union.rec* noundef) local_unnamed_addr #1
; Function Attrs: nofree nounwind
declare noundef i32 @__isoc99_sscanf(i8* nocapture noundef readonly, i8* nocapture noundef readonly, ...) local_unnamed_addr #4
declare i32 @EnvReadRetrieve(i16 noundef zeroext, i32 noundef, %union.rec** noundef) local_unnamed_addr #1
declare void @LexPush(i16 noundef zeroext, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1
declare void @LexPop() local_unnamed_addr #1
declare void @PopScope() local_unnamed_addr #1
declare %union.rec* @CopyObject(%union.rec* noundef, %struct.FILE_POS* noundef) local_unnamed_addr #1
declare void @SuppressVisible() local_unnamed_addr #1
declare void @UnSuppressVisible() local_unnamed_addr #1
declare void @InsertUses(%union.rec* noundef, %union.rec* noundef) local_unnamed_addr #1
declare %union.rec* @ChildSymWithCode(%union.rec* noundef, i8 noundef zeroext) local_unnamed_addr #1
declare %union.rec* @ChildSym(%union.rec* noundef, i32 noundef) local_unnamed_addr #1
declare %union.rec* @TransferBegin(%union.rec* noundef) local_unnamed_addr #1
declare %union.rec* @FilterCreate(i32 noundef, %union.rec* noundef, %struct.FILE_POS* noundef) local_unnamed_addr #1
declare i8* @Image(i32 noundef) local_unnamed_addr #1
attributes #0 = { argmemonly nofree nosync nounwind willreturn }
attributes #1 = { "frame-pointer"="none" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nounwind uwtable "frame-pointer"="none" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { argmemonly mustprogress nofree nounwind readonly willreturn "frame-pointer"="none" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nofree nounwind "frame-pointer"="none" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind }
attributes #6 = { nounwind readonly willreturn }
!llvm.module.flags = !{!0, !1, !2}
!llvm.ident = !{!3}
!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 7, !"PIC Level", i32 2}
!2 = !{i32 7, !"uwtable", i32 2}
!3 = !{!"clang version 15.0.0"}
!4 = !{!5, !5, i64 0}
!5 = !{!"int", !6, i64 0}
!6 = !{!"omnipotent char", !7, i64 0}
!7 = !{!"Simple C/C++ TBAA"}
!8 = !{!9, !9, i64 0}
!9 = !{!"any pointer", !6, i64 0}
!10 = !{!6, !6, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = distinct !{!15, !12}
!16 = distinct !{!16, !12}
!17 = distinct !{!17, !12}
!18 = distinct !{!18, !12}
!19 = distinct !{!19, !12}
!20 = distinct !{!20, !12}
!21 = distinct !{!21, !12}
!22 = distinct !{!22, !12}
!23 = distinct !{!23, !12}
!24 = distinct !{!24, !12}
!25 = distinct !{!25, !12}
!26 = distinct !{!26, !12}
!27 = distinct !{!27, !12}
!28 = distinct !{!28, !12}
!29 = distinct !{!29, !12}
!30 = distinct !{!30, !12}
!31 = distinct !{!31, !12}
!32 = distinct !{!32, !12}
!33 = distinct !{!33, !12}
!34 = distinct !{!34, !12}
!35 = distinct !{!35, !12}
!36 = distinct !{!36, !12}
!37 = distinct !{!37, !12}
!38 = distinct !{!38, !12}
!39 = distinct !{!39, !12}
!40 = distinct !{!40, !12}
!41 = distinct !{!41, !12}
!42 = distinct !{!42, !12}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment