Skip to content

Instantly share code, notes, and snippets.

@axiomsofchoice
Created June 5, 2011 10:35
Show Gist options
  • Save axiomsofchoice/1008855 to your computer and use it in GitHub Desktop.
Save axiomsofchoice/1008855 to your computer and use it in GitHub Desktop.
Annotated llvm bytecode for the cubescript example in the tests suite in emscripten
; ModuleID = 'command'
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
target triple = "x86_64-linux-gnu"
%0 = type { i32, void ()* }
%struct.__class_type_info_pseudo = type { %struct.__type_info_pseudo }
%struct.__type_info_pseudo = type { i8*, i8* }
%struct.__va_list_tag = type { i32, i32, i8*, i8* }
%struct.cline = type { i8*, i32, i32 }
%"struct.hashset<hashtableentry<const char*, ident> >" = type { i32, i32, %"struct.hashset<hashtableentry<const char*, ident> >::chain"**, %"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"*, %"struct.hashset<hashtableentry<const char*, ident> >::chain"* }
%"struct.hashset<hashtableentry<const char*, ident> >::chain" = type { %"struct.hashtableentry<const char*,ident>", %"struct.hashset<hashtableentry<const char*, ident> >::chain"* }
%"struct.hashset<hashtableentry<const char*, ident> >::chainchunk" = type { [64 x %"struct.hashset<hashtableentry<const char*, ident> >::chain"], %"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"* }
%"struct.hashtable<const char*,ident>" = type { %"struct.hashset<hashtableentry<const char*, ident> >" }
%"struct.hashtableentry<const char*,ident>" = type { i8*, %struct.ident }
%struct.ident = type { i32 (...)**, i32, i8*, %union..0._39, %union..0._39, i32, %"union.ident::._35", %struct.stringformatter, %struct.stringformatter, %union.identvalptr, i32 }
%struct.identstack = type { i8*, %struct.identstack* }
%struct.stringformatter = type { i8* }
%"struct.vector<char*>" = type { i8**, i32, i32 }
%"struct.vector<cline>" = type { %struct.cline*, i32, i32 }
%"struct.vector<ident*>" = type { %struct.ident**, i32, i32 }
%"struct.vector<vector<char>*>" = type { %struct.cline**, i32, i32 }
%union..0._39 = type { i32 }
%"union.ident::._35" = type { void ()* }
%union.identvalptr = type { i32* }
@_ZTV5ident = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__class_type_info_pseudo* @_ZTI5ident to i32 (...)*), i32 (...)* bitcast (void (%struct.ident*)* @_ZN5identD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.ident*)* @_ZN5identD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.ident*)* @_ZN5ident7changedEv to i32 (...)*)], align 32 ; <[5 x i32 (...)*]*> [#uses=1]
@_ZTI5ident = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i64 add (i64 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i64), i64 16) to i8*), i8* getelementptr inbounds ([7 x i8]* @_ZTS5ident, i64 0, i64 0) } }, align 16 ; <%struct.__class_type_info_pseudo*> [#uses=1]
@_ZTVN10__cxxabiv117__class_type_infoE = external constant [0 x i32 (...)*] ; <[0 x i32 (...)*]*> [#uses=1]
@_ZTS5ident = weak_odr constant [7 x i8] c"5ident\00" ; <[7 x i8]*> [#uses=1]
@_ZL5state = internal global [625 x i32] zeroinitializer, align 32 ; <[625 x i32]*> [#uses=12]
@_ZL4left = internal global i32 -1 ; <i32*> [#uses=8]
@conlines = global %"struct.vector<cline>" zeroinitializer, align 16 ; <%"struct.vector<cline>"*> [#uses=3]
@_ZL8wordbufs = internal global %"struct.vector<vector<char>*>" zeroinitializer, align 16 ; <%"struct.vector<vector<char>*>"*> [#uses=3]
@maxcon = global i32 0 ; <i32*> [#uses=5]
@_ZZ10parsemacroRPKciR6vectorIcEE5ident = internal global %struct.cline zeroinitializer, align 16 ; <%struct.cline*> [#uses=3]
@_ZZ10executeretPKcE6argids = internal global %"struct.vector<ident*>" zeroinitializer, align 16 ; <%"struct.vector<ident*>"*> [#uses=4]
@_ZZ5fatalPKczE6errors = internal global i32 0 ; <i32*> [#uses=2]
@_ZL6retidx = internal global i32 0 ; <i32*> [#uses=221]
@.str = private constant [5 x i8] c"%.1f\00", align 1 ; <[5 x i8]*> [#uses=25]
@.str1 = private constant [5 x i8] c"%.7g\00", align 1 ; <[5 x i8]*> [#uses=25]
@_ZL6retbuf = internal global [3 x [260 x i8]] zeroinitializer, align 32 ; <[3 x [260 x i8]]*> [#uses=148]
@.str2 = private constant [3 x i8] c"%d\00", align 1 ; <[3 x i8]*> [#uses=1]
@_ZL4next = internal global i32* null ; <i32**> [#uses=5]
@.str3 = private constant [1 x i8] zeroinitializer, align 1 ; <[1 x i8]*> [#uses=1]
@totalmillis = global i32 -1 ; <i32*> [#uses=1]
@_ZZ8conoutfviPKcP13__va_list_tagE3buf = internal global [512 x i8] zeroinitializer, align 32 ; <[512 x i8]*> [#uses=2]
@.str4 = private constant [25 x i8] c"variable %s is read-only\00", align 1 ; <[25 x i8]*> [#uses=1]
@overrideidents = global i8 0 ; <i8*> [#uses=11]
@.str5 = private constant [39 x i8] c"cannot override persistent variable %s\00", align 8 ; <[39 x i8]*> [#uses=1]
@.str6 = private constant [29 x i8] c"valid range for %s is %s..%s\00", align 1 ; <[29 x i8]*> [#uses=1]
@.str7 = private constant [31 x i8] c"valid range for %s is %d..0x%X\00", align 8 ; <[31 x i8]*> [#uses=1]
@.str8 = private constant [33 x i8] c"valid range for %s is 0x%X..0x%X\00", align 8 ; <[33 x i8]*> [#uses=1]
@.str9 = private constant [29 x i8] c"valid range for %s is %d..%d\00", align 1 ; <[29 x i8]*> [#uses=1]
@.str10 = private constant [3 x i8] c"%s\00", align 1 ; <[3 x i8]*> [#uses=1]
@commandret = global i8* null ; <i8**> [#uses=88]
@idents = global %"struct.hashtable<const char*,ident>"* null ; <%"struct.hashtable<const char*,ident>"**> [#uses=36]
@.str11 = private constant [25 x i8] c"unknown alias lookup: %s\00", align 1 ; <[25 x i8]*> [#uses=1]
@.str12 = private constant [4 x i8] c"\0A\09 \00", align 1 ; <[4 x i8]*> [#uses=1]
@.str13 = private constant [4 x i8] c"\22\0A\00\00", align 1 ; <[4 x i8]*> [#uses=1]
@.str14 = private constant [5 x i8] c"\0A\09 \00\00", align 1 ; <[5 x i8]*> [#uses=1]
@persistidents = global i8 1 ; <i8*> [#uses=3]
@.str16 = private constant [41 x i8] c"cannot redefine builtin %s with an alias\00", align 8 ; <[41 x i8]*> [#uses=1]
@.str17 = private constant [5 x i8] c"push\00", align 1 ; <[5 x i8]*> [#uses=1]
@.str18 = private constant [3 x i8] c"ss\00", align 1 ; <[3 x i8]*> [#uses=1]
@.str19 = private constant [4 x i8] c"pop\00", align 1 ; <[4 x i8]*> [#uses=1]
@.str20 = private constant [2 x i8] c"s\00", align 1 ; <[2 x i8]*> [#uses=1]
@.str21 = private constant [9 x i8] c"resetvar\00", align 1 ; <[9 x i8]*> [#uses=1]
@.str22 = private constant [6 x i8] c"alias\00", align 1 ; <[6 x i8]*> [#uses=1]
@__dso_handle = external global i8* ; <i8**> [#uses=1]
@.str23 = private constant [8 x i8] c"numargs\00", align 1 ; <[8 x i8]*> [#uses=1]
@_numargs = global i32 0 ; <i32*> [#uses=3]
@.str24 = private constant [3 x i8] c"if\00", align 1 ; <[3 x i8]*> [#uses=1]
@.str25 = private constant [4 x i8] c"sss\00", align 1 ; <[4 x i8]*> [#uses=1]
@_ZN7_stdcmdILi844EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str26 = private constant [2 x i8] c"?\00", align 1 ; <[2 x i8]*> [#uses=1]
@_ZN7_stdcmdILi845EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str27 = private constant [5 x i8] c"loop\00", align 1 ; <[5 x i8]*> [#uses=1]
@.str28 = private constant [4 x i8] c"sis\00", align 1 ; <[4 x i8]*> [#uses=1]
@_ZN7_stdcmdILi858EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str29 = private constant [10 x i8] c"loopwhile\00", align 1 ; <[10 x i8]*> [#uses=1]
@.str30 = private constant [5 x i8] c"siss\00", align 1 ; <[5 x i8]*> [#uses=1]
@_ZN7_stdcmdILi872EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str31 = private constant [6 x i8] c"while\00", align 1 ; <[6 x i8]*> [#uses=1]
@_ZN7_stdcmdILi873EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str32 = private constant [7 x i8] c"concat\00", align 1 ; <[7 x i8]*> [#uses=1]
@.str33 = private constant [2 x i8] c"C\00", align 1 ; <[2 x i8]*> [#uses=1]
@.str34 = private constant [7 x i8] c"result\00", align 1 ; <[7 x i8]*> [#uses=1]
@.str35 = private constant [11 x i8] c"concatword\00", align 1 ; <[11 x i8]*> [#uses=1]
@.str36 = private constant [2 x i8] c"V\00", align 1 ; <[2 x i8]*> [#uses=1]
@.str37 = private constant [7 x i8] c"format\00", align 1 ; <[7 x i8]*> [#uses=1]
@.str38 = private constant [3 x i8] c"at\00", align 1 ; <[3 x i8]*> [#uses=1]
@.str39 = private constant [3 x i8] c"si\00", align 1 ; <[3 x i8]*> [#uses=1]
@.str40 = private constant [7 x i8] c"substr\00", align 1 ; <[7 x i8]*> [#uses=1]
@.str41 = private constant [8 x i8] c"listlen\00", align 1 ; <[8 x i8]*> [#uses=1]
@_ZN7_stdcmdILi971EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str42 = private constant [9 x i8] c"getalias\00", align 1 ; <[9 x i8]*> [#uses=1]
@.str43 = private constant [11 x i8] c"prettylist\00", align 1 ; <[11 x i8]*> [#uses=1]
@.str44 = private constant [8 x i8] c"listdel\00", align 1 ; <[8 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1068EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str45 = private constant [8 x i8] c"indexof\00", align 1 ; <[8 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1069EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str46 = private constant [9 x i8] c"listfind\00", align 1 ; <[9 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1070EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str47 = private constant [9 x i8] c"looplist\00", align 1 ; <[9 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1071EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str48 = private constant [2 x i8] c"+\00", align 1 ; <[2 x i8]*> [#uses=1]
@.str49 = private constant [3 x i8] c"ii\00", align 1 ; <[3 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1073EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str50 = private constant [2 x i8] c"*\00", align 1 ; <[2 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1074EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str51 = private constant [2 x i8] c"-\00", align 1 ; <[2 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1075EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str52 = private constant [3 x i8] c"+f\00", align 1 ; <[3 x i8]*> [#uses=1]
@.str53 = private constant [3 x i8] c"ff\00", align 1 ; <[3 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1076EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str54 = private constant [3 x i8] c"*f\00", align 1 ; <[3 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1077EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str55 = private constant [3 x i8] c"-f\00", align 1 ; <[3 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1078EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str56 = private constant [2 x i8] c"=\00", align 1 ; <[2 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1079EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str57 = private constant [3 x i8] c"!=\00", align 1 ; <[3 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1080EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str58 = private constant [2 x i8] c"<\00", align 1 ; <[2 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1081EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str59 = private constant [2 x i8] c">\00", align 1 ; <[2 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1082EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str60 = private constant [3 x i8] c"<=\00", align 1 ; <[3 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1083EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str61 = private constant [3 x i8] c">=\00", align 1 ; <[3 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1084EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str62 = private constant [3 x i8] c"=f\00", align 1 ; <[3 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1085EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str63 = private constant [4 x i8] c"!=f\00", align 1 ; <[4 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1086EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str64 = private constant [3 x i8] c"<f\00", align 1 ; <[3 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1087EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str65 = private constant [3 x i8] c">f\00", align 1 ; <[3 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1088EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str66 = private constant [4 x i8] c"<=f\00", align 1 ; <[4 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1089EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str67 = private constant [4 x i8] c">=f\00", align 1 ; <[4 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1090EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str68 = private constant [2 x i8] c"^\00", align 1 ; <[2 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1091EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str69 = private constant [2 x i8] c"!\00", align 1 ; <[2 x i8]*> [#uses=1]
@.str70 = private constant [2 x i8] c"i\00", align 1 ; <[2 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1092EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str71 = private constant [2 x i8] c"&\00", align 1 ; <[2 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1093EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str72 = private constant [2 x i8] c"|\00", align 1 ; <[2 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1094EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str73 = private constant [2 x i8] c"~\00", align 1 ; <[2 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1095EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str74 = private constant [3 x i8] c"^~\00", align 1 ; <[3 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1096EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str75 = private constant [3 x i8] c"&~\00", align 1 ; <[3 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1097EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str76 = private constant [3 x i8] c"|~\00", align 1 ; <[3 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1098EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str77 = private constant [3 x i8] c"<<\00", align 1 ; <[3 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1099EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str78 = private constant [3 x i8] c">>\00", align 1 ; <[3 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1100EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str79 = private constant [3 x i8] c"&&\00", align 1 ; <[3 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1106EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str80 = private constant [3 x i8] c"||\00", align 1 ; <[3 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1112EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str81 = private constant [4 x i8] c"div\00", align 1 ; <[4 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1114EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str82 = private constant [4 x i8] c"mod\00", align 1 ; <[4 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1115EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str83 = private constant [5 x i8] c"divf\00", align 1 ; <[5 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1116EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str84 = private constant [5 x i8] c"modf\00", align 1 ; <[5 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1117EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str85 = private constant [4 x i8] c"sin\00", align 1 ; <[4 x i8]*> [#uses=1]
@.str86 = private constant [2 x i8] c"f\00", align 1 ; <[2 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1118EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str87 = private constant [4 x i8] c"cos\00", align 1 ; <[4 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1119EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str88 = private constant [4 x i8] c"tan\00", align 1 ; <[4 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1120EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str89 = private constant [5 x i8] c"asin\00", align 1 ; <[5 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1121EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str90 = private constant [5 x i8] c"acos\00", align 1 ; <[5 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1122EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str91 = private constant [5 x i8] c"atan\00", align 1 ; <[5 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1123EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str92 = private constant [5 x i8] c"sqrt\00", align 1 ; <[5 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1124EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str93 = private constant [4 x i8] c"pow\00", align 1 ; <[4 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1125EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str94 = private constant [5 x i8] c"loge\00", align 1 ; <[5 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1126EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str95 = private constant [5 x i8] c"log2\00", align 1 ; <[5 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1127EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str96 = private constant [6 x i8] c"log10\00", align 1 ; <[6 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1128EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str97 = private constant [4 x i8] c"exp\00", align 1 ; <[4 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1129EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str98 = private constant [4 x i8] c"min\00", align 1 ; <[4 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1135EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str99 = private constant [4 x i8] c"max\00", align 1 ; <[4 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1141EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str100 = private constant [5 x i8] c"minf\00", align 1 ; <[5 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1147EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str101 = private constant [5 x i8] c"maxf\00", align 1 ; <[5 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1153EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str102 = private constant [5 x i8] c"cond\00", align 1 ; <[5 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1165EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str103 = private constant [5 x i8] c"case\00", align 1 ; <[5 x i8]*> [#uses=1]
@.str104 = private constant [3 x i8] c"iV\00", align 1 ; <[3 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1180EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str105 = private constant [6 x i8] c"casef\00", align 1 ; <[6 x i8]*> [#uses=1]
@.str106 = private constant [3 x i8] c"fV\00", align 1 ; <[3 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1181EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str107 = private constant [6 x i8] c"cases\00", align 1 ; <[6 x i8]*> [#uses=1]
@.str108 = private constant [3 x i8] c"sV\00", align 1 ; <[3 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1182EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str109 = private constant [4 x i8] c"rnd\00", align 1 ; <[4 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1184EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str110 = private constant [7 x i8] c"strcmp\00", align 1 ; <[7 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1185EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str111 = private constant [3 x i8] c"=s\00", align 1 ; <[3 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1186EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str112 = private constant [4 x i8] c"!=s\00", align 1 ; <[4 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1187EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str113 = private constant [3 x i8] c"<s\00", align 1 ; <[3 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1188EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str114 = private constant [3 x i8] c">s\00", align 1 ; <[3 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1189EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str115 = private constant [4 x i8] c"<=s\00", align 1 ; <[4 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1190EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str116 = private constant [4 x i8] c">=s\00", align 1 ; <[4 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1191EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str117 = private constant [5 x i8] c"echo\00", align 1 ; <[5 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1192EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str118 = private constant [6 x i8] c"error\00", align 1 ; <[6 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1193EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str119 = private constant [7 x i8] c"strstr\00", align 1 ; <[7 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1194EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str120 = private constant [7 x i8] c"strlen\00", align 1 ; <[7 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1195EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str121 = private constant [11 x i8] c"strreplace\00", align 1 ; <[11 x i8]*> [#uses=1]
@_ZN7_stdcmdILi1221EE4initE = global i8 0 ; <i8*> [#uses=1]
@.str122 = private constant [7 x i8] c"maxcon\00", align 1 ; <[7 x i8]*> [#uses=1]
@.str123 = private constant [8 x i8] c"somevar\00", align 1 ; <[8 x i8]*> [#uses=1]
@somevar = global i32 0 ; <i32*> [#uses=2]
@.str124 = private constant [4 x i8] c";\0A\00\00", align 1 ; <[4 x i8]*> [#uses=1]
@.str125 = private constant [20 x i8] c"unknown command: %s\00", align 1 ; <[20 x i8]*> [#uses=1]
@.str126 = private constant [35 x i8] c"builtin declared with illegal type\00", align 8 ; <[35 x i8]*> [#uses=1]
@.str127 = private constant [45 x i8] c"builtin declared with too many args (use V?)\00", align 8 ; <[45 x i8]*> [#uses=1]
@.str128 = private constant [25 x i8] c"%s = 0x%.6X (%d, %d, %d)\00", align 1 ; <[25 x i8]*> [#uses=1]
@.str129 = private constant [10 x i8] c"%s = 0x%X\00", align 1 ; <[10 x i8]*> [#uses=1]
@.str130 = private constant [8 x i8] c"%s = %d\00", align 1 ; <[8 x i8]*> [#uses=1]
@.str131 = private constant [8 x i8] c"%s = %s\00", align 1 ; <[8 x i8]*> [#uses=1]
@.str132 = private constant [10 x i8] c"%s = [%s]\00", align 1 ; <[10 x i8]*> [#uses=1]
@.str133 = private constant [10 x i8] c"%s = \22%s\22\00", align 1 ; <[10 x i8]*> [#uses=1]
@_ZGVZ10executeretPKcE6argids = internal global i64 0 ; <i64*> [#uses=3]
@.str134 = private constant [6 x i8] c"arg%d\00", align 1 ; <[6 x i8]*> [#uses=1]
@.str135 = private constant [10 x i8] c"somevar 9\00", align 1 ; <[10 x i8]*> [#uses=1]
@.str136 = private constant [23 x i8] c"temp = (+ 22 $somevar)\00", align 1 ; <[23 x i8]*> [#uses=1]
@.str137 = private constant [62 x i8] c"if (> $temp 30) [ temp = (+ $temp 1) ] [ temp = (* $temp 2) ]\00", align 8 ; <[62 x i8]*> [#uses=1]
@.str138 = private constant [52 x i8] c"if (< $temp 30) [ temp = 0 ] [ temp = (+ $temp 1) ]\00", align 8 ; <[52 x i8]*> [#uses=1]
@.str139 = private constant [21 x i8] c"echo [Temp is] $temp\00", align 1 ; <[21 x i8]*> [#uses=1]
@.str140 = private constant [4 x i8] c"%d\0A\00", align 1 ; <[4 x i8]*> [#uses=1]
@.str141 = private constant [6 x i8] c"x = 2\00", align 1 ; <[6 x i8]*> [#uses=1]
@.str142 = private constant [9 x i8] c"push x 5\00", align 1 ; <[9 x i8]*> [#uses=1]
@.str143 = private constant [10 x i8] c"push x 11\00", align 1 ; <[10 x i8]*> [#uses=1]
@.str144 = private constant [6 x i8] c"pop x\00", align 1 ; <[6 x i8]*> [#uses=1]
@.str145 = private constant [8 x i8] c"echo $x\00", align 1 ; <[8 x i8]*> [#uses=1]
@.str146 = private constant [30 x i8] c"greet = [ echo hello, $arg1 ]\00", align 1 ; <[30 x i8]*> [#uses=1]
@.str147 = private constant [15 x i8] c"greet everyone\00", align 1 ; <[15 x i8]*> [#uses=1]
@.str148 = private constant [2 x i8] c"0\00", align 1 ; <[2 x i8]*> [#uses=1]
@_ZL7bufnest = internal global i32 0 ; <i32*> [#uses=5]
@.str149 = private constant [9 x i8] c"\0D@\22/()[]\00", align 1 ; <[9 x i8]*> [#uses=1]
@.str150 = private constant [3 x i8] c"\0A\00\00", align 1 ; <[3 x i8]*> [#uses=1]
@.str151 = private constant [13 x i8] c"missing \22%c\22\00", align 1 ; <[13 x i8]*> [#uses=1]
@.str152 = private constant [4 x i8] c" \09\0D\00", align 1 ; <[4 x i8]*> [#uses=1]
@.str153 = private constant [8 x i8] c"/; \09\0D\0A\00\00", align 1 ; <[8 x i8]*> [#uses=1]
@_ZGVZ10parsemacroRPKciR6vectorIcEE5ident = internal global i64 0 ; <i64*> [#uses=3]
@commandmillis = global i32 -1 ; <i32*> [#uses=0]
@commandbuf = global [260 x i8] zeroinitializer, align 32 ; <[260 x i8]*> [#uses=0]
@commandaction = global i8* null ; <i8**> [#uses=0]
@commandprompt = global i8* null ; <i8**> [#uses=0]
@commandpos = global i32 -1 ; <i32*> [#uses=0]
@llvm.global_ctors = appending global [1 x %0] [%0 { i32 65535, void ()* @_GLOBAL__I__Z11exchangestrPcPKc }] ; <[1 x %0]*> [#uses=0]
define i8* @_Z11exchangestrPcPKc(i8* %o, i8* nocapture %n) {
entry:
%0 = icmp eq i8* %o, null ; <i1> [#uses=1]
br i1 %0, label %bb1, label %bb
bb: ; preds = %entry
tail call void @_ZdaPv(i8* %o) nounwind
br label %bb1
bb1: ; preds = %bb, %entry
%1 = tail call i64 @strlen(i8* %n) nounwind readonly ; <i64> [#uses=2]
%2 = add i64 %1, 1 ; <i64> [#uses=2]
%3 = tail call i8* @_Znam(i64 %2) ; <i8*> [#uses=3]
%4 = tail call i8* @strncpy(i8* noalias %3, i8* noalias %n, i64 %2) nounwind ; <i8*> [#uses=0]
%5 = getelementptr inbounds i8* %3, i64 %1 ; <i8*> [#uses=1]
store i8 0, i8* %5, align 1
ret i8* %3
}
define internal void @_GLOBAL__I__Z11exchangestrPcPKc() {
entry:
%0 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([5 x i8]* @.str17, i64 0, i64 0), void ()* bitcast (void (i8*, i8*)* @_Z4pushPcS_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str18, i64 0, i64 0)) ; <i8> [#uses=0]
%1 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([4 x i8]* @.str19, i64 0, i64 0), void ()* bitcast (void (i8*)* @_Z3popPc to void ()*), i8* getelementptr inbounds ([2 x i8]* @.str20, i64 0, i64 0)) ; <i8> [#uses=0]
%2 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([9 x i8]* @.str21, i64 0, i64 0), void ()* bitcast (void (i8*)* @_Z8resetvarPc to void ()*), i8* getelementptr inbounds ([2 x i8]* @.str20, i64 0, i64 0)) ; <i8> [#uses=0]
%3 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([6 x i8]* @.str22, i64 0, i64 0), void ()* bitcast (void (i8*, i8*)* @_Z5aliasPKcS0_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str18, i64 0, i64 0)) ; <i8> [#uses=0]
%4 = tail call i32 @__cxa_atexit(void (i8*)* @__tcf_2, i8* null, i8* bitcast (i8** @__dso_handle to i8*)) nounwind ; <i32> [#uses=0]
%5 = tail call i32 @_Z8variablePKciiiPiPFvvEi(i8* getelementptr inbounds ([8 x i8]* @.str23, i64 0, i64 0), i32 25, i32 0, i32 0, i32* @_numargs, void ()* null, i32 0) ; <i32> [#uses=1]
store i32 %5, i32* @_numargs, align 4
%6 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([3 x i8]* @.str24, i64 0, i64 0), void ()* bitcast (void (i8*, i8*, i8*)* @_ZN7_stdcmdILi844EE3runEPcS1_S1_ to void ()*), i8* getelementptr inbounds ([4 x i8]* @.str25, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi844EE4initE, align 1
%7 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([2 x i8]* @.str26, i64 0, i64 0), void ()* bitcast (void (i8*, i8*, i8*)* @_ZN7_stdcmdILi845EE3runEPcS1_S1_ to void ()*), i8* getelementptr inbounds ([4 x i8]* @.str25, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi845EE4initE, align 1
%8 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([5 x i8]* @.str27, i64 0, i64 0), void ()* bitcast (void (i8*, i32*, i8*)* @_ZN7_stdcmdILi858EE3runEPcPiS1_ to void ()*), i8* getelementptr inbounds ([4 x i8]* @.str28, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi858EE4initE, align 1
%9 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([10 x i8]* @.str29, i64 0, i64 0), void ()* bitcast (void (i8*, i32*, i8*, i8*)* @_ZN7_stdcmdILi872EE3runEPcPiS1_S1_ to void ()*), i8* getelementptr inbounds ([5 x i8]* @.str30, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi872EE4initE, align 1
%10 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([6 x i8]* @.str31, i64 0, i64 0), void ()* bitcast (void (i8*, i8*)* @_ZN7_stdcmdILi873EE3runEPcS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str18, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi873EE4initE, align 1
%11 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([7 x i8]* @.str32, i64 0, i64 0), void ()* bitcast (void (i8*)* @_Z6concatPKc to void ()*), i8* getelementptr inbounds ([2 x i8]* @.str33, i64 0, i64 0)) ; <i8> [#uses=0]
%12 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([7 x i8]* @.str34, i64 0, i64 0), void ()* bitcast (void (i8*)* @_Z6resultPKc to void ()*), i8* getelementptr inbounds ([2 x i8]* @.str20, i64 0, i64 0)) ; <i8> [#uses=0]
%13 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([11 x i8]* @.str35, i64 0, i64 0), void ()* bitcast (void (i8**, i32*)* @_Z10concatwordPPcPi to void ()*), i8* getelementptr inbounds ([2 x i8]* @.str36, i64 0, i64 0)) ; <i8> [#uses=0]
%14 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([7 x i8]* @.str37, i64 0, i64 0), void ()* bitcast (void (i8**, i32*)* @_Z6formatPPcPi to void ()*), i8* getelementptr inbounds ([2 x i8]* @.str36, i64 0, i64 0)) ; <i8> [#uses=0]
%15 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([3 x i8]* @.str38, i64 0, i64 0), void ()* bitcast (void (i8*, i32*)* @_Z2atPcPi to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str39, i64 0, i64 0)) ; <i8> [#uses=0]
%16 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([7 x i8]* @.str40, i64 0, i64 0), void ()* bitcast (void (i8*, i32*, i8*)* @_Z6substrPcPiS_ to void ()*), i8* getelementptr inbounds ([4 x i8]* @.str28, i64 0, i64 0)) ; <i8> [#uses=0]
%17 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([8 x i8]* @.str41, i64 0, i64 0), void ()* bitcast (void (i8*)* @_ZN7_stdcmdILi971EE3runEPc to void ()*), i8* getelementptr inbounds ([2 x i8]* @.str20, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi971EE4initE, align 1
%18 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([9 x i8]* @.str42, i64 0, i64 0), void ()* bitcast (void (i8*)* @_Z9getalias_Pc to void ()*), i8* getelementptr inbounds ([2 x i8]* @.str20, i64 0, i64 0)) ; <i8> [#uses=0]
%19 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([11 x i8]* @.str43, i64 0, i64 0), void ()* bitcast (void (i8*, i8*)* @_Z10prettylistPKcS0_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str18, i64 0, i64 0)) ; <i8> [#uses=0]
%20 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([8 x i8]* @.str44, i64 0, i64 0), void ()* bitcast (void (i8*, i8*)* @_ZN7_stdcmdILi1068EE3runEPcS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str18, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1068EE4initE, align 1
%21 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([8 x i8]* @.str45, i64 0, i64 0), void ()* bitcast (void (i8*, i8*)* @_ZN7_stdcmdILi1069EE3runEPcS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str18, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1069EE4initE, align 1
%22 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([9 x i8]* @.str46, i64 0, i64 0), void ()* bitcast (void (i8*, i8*, i8*)* @_ZN7_stdcmdILi1070EE3runEPcS1_S1_ to void ()*), i8* getelementptr inbounds ([4 x i8]* @.str25, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1070EE4initE, align 1
%23 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([9 x i8]* @.str47, i64 0, i64 0), void ()* bitcast (void (i8*, i8*, i8*)* @_ZN7_stdcmdILi1071EE3runEPcS1_S1_ to void ()*), i8* getelementptr inbounds ([4 x i8]* @.str25, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1071EE4initE, align 1
%24 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([2 x i8]* @.str48, i64 0, i64 0), void ()* bitcast (void (i32*, i32*)* @_ZN7_stdcmdILi1073EE3runEPiS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str49, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1073EE4initE, align 1
%25 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([2 x i8]* @.str50, i64 0, i64 0), void ()* bitcast (void (i32*, i32*)* @_ZN7_stdcmdILi1074EE3runEPiS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str49, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1074EE4initE, align 1
%26 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([2 x i8]* @.str51, i64 0, i64 0), void ()* bitcast (void (i32*, i32*)* @_ZN7_stdcmdILi1075EE3runEPiS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str49, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1075EE4initE, align 1
%27 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([3 x i8]* @.str52, i64 0, i64 0), void ()* bitcast (void (float*, float*)* @_ZN7_stdcmdILi1076EE3runEPfS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str53, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1076EE4initE, align 1
%28 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([3 x i8]* @.str54, i64 0, i64 0), void ()* bitcast (void (float*, float*)* @_ZN7_stdcmdILi1077EE3runEPfS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str53, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1077EE4initE, align 1
%29 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([3 x i8]* @.str55, i64 0, i64 0), void ()* bitcast (void (float*, float*)* @_ZN7_stdcmdILi1078EE3runEPfS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str53, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1078EE4initE, align 1
%30 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([2 x i8]* @.str56, i64 0, i64 0), void ()* bitcast (void (i32*, i32*)* @_ZN7_stdcmdILi1079EE3runEPiS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str49, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1079EE4initE, align 1
%31 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([3 x i8]* @.str57, i64 0, i64 0), void ()* bitcast (void (i32*, i32*)* @_ZN7_stdcmdILi1080EE3runEPiS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str49, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1080EE4initE, align 1
%32 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([2 x i8]* @.str58, i64 0, i64 0), void ()* bitcast (void (i32*, i32*)* @_ZN7_stdcmdILi1081EE3runEPiS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str49, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1081EE4initE, align 1
%33 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([2 x i8]* @.str59, i64 0, i64 0), void ()* bitcast (void (i32*, i32*)* @_ZN7_stdcmdILi1082EE3runEPiS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str49, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1082EE4initE, align 1
%34 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([3 x i8]* @.str60, i64 0, i64 0), void ()* bitcast (void (i32*, i32*)* @_ZN7_stdcmdILi1083EE3runEPiS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str49, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1083EE4initE, align 1
%35 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([3 x i8]* @.str61, i64 0, i64 0), void ()* bitcast (void (i32*, i32*)* @_ZN7_stdcmdILi1084EE3runEPiS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str49, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1084EE4initE, align 1
%36 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([3 x i8]* @.str62, i64 0, i64 0), void ()* bitcast (void (float*, float*)* @_ZN7_stdcmdILi1085EE3runEPfS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str53, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1085EE4initE, align 1
%37 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([4 x i8]* @.str63, i64 0, i64 0), void ()* bitcast (void (float*, float*)* @_ZN7_stdcmdILi1086EE3runEPfS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str53, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1086EE4initE, align 1
%38 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([3 x i8]* @.str64, i64 0, i64 0), void ()* bitcast (void (float*, float*)* @_ZN7_stdcmdILi1087EE3runEPfS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str53, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1087EE4initE, align 1
%39 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([3 x i8]* @.str65, i64 0, i64 0), void ()* bitcast (void (float*, float*)* @_ZN7_stdcmdILi1088EE3runEPfS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str53, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1088EE4initE, align 1
%40 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([4 x i8]* @.str66, i64 0, i64 0), void ()* bitcast (void (float*, float*)* @_ZN7_stdcmdILi1089EE3runEPfS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str53, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1089EE4initE, align 1
%41 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([4 x i8]* @.str67, i64 0, i64 0), void ()* bitcast (void (float*, float*)* @_ZN7_stdcmdILi1090EE3runEPfS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str53, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1090EE4initE, align 1
%42 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([2 x i8]* @.str68, i64 0, i64 0), void ()* bitcast (void (i32*, i32*)* @_ZN7_stdcmdILi1091EE3runEPiS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str49, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1091EE4initE, align 1
%43 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([2 x i8]* @.str69, i64 0, i64 0), void ()* bitcast (void (i32*)* @_ZN7_stdcmdILi1092EE3runEPi to void ()*), i8* getelementptr inbounds ([2 x i8]* @.str70, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1092EE4initE, align 1
%44 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([2 x i8]* @.str71, i64 0, i64 0), void ()* bitcast (void (i32*, i32*)* @_ZN7_stdcmdILi1093EE3runEPiS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str49, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1093EE4initE, align 1
%45 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([2 x i8]* @.str72, i64 0, i64 0), void ()* bitcast (void (i32*, i32*)* @_ZN7_stdcmdILi1094EE3runEPiS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str49, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1094EE4initE, align 1
%46 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([2 x i8]* @.str73, i64 0, i64 0), void ()* bitcast (void (i32*)* @_ZN7_stdcmdILi1095EE3runEPi to void ()*), i8* getelementptr inbounds ([2 x i8]* @.str70, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1095EE4initE, align 1
%47 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([3 x i8]* @.str74, i64 0, i64 0), void ()* bitcast (void (i32*, i32*)* @_ZN7_stdcmdILi1096EE3runEPiS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str49, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1096EE4initE, align 1
%48 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([3 x i8]* @.str75, i64 0, i64 0), void ()* bitcast (void (i32*, i32*)* @_ZN7_stdcmdILi1097EE3runEPiS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str49, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1097EE4initE, align 1
%49 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([3 x i8]* @.str76, i64 0, i64 0), void ()* bitcast (void (i32*, i32*)* @_ZN7_stdcmdILi1098EE3runEPiS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str49, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1098EE4initE, align 1
%50 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([3 x i8]* @.str77, i64 0, i64 0), void ()* bitcast (void (i32*, i32*)* @_ZN7_stdcmdILi1099EE3runEPiS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str49, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1099EE4initE, align 1
%51 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([3 x i8]* @.str78, i64 0, i64 0), void ()* bitcast (void (i32*, i32*)* @_ZN7_stdcmdILi1100EE3runEPiS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str49, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1100EE4initE, align 1
%52 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([3 x i8]* @.str79, i64 0, i64 0), void ()* bitcast (void (i8**, i32*)* @_ZN7_stdcmdILi1106EE3runEPPcPi to void ()*), i8* getelementptr inbounds ([2 x i8]* @.str36, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1106EE4initE, align 1
%53 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([3 x i8]* @.str80, i64 0, i64 0), void ()* bitcast (void (i8**, i32*)* @_ZN7_stdcmdILi1112EE3runEPPcPi to void ()*), i8* getelementptr inbounds ([2 x i8]* @.str36, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1112EE4initE, align 1
%54 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([4 x i8]* @.str81, i64 0, i64 0), void ()* bitcast (void (i32*, i32*)* @_ZN7_stdcmdILi1114EE3runEPiS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str49, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1114EE4initE, align 1
%55 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([4 x i8]* @.str82, i64 0, i64 0), void ()* bitcast (void (i32*, i32*)* @_ZN7_stdcmdILi1115EE3runEPiS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str49, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1115EE4initE, align 1
%56 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([5 x i8]* @.str83, i64 0, i64 0), void ()* bitcast (void (float*, float*)* @_ZN7_stdcmdILi1116EE3runEPfS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str53, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1116EE4initE, align 1
%57 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([5 x i8]* @.str84, i64 0, i64 0), void ()* bitcast (void (float*, float*)* @_ZN7_stdcmdILi1117EE3runEPfS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str53, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1117EE4initE, align 1
%58 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([4 x i8]* @.str85, i64 0, i64 0), void ()* bitcast (void (float*)* @_ZN7_stdcmdILi1118EE3runEPf to void ()*), i8* getelementptr inbounds ([2 x i8]* @.str86, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1118EE4initE, align 1
%59 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([4 x i8]* @.str87, i64 0, i64 0), void ()* bitcast (void (float*)* @_ZN7_stdcmdILi1119EE3runEPf to void ()*), i8* getelementptr inbounds ([2 x i8]* @.str86, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1119EE4initE, align 1
%60 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([4 x i8]* @.str88, i64 0, i64 0), void ()* bitcast (void (float*)* @_ZN7_stdcmdILi1120EE3runEPf to void ()*), i8* getelementptr inbounds ([2 x i8]* @.str86, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1120EE4initE, align 1
%61 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([5 x i8]* @.str89, i64 0, i64 0), void ()* bitcast (void (float*)* @_ZN7_stdcmdILi1121EE3runEPf to void ()*), i8* getelementptr inbounds ([2 x i8]* @.str86, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1121EE4initE, align 1
%62 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([5 x i8]* @.str90, i64 0, i64 0), void ()* bitcast (void (float*)* @_ZN7_stdcmdILi1122EE3runEPf to void ()*), i8* getelementptr inbounds ([2 x i8]* @.str86, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1122EE4initE, align 1
%63 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([5 x i8]* @.str91, i64 0, i64 0), void ()* bitcast (void (float*)* @_ZN7_stdcmdILi1123EE3runEPf to void ()*), i8* getelementptr inbounds ([2 x i8]* @.str86, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1123EE4initE, align 1
%64 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([5 x i8]* @.str92, i64 0, i64 0), void ()* bitcast (void (float*)* @_ZN7_stdcmdILi1124EE3runEPf to void ()*), i8* getelementptr inbounds ([2 x i8]* @.str86, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1124EE4initE, align 1
%65 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([4 x i8]* @.str93, i64 0, i64 0), void ()* bitcast (void (float*, float*)* @_ZN7_stdcmdILi1125EE3runEPfS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str53, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1125EE4initE, align 1
%66 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([5 x i8]* @.str94, i64 0, i64 0), void ()* bitcast (void (float*)* @_ZN7_stdcmdILi1126EE3runEPf to void ()*), i8* getelementptr inbounds ([2 x i8]* @.str86, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1126EE4initE, align 1
%67 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([5 x i8]* @.str95, i64 0, i64 0), void ()* bitcast (void (float*)* @_ZN7_stdcmdILi1127EE3runEPf to void ()*), i8* getelementptr inbounds ([2 x i8]* @.str86, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1127EE4initE, align 1
%68 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([6 x i8]* @.str96, i64 0, i64 0), void ()* bitcast (void (float*)* @_ZN7_stdcmdILi1128EE3runEPf to void ()*), i8* getelementptr inbounds ([2 x i8]* @.str86, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1128EE4initE, align 1
%69 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([4 x i8]* @.str97, i64 0, i64 0), void ()* bitcast (void (float*)* @_ZN7_stdcmdILi1129EE3runEPf to void ()*), i8* getelementptr inbounds ([2 x i8]* @.str86, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1129EE4initE, align 1
%70 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([4 x i8]* @.str98, i64 0, i64 0), void ()* bitcast (void (i8**, i32*)* @_ZN7_stdcmdILi1135EE3runEPPcPi to void ()*), i8* getelementptr inbounds ([2 x i8]* @.str36, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1135EE4initE, align 1
%71 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([4 x i8]* @.str99, i64 0, i64 0), void ()* bitcast (void (i8**, i32*)* @_ZN7_stdcmdILi1141EE3runEPPcPi to void ()*), i8* getelementptr inbounds ([2 x i8]* @.str36, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1141EE4initE, align 1
%72 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([5 x i8]* @.str100, i64 0, i64 0), void ()* bitcast (void (i8**, i32*)* @_ZN7_stdcmdILi1147EE3runEPPcPi to void ()*), i8* getelementptr inbounds ([2 x i8]* @.str36, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1147EE4initE, align 1
%73 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([5 x i8]* @.str101, i64 0, i64 0), void ()* bitcast (void (i8**, i32*)* @_ZN7_stdcmdILi1153EE3runEPPcPi to void ()*), i8* getelementptr inbounds ([2 x i8]* @.str36, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1153EE4initE, align 1
%74 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([5 x i8]* @.str102, i64 0, i64 0), void ()* bitcast (void (i8**, i32*)* @_ZN7_stdcmdILi1165EE3runEPPcPi to void ()*), i8* getelementptr inbounds ([2 x i8]* @.str36, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1165EE4initE, align 1
%75 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([5 x i8]* @.str103, i64 0, i64 0), void ()* bitcast (void (i32*, i8**, i32*)* @_ZN7_stdcmdILi1180EE3runEPiPPcS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str104, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1180EE4initE, align 1
%76 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([6 x i8]* @.str105, i64 0, i64 0), void ()* bitcast (void (float*, i8**, i32*)* @_ZN7_stdcmdILi1181EE3runEPfPPcPi to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str106, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1181EE4initE, align 1
%77 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([6 x i8]* @.str107, i64 0, i64 0), void ()* bitcast (void (i8*, i8**, i32*)* @_ZN7_stdcmdILi1182EE3runEPcPS1_Pi to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str108, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1182EE4initE, align 1
%78 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([4 x i8]* @.str109, i64 0, i64 0), void ()* bitcast (void (i32*, i32*)* @_ZN7_stdcmdILi1184EE3runEPiS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str49, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1184EE4initE, align 1
%79 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([7 x i8]* @.str110, i64 0, i64 0), void ()* bitcast (void (i8*, i8*)* @_ZN7_stdcmdILi1185EE3runEPcS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str18, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1185EE4initE, align 1
%80 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([3 x i8]* @.str111, i64 0, i64 0), void ()* bitcast (void (i8*, i8*)* @_ZN7_stdcmdILi1186EE3runEPcS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str18, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1186EE4initE, align 1
%81 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([4 x i8]* @.str112, i64 0, i64 0), void ()* bitcast (void (i8*, i8*)* @_ZN7_stdcmdILi1187EE3runEPcS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str18, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1187EE4initE, align 1
%82 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([3 x i8]* @.str113, i64 0, i64 0), void ()* bitcast (void (i8*, i8*)* @_ZN7_stdcmdILi1188EE3runEPcS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str18, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1188EE4initE, align 1
%83 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([3 x i8]* @.str114, i64 0, i64 0), void ()* bitcast (void (i8*, i8*)* @_ZN7_stdcmdILi1189EE3runEPcS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str18, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1189EE4initE, align 1
%84 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([4 x i8]* @.str115, i64 0, i64 0), void ()* bitcast (void (i8*, i8*)* @_ZN7_stdcmdILi1190EE3runEPcS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str18, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1190EE4initE, align 1
%85 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([4 x i8]* @.str116, i64 0, i64 0), void ()* bitcast (void (i8*, i8*)* @_ZN7_stdcmdILi1191EE3runEPcS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str18, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1191EE4initE, align 1
%86 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([5 x i8]* @.str117, i64 0, i64 0), void ()* bitcast (void (i8*)* @_ZN7_stdcmdILi1192EE3runEPc to void ()*), i8* getelementptr inbounds ([2 x i8]* @.str33, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1192EE4initE, align 1
%87 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([6 x i8]* @.str118, i64 0, i64 0), void ()* bitcast (void (i8*)* @_ZN7_stdcmdILi1193EE3runEPc to void ()*), i8* getelementptr inbounds ([2 x i8]* @.str33, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1193EE4initE, align 1
%88 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([7 x i8]* @.str119, i64 0, i64 0), void ()* bitcast (void (i8*, i8*)* @_ZN7_stdcmdILi1194EE3runEPcS1_ to void ()*), i8* getelementptr inbounds ([3 x i8]* @.str18, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1194EE4initE, align 1
%89 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([7 x i8]* @.str120, i64 0, i64 0), void ()* bitcast (void (i8*)* @_ZN7_stdcmdILi1195EE3runEPc to void ()*), i8* getelementptr inbounds ([2 x i8]* @.str20, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1195EE4initE, align 1
%90 = tail call zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* getelementptr inbounds ([11 x i8]* @.str121, i64 0, i64 0), void ()* bitcast (void (i8*, i8*, i8*)* @_ZN7_stdcmdILi1221EE3runEPcS1_S1_ to void ()*), i8* getelementptr inbounds ([4 x i8]* @.str25, i64 0, i64 0)) ; <i8> [#uses=0]
store i8 0, i8* @_ZN7_stdcmdILi1221EE4initE, align 1
%91 = tail call i32 @__cxa_atexit(void (i8*)* @__tcf_3, i8* null, i8* bitcast (i8** @__dso_handle to i8*)) nounwind ; <i32> [#uses=0]
%92 = tail call i32 @_Z8variablePKciiiPiPFvvEi(i8* getelementptr inbounds ([7 x i8]* @.str122, i64 0, i64 0), i32 10, i32 200, i32 1000, i32* @maxcon, void ()* @_Z10var_maxconv, i32 1) ; <i32> [#uses=1]
store i32 %92, i32* @maxcon, align 4
%93 = tail call i32 @_Z8variablePKciiiPiPFvvEi(i8* getelementptr inbounds ([8 x i8]* @.str123, i64 0, i64 0), i32 0, i32 0, i32 1024, i32* @somevar, void ()* null, i32 1) ; <i32> [#uses=1]
store i32 %93, i32* @somevar, align 4
ret void
}
define linkonce_odr void @_ZN5identD1Ev(%struct.ident* nocapture %this) nounwind align 2 {
entry:
%0 = getelementptr inbounds %struct.ident* %this, i64 0, i32 0 ; <i32 (...)***> [#uses=1]
store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV5ident, i64 0, i64 2), i32 (...)*** %0, align 8
ret void
}
define linkonce_odr void @_ZN5identD0Ev(%struct.ident* %this) nounwind align 2 {
entry:
%0 = getelementptr inbounds %struct.ident* %this, i64 0, i32 0 ; <i32 (...)***> [#uses=1]
store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV5ident, i64 0, i64 2), i32 (...)*** %0, align 8
%1 = bitcast %struct.ident* %this to i8* ; <i8*> [#uses=1]
tail call void @_ZdlPv(i8* %1) nounwind
ret void
}
define linkonce_odr void @_ZN5ident7changedEv(%struct.ident* nocapture %this) align 2 {
entry:
%0 = getelementptr inbounds %struct.ident* %this, i64 0, i32 6, i32 0 ; <void ()**> [#uses=1]
%1 = load void ()** %0, align 8 ; <void ()*> [#uses=2]
%2 = icmp eq void ()* %1, null ; <i1> [#uses=1]
br i1 %2, label %return, label %bb
bb: ; preds = %entry
tail call void %1()
ret void
return: ; preds = %entry
ret void
}
define i8* @_Z11parsestringPKc(i8* %p) nounwind readonly {
entry:
br label %bb5
bb2: ; preds = %bb5
%0 = getelementptr inbounds i8* %p_addr.1, i64 1 ; <i8*> [#uses=3]
%1 = load i8* %0, align 1 ; <i8> [#uses=1]
%2 = icmp eq i8 %1, 0 ; <i1> [#uses=1]
br i1 %2, label %bb7, label %bb4
bb4: ; preds = %bb5, %bb2
%p_addr.0 = phi i8* [ %0, %bb2 ], [ %p_addr.1, %bb5 ] ; <i8*> [#uses=1]
%3 = getelementptr inbounds i8* %p_addr.0, i64 1 ; <i8*> [#uses=1]
br label %bb5
bb5: ; preds = %bb4, %entry
%p_addr.1 = phi i8* [ %p, %entry ], [ %3, %bb4 ] ; <i8*> [#uses=7]
%4 = load i8* %p_addr.1, align 1 ; <i8> [#uses=1]
switch i8 %4, label %bb4 [
i8 0, label %bb7
i8 10, label %bb7
i8 13, label %bb7
i8 34, label %bb7
i8 94, label %bb2
]
bb7: ; preds = %bb5, %bb5, %bb5, %bb5, %bb2
%.0 = phi i8* [ %0, %bb2 ], [ %p_addr.1, %bb5 ], [ %p_addr.1, %bb5 ], [ %p_addr.1, %bb5 ], [ %p_addr.1, %bb5 ] ; <i8*> [#uses=1]
ret i8* %.0
}
define i32 @_Z12escapestringPcPKcS1_(i8* %dst, i8* %src, i8* %end) nounwind {
entry:
br label %bb8
bb: ; preds = %bb8
%0 = load i8* %src_addr.0, align 1 ; <i8> [#uses=2]
%1 = getelementptr inbounds i8* %src_addr.0, i64 1 ; <i8*> [#uses=3]
%2 = icmp eq i8 %0, 94 ; <i1> [#uses=1]
br i1 %2, label %bb1, label %bb7
bb1: ; preds = %bb
%3 = icmp ult i8* %1, %end ; <i1> [#uses=1]
br i1 %3, label %bb2, label %bb9
bb2: ; preds = %bb1
%4 = load i8* %1, align 1 ; <i8> [#uses=2]
%5 = sext i8 %4 to i32 ; <i32> [#uses=1]
%6 = getelementptr inbounds i8* %src_addr.0, i64 2 ; <i8*> [#uses=4]
switch i32 %5, label %bb6 [
i32 102, label %bb5
i32 110, label %bb3
i32 116, label %bb4
]
bb3: ; preds = %bb2
store i8 10, i8* %dst_addr.0, align 1
br label %bb8.backedge
bb8.backedge: ; preds = %bb7, %bb6, %bb5, %bb4, %bb3
%src_addr.0.be = phi i8* [ %6, %bb6 ], [ %6, %bb4 ], [ %6, %bb3 ], [ %6, %bb5 ], [ %1, %bb7 ] ; <i8*> [#uses=1]
%indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
br label %bb8
bb4: ; preds = %bb2
store i8 9, i8* %dst_addr.0, align 1
br label %bb8.backedge
bb5: ; preds = %bb2
store i8 12, i8* %dst_addr.0, align 1
br label %bb8.backedge
bb6: ; preds = %bb2
store i8 %4, i8* %dst_addr.0, align 1
br label %bb8.backedge
bb7: ; preds = %bb
store i8 %0, i8* %dst_addr.0, align 1
br label %bb8.backedge
bb8: ; preds = %bb8.backedge, %entry
%indvar = phi i64 [ %indvar.next, %bb8.backedge ], [ 0, %entry ] ; <i64> [#uses=3]
%src_addr.0 = phi i8* [ %src_addr.0.be, %bb8.backedge ], [ %src, %entry ] ; <i8*> [#uses=4]
%dst_addr.0 = getelementptr i8* %dst, i64 %indvar ; <i8*> [#uses=5]
%7 = icmp ult i8* %src_addr.0, %end ; <i1> [#uses=1]
br i1 %7, label %bb, label %bb9
bb9: ; preds = %bb8, %bb1
%8 = trunc i64 %indvar to i32 ; <i32> [#uses=1]
ret i32 %8
}
define void @_Z6seedMTj(i32 %seed) nounwind {
bb.nph:
%0 = or i32 %seed, 1 ; <i32> [#uses=2]
store i32 0, i32* @_ZL4left, align 4
store i32 %0, i32* getelementptr inbounds ([625 x i32]* @_ZL5state, i64 0, i64 0), align 32
br label %bb
bb: ; preds = %bb, %bb.nph
%indvar = phi i64 [ 0, %bb.nph ], [ %tmp, %bb ] ; <i64> [#uses=1]
%x.03 = phi i32 [ %0, %bb.nph ], [ %1, %bb ] ; <i32> [#uses=1]
%tmp = add i64 %indvar, 1 ; <i64> [#uses=3]
%s.04 = getelementptr [625 x i32]* @_ZL5state, i64 0, i64 %tmp ; <i32*> [#uses=1]
%1 = mul i32 %x.03, 69069 ; <i32> [#uses=2]
store i32 %1, i32* %s.04, align 4
%exitcond = icmp eq i64 %tmp, 623 ; <i1> [#uses=1]
br i1 %exitcond, label %return, label %bb
return: ; preds = %bb
ret void
}
declare void @_ZdaPv(i8*) nounwind
define internal void @__tcf_3(i8* nocapture %unnamed_arg) nounwind {
entry:
%0 = load i32* getelementptr inbounds (%"struct.vector<cline>"* @conlines, i64 0, i32 2), align 4 ; <i32> [#uses=3]
%1 = icmp sgt i32 %0, 0 ; <i1> [#uses=1]
br i1 %1, label %bb.nph.i.i, label %_ZN6vectorI5clineE6shrinkEi.exit.i
bb.nph.i.i: ; preds = %entry
%tmp.i.i = sub i32 0, %0 ; <i32> [#uses=1]
%tmp4.i.i = icmp sgt i32 %tmp.i.i, -1 ; <i1> [#uses=1]
%tmp.i.op.i = add i32 %0, -1 ; <i32> [#uses=1]
%tmp5.i.i = select i1 %tmp4.i.i, i32 %tmp.i.op.i, i32 0 ; <i32> [#uses=1]
store i32 %tmp5.i.i, i32* getelementptr inbounds (%"struct.vector<cline>"* @conlines, i64 0, i32 2)
br label %_ZN6vectorI5clineE6shrinkEi.exit.i
_ZN6vectorI5clineE6shrinkEi.exit.i: ; preds = %bb.nph.i.i, %entry
%2 = load %struct.cline** getelementptr inbounds (%"struct.vector<cline>"* @conlines, i64 0, i32 0), align 16 ; <%struct.cline*> [#uses=2]
%3 = icmp eq %struct.cline* %2, null ; <i1> [#uses=1]
br i1 %3, label %_ZN6vectorI5clineED1Ev.exit, label %bb1.i
bb1.i: ; preds = %_ZN6vectorI5clineE6shrinkEi.exit.i
%4 = bitcast %struct.cline* %2 to i8* ; <i8*> [#uses=1]
tail call void @_ZdaPv(i8* %4) nounwind
ret void
_ZN6vectorI5clineED1Ev.exit: ; preds = %_ZN6vectorI5clineE6shrinkEi.exit.i
ret void
}
define internal void @__tcf_2(i8* nocapture %unnamed_arg) nounwind {
entry:
%0 = load i32* getelementptr inbounds (%"struct.vector<vector<char>*>"* @_ZL8wordbufs, i64 0, i32 2), align 4 ; <i32> [#uses=3]
%1 = icmp sgt i32 %0, 0 ; <i1> [#uses=1]
br i1 %1, label %bb.nph.i.i, label %_ZN6vectorIPS_IcEE6shrinkEi.exit.i
bb.nph.i.i: ; preds = %entry
%tmp.i.i = sub i32 0, %0 ; <i32> [#uses=1]
%tmp4.i.i = icmp sgt i32 %tmp.i.i, -1 ; <i1> [#uses=1]
%tmp.i.op.i = add i32 %0, -1 ; <i32> [#uses=1]
%tmp5.i.i = select i1 %tmp4.i.i, i32 %tmp.i.op.i, i32 0 ; <i32> [#uses=1]
store i32 %tmp5.i.i, i32* getelementptr inbounds (%"struct.vector<vector<char>*>"* @_ZL8wordbufs, i64 0, i32 2)
br label %_ZN6vectorIPS_IcEE6shrinkEi.exit.i
_ZN6vectorIPS_IcEE6shrinkEi.exit.i: ; preds = %bb.nph.i.i, %entry
%2 = load %struct.cline*** getelementptr inbounds (%"struct.vector<vector<char>*>"* @_ZL8wordbufs, i64 0, i32 0), align 16 ; <%struct.cline**> [#uses=2]
%3 = icmp eq %struct.cline** %2, null ; <i1> [#uses=1]
br i1 %3, label %_ZN6vectorIPS_IcEED1Ev.exit, label %bb1.i
bb1.i: ; preds = %_ZN6vectorIPS_IcEE6shrinkEi.exit.i
%4 = bitcast %struct.cline** %2 to i8* ; <i8*> [#uses=1]
tail call void @_ZdaPv(i8* %4) nounwind
ret void
_ZN6vectorIPS_IcEED1Ev.exit: ; preds = %_ZN6vectorIPS_IcEE6shrinkEi.exit.i
ret void
}
define void @_Z10var_maxconv() nounwind {
entry:
%0 = load i32* getelementptr inbounds (%"struct.vector<cline>"* @conlines, i64 0, i32 2), align 4 ; <i32> [#uses=2]
%1 = load i32* @maxcon, align 4 ; <i32> [#uses=1]
%2 = icmp sgt i32 %0, %1 ; <i1> [#uses=1]
br i1 %2, label %bb, label %return
bb: ; preds = %bb2.backedge, %entry
%3 = phi i32 [ %10, %bb2.backedge ], [ %0, %entry ] ; <i32> [#uses=1]
%4 = load %struct.cline** getelementptr inbounds (%"struct.vector<cline>"* @conlines, i64 0, i32 0), align 16 ; <%struct.cline*> [#uses=1]
%5 = add nsw i32 %3, -1 ; <i32> [#uses=3]
store i32 %5, i32* getelementptr inbounds (%"struct.vector<cline>"* @conlines, i64 0, i32 2), align 4
%6 = sext i32 %5 to i64 ; <i64> [#uses=1]
%7 = getelementptr inbounds %struct.cline* %4, i64 %6, i32 0 ; <i8**> [#uses=1]
%8 = load i8** %7, align 8 ; <i8*> [#uses=2]
%9 = icmp eq i8* %8, null ; <i1> [#uses=1]
br i1 %9, label %bb2.backedge, label %bb1
bb1: ; preds = %bb
tail call void @_ZdaPv(i8* %8) nounwind
%.pre = load i32* getelementptr inbounds (%"struct.vector<cline>"* @conlines, i64 0, i32 2), align 4 ; <i32> [#uses=1]
br label %bb2.backedge
bb2.backedge: ; preds = %bb1, %bb
%10 = phi i32 [ %.pre, %bb1 ], [ %5, %bb ] ; <i32> [#uses=2]
%11 = load i32* @maxcon, align 4 ; <i32> [#uses=1]
%12 = icmp sgt i32 %10, %11 ; <i1> [#uses=1]
br i1 %12, label %bb, label %return
return: ; preds = %bb2.backedge, %entry
ret void
}
define internal void @__tcf_0(i8* nocapture %unnamed_arg) nounwind {
entry:
%0 = load i32* getelementptr inbounds (%struct.cline* @_ZZ10parsemacroRPKciR6vectorIcEE5ident, i64 0, i32 2), align 4 ; <i32> [#uses=3]
%1 = icmp sgt i32 %0, 0 ; <i1> [#uses=1]
br i1 %1, label %bb.nph.i.i, label %_ZN6vectorIcE6shrinkEi.exit.i
bb.nph.i.i: ; preds = %entry
%tmp.i.i = sub i32 0, %0 ; <i32> [#uses=1]
%tmp4.i.i = icmp sgt i32 %tmp.i.i, -1 ; <i1> [#uses=1]
%tmp.i.op.i = add i32 %0, -1 ; <i32> [#uses=1]
%tmp5.i.i = select i1 %tmp4.i.i, i32 %tmp.i.op.i, i32 0 ; <i32> [#uses=1]
store i32 %tmp5.i.i, i32* getelementptr inbounds (%struct.cline* @_ZZ10parsemacroRPKciR6vectorIcEE5ident, i64 0, i32 2)
br label %_ZN6vectorIcE6shrinkEi.exit.i
_ZN6vectorIcE6shrinkEi.exit.i: ; preds = %bb.nph.i.i, %entry
%2 = load i8** getelementptr inbounds (%struct.cline* @_ZZ10parsemacroRPKciR6vectorIcEE5ident, i64 0, i32 0), align 16 ; <i8*> [#uses=2]
%3 = icmp eq i8* %2, null ; <i1> [#uses=1]
br i1 %3, label %_ZN6vectorIcED1Ev.exit, label %bb1.i
bb1.i: ; preds = %_ZN6vectorIcE6shrinkEi.exit.i
tail call void @_ZdaPv(i8* %2) nounwind
ret void
_ZN6vectorIcED1Ev.exit: ; preds = %_ZN6vectorIcE6shrinkEi.exit.i
ret void
}
define internal void @__tcf_1(i8* nocapture %unnamed_arg) nounwind {
entry:
%0 = load i32* getelementptr inbounds (%"struct.vector<ident*>"* @_ZZ10executeretPKcE6argids, i64 0, i32 2), align 4 ; <i32> [#uses=3]
%1 = icmp sgt i32 %0, 0 ; <i1> [#uses=1]
br i1 %1, label %bb.nph.i.i, label %_ZN6vectorIP5identE6shrinkEi.exit.i
bb.nph.i.i: ; preds = %entry
%tmp.i.i = sub i32 0, %0 ; <i32> [#uses=1]
%tmp4.i.i = icmp sgt i32 %tmp.i.i, -1 ; <i1> [#uses=1]
%tmp.i.op.i = add i32 %0, -1 ; <i32> [#uses=1]
%tmp5.i.i = select i1 %tmp4.i.i, i32 %tmp.i.op.i, i32 0 ; <i32> [#uses=1]
store i32 %tmp5.i.i, i32* getelementptr inbounds (%"struct.vector<ident*>"* @_ZZ10executeretPKcE6argids, i64 0, i32 2)
br label %_ZN6vectorIP5identE6shrinkEi.exit.i
_ZN6vectorIP5identE6shrinkEi.exit.i: ; preds = %bb.nph.i.i, %entry
%2 = load %struct.ident*** getelementptr inbounds (%"struct.vector<ident*>"* @_ZZ10executeretPKcE6argids, i64 0, i32 0), align 16 ; <%struct.ident**> [#uses=2]
%3 = icmp eq %struct.ident** %2, null ; <i1> [#uses=1]
br i1 %3, label %_ZN6vectorIP5identED1Ev.exit, label %bb1.i
bb1.i: ; preds = %_ZN6vectorIP5identE6shrinkEi.exit.i
%4 = bitcast %struct.ident** %2 to i8* ; <i8*> [#uses=1]
tail call void @_ZdaPv(i8* %4) nounwind
ret void
_ZN6vectorIP5identED1Ev.exit: ; preds = %_ZN6vectorIP5identE6shrinkEi.exit.i
ret void
}
declare i32 @vsnprintf(i8* noalias nocapture, i64, i8* noalias nocapture, %struct.__va_list_tag*) nounwind
define void @_Z5fatalPKcz(i8* nocapture %s, ...) noreturn nounwind {
entry:
%msg = alloca [260 x i8], align 1 ; <[260 x i8]*> [#uses=2]
%ap = alloca [1 x %struct.__va_list_tag], align 8 ; <[1 x %struct.__va_list_tag]*> [#uses=2]
%0 = load i32* @_ZZ5fatalPKczE6errors, align 4 ; <i32> [#uses=1]
%1 = add nsw i32 %0, 1 ; <i32> [#uses=2]
store i32 %1, i32* @_ZZ5fatalPKczE6errors, align 4
%2 = icmp slt i32 %1, 3 ; <i1> [#uses=1]
br i1 %2, label %bb, label %bb1
bb: ; preds = %entry
%3 = bitcast [1 x %struct.__va_list_tag]* %ap to i8* ; <i8*> [#uses=2]
call void @llvm.va_start(i8* %3)
%4 = getelementptr inbounds [260 x i8]* %msg, i64 0, i64 0 ; <i8*> [#uses=2]
%5 = getelementptr inbounds [1 x %struct.__va_list_tag]* %ap, i64 0, i64 0 ; <%struct.__va_list_tag*> [#uses=1]
%6 = call i32 @vsnprintf(i8* noalias %4, i64 260, i8* noalias %s, %struct.__va_list_tag* %5) nounwind ; <i32> [#uses=0]
%7 = getelementptr inbounds [260 x i8]* %msg, i64 0, i64 259 ; <i8*> [#uses=1]
store i8 0, i8* %7, align 1
call void @llvm.va_end(i8* %3)
%8 = call i32 @puts(i8* %4) ; <i32> [#uses=0]
br label %bb1
bb1: ; preds = %bb, %entry
call void @exit(i32 1) noreturn nounwind
unreachable
}
declare void @llvm.va_start(i8*) nounwind
declare void @llvm.va_end(i8*) nounwind
declare i32 @puts(i8* nocapture) nounwind
declare void @exit(i32) noreturn nounwind
define linkonce_odr void @_ZN15stringformatterclEPKcz(%struct.stringformatter* nocapture %this, i8* nocapture %fmt, ...) nounwind align 2 {
entry:
%v = alloca [1 x %struct.__va_list_tag], align 8 ; <[1 x %struct.__va_list_tag]*> [#uses=2]
%0 = bitcast [1 x %struct.__va_list_tag]* %v to i8* ; <i8*> [#uses=2]
call void @llvm.va_start(i8* %0)
%1 = getelementptr inbounds %struct.stringformatter* %this, i64 0, i32 0 ; <i8**> [#uses=1]
%2 = load i8** %1, align 8 ; <i8*> [#uses=2]
%3 = getelementptr inbounds [1 x %struct.__va_list_tag]* %v, i64 0, i64 0 ; <%struct.__va_list_tag*> [#uses=1]
%4 = call i32 @vsnprintf(i8* noalias %2, i64 260, i8* noalias %fmt, %struct.__va_list_tag* %3) nounwind ; <i32> [#uses=0]
%5 = getelementptr inbounds i8* %2, i64 259 ; <i8*> [#uses=1]
store i8 0, i8* %5, align 1
call void @llvm.va_end(i8* %0)
ret void
}
define i8* @_Z8floatstrf(float %v) nounwind {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%2 = add nsw i32 %1, 1 ; <i32> [#uses=1]
%3 = srem i32 %2, 3 ; <i32> [#uses=2]
store i32 %3, i32* @_ZL6retidx, align 4
%4 = fpext float %v to double ; <double> [#uses=1]
%5 = fptosi float %v to i32 ; <i32> [#uses=1]
%6 = sitofp i32 %5 to float ; <float> [#uses=1]
%7 = fcmp oeq float %6, %v ; <i1> [#uses=1]
%iftmp.145.0 = select i1 %7, [5 x i8]* @.str, [5 x i8]* @.str1 ; <[5 x i8]*> [#uses=1]
%8 = getelementptr inbounds [5 x i8]* %iftmp.145.0, i64 0, i64 0 ; <i8*> [#uses=1]
%9 = sext i32 %3 to i64 ; <i64> [#uses=1]
%10 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %9, i64 0 ; <i8*> [#uses=1]
%11 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %10, i8** %11, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* %8, double %4)
%12 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%13 = sext i32 %12 to i64 ; <i64> [#uses=1]
%14 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %13, i64 0 ; <i8*> [#uses=1]
ret i8* %14
}
define i8* @_Z6intstri(i32 %v) nounwind {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%2 = add nsw i32 %1, 1 ; <i32> [#uses=1]
%3 = srem i32 %2, 3 ; <i32> [#uses=2]
store i32 %3, i32* @_ZL6retidx, align 4
%4 = sext i32 %3 to i64 ; <i64> [#uses=1]
%5 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %4, i64 0 ; <i8*> [#uses=1]
%6 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %5, i8** %6, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %v)
%7 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%8 = sext i32 %7 to i64 ; <i64> [#uses=1]
%9 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %8, i64 0 ; <i8*> [#uses=1]
ret i8* %9
}
define i32 @_Z8reloadMTv() nounwind {
entry:
%0 = load i32* @_ZL4left, align 4 ; <i32> [#uses=1]
%1 = icmp slt i32 %0, -1 ; <i1> [#uses=1]
br i1 %1, label %bb, label %bb.nph38
bb: ; preds = %entry
%2 = tail call i64 @time(i64* null) nounwind ; <i64> [#uses=1]
%3 = trunc i64 %2 to i32 ; <i32> [#uses=1]
%4 = or i32 %3, 1 ; <i32> [#uses=2]
store i32 0, i32* @_ZL4left, align 4
store i32 %4, i32* getelementptr inbounds ([625 x i32]* @_ZL5state, i64 0, i64 0), align 32
br label %bb.i
bb.i: ; preds = %bb.i, %bb
%indvar.i = phi i64 [ 0, %bb ], [ %tmp57, %bb.i ] ; <i64> [#uses=1]
%x.03.i = phi i32 [ %4, %bb ], [ %5, %bb.i ] ; <i32> [#uses=1]
%tmp57 = add i64 %indvar.i, 1 ; <i64> [#uses=3]
%s.04.i = getelementptr [625 x i32]* @_ZL5state, i64 0, i64 %tmp57 ; <i32*> [#uses=1]
%5 = mul i32 %x.03.i, 69069 ; <i32> [#uses=2]
store i32 %5, i32* %s.04.i, align 4
%exitcond56 = icmp eq i64 %tmp57, 623 ; <i1> [#uses=1]
br i1 %exitcond56, label %bb.nph38, label %bb.i
bb.nph38: ; preds = %bb.i, %entry
store i32 623, i32* @_ZL4left, align 4
store i32* getelementptr inbounds ([625 x i32]* @_ZL5state, i64 0, i64 1), i32** @_ZL4next, align 8
%6 = load i32* getelementptr inbounds ([625 x i32]* @_ZL5state, i64 0, i64 0), align 32 ; <i32> [#uses=1]
%s1.031 = load i32* getelementptr inbounds ([625 x i32]* @_ZL5state, i64 0, i64 1), align 4 ; <i32> [#uses=1]
br label %bb2
bb2: ; preds = %bb2, %bb.nph38
%indvar49 = phi i64 [ 0, %bb.nph38 ], [ %indvar.next50, %bb2 ] ; <i64> [#uses=4]
%s1.037 = phi i32 [ %s1.031, %bb.nph38 ], [ %s1.0, %bb2 ] ; <i32> [#uses=4]
%s0.035 = phi i32 [ %6, %bb.nph38 ], [ %s1.037, %bb2 ] ; <i32> [#uses=1]
%tmp = add i64 %indvar49, 397 ; <i64> [#uses=1]
%pM.034 = getelementptr [625 x i32]* @_ZL5state, i64 0, i64 %tmp ; <i32*> [#uses=1]
%p0.033 = getelementptr [625 x i32]* @_ZL5state, i64 0, i64 %indvar49 ; <i32*> [#uses=1]
%7 = load i32* %pM.034, align 4 ; <i32> [#uses=1]
%8 = and i32 %s0.035, -2147483648 ; <i32> [#uses=1]
%9 = and i32 %s1.037, 2147483646 ; <i32> [#uses=1]
%10 = or i32 %9, %8 ; <i32> [#uses=1]
%11 = lshr i32 %10, 1 ; <i32> [#uses=1]
%12 = and i32 %s1.037, 1 ; <i32> [#uses=1]
%toBool = icmp eq i32 %12, 0 ; <i1> [#uses=1]
%iftmp.205.0 = select i1 %toBool, i32 0, i32 -1727483681 ; <i32> [#uses=1]
%13 = xor i32 %11, %iftmp.205.0 ; <i32> [#uses=1]
%14 = xor i32 %13, %7 ; <i32> [#uses=1]
store i32 %14, i32* %p0.033, align 4
%tmp54 = add i64 %indvar49, 2 ; <i64> [#uses=1]
%p2.032 = getelementptr [625 x i32]* @_ZL5state, i64 0, i64 %tmp54 ; <i32*> [#uses=1]
%s1.0 = load i32* %p2.032, align 4 ; <i32> [#uses=2]
%indvar.next50 = add i64 %indvar49, 1 ; <i64> [#uses=2]
%exitcond51 = icmp eq i64 %indvar.next50, 227 ; <i1> [#uses=1]
br i1 %exitcond51, label %bb9, label %bb2
bb9: ; preds = %bb9.bb9_crit_edge, %bb2
%indvar = phi i64 [ %indvar.next, %bb9.bb9_crit_edge ], [ 0, %bb2 ] ; <i64> [#uses=4]
%s1.127 = phi i32 [ %23, %bb9.bb9_crit_edge ], [ %s1.0, %bb2 ] ; <i32> [#uses=4]
%s0.126 = phi i32 [ %s1.127, %bb9.bb9_crit_edge ], [ %s1.037, %bb2 ] ; <i32> [#uses=1]
%pM.125 = getelementptr [625 x i32]* @_ZL5state, i64 0, i64 %indvar ; <i32*> [#uses=1]
%.sum = add i64 %indvar, 227 ; <i64> [#uses=1]
%p0.124 = getelementptr [625 x i32]* @_ZL5state, i64 0, i64 %.sum ; <i32*> [#uses=1]
%15 = load i32* %pM.125, align 4 ; <i32> [#uses=1]
%16 = and i32 %s0.126, -2147483648 ; <i32> [#uses=1]
%17 = and i32 %s1.127, 2147483646 ; <i32> [#uses=1]
%18 = or i32 %17, %16 ; <i32> [#uses=1]
%19 = lshr i32 %18, 1 ; <i32> [#uses=1]
%20 = and i32 %s1.127, 1 ; <i32> [#uses=1]
%toBool10 = icmp eq i32 %20, 0 ; <i1> [#uses=1]
%iftmp.207.0 = select i1 %toBool10, i32 0, i32 -1727483681 ; <i32> [#uses=1]
%21 = xor i32 %19, %iftmp.207.0 ; <i32> [#uses=1]
%22 = xor i32 %21, %15 ; <i32> [#uses=1]
store i32 %22, i32* %p0.124, align 4
%indvar.next = add i64 %indvar, 1 ; <i64> [#uses=2]
%exitcond = icmp eq i64 %indvar.next, 396 ; <i1> [#uses=1]
br i1 %exitcond, label %bb16, label %bb9.bb9_crit_edge
bb9.bb9_crit_edge: ; preds = %bb9
%.sum59 = add i64 %indvar, 229 ; <i64> [#uses=1]
%p2.123 = getelementptr [625 x i32]* @_ZL5state, i64 0, i64 %.sum59 ; <i32*> [#uses=1]
%23 = load i32* %p2.123, align 4 ; <i32> [#uses=1]
br label %bb9
bb16: ; preds = %bb9
%24 = load i32* getelementptr inbounds ([625 x i32]* @_ZL5state, i64 0, i64 0), align 32 ; <i32> [#uses=4]
%25 = load i32* getelementptr inbounds ([625 x i32]* @_ZL5state, i64 0, i64 396), align 16 ; <i32> [#uses=1]
%26 = and i32 %s1.127, -2147483648 ; <i32> [#uses=1]
%27 = and i32 %24, 2147483646 ; <i32> [#uses=1]
%28 = or i32 %27, %26 ; <i32> [#uses=1]
%29 = lshr i32 %28, 1 ; <i32> [#uses=1]
%30 = and i32 %24, 1 ; <i32> [#uses=1]
%toBool17 = icmp eq i32 %30, 0 ; <i1> [#uses=1]
%iftmp.208.0 = select i1 %toBool17, i32 0, i32 -1727483681 ; <i32> [#uses=1]
%31 = xor i32 %iftmp.208.0, %25 ; <i32> [#uses=1]
%32 = xor i32 %31, %29 ; <i32> [#uses=1]
store i32 %32, i32* getelementptr inbounds ([625 x i32]* @_ZL5state, i64 0, i64 623), align 4
%33 = lshr i32 %24, 11 ; <i32> [#uses=1]
%34 = xor i32 %33, %24 ; <i32> [#uses=2]
%35 = shl i32 %34, 7 ; <i32> [#uses=1]
%36 = and i32 %35, -1658038656 ; <i32> [#uses=1]
%37 = xor i32 %36, %34 ; <i32> [#uses=2]
%38 = shl i32 %37, 15 ; <i32> [#uses=1]
%39 = and i32 %38, -272236544 ; <i32> [#uses=1]
%40 = xor i32 %39, %37 ; <i32> [#uses=2]
%41 = lshr i32 %40, 18 ; <i32> [#uses=1]
%42 = xor i32 %41, %40 ; <i32> [#uses=1]
ret i32 %42
}
declare i64 @time(i64*) nounwind
define i32 @_Z8randomMTv() nounwind {
entry:
%0 = load i32* @_ZL4left, align 4 ; <i32> [#uses=1]
%1 = add nsw i32 %0, -1 ; <i32> [#uses=2]
store i32 %1, i32* @_ZL4left, align 4
%toBool = icmp slt i32 %1, 0 ; <i1> [#uses=1]
br i1 %toBool, label %bb, label %bb1
bb: ; preds = %entry
%2 = tail call i32 @_Z8reloadMTv() nounwind ; <i32> [#uses=1]
ret i32 %2
bb1: ; preds = %entry
%3 = load i32** @_ZL4next, align 8 ; <i32*> [#uses=2]
%4 = load i32* %3, align 4 ; <i32> [#uses=2]
%5 = getelementptr inbounds i32* %3, i64 1 ; <i32*> [#uses=1]
store i32* %5, i32** @_ZL4next, align 8
%6 = lshr i32 %4, 11 ; <i32> [#uses=1]
%7 = xor i32 %6, %4 ; <i32> [#uses=2]
%8 = shl i32 %7, 7 ; <i32> [#uses=1]
%9 = and i32 %8, -1658038656 ; <i32> [#uses=1]
%10 = xor i32 %9, %7 ; <i32> [#uses=2]
%11 = shl i32 %10, 15 ; <i32> [#uses=1]
%12 = and i32 %11, -272236544 ; <i32> [#uses=1]
%13 = xor i32 %12, %10 ; <i32> [#uses=2]
%14 = lshr i32 %13, 18 ; <i32> [#uses=1]
%15 = xor i32 %14, %13 ; <i32> [#uses=1]
ret i32 %15
}
declare i8* @_Znam(i64)
declare void @llvm.memcpy.i64(i8* nocapture, i8* nocapture, i64, i32) nounwind
define linkonce_odr %struct.cline* @_ZN6vectorI5clineE3addERKS0_(%"struct.vector<cline>"* nocapture %this, %struct.cline* nocapture %x) align 2 {
entry:
%0 = getelementptr inbounds %"struct.vector<cline>"* %this, i64 0, i32 2 ; <i32*> [#uses=4]
%1 = load i32* %0, align 4 ; <i32> [#uses=5]
%2 = getelementptr inbounds %"struct.vector<cline>"* %this, i64 0, i32 1 ; <i32*> [#uses=3]
%3 = load i32* %2, align 8 ; <i32> [#uses=7]
%4 = icmp eq i32 %1, %3 ; <i1> [#uses=1]
br i1 %4, label %bb, label %bb1
bb: ; preds = %entry
%5 = add nsw i32 %1, 1 ; <i32> [#uses=4]
%6 = icmp eq i32 %3, 0 ; <i1> [#uses=1]
br i1 %6, label %bb.i, label %bb2.preheader.i
bb2.preheader.i: ; preds = %bb
%7 = icmp slt i32 %3, %5 ; <i1> [#uses=1]
br i1 %7, label %bb1.i, label %bb1
bb.i: ; preds = %bb
%8 = icmp slt i32 %5, 8 ; <i1> [#uses=1]
%iftmp.215.0.i.i = select i1 %8, i32 8, i32 %5 ; <i32> [#uses=2]
store i32 %iftmp.215.0.i.i, i32* %2, align 8
br label %bb3.i
bb1.i: ; preds = %bb1.i, %bb2.preheader.i
%.tmp.0.i = phi i32 [ %9, %bb1.i ], [ %3, %bb2.preheader.i ] ; <i32> [#uses=1]
%9 = shl i32 %.tmp.0.i, 1 ; <i32> [#uses=4]
%10 = icmp slt i32 %9, %5 ; <i1> [#uses=1]
br i1 %10, label %bb1.i, label %bb2.bb3.loopexit_crit_edge.i
bb2.bb3.loopexit_crit_edge.i: ; preds = %bb1.i
store i32 %9, i32* %2
br label %bb3.i
bb3.i: ; preds = %bb2.bb3.loopexit_crit_edge.i, %bb.i
%11 = phi i32 [ %iftmp.215.0.i.i, %bb.i ], [ %9, %bb2.bb3.loopexit_crit_edge.i ] ; <i32> [#uses=2]
%12 = icmp sgt i32 %11, %3 ; <i1> [#uses=1]
br i1 %12, label %bb4.i, label %bb1
bb4.i: ; preds = %bb3.i
%13 = sext i32 %11 to i64 ; <i64> [#uses=1]
%14 = shl i64 %13, 4 ; <i64> [#uses=1]
%15 = tail call i8* @_Znam(i64 %14) ; <i8*> [#uses=2]
%16 = icmp sgt i32 %3, 0 ; <i1> [#uses=1]
br i1 %16, label %bb5.i, label %bb7.i
bb5.i: ; preds = %bb4.i
%17 = sext i32 %3 to i64 ; <i64> [#uses=1]
%18 = shl i64 %17, 4 ; <i64> [#uses=1]
%19 = getelementptr inbounds %"struct.vector<cline>"* %this, i64 0, i32 0 ; <%struct.cline**> [#uses=2]
%20 = load %struct.cline** %19, align 8 ; <%struct.cline*> [#uses=1]
%21 = bitcast %struct.cline* %20 to i8* ; <i8*> [#uses=1]
tail call void @llvm.memcpy.i64(i8* %15, i8* %21, i64 %18, i32 1)
%22 = load %struct.cline** %19, align 8 ; <%struct.cline*> [#uses=2]
%23 = icmp eq %struct.cline* %22, null ; <i1> [#uses=1]
br i1 %23, label %bb7.i, label %bb6.i
bb6.i: ; preds = %bb5.i
%24 = bitcast %struct.cline* %22 to i8* ; <i8*> [#uses=1]
tail call void @_ZdaPv(i8* %24) nounwind
br label %bb7.i
bb7.i: ; preds = %bb6.i, %bb5.i, %bb4.i
%25 = bitcast i8* %15 to %struct.cline* ; <%struct.cline*> [#uses=1]
%26 = getelementptr inbounds %"struct.vector<cline>"* %this, i64 0, i32 0 ; <%struct.cline**> [#uses=1]
store %struct.cline* %25, %struct.cline** %26, align 8
%.pre = load i32* %0, align 4 ; <i32> [#uses=1]
br label %bb1
bb1: ; preds = %bb7.i, %bb3.i, %bb2.preheader.i, %entry
%27 = phi i32 [ %.pre, %bb7.i ], [ %1, %entry ], [ %1, %bb2.preheader.i ], [ %1, %bb3.i ] ; <i32> [#uses=2]
%28 = getelementptr inbounds %"struct.vector<cline>"* %this, i64 0, i32 0 ; <%struct.cline**> [#uses=2]
%29 = load %struct.cline** %28, align 8 ; <%struct.cline*> [#uses=5]
%30 = sext i32 %27 to i64 ; <i64> [#uses=4]
%31 = getelementptr inbounds %struct.cline* %29, i64 %30 ; <%struct.cline*> [#uses=1]
%32 = icmp eq %struct.cline* %31, null ; <i1> [#uses=1]
br i1 %32, label %bb4, label %bb2
bb2: ; preds = %bb1
%33 = getelementptr inbounds %struct.cline* %29, i64 %30, i32 0 ; <i8**> [#uses=1]
%34 = getelementptr inbounds %struct.cline* %x, i64 0, i32 0 ; <i8**> [#uses=1]
%35 = load i8** %34, align 8 ; <i8*> [#uses=1]
store i8* %35, i8** %33, align 8
%36 = getelementptr inbounds %struct.cline* %29, i64 %30, i32 1 ; <i32*> [#uses=1]
%37 = getelementptr inbounds %struct.cline* %x, i64 0, i32 1 ; <i32*> [#uses=1]
%38 = load i32* %37, align 8 ; <i32> [#uses=1]
store i32 %38, i32* %36, align 8
%39 = getelementptr inbounds %struct.cline* %29, i64 %30, i32 2 ; <i32*> [#uses=1]
%40 = getelementptr inbounds %struct.cline* %x, i64 0, i32 2 ; <i32*> [#uses=1]
%41 = load i32* %40, align 4 ; <i32> [#uses=1]
store i32 %41, i32* %39, align 4
%.pre6 = load %struct.cline** %28, align 8 ; <%struct.cline*> [#uses=1]
%.pre7 = load i32* %0, align 4 ; <i32> [#uses=1]
br label %bb4
bb4: ; preds = %bb2, %bb1
%42 = phi i32 [ %27, %bb1 ], [ %.pre7, %bb2 ] ; <i32> [#uses=2]
%43 = phi %struct.cline* [ %29, %bb1 ], [ %.pre6, %bb2 ] ; <%struct.cline*> [#uses=1]
%44 = sext i32 %42 to i64 ; <i64> [#uses=1]
%45 = getelementptr inbounds %struct.cline* %43, i64 %44 ; <%struct.cline*> [#uses=1]
%46 = add nsw i32 %42, 1 ; <i32> [#uses=1]
store i32 %46, i32* %0, align 4
ret %struct.cline* %45
}
define linkonce_odr i8* @_ZN6vectorIcE3addERKc(%struct.cline* nocapture %this, i8* nocapture %x) align 2 {
entry:
%0 = getelementptr inbounds %struct.cline* %this, i64 0, i32 2 ; <i32*> [#uses=4]
%1 = load i32* %0, align 4 ; <i32> [#uses=5]
%2 = getelementptr inbounds %struct.cline* %this, i64 0, i32 1 ; <i32*> [#uses=3]
%3 = load i32* %2, align 8 ; <i32> [#uses=7]
%4 = icmp eq i32 %1, %3 ; <i1> [#uses=1]
br i1 %4, label %bb, label %bb1
bb: ; preds = %entry
%5 = add nsw i32 %1, 1 ; <i32> [#uses=4]
%6 = icmp eq i32 %3, 0 ; <i1> [#uses=1]
br i1 %6, label %bb.i, label %bb2.preheader.i
bb2.preheader.i: ; preds = %bb
%7 = icmp slt i32 %3, %5 ; <i1> [#uses=1]
br i1 %7, label %bb1.i, label %bb1
bb.i: ; preds = %bb
%8 = icmp slt i32 %5, 8 ; <i1> [#uses=1]
%iftmp.215.0.i.i = select i1 %8, i32 8, i32 %5 ; <i32> [#uses=2]
store i32 %iftmp.215.0.i.i, i32* %2, align 8
br label %bb3.i
bb1.i: ; preds = %bb1.i, %bb2.preheader.i
%.tmp.0.i = phi i32 [ %9, %bb1.i ], [ %3, %bb2.preheader.i ] ; <i32> [#uses=1]
%9 = shl i32 %.tmp.0.i, 1 ; <i32> [#uses=4]
%10 = icmp slt i32 %9, %5 ; <i1> [#uses=1]
br i1 %10, label %bb1.i, label %bb2.bb3.loopexit_crit_edge.i
bb2.bb3.loopexit_crit_edge.i: ; preds = %bb1.i
store i32 %9, i32* %2
br label %bb3.i
bb3.i: ; preds = %bb2.bb3.loopexit_crit_edge.i, %bb.i
%11 = phi i32 [ %iftmp.215.0.i.i, %bb.i ], [ %9, %bb2.bb3.loopexit_crit_edge.i ] ; <i32> [#uses=2]
%12 = icmp sgt i32 %11, %3 ; <i1> [#uses=1]
br i1 %12, label %bb4.i, label %bb1
bb4.i: ; preds = %bb3.i
%13 = sext i32 %11 to i64 ; <i64> [#uses=1]
%14 = tail call i8* @_Znam(i64 %13) ; <i8*> [#uses=2]
%15 = icmp sgt i32 %3, 0 ; <i1> [#uses=1]
br i1 %15, label %bb5.i, label %bb7.i
bb5.i: ; preds = %bb4.i
%16 = sext i32 %3 to i64 ; <i64> [#uses=1]
%17 = getelementptr inbounds %struct.cline* %this, i64 0, i32 0 ; <i8**> [#uses=2]
%18 = load i8** %17, align 8 ; <i8*> [#uses=1]
tail call void @llvm.memcpy.i64(i8* %14, i8* %18, i64 %16, i32 1)
%19 = load i8** %17, align 8 ; <i8*> [#uses=2]
%20 = icmp eq i8* %19, null ; <i1> [#uses=1]
br i1 %20, label %bb7.i, label %bb6.i
bb6.i: ; preds = %bb5.i
tail call void @_ZdaPv(i8* %19) nounwind
br label %bb7.i
bb7.i: ; preds = %bb6.i, %bb5.i, %bb4.i
%21 = getelementptr inbounds %struct.cline* %this, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %14, i8** %21, align 8
%.pre = load i32* %0, align 4 ; <i32> [#uses=1]
br label %bb1
bb1: ; preds = %bb7.i, %bb3.i, %bb2.preheader.i, %entry
%22 = phi i32 [ %.pre, %bb7.i ], [ %1, %entry ], [ %1, %bb2.preheader.i ], [ %1, %bb3.i ] ; <i32> [#uses=2]
%23 = getelementptr inbounds %struct.cline* %this, i64 0, i32 0 ; <i8**> [#uses=2]
%24 = load i8** %23, align 8 ; <i8*> [#uses=2]
%25 = sext i32 %22 to i64 ; <i64> [#uses=1]
%26 = getelementptr inbounds i8* %24, i64 %25 ; <i8*> [#uses=2]
%27 = icmp eq i8* %26, null ; <i1> [#uses=1]
br i1 %27, label %bb4, label %bb2
bb2: ; preds = %bb1
%28 = load i8* %x, align 1 ; <i8> [#uses=1]
store i8 %28, i8* %26, align 1
%.pre6 = load i8** %23, align 8 ; <i8*> [#uses=1]
%.pre7 = load i32* %0, align 4 ; <i32> [#uses=1]
br label %bb4
bb4: ; preds = %bb2, %bb1
%29 = phi i32 [ %22, %bb1 ], [ %.pre7, %bb2 ] ; <i32> [#uses=2]
%30 = phi i8* [ %24, %bb1 ], [ %.pre6, %bb2 ] ; <i8*> [#uses=1]
%31 = sext i32 %29 to i64 ; <i64> [#uses=1]
%32 = getelementptr inbounds i8* %30, i64 %31 ; <i8*> [#uses=1]
%33 = add nsw i32 %29, 1 ; <i32> [#uses=1]
store i32 %33, i32* %0, align 4
ret i8* %32
}
define linkonce_odr i8** @_ZN6vectorIPcE3addERKS0_(%"struct.vector<char*>"* nocapture %this, i8** nocapture %x) align 2 {
entry:
%0 = getelementptr inbounds %"struct.vector<char*>"* %this, i64 0, i32 2 ; <i32*> [#uses=4]
%1 = load i32* %0, align 4 ; <i32> [#uses=5]
%2 = getelementptr inbounds %"struct.vector<char*>"* %this, i64 0, i32 1 ; <i32*> [#uses=3]
%3 = load i32* %2, align 8 ; <i32> [#uses=7]
%4 = icmp eq i32 %1, %3 ; <i1> [#uses=1]
br i1 %4, label %bb, label %bb1
bb: ; preds = %entry
%5 = add nsw i32 %1, 1 ; <i32> [#uses=4]
%6 = icmp eq i32 %3, 0 ; <i1> [#uses=1]
br i1 %6, label %bb.i, label %bb2.preheader.i
bb2.preheader.i: ; preds = %bb
%7 = icmp slt i32 %3, %5 ; <i1> [#uses=1]
br i1 %7, label %bb1.i, label %bb1
bb.i: ; preds = %bb
%8 = icmp slt i32 %5, 8 ; <i1> [#uses=1]
%iftmp.215.0.i.i = select i1 %8, i32 8, i32 %5 ; <i32> [#uses=2]
store i32 %iftmp.215.0.i.i, i32* %2, align 8
br label %bb3.i
bb1.i: ; preds = %bb1.i, %bb2.preheader.i
%.tmp.0.i = phi i32 [ %9, %bb1.i ], [ %3, %bb2.preheader.i ] ; <i32> [#uses=1]
%9 = shl i32 %.tmp.0.i, 1 ; <i32> [#uses=4]
%10 = icmp slt i32 %9, %5 ; <i1> [#uses=1]
br i1 %10, label %bb1.i, label %bb2.bb3.loopexit_crit_edge.i
bb2.bb3.loopexit_crit_edge.i: ; preds = %bb1.i
store i32 %9, i32* %2
br label %bb3.i
bb3.i: ; preds = %bb2.bb3.loopexit_crit_edge.i, %bb.i
%11 = phi i32 [ %iftmp.215.0.i.i, %bb.i ], [ %9, %bb2.bb3.loopexit_crit_edge.i ] ; <i32> [#uses=2]
%12 = icmp sgt i32 %11, %3 ; <i1> [#uses=1]
br i1 %12, label %bb4.i, label %bb1
bb4.i: ; preds = %bb3.i
%13 = sext i32 %11 to i64 ; <i64> [#uses=1]
%14 = shl i64 %13, 3 ; <i64> [#uses=1]
%15 = tail call i8* @_Znam(i64 %14) ; <i8*> [#uses=2]
%16 = icmp sgt i32 %3, 0 ; <i1> [#uses=1]
br i1 %16, label %bb5.i, label %bb7.i
bb5.i: ; preds = %bb4.i
%17 = sext i32 %3 to i64 ; <i64> [#uses=1]
%18 = shl i64 %17, 3 ; <i64> [#uses=1]
%19 = getelementptr inbounds %"struct.vector<char*>"* %this, i64 0, i32 0 ; <i8***> [#uses=2]
%20 = load i8*** %19, align 8 ; <i8**> [#uses=1]
%21 = bitcast i8** %20 to i8* ; <i8*> [#uses=1]
tail call void @llvm.memcpy.i64(i8* %15, i8* %21, i64 %18, i32 1)
%22 = load i8*** %19, align 8 ; <i8**> [#uses=2]
%23 = icmp eq i8** %22, null ; <i1> [#uses=1]
br i1 %23, label %bb7.i, label %bb6.i
bb6.i: ; preds = %bb5.i
%24 = bitcast i8** %22 to i8* ; <i8*> [#uses=1]
tail call void @_ZdaPv(i8* %24) nounwind
br label %bb7.i
bb7.i: ; preds = %bb6.i, %bb5.i, %bb4.i
%25 = bitcast i8* %15 to i8** ; <i8**> [#uses=1]
%26 = getelementptr inbounds %"struct.vector<char*>"* %this, i64 0, i32 0 ; <i8***> [#uses=1]
store i8** %25, i8*** %26, align 8
%.pre = load i32* %0, align 4 ; <i32> [#uses=1]
br label %bb1
bb1: ; preds = %bb7.i, %bb3.i, %bb2.preheader.i, %entry
%27 = phi i32 [ %.pre, %bb7.i ], [ %1, %entry ], [ %1, %bb2.preheader.i ], [ %1, %bb3.i ] ; <i32> [#uses=2]
%28 = getelementptr inbounds %"struct.vector<char*>"* %this, i64 0, i32 0 ; <i8***> [#uses=2]
%29 = load i8*** %28, align 8 ; <i8**> [#uses=2]
%30 = sext i32 %27 to i64 ; <i64> [#uses=1]
%31 = getelementptr inbounds i8** %29, i64 %30 ; <i8**> [#uses=2]
%32 = icmp eq i8** %31, null ; <i1> [#uses=1]
br i1 %32, label %bb4, label %bb2
bb2: ; preds = %bb1
%33 = load i8** %x, align 8 ; <i8*> [#uses=1]
store i8* %33, i8** %31, align 8
%.pre6 = load i8*** %28, align 8 ; <i8**> [#uses=1]
%.pre7 = load i32* %0, align 4 ; <i32> [#uses=1]
br label %bb4
bb4: ; preds = %bb2, %bb1
%34 = phi i32 [ %27, %bb1 ], [ %.pre7, %bb2 ] ; <i32> [#uses=2]
%35 = phi i8** [ %29, %bb1 ], [ %.pre6, %bb2 ] ; <i8**> [#uses=1]
%36 = sext i32 %34 to i64 ; <i64> [#uses=1]
%37 = getelementptr inbounds i8** %35, i64 %36 ; <i8**> [#uses=1]
%38 = add nsw i32 %34, 1 ; <i32> [#uses=1]
store i32 %38, i32* %0, align 4
ret i8** %37
}
define linkonce_odr %struct.ident** @_ZN6vectorIP5identE3addERKS1_(%"struct.vector<ident*>"* nocapture %this, %struct.ident** nocapture %x) align 2 {
entry:
%0 = getelementptr inbounds %"struct.vector<ident*>"* %this, i64 0, i32 2 ; <i32*> [#uses=4]
%1 = load i32* %0, align 4 ; <i32> [#uses=5]
%2 = getelementptr inbounds %"struct.vector<ident*>"* %this, i64 0, i32 1 ; <i32*> [#uses=3]
%3 = load i32* %2, align 8 ; <i32> [#uses=7]
%4 = icmp eq i32 %1, %3 ; <i1> [#uses=1]
br i1 %4, label %bb, label %bb1
bb: ; preds = %entry
%5 = add nsw i32 %1, 1 ; <i32> [#uses=4]
%6 = icmp eq i32 %3, 0 ; <i1> [#uses=1]
br i1 %6, label %bb.i, label %bb2.preheader.i
bb2.preheader.i: ; preds = %bb
%7 = icmp slt i32 %3, %5 ; <i1> [#uses=1]
br i1 %7, label %bb1.i, label %bb1
bb.i: ; preds = %bb
%8 = icmp slt i32 %5, 8 ; <i1> [#uses=1]
%iftmp.215.0.i.i = select i1 %8, i32 8, i32 %5 ; <i32> [#uses=2]
store i32 %iftmp.215.0.i.i, i32* %2, align 8
br label %bb3.i
bb1.i: ; preds = %bb1.i, %bb2.preheader.i
%.tmp.0.i = phi i32 [ %9, %bb1.i ], [ %3, %bb2.preheader.i ] ; <i32> [#uses=1]
%9 = shl i32 %.tmp.0.i, 1 ; <i32> [#uses=4]
%10 = icmp slt i32 %9, %5 ; <i1> [#uses=1]
br i1 %10, label %bb1.i, label %bb2.bb3.loopexit_crit_edge.i
bb2.bb3.loopexit_crit_edge.i: ; preds = %bb1.i
store i32 %9, i32* %2
br label %bb3.i
bb3.i: ; preds = %bb2.bb3.loopexit_crit_edge.i, %bb.i
%11 = phi i32 [ %iftmp.215.0.i.i, %bb.i ], [ %9, %bb2.bb3.loopexit_crit_edge.i ] ; <i32> [#uses=2]
%12 = icmp sgt i32 %11, %3 ; <i1> [#uses=1]
br i1 %12, label %bb4.i, label %bb1
bb4.i: ; preds = %bb3.i
%13 = sext i32 %11 to i64 ; <i64> [#uses=1]
%14 = shl i64 %13, 3 ; <i64> [#uses=1]
%15 = tail call i8* @_Znam(i64 %14) ; <i8*> [#uses=2]
%16 = icmp sgt i32 %3, 0 ; <i1> [#uses=1]
br i1 %16, label %bb5.i, label %bb7.i
bb5.i: ; preds = %bb4.i
%17 = sext i32 %3 to i64 ; <i64> [#uses=1]
%18 = shl i64 %17, 3 ; <i64> [#uses=1]
%19 = getelementptr inbounds %"struct.vector<ident*>"* %this, i64 0, i32 0 ; <%struct.ident***> [#uses=2]
%20 = load %struct.ident*** %19, align 8 ; <%struct.ident**> [#uses=1]
%21 = bitcast %struct.ident** %20 to i8* ; <i8*> [#uses=1]
tail call void @llvm.memcpy.i64(i8* %15, i8* %21, i64 %18, i32 1)
%22 = load %struct.ident*** %19, align 8 ; <%struct.ident**> [#uses=2]
%23 = icmp eq %struct.ident** %22, null ; <i1> [#uses=1]
br i1 %23, label %bb7.i, label %bb6.i
bb6.i: ; preds = %bb5.i
%24 = bitcast %struct.ident** %22 to i8* ; <i8*> [#uses=1]
tail call void @_ZdaPv(i8* %24) nounwind
br label %bb7.i
bb7.i: ; preds = %bb6.i, %bb5.i, %bb4.i
%25 = bitcast i8* %15 to %struct.ident** ; <%struct.ident**> [#uses=1]
%26 = getelementptr inbounds %"struct.vector<ident*>"* %this, i64 0, i32 0 ; <%struct.ident***> [#uses=1]
store %struct.ident** %25, %struct.ident*** %26, align 8
%.pre = load i32* %0, align 4 ; <i32> [#uses=1]
br label %bb1
bb1: ; preds = %bb7.i, %bb3.i, %bb2.preheader.i, %entry
%27 = phi i32 [ %.pre, %bb7.i ], [ %1, %entry ], [ %1, %bb2.preheader.i ], [ %1, %bb3.i ] ; <i32> [#uses=2]
%28 = getelementptr inbounds %"struct.vector<ident*>"* %this, i64 0, i32 0 ; <%struct.ident***> [#uses=2]
%29 = load %struct.ident*** %28, align 8 ; <%struct.ident**> [#uses=2]
%30 = sext i32 %27 to i64 ; <i64> [#uses=1]
%31 = getelementptr inbounds %struct.ident** %29, i64 %30 ; <%struct.ident**> [#uses=2]
%32 = icmp eq %struct.ident** %31, null ; <i1> [#uses=1]
br i1 %32, label %bb4, label %bb2
bb2: ; preds = %bb1
%33 = load %struct.ident** %x, align 8 ; <%struct.ident*> [#uses=1]
store %struct.ident* %33, %struct.ident** %31, align 8
%.pre6 = load %struct.ident*** %28, align 8 ; <%struct.ident**> [#uses=1]
%.pre7 = load i32* %0, align 4 ; <i32> [#uses=1]
br label %bb4
bb4: ; preds = %bb2, %bb1
%34 = phi i32 [ %27, %bb1 ], [ %.pre7, %bb2 ] ; <i32> [#uses=2]
%35 = phi %struct.ident** [ %29, %bb1 ], [ %.pre6, %bb2 ] ; <%struct.ident**> [#uses=1]
%36 = sext i32 %34 to i64 ; <i64> [#uses=1]
%37 = getelementptr inbounds %struct.ident** %35, i64 %36 ; <%struct.ident**> [#uses=1]
%38 = add nsw i32 %34, 1 ; <i32> [#uses=1]
store i32 %38, i32* %0, align 4
ret %struct.ident** %37
}
define linkonce_odr %struct.cline** @_ZN6vectorIPS_IcEE3addERKS1_(%"struct.vector<vector<char>*>"* nocapture %this, %struct.cline** nocapture %x) align 2 {
entry:
%0 = getelementptr inbounds %"struct.vector<vector<char>*>"* %this, i64 0, i32 2 ; <i32*> [#uses=4]
%1 = load i32* %0, align 4 ; <i32> [#uses=5]
%2 = getelementptr inbounds %"struct.vector<vector<char>*>"* %this, i64 0, i32 1 ; <i32*> [#uses=3]
%3 = load i32* %2, align 8 ; <i32> [#uses=7]
%4 = icmp eq i32 %1, %3 ; <i1> [#uses=1]
br i1 %4, label %bb, label %bb1
bb: ; preds = %entry
%5 = add nsw i32 %1, 1 ; <i32> [#uses=4]
%6 = icmp eq i32 %3, 0 ; <i1> [#uses=1]
br i1 %6, label %bb.i, label %bb2.preheader.i
bb2.preheader.i: ; preds = %bb
%7 = icmp slt i32 %3, %5 ; <i1> [#uses=1]
br i1 %7, label %bb1.i, label %bb1
bb.i: ; preds = %bb
%8 = icmp slt i32 %5, 8 ; <i1> [#uses=1]
%iftmp.215.0.i.i = select i1 %8, i32 8, i32 %5 ; <i32> [#uses=2]
store i32 %iftmp.215.0.i.i, i32* %2, align 8
br label %bb3.i
bb1.i: ; preds = %bb1.i, %bb2.preheader.i
%.tmp.0.i = phi i32 [ %9, %bb1.i ], [ %3, %bb2.preheader.i ] ; <i32> [#uses=1]
%9 = shl i32 %.tmp.0.i, 1 ; <i32> [#uses=4]
%10 = icmp slt i32 %9, %5 ; <i1> [#uses=1]
br i1 %10, label %bb1.i, label %bb2.bb3.loopexit_crit_edge.i
bb2.bb3.loopexit_crit_edge.i: ; preds = %bb1.i
store i32 %9, i32* %2
br label %bb3.i
bb3.i: ; preds = %bb2.bb3.loopexit_crit_edge.i, %bb.i
%11 = phi i32 [ %iftmp.215.0.i.i, %bb.i ], [ %9, %bb2.bb3.loopexit_crit_edge.i ] ; <i32> [#uses=2]
%12 = icmp sgt i32 %11, %3 ; <i1> [#uses=1]
br i1 %12, label %bb4.i, label %bb1
bb4.i: ; preds = %bb3.i
%13 = sext i32 %11 to i64 ; <i64> [#uses=1]
%14 = shl i64 %13, 3 ; <i64> [#uses=1]
%15 = tail call i8* @_Znam(i64 %14) ; <i8*> [#uses=2]
%16 = icmp sgt i32 %3, 0 ; <i1> [#uses=1]
br i1 %16, label %bb5.i, label %bb7.i
bb5.i: ; preds = %bb4.i
%17 = sext i32 %3 to i64 ; <i64> [#uses=1]
%18 = shl i64 %17, 3 ; <i64> [#uses=1]
%19 = getelementptr inbounds %"struct.vector<vector<char>*>"* %this, i64 0, i32 0 ; <%struct.cline***> [#uses=2]
%20 = load %struct.cline*** %19, align 8 ; <%struct.cline**> [#uses=1]
%21 = bitcast %struct.cline** %20 to i8* ; <i8*> [#uses=1]
tail call void @llvm.memcpy.i64(i8* %15, i8* %21, i64 %18, i32 1)
%22 = load %struct.cline*** %19, align 8 ; <%struct.cline**> [#uses=2]
%23 = icmp eq %struct.cline** %22, null ; <i1> [#uses=1]
br i1 %23, label %bb7.i, label %bb6.i
bb6.i: ; preds = %bb5.i
%24 = bitcast %struct.cline** %22 to i8* ; <i8*> [#uses=1]
tail call void @_ZdaPv(i8* %24) nounwind
br label %bb7.i
bb7.i: ; preds = %bb6.i, %bb5.i, %bb4.i
%25 = bitcast i8* %15 to %struct.cline** ; <%struct.cline**> [#uses=1]
%26 = getelementptr inbounds %"struct.vector<vector<char>*>"* %this, i64 0, i32 0 ; <%struct.cline***> [#uses=1]
store %struct.cline** %25, %struct.cline*** %26, align 8
%.pre = load i32* %0, align 4 ; <i32> [#uses=1]
br label %bb1
bb1: ; preds = %bb7.i, %bb3.i, %bb2.preheader.i, %entry
%27 = phi i32 [ %.pre, %bb7.i ], [ %1, %entry ], [ %1, %bb2.preheader.i ], [ %1, %bb3.i ] ; <i32> [#uses=2]
%28 = getelementptr inbounds %"struct.vector<vector<char>*>"* %this, i64 0, i32 0 ; <%struct.cline***> [#uses=2]
%29 = load %struct.cline*** %28, align 8 ; <%struct.cline**> [#uses=2]
%30 = sext i32 %27 to i64 ; <i64> [#uses=1]
%31 = getelementptr inbounds %struct.cline** %29, i64 %30 ; <%struct.cline**> [#uses=2]
%32 = icmp eq %struct.cline** %31, null ; <i1> [#uses=1]
br i1 %32, label %bb4, label %bb2
bb2: ; preds = %bb1
%33 = load %struct.cline** %x, align 8 ; <%struct.cline*> [#uses=1]
store %struct.cline* %33, %struct.cline** %31, align 8
%.pre6 = load %struct.cline*** %28, align 8 ; <%struct.cline**> [#uses=1]
%.pre7 = load i32* %0, align 4 ; <i32> [#uses=1]
br label %bb4
bb4: ; preds = %bb2, %bb1
%34 = phi i32 [ %27, %bb1 ], [ %.pre7, %bb2 ] ; <i32> [#uses=2]
%35 = phi %struct.cline** [ %29, %bb1 ], [ %.pre6, %bb2 ] ; <%struct.cline**> [#uses=1]
%36 = sext i32 %34 to i64 ; <i64> [#uses=1]
%37 = getelementptr inbounds %struct.cline** %35, i64 %36 ; <%struct.cline**> [#uses=1]
%38 = add nsw i32 %34, 1 ; <i32> [#uses=1]
store i32 %38, i32* %0, align 4
ret %struct.cline** %37
}
declare i8* @strncpy(i8* noalias, i8* noalias nocapture, i64) nounwind
define void @_Z7conlineiPKc(i32 %type, i8* nocapture %sf) {
entry:
%0 = alloca %struct.cline, align 8 ; <%struct.cline*> [#uses=4]
%1 = load i32* getelementptr inbounds (%"struct.vector<cline>"* @conlines, i64 0, i32 2), align 4 ; <i32> [#uses=2]
%2 = load i32* @maxcon, align 4 ; <i32> [#uses=1]
%3 = icmp sgt i32 %1, %2 ; <i1> [#uses=1]
br i1 %3, label %bb, label %bb1
bb: ; preds = %entry
%4 = load %struct.cline** getelementptr inbounds (%"struct.vector<cline>"* @conlines, i64 0, i32 0), align 16 ; <%struct.cline*> [#uses=1]
%5 = add nsw i32 %1, -1 ; <i32> [#uses=2]
store i32 %5, i32* getelementptr inbounds (%"struct.vector<cline>"* @conlines, i64 0, i32 2), align 4
%6 = sext i32 %5 to i64 ; <i64> [#uses=1]
%7 = getelementptr inbounds %struct.cline* %4, i64 %6, i32 0 ; <i8**> [#uses=1]
%8 = load i8** %7, align 8 ; <i8*> [#uses=1]
br label %bb2
bb1: ; preds = %entry
%9 = call i8* @_Znam(i64 512) ; <i8*> [#uses=3]
call void @llvm.memset.i64(i8* %9, i8 0, i64 512, i32 1)
%10 = getelementptr inbounds i8* %9, i64 511 ; <i8*> [#uses=1]
store i8 0, i8* %10, align 1
br label %bb2
bb2: ; preds = %bb1, %bb
%iftmp.199.0 = phi i8* [ %8, %bb ], [ %9, %bb1 ] ; <i8*> [#uses=3]
%11 = load i32* @totalmillis, align 4 ; <i32> [#uses=1]
%12 = getelementptr inbounds %struct.cline* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* null, i8** %12, align 8
%13 = getelementptr inbounds %struct.cline* %0, i64 0, i32 1 ; <i32*> [#uses=1]
store i32 0, i32* %13, align 8
%14 = getelementptr inbounds %struct.cline* %0, i64 0, i32 2 ; <i32*> [#uses=1]
store i32 0, i32* %14, align 4
%15 = call %struct.cline* @_ZN6vectorI5clineE3addERKS0_(%"struct.vector<cline>"* @conlines, %struct.cline* %0) ; <%struct.cline*> [#uses=0]
%16 = load i32* getelementptr inbounds (%"struct.vector<cline>"* @conlines, i64 0, i32 2), align 4 ; <i32> [#uses=2]
%p.04.i = add i32 %16, -1 ; <i32> [#uses=2]
%17 = icmp sgt i32 %p.04.i, 0 ; <i1> [#uses=1]
%18 = load %struct.cline** getelementptr inbounds (%"struct.vector<cline>"* @conlines, i64 0, i32 0), align 16 ; <%struct.cline*> [#uses=2]
br i1 %17, label %bb.nph.i, label %_ZN6vectorI5clineE6insertEiRKS0_.exit
bb.nph.i: ; preds = %bb2
%tmp8.i = add i32 %16, -2 ; <i32> [#uses=2]
%tmp = zext i32 %tmp8.i to i64 ; <i64> [#uses=1]
%tmp3 = add i64 %tmp, 1 ; <i64> [#uses=1]
%tmp6 = sext i32 %p.04.i to i64 ; <i64> [#uses=1]
%tmp9 = sext i32 %tmp8.i to i64 ; <i64> [#uses=1]
br label %bb.i
bb.i: ; preds = %bb.i, %bb.nph.i
%indvar.i = phi i64 [ 0, %bb.nph.i ], [ %indvar.next.i, %bb.i ] ; <i64> [#uses=3]
%19 = phi %struct.cline* [ %18, %bb.nph.i ], [ %23, %bb.i ] ; <%struct.cline*> [#uses=6]
%tmp7 = sub i64 %tmp6, %indvar.i ; <i64> [#uses=3]
%tmp10 = sub i64 %tmp9, %indvar.i ; <i64> [#uses=3]
%scevgep1516.i = getelementptr inbounds %struct.cline* %19, i64 %tmp10, i32 0 ; <i8**> [#uses=1]
%20 = load i8** %scevgep1516.i, align 8 ; <i8*> [#uses=1]
%scevgep2223.i = getelementptr inbounds %struct.cline* %19, i64 %tmp7, i32 0 ; <i8**> [#uses=1]
store i8* %20, i8** %scevgep2223.i, align 8
%scevgep14.i = getelementptr %struct.cline* %19, i64 %tmp10, i32 1 ; <i32*> [#uses=1]
%21 = load i32* %scevgep14.i, align 8 ; <i32> [#uses=1]
%scevgep21.i = getelementptr %struct.cline* %19, i64 %tmp7, i32 1 ; <i32*> [#uses=1]
store i32 %21, i32* %scevgep21.i, align 8
%scevgep.i = getelementptr %struct.cline* %19, i64 %tmp10, i32 2 ; <i32*> [#uses=1]
%22 = load i32* %scevgep.i, align 4 ; <i32> [#uses=1]
%scevgep20.i = getelementptr %struct.cline* %19, i64 %tmp7, i32 2 ; <i32*> [#uses=1]
store i32 %22, i32* %scevgep20.i, align 4
%23 = load %struct.cline** getelementptr inbounds (%"struct.vector<cline>"* @conlines, i64 0, i32 0), align 16 ; <%struct.cline*> [#uses=2]
%indvar.next.i = add i64 %indvar.i, 1 ; <i64> [#uses=2]
%exitcond = icmp eq i64 %indvar.next.i, %tmp3 ; <i1> [#uses=1]
br i1 %exitcond, label %_ZN6vectorI5clineE6insertEiRKS0_.exit, label %bb.i
_ZN6vectorI5clineE6insertEiRKS0_.exit: ; preds = %bb.i, %bb2
%.lcssa.i = phi %struct.cline* [ %18, %bb2 ], [ %23, %bb.i ] ; <%struct.cline*> [#uses=3]
%24 = getelementptr inbounds %struct.cline* %.lcssa.i, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %iftmp.199.0, i8** %24, align 8
%25 = getelementptr inbounds %struct.cline* %.lcssa.i, i64 0, i32 1 ; <i32*> [#uses=1]
store i32 %type, i32* %25, align 8
%26 = getelementptr inbounds %struct.cline* %.lcssa.i, i64 0, i32 2 ; <i32*> [#uses=1]
store i32 %11, i32* %26, align 4
%27 = call i8* @strncpy(i8* noalias %iftmp.199.0, i8* noalias %sf, i64 512) nounwind ; <i8*> [#uses=0]
%28 = getelementptr inbounds i8* %iftmp.199.0, i64 511 ; <i8*> [#uses=1]
store i8 0, i8* %28, align 1
ret void
}
define void @_Z8conoutfviPKcP13__va_list_tag(i32 %type, i8* nocapture %fmt, %struct.__va_list_tag* %args) {
entry:
%0 = tail call i32 @vsnprintf(i8* noalias getelementptr inbounds ([512 x i8]* @_ZZ8conoutfviPKcP13__va_list_tagE3buf, i64 0, i64 0), i64 512, i8* noalias %fmt, %struct.__va_list_tag* %args) nounwind ; <i32> [#uses=0]
store i8 0, i8* getelementptr inbounds ([512 x i8]* @_ZZ8conoutfviPKcP13__va_list_tagE3buf, i64 0, i64 511), align 1
tail call void @_Z7conlineiPKc(i32 %type, i8* getelementptr inbounds ([512 x i8]* @_ZZ8conoutfviPKcP13__va_list_tagE3buf, i64 0, i64 0))
%1 = tail call i32 @puts(i8* getelementptr inbounds ([512 x i8]* @_ZZ8conoutfviPKcP13__va_list_tagE3buf, i64 0, i64 0)) ; <i32> [#uses=0]
ret void
}
define void @_Z7conoutfiPKcz(i32 %type, i8* nocapture %fmt, ...) {
entry:
%args = alloca [1 x %struct.__va_list_tag], align 8 ; <[1 x %struct.__va_list_tag]*> [#uses=2]
%0 = bitcast [1 x %struct.__va_list_tag]* %args to i8* ; <i8*> [#uses=2]
call void @llvm.va_start(i8* %0)
%1 = getelementptr inbounds [1 x %struct.__va_list_tag]* %args, i64 0, i64 0 ; <%struct.__va_list_tag*> [#uses=1]
%2 = call i32 @vsnprintf(i8* noalias getelementptr inbounds ([512 x i8]* @_ZZ8conoutfviPKcP13__va_list_tagE3buf, i64 0, i64 0), i64 512, i8* noalias %fmt, %struct.__va_list_tag* %1) nounwind ; <i32> [#uses=0]
store i8 0, i8* getelementptr inbounds ([512 x i8]* @_ZZ8conoutfviPKcP13__va_list_tagE3buf, i64 0, i64 511), align 1
call void @_Z7conlineiPKc(i32 %type, i8* getelementptr inbounds ([512 x i8]* @_ZZ8conoutfviPKcP13__va_list_tagE3buf, i64 0, i64 0))
%3 = call i32 @puts(i8* getelementptr inbounds ([512 x i8]* @_ZZ8conoutfviPKcP13__va_list_tagE3buf, i64 0, i64 0)) ; <i32> [#uses=0]
call void @llvm.va_end(i8* %0)
ret void
}
define void @_ZN7_stdcmdILi1193EE3runEPc(i8* nocapture %s) align 2 {
entry:
tail call void (i32, i8*, ...)* @_Z7conoutfiPKcz(i32 4, i8* %s)
ret void
}
define void @_Z14setfvarcheckedP5identf(%struct.ident* %id, float %val) {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%2 = getelementptr inbounds %struct.ident* %id, i64 0, i32 10 ; <i32*> [#uses=1]
%3 = load i32* %2, align 8 ; <i32> [#uses=3]
%4 = and i32 %3, 8 ; <i32> [#uses=1]
%5 = icmp eq i32 %4, 0 ; <i1> [#uses=1]
br i1 %5, label %bb1, label %bb
bb: ; preds = %entry
%6 = getelementptr inbounds %struct.ident* %id, i64 0, i32 2 ; <i8**> [#uses=1]
%7 = load i8** %6, align 8 ; <i8*> [#uses=1]
call void (i32, i8*, ...)* @_Z7conoutfiPKcz(i32 4, i8* getelementptr inbounds ([25 x i8]* @.str4, i64 0, i64 0), i8* %7)
ret void
bb1: ; preds = %entry
%8 = load i8* @overrideidents, align 1 ; <i8> [#uses=1]
%toBool = icmp eq i8 %8, 0 ; <i1> [#uses=1]
br i1 %toBool, label %bb2, label %bb3
bb2: ; preds = %bb1
%9 = and i32 %3, 2 ; <i32> [#uses=1]
%10 = icmp eq i32 %9, 0 ; <i1> [#uses=1]
br i1 %10, label %bb8, label %bb3
bb3: ; preds = %bb2, %bb1
%11 = and i32 %3, 1 ; <i32> [#uses=1]
%toBool4 = icmp eq i32 %11, 0 ; <i1> [#uses=1]
br i1 %toBool4, label %bb6, label %bb5
bb5: ; preds = %bb3
%12 = getelementptr inbounds %struct.ident* %id, i64 0, i32 2 ; <i8**> [#uses=1]
%13 = load i8** %12, align 8 ; <i8*> [#uses=1]
call void (i32, i8*, ...)* @_Z7conoutfiPKcz(i32 4, i8* getelementptr inbounds ([39 x i8]* @.str5, i64 0, i64 0), i8* %13)
ret void
bb6: ; preds = %bb3
%14 = getelementptr inbounds %struct.ident* %id, i64 0, i32 5 ; <i32*> [#uses=2]
%15 = load i32* %14, align 8 ; <i32> [#uses=1]
%16 = icmp eq i32 %15, 2147483647 ; <i1> [#uses=1]
br i1 %16, label %bb7, label %bb10
bb7: ; preds = %bb6
%17 = getelementptr inbounds %struct.ident* %id, i64 0, i32 9, i32 0 ; <i32**> [#uses=1]
%18 = load i32** %17, align 8 ; <i32*> [#uses=1]
%19 = bitcast i32* %18 to float* ; <float*> [#uses=1]
%20 = load float* %19, align 4 ; <float> [#uses=1]
%21 = getelementptr inbounds %struct.ident* %id, i64 0, i32 8, i32 0 ; <i8**> [#uses=1]
%22 = bitcast i8** %21 to float* ; <float*> [#uses=1]
store float %20, float* %22, align 8
store i32 0, i32* %14, align 8
br label %bb10
bb8: ; preds = %bb2
%23 = getelementptr inbounds %struct.ident* %id, i64 0, i32 5 ; <i32*> [#uses=2]
%24 = load i32* %23, align 8 ; <i32> [#uses=1]
%25 = icmp eq i32 %24, 2147483647 ; <i1> [#uses=1]
br i1 %25, label %bb10, label %bb9
bb9: ; preds = %bb8
store i32 2147483647, i32* %23, align 8
br label %bb10
bb10: ; preds = %bb9, %bb8, %bb7, %bb6
%26 = getelementptr inbounds %struct.ident* %id, i64 0, i32 3, i32 0 ; <i32*> [#uses=1]
%27 = bitcast i32* %26 to float* ; <float*> [#uses=2]
%28 = load float* %27, align 8 ; <float> [#uses=2]
%29 = fcmp ogt float %28, %val ; <i1> [#uses=2]
br i1 %29, label %bb13, label %bb11
bb11: ; preds = %bb10
%30 = getelementptr inbounds %struct.ident* %id, i64 0, i32 4, i32 0 ; <i32*> [#uses=1]
%31 = bitcast i32* %30 to float* ; <float*> [#uses=1]
%32 = load float* %31, align 4 ; <float> [#uses=1]
%33 = fcmp olt float %32, %val ; <i1> [#uses=1]
br i1 %33, label %bb12, label %bb16
bb12: ; preds = %bb11
br i1 %29, label %bb13, label %bb14
bb13: ; preds = %bb12, %bb10
%.phi.trans.insert = getelementptr inbounds %struct.ident* %id, i64 0, i32 4, i32 0 ; <i32*> [#uses=1]
%.phi.trans.insert20 = bitcast i32* %.phi.trans.insert to float* ; <float*> [#uses=1]
%.pre = load float* %.phi.trans.insert20, align 4 ; <float> [#uses=1]
br label %bb15
bb14: ; preds = %bb12
%34 = getelementptr inbounds %struct.ident* %id, i64 0, i32 4, i32 0 ; <i32*> [#uses=1]
%iftmp.74.0.in.phi.trans.insert = bitcast i32* %34 to float* ; <float*> [#uses=1]
%iftmp.74.0.pre = load float* %iftmp.74.0.in.phi.trans.insert, align 4 ; <float> [#uses=2]
br label %bb15
bb15: ; preds = %bb14, %bb13
%35 = phi float [ %.pre, %bb13 ], [ %iftmp.74.0.pre, %bb14 ] ; <float> [#uses=3]
%iftmp.74.0 = phi float [ %28, %bb13 ], [ %iftmp.74.0.pre, %bb14 ] ; <float> [#uses=1]
%36 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%37 = add nsw i32 %36, 1 ; <i32> [#uses=1]
%38 = srem i32 %37, 3 ; <i32> [#uses=2]
store i32 %38, i32* @_ZL6retidx, align 4
%39 = fpext float %35 to double ; <double> [#uses=1]
%40 = fptosi float %35 to i32 ; <i32> [#uses=1]
%41 = sitofp i32 %40 to float ; <float> [#uses=1]
%42 = fcmp oeq float %41, %35 ; <i1> [#uses=1]
%iftmp.145.0.i = select i1 %42, [5 x i8]* @.str, [5 x i8]* @.str1 ; <[5 x i8]*> [#uses=1]
%43 = getelementptr inbounds [5 x i8]* %iftmp.145.0.i, i64 0, i64 0 ; <i8*> [#uses=1]
%44 = sext i32 %38 to i64 ; <i64> [#uses=1]
%45 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %44, i64 0 ; <i8*> [#uses=1]
%46 = getelementptr inbounds %struct.stringformatter* %1, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %45, i8** %46, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %1, i8* %43, double %39) nounwind
%47 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=2]
%48 = sext i32 %47 to i64 ; <i64> [#uses=1]
%49 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %48, i64 0 ; <i8*> [#uses=1]
%50 = load float* %27, align 8 ; <float> [#uses=3]
%51 = add nsw i32 %47, 1 ; <i32> [#uses=1]
%52 = srem i32 %51, 3 ; <i32> [#uses=2]
store i32 %52, i32* @_ZL6retidx, align 4
%53 = fpext float %50 to double ; <double> [#uses=1]
%54 = fptosi float %50 to i32 ; <i32> [#uses=1]
%55 = sitofp i32 %54 to float ; <float> [#uses=1]
%56 = fcmp oeq float %55, %50 ; <i1> [#uses=1]
%iftmp.145.0.i18 = select i1 %56, [5 x i8]* @.str, [5 x i8]* @.str1 ; <[5 x i8]*> [#uses=1]
%57 = getelementptr inbounds [5 x i8]* %iftmp.145.0.i18, i64 0, i64 0 ; <i8*> [#uses=1]
%58 = sext i32 %52 to i64 ; <i64> [#uses=1]
%59 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %58, i64 0 ; <i8*> [#uses=1]
%60 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %59, i8** %60, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* %57, double %53) nounwind
%61 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%62 = sext i32 %61 to i64 ; <i64> [#uses=1]
%63 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %62, i64 0 ; <i8*> [#uses=1]
%64 = getelementptr inbounds %struct.ident* %id, i64 0, i32 2 ; <i8**> [#uses=1]
%65 = load i8** %64, align 8 ; <i8*> [#uses=1]
call void (i32, i8*, ...)* @_Z7conoutfiPKcz(i32 4, i8* getelementptr inbounds ([29 x i8]* @.str6, i64 0, i64 0), i8* %65, i8* %63, i8* %49)
br label %bb16
bb16: ; preds = %bb15, %bb11
%val_addr.0 = phi float [ %iftmp.74.0, %bb15 ], [ %val, %bb11 ] ; <float> [#uses=1]
%66 = getelementptr inbounds %struct.ident* %id, i64 0, i32 9, i32 0 ; <i32**> [#uses=1]
%67 = load i32** %66, align 8 ; <i32*> [#uses=1]
%68 = bitcast i32* %67 to float* ; <float*> [#uses=1]
store float %val_addr.0, float* %68, align 4
%69 = getelementptr inbounds %struct.ident* %id, i64 0, i32 0 ; <i32 (...)***> [#uses=1]
%70 = load i32 (...)*** %69, align 8 ; <i32 (...)**> [#uses=1]
%71 = getelementptr inbounds i32 (...)** %70, i64 2 ; <i32 (...)**> [#uses=1]
%72 = load i32 (...)** %71, align 8 ; <i32 (...)*> [#uses=1]
%73 = bitcast i32 (...)* %72 to void (%struct.ident*)* ; <void (%struct.ident*)*> [#uses=1]
call void %73(%struct.ident* %id)
ret void
}
define void @_Z13setvarcheckedP5identi(%struct.ident* %id, i32 %val) {
entry:
%0 = getelementptr inbounds %struct.ident* %id, i64 0, i32 10 ; <i32*> [#uses=1]
%1 = load i32* %0, align 8 ; <i32> [#uses=4]
%2 = and i32 %1, 8 ; <i32> [#uses=1]
%3 = icmp eq i32 %2, 0 ; <i1> [#uses=1]
br i1 %3, label %bb1, label %bb
bb: ; preds = %entry
%4 = getelementptr inbounds %struct.ident* %id, i64 0, i32 2 ; <i8**> [#uses=1]
%5 = load i8** %4, align 8 ; <i8*> [#uses=1]
tail call void (i32, i8*, ...)* @_Z7conoutfiPKcz(i32 4, i8* getelementptr inbounds ([25 x i8]* @.str4, i64 0, i64 0), i8* %5)
ret void
bb1: ; preds = %entry
%6 = load i8* @overrideidents, align 1 ; <i8> [#uses=1]
%toBool = icmp eq i8 %6, 0 ; <i1> [#uses=1]
br i1 %toBool, label %bb2, label %bb3
bb2: ; preds = %bb1
%7 = and i32 %1, 2 ; <i32> [#uses=1]
%8 = icmp eq i32 %7, 0 ; <i1> [#uses=1]
br i1 %8, label %bb8, label %bb3
bb3: ; preds = %bb2, %bb1
%9 = and i32 %1, 1 ; <i32> [#uses=1]
%toBool4 = icmp eq i32 %9, 0 ; <i1> [#uses=1]
br i1 %toBool4, label %bb6, label %bb5
bb5: ; preds = %bb3
%10 = getelementptr inbounds %struct.ident* %id, i64 0, i32 2 ; <i8**> [#uses=1]
%11 = load i8** %10, align 8 ; <i8*> [#uses=1]
tail call void (i32, i8*, ...)* @_Z7conoutfiPKcz(i32 4, i8* getelementptr inbounds ([39 x i8]* @.str5, i64 0, i64 0), i8* %11)
ret void
bb6: ; preds = %bb3
%12 = getelementptr inbounds %struct.ident* %id, i64 0, i32 5 ; <i32*> [#uses=2]
%13 = load i32* %12, align 8 ; <i32> [#uses=1]
%14 = icmp eq i32 %13, 2147483647 ; <i1> [#uses=1]
br i1 %14, label %bb7, label %bb10
bb7: ; preds = %bb6
%15 = getelementptr inbounds %struct.ident* %id, i64 0, i32 9, i32 0 ; <i32**> [#uses=1]
%16 = load i32** %15, align 8 ; <i32*> [#uses=1]
%17 = load i32* %16, align 4 ; <i32> [#uses=1]
%18 = getelementptr inbounds %struct.ident* %id, i64 0, i32 8, i32 0 ; <i8**> [#uses=1]
%19 = bitcast i8** %18 to i32* ; <i32*> [#uses=1]
store i32 %17, i32* %19, align 8
store i32 0, i32* %12, align 8
br label %bb10
bb8: ; preds = %bb2
%20 = getelementptr inbounds %struct.ident* %id, i64 0, i32 5 ; <i32*> [#uses=2]
%21 = load i32* %20, align 8 ; <i32> [#uses=1]
%22 = icmp eq i32 %21, 2147483647 ; <i1> [#uses=1]
br i1 %22, label %bb10, label %bb9
bb9: ; preds = %bb8
store i32 2147483647, i32* %20, align 8
br label %bb10
bb10: ; preds = %bb9, %bb8, %bb7, %bb6
%23 = getelementptr inbounds %struct.ident* %id, i64 0, i32 3, i32 0 ; <i32*> [#uses=2]
%24 = load i32* %23, align 8 ; <i32> [#uses=3]
%25 = icmp sgt i32 %24, %val ; <i1> [#uses=2]
br i1 %25, label %bb13, label %bb11
bb11: ; preds = %bb10
%26 = getelementptr inbounds %struct.ident* %id, i64 0, i32 4, i32 0 ; <i32*> [#uses=1]
%27 = load i32* %26, align 4 ; <i32> [#uses=1]
%28 = icmp slt i32 %27, %val ; <i1> [#uses=1]
br i1 %28, label %bb12, label %bb22
bb12: ; preds = %bb11
br i1 %25, label %bb13, label %bb14
bb13: ; preds = %bb12, %bb10
%.pre = getelementptr inbounds %struct.ident* %id, i64 0, i32 4, i32 0 ; <i32*> [#uses=1]
br label %bb15
bb14: ; preds = %bb12
%29 = getelementptr inbounds %struct.ident* %id, i64 0, i32 4, i32 0 ; <i32*> [#uses=2]
br label %bb15
bb15: ; preds = %bb14, %bb13
%.pre-phi = phi i32* [ %29, %bb14 ], [ %.pre, %bb13 ] ; <i32*> [#uses=1]
%iftmp.70.0.in = phi i32* [ %29, %bb14 ], [ %23, %bb13 ] ; <i32*> [#uses=1]
%iftmp.70.0 = load i32* %iftmp.70.0.in, align 4 ; <i32> [#uses=1]
%30 = load i32* %.pre-phi, align 4 ; <i32> [#uses=1]
%31 = getelementptr inbounds %struct.ident* %id, i64 0, i32 2 ; <i8**> [#uses=1]
%32 = load i8** %31, align 8 ; <i8*> [#uses=1]
%33 = and i32 %1, 4 ; <i32> [#uses=1]
%34 = icmp eq i32 %33, 0 ; <i1> [#uses=1]
br i1 %34, label %bb21, label %bb16
bb16: ; preds = %bb15
%35 = icmp slt i32 %24, 256 ; <i1> [#uses=1]
%iftmp.72.0 = select i1 %35, i8* getelementptr inbounds ([31 x i8]* @.str7, i64 0, i64 0), i8* getelementptr inbounds ([33 x i8]* @.str8, i64 0, i64 0) ; <i8*> [#uses=1]
br label %bb21
bb21: ; preds = %bb16, %bb15
%iftmp.71.0 = phi i8* [ %iftmp.72.0, %bb16 ], [ getelementptr inbounds ([29 x i8]* @.str9, i64 0, i64 0), %bb15 ] ; <i8*> [#uses=1]
tail call void (i32, i8*, ...)* @_Z7conoutfiPKcz(i32 4, i8* %iftmp.71.0, i8* %32, i32 %24, i32 %30)
br label %bb22
bb22: ; preds = %bb21, %bb11
%val_addr.0 = phi i32 [ %iftmp.70.0, %bb21 ], [ %val, %bb11 ] ; <i32> [#uses=1]
%36 = getelementptr inbounds %struct.ident* %id, i64 0, i32 9, i32 0 ; <i32**> [#uses=1]
%37 = load i32** %36, align 8 ; <i32*> [#uses=1]
store i32 %val_addr.0, i32* %37, align 4
%38 = getelementptr inbounds %struct.ident* %id, i64 0, i32 0 ; <i32 (...)***> [#uses=1]
%39 = load i32 (...)*** %38, align 8 ; <i32 (...)**> [#uses=1]
%40 = getelementptr inbounds i32 (...)** %39, i64 2 ; <i32 (...)**> [#uses=1]
%41 = load i32 (...)** %40, align 8 ; <i32 (...)*> [#uses=1]
%42 = bitcast i32 (...)* %41 to void (%struct.ident*)* ; <void (%struct.ident*)*> [#uses=1]
tail call void %42(%struct.ident* %id)
ret void
}
define void @_Z7conoutfPKcz(i8* nocapture %fmt, ...) {
entry:
%args = alloca [1 x %struct.__va_list_tag], align 8 ; <[1 x %struct.__va_list_tag]*> [#uses=2]
%0 = bitcast [1 x %struct.__va_list_tag]* %args to i8* ; <i8*> [#uses=2]
call void @llvm.va_start(i8* %0)
%1 = getelementptr inbounds [1 x %struct.__va_list_tag]* %args, i64 0, i64 0 ; <%struct.__va_list_tag*> [#uses=1]
%2 = call i32 @vsnprintf(i8* noalias getelementptr inbounds ([512 x i8]* @_ZZ8conoutfviPKcP13__va_list_tagE3buf, i64 0, i64 0), i64 512, i8* noalias %fmt, %struct.__va_list_tag* %1) nounwind ; <i32> [#uses=0]
store i8 0, i8* getelementptr inbounds ([512 x i8]* @_ZZ8conoutfviPKcP13__va_list_tagE3buf, i64 0, i64 511), align 1
call void @_Z7conlineiPKc(i32 1, i8* getelementptr inbounds ([512 x i8]* @_ZZ8conoutfviPKcP13__va_list_tagE3buf, i64 0, i64 0))
%3 = call i32 @puts(i8* getelementptr inbounds ([512 x i8]* @_ZZ8conoutfviPKcP13__va_list_tagE3buf, i64 0, i64 0)) ; <i32> [#uses=0]
call void @llvm.va_end(i8* %0)
ret void
}
define void @_ZN7_stdcmdILi1192EE3runEPc(i8* %s) align 2 {
entry:
tail call void (i8*, ...)* @_Z7conoutfPKcz(i8* getelementptr inbounds ([3 x i8]* @.str10, i64 0, i64 0), i8* %s)
ret void
}
declare i64 @strlen(i8* nocapture) nounwind readonly
define void @_Z6resultPKc(i8* nocapture %s) {
entry:
%0 = tail call i64 @strlen(i8* %s) nounwind readonly ; <i64> [#uses=2]
%1 = add i64 %0, 1 ; <i64> [#uses=2]
%2 = tail call i8* @_Znam(i64 %1) ; <i8*> [#uses=3]
%3 = tail call i8* @strncpy(i8* noalias %2, i8* noalias %s, i64 %1) nounwind ; <i8*> [#uses=0]
%4 = getelementptr inbounds i8* %2, i64 %0 ; <i8*> [#uses=1]
store i8 0, i8* %4, align 1
store i8* %2, i8** @commandret, align 8
ret void
}
define void @_Z6concatPKc(i8* nocapture %s) {
entry:
%0 = tail call i64 @strlen(i8* %s) nounwind readonly ; <i64> [#uses=2]
%1 = add i64 %0, 1 ; <i64> [#uses=2]
%2 = tail call i8* @_Znam(i64 %1) ; <i8*> [#uses=3]
%3 = tail call i8* @strncpy(i8* noalias %2, i8* noalias %s, i64 %1) nounwind ; <i8*> [#uses=0]
%4 = getelementptr inbounds i8* %2, i64 %0 ; <i8*> [#uses=1]
store i8 0, i8* %4, align 1
store i8* %2, i8** @commandret, align 8
ret void
}
define void @_Z8floatretf(float %v) {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%2 = add nsw i32 %1, 1 ; <i32> [#uses=1]
%3 = srem i32 %2, 3 ; <i32> [#uses=2]
store i32 %3, i32* @_ZL6retidx, align 4
%4 = fpext float %v to double ; <double> [#uses=1]
%5 = fptosi float %v to i32 ; <i32> [#uses=1]
%6 = sitofp i32 %5 to float ; <float> [#uses=1]
%7 = fcmp oeq float %6, %v ; <i1> [#uses=1]
%iftmp.145.0.i = select i1 %7, [5 x i8]* @.str, [5 x i8]* @.str1 ; <[5 x i8]*> [#uses=1]
%8 = getelementptr inbounds [5 x i8]* %iftmp.145.0.i, i64 0, i64 0 ; <i8*> [#uses=1]
%9 = sext i32 %3 to i64 ; <i64> [#uses=1]
%10 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %9, i64 0 ; <i8*> [#uses=1]
%11 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %10, i8** %11, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* %8, double %4) nounwind
%12 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%13 = sext i32 %12 to i64 ; <i64> [#uses=1]
%14 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %13, i64 0 ; <i8*> [#uses=2]
%15 = call i64 @strlen(i8* %14) nounwind readonly ; <i64> [#uses=2]
%16 = add i64 %15, 1 ; <i64> [#uses=2]
%17 = call i8* @_Znam(i64 %16) ; <i8*> [#uses=3]
%18 = call i8* @strncpy(i8* noalias %17, i8* noalias %14, i64 %16) nounwind ; <i8*> [#uses=0]
%19 = getelementptr inbounds i8* %17, i64 %15 ; <i8*> [#uses=1]
store i8 0, i8* %19, align 1
store i8* %17, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1116EE3runEPfS1_(float* nocapture %a, float* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load float* %b, align 4 ; <float> [#uses=2]
%2 = fcmp une float %1, 0.000000e+00 ; <i1> [#uses=1]
br i1 %2, label %bb, label %bb2
bb: ; preds = %entry
%3 = load float* %a, align 4 ; <float> [#uses=1]
%4 = fdiv float %3, %1 ; <float> [#uses=1]
br label %bb2
bb2: ; preds = %bb, %entry
%iftmp.182.0 = phi float [ %4, %bb ], [ 0.000000e+00, %entry ] ; <float> [#uses=3]
%5 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%6 = add nsw i32 %5, 1 ; <i32> [#uses=1]
%7 = srem i32 %6, 3 ; <i32> [#uses=2]
store i32 %7, i32* @_ZL6retidx, align 4
%8 = fpext float %iftmp.182.0 to double ; <double> [#uses=1]
%9 = fptosi float %iftmp.182.0 to i32 ; <i32> [#uses=1]
%10 = sitofp i32 %9 to float ; <float> [#uses=1]
%11 = fcmp oeq float %10, %iftmp.182.0 ; <i1> [#uses=1]
%iftmp.145.0.i.i = select i1 %11, [5 x i8]* @.str, [5 x i8]* @.str1 ; <[5 x i8]*> [#uses=1]
%12 = getelementptr inbounds [5 x i8]* %iftmp.145.0.i.i, i64 0, i64 0 ; <i8*> [#uses=1]
%13 = sext i32 %7 to i64 ; <i64> [#uses=1]
%14 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %13, i64 0 ; <i8*> [#uses=1]
%15 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %14, i8** %15, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* %12, double %8) nounwind
%16 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%17 = sext i32 %16 to i64 ; <i64> [#uses=1]
%18 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %17, i64 0 ; <i8*> [#uses=2]
%19 = call i64 @strlen(i8* %18) nounwind readonly ; <i64> [#uses=2]
%20 = add i64 %19, 1 ; <i64> [#uses=2]
%21 = call i8* @_Znam(i64 %20) ; <i8*> [#uses=3]
%22 = call i8* @strncpy(i8* noalias %21, i8* noalias %18, i64 %20) nounwind ; <i8*> [#uses=0]
%23 = getelementptr inbounds i8* %21, i64 %19 ; <i8*> [#uses=1]
store i8 0, i8* %23, align 1
store i8* %21, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1078EE3runEPfS1_(float* nocapture %a, float* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load float* %a, align 4 ; <float> [#uses=1]
%2 = load float* %b, align 4 ; <float> [#uses=1]
%3 = fsub float %1, %2 ; <float> [#uses=3]
%4 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%5 = add nsw i32 %4, 1 ; <i32> [#uses=1]
%6 = srem i32 %5, 3 ; <i32> [#uses=2]
store i32 %6, i32* @_ZL6retidx, align 4
%7 = fpext float %3 to double ; <double> [#uses=1]
%8 = fptosi float %3 to i32 ; <i32> [#uses=1]
%9 = sitofp i32 %8 to float ; <float> [#uses=1]
%10 = fcmp oeq float %9, %3 ; <i1> [#uses=1]
%iftmp.145.0.i.i = select i1 %10, [5 x i8]* @.str, [5 x i8]* @.str1 ; <[5 x i8]*> [#uses=1]
%11 = getelementptr inbounds [5 x i8]* %iftmp.145.0.i.i, i64 0, i64 0 ; <i8*> [#uses=1]
%12 = sext i32 %6 to i64 ; <i64> [#uses=1]
%13 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %12, i64 0 ; <i8*> [#uses=1]
%14 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %13, i8** %14, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* %11, double %7) nounwind
%15 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%16 = sext i32 %15 to i64 ; <i64> [#uses=1]
%17 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %16, i64 0 ; <i8*> [#uses=2]
%18 = call i64 @strlen(i8* %17) nounwind readonly ; <i64> [#uses=2]
%19 = add i64 %18, 1 ; <i64> [#uses=2]
%20 = call i8* @_Znam(i64 %19) ; <i8*> [#uses=3]
%21 = call i8* @strncpy(i8* noalias %20, i8* noalias %17, i64 %19) nounwind ; <i8*> [#uses=0]
%22 = getelementptr inbounds i8* %20, i64 %18 ; <i8*> [#uses=1]
store i8 0, i8* %22, align 1
store i8* %20, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1077EE3runEPfS1_(float* nocapture %a, float* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load float* %a, align 4 ; <float> [#uses=1]
%2 = load float* %b, align 4 ; <float> [#uses=1]
%3 = fmul float %1, %2 ; <float> [#uses=3]
%4 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%5 = add nsw i32 %4, 1 ; <i32> [#uses=1]
%6 = srem i32 %5, 3 ; <i32> [#uses=2]
store i32 %6, i32* @_ZL6retidx, align 4
%7 = fpext float %3 to double ; <double> [#uses=1]
%8 = fptosi float %3 to i32 ; <i32> [#uses=1]
%9 = sitofp i32 %8 to float ; <float> [#uses=1]
%10 = fcmp oeq float %9, %3 ; <i1> [#uses=1]
%iftmp.145.0.i.i = select i1 %10, [5 x i8]* @.str, [5 x i8]* @.str1 ; <[5 x i8]*> [#uses=1]
%11 = getelementptr inbounds [5 x i8]* %iftmp.145.0.i.i, i64 0, i64 0 ; <i8*> [#uses=1]
%12 = sext i32 %6 to i64 ; <i64> [#uses=1]
%13 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %12, i64 0 ; <i8*> [#uses=1]
%14 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %13, i8** %14, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* %11, double %7) nounwind
%15 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%16 = sext i32 %15 to i64 ; <i64> [#uses=1]
%17 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %16, i64 0 ; <i8*> [#uses=2]
%18 = call i64 @strlen(i8* %17) nounwind readonly ; <i64> [#uses=2]
%19 = add i64 %18, 1 ; <i64> [#uses=2]
%20 = call i8* @_Znam(i64 %19) ; <i8*> [#uses=3]
%21 = call i8* @strncpy(i8* noalias %20, i8* noalias %17, i64 %19) nounwind ; <i8*> [#uses=0]
%22 = getelementptr inbounds i8* %20, i64 %18 ; <i8*> [#uses=1]
store i8 0, i8* %22, align 1
store i8* %20, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1076EE3runEPfS1_(float* nocapture %a, float* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load float* %a, align 4 ; <float> [#uses=1]
%2 = load float* %b, align 4 ; <float> [#uses=1]
%3 = fadd float %1, %2 ; <float> [#uses=3]
%4 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%5 = add nsw i32 %4, 1 ; <i32> [#uses=1]
%6 = srem i32 %5, 3 ; <i32> [#uses=2]
store i32 %6, i32* @_ZL6retidx, align 4
%7 = fpext float %3 to double ; <double> [#uses=1]
%8 = fptosi float %3 to i32 ; <i32> [#uses=1]
%9 = sitofp i32 %8 to float ; <float> [#uses=1]
%10 = fcmp oeq float %9, %3 ; <i1> [#uses=1]
%iftmp.145.0.i.i = select i1 %10, [5 x i8]* @.str, [5 x i8]* @.str1 ; <[5 x i8]*> [#uses=1]
%11 = getelementptr inbounds [5 x i8]* %iftmp.145.0.i.i, i64 0, i64 0 ; <i8*> [#uses=1]
%12 = sext i32 %6 to i64 ; <i64> [#uses=1]
%13 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %12, i64 0 ; <i8*> [#uses=1]
%14 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %13, i8** %14, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* %11, double %7) nounwind
%15 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%16 = sext i32 %15 to i64 ; <i64> [#uses=1]
%17 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %16, i64 0 ; <i8*> [#uses=2]
%18 = call i64 @strlen(i8* %17) nounwind readonly ; <i64> [#uses=2]
%19 = add i64 %18, 1 ; <i64> [#uses=2]
%20 = call i8* @_Znam(i64 %19) ; <i8*> [#uses=3]
%21 = call i8* @strncpy(i8* noalias %20, i8* noalias %17, i64 %19) nounwind ; <i8*> [#uses=0]
%22 = getelementptr inbounds i8* %20, i64 %18 ; <i8*> [#uses=1]
store i8 0, i8* %22, align 1
store i8* %20, i8** @commandret, align 8
ret void
}
define void @_Z6intreti(i32 %v) {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%2 = add nsw i32 %1, 1 ; <i32> [#uses=1]
%3 = srem i32 %2, 3 ; <i32> [#uses=2]
store i32 %3, i32* @_ZL6retidx, align 4
%4 = sext i32 %3 to i64 ; <i64> [#uses=1]
%5 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %4, i64 0 ; <i8*> [#uses=1]
%6 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %5, i8** %6, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %v) nounwind
%7 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%8 = sext i32 %7 to i64 ; <i64> [#uses=1]
%9 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %8, i64 0 ; <i8*> [#uses=2]
%10 = call i64 @strlen(i8* %9) nounwind readonly ; <i64> [#uses=2]
%11 = add i64 %10, 1 ; <i64> [#uses=2]
%12 = call i8* @_Znam(i64 %11) ; <i8*> [#uses=3]
%13 = call i8* @strncpy(i8* noalias %12, i8* noalias %9, i64 %11) nounwind ; <i8*> [#uses=0]
%14 = getelementptr inbounds i8* %12, i64 %10 ; <i8*> [#uses=1]
store i8 0, i8* %14, align 1
store i8* %12, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1184EE3runEPiS1_(i32* nocapture %a, i32* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load i32* %a, align 4 ; <i32> [#uses=1]
%2 = load i32* %b, align 4 ; <i32> [#uses=2]
%3 = sub nsw i32 %1, %2 ; <i32> [#uses=1]
%4 = icmp sgt i32 %3, 0 ; <i1> [#uses=1]
br i1 %4, label %bb, label %bb2
bb: ; preds = %entry
%5 = load i32* @_ZL4left, align 4 ; <i32> [#uses=1]
%6 = add nsw i32 %5, -1 ; <i32> [#uses=2]
store i32 %6, i32* @_ZL4left, align 4
%toBool.i = icmp slt i32 %6, 0 ; <i1> [#uses=1]
br i1 %toBool.i, label %bb.i, label %bb1.i
bb.i: ; preds = %bb
%7 = call i32 @_Z8reloadMTv() nounwind ; <i32> [#uses=1]
br label %_Z8randomMTv.exit
bb1.i: ; preds = %bb
%8 = load i32** @_ZL4next, align 8 ; <i32*> [#uses=2]
%9 = load i32* %8, align 4 ; <i32> [#uses=2]
%10 = getelementptr inbounds i32* %8, i64 1 ; <i32*> [#uses=1]
store i32* %10, i32** @_ZL4next, align 8
%11 = lshr i32 %9, 11 ; <i32> [#uses=1]
%12 = xor i32 %11, %9 ; <i32> [#uses=2]
%13 = shl i32 %12, 7 ; <i32> [#uses=1]
%14 = and i32 %13, -1658038656 ; <i32> [#uses=1]
%15 = xor i32 %14, %12 ; <i32> [#uses=2]
%16 = shl i32 %15, 15 ; <i32> [#uses=1]
%17 = and i32 %16, -272236544 ; <i32> [#uses=1]
%18 = xor i32 %17, %15 ; <i32> [#uses=2]
%19 = lshr i32 %18, 18 ; <i32> [#uses=1]
%20 = xor i32 %19, %18 ; <i32> [#uses=1]
br label %_Z8randomMTv.exit
_Z8randomMTv.exit: ; preds = %bb1.i, %bb.i
%21 = phi i32 [ %20, %bb1.i ], [ %7, %bb.i ] ; <i32> [#uses=1]
%22 = and i32 %21, 16777215 ; <i32> [#uses=1]
%23 = load i32* %a, align 4 ; <i32> [#uses=1]
%24 = load i32* %b, align 4 ; <i32> [#uses=2]
%25 = sub nsw i32 %23, %24 ; <i32> [#uses=1]
%26 = srem i32 %22, %25 ; <i32> [#uses=1]
%27 = add nsw i32 %26, %24 ; <i32> [#uses=1]
br label %bb2
bb2: ; preds = %_Z8randomMTv.exit, %entry
%iftmp.191.0 = phi i32 [ %27, %_Z8randomMTv.exit ], [ %2, %entry ] ; <i32> [#uses=1]
%28 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%29 = add nsw i32 %28, 1 ; <i32> [#uses=1]
%30 = srem i32 %29, 3 ; <i32> [#uses=2]
store i32 %30, i32* @_ZL6retidx, align 4
%31 = sext i32 %30 to i64 ; <i64> [#uses=1]
%32 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %31, i64 0 ; <i8*> [#uses=1]
%33 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %32, i8** %33, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %iftmp.191.0) nounwind
%34 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%35 = sext i32 %34 to i64 ; <i64> [#uses=1]
%36 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %35, i64 0 ; <i8*> [#uses=2]
%37 = call i64 @strlen(i8* %36) nounwind readonly ; <i64> [#uses=2]
%38 = add i64 %37, 1 ; <i64> [#uses=2]
%39 = call i8* @_Znam(i64 %38) ; <i8*> [#uses=3]
%40 = call i8* @strncpy(i8* noalias %39, i8* noalias %36, i64 %38) nounwind ; <i8*> [#uses=0]
%41 = getelementptr inbounds i8* %39, i64 %37 ; <i8*> [#uses=1]
store i8 0, i8* %41, align 1
store i8* %39, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1115EE3runEPiS1_(i32* nocapture %a, i32* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load i32* %b, align 4 ; <i32> [#uses=2]
%2 = icmp eq i32 %1, 0 ; <i1> [#uses=1]
br i1 %2, label %bb2, label %bb
bb: ; preds = %entry
%3 = load i32* %a, align 4 ; <i32> [#uses=1]
%4 = srem i32 %3, %1 ; <i32> [#uses=1]
br label %bb2
bb2: ; preds = %bb, %entry
%iftmp.181.0 = phi i32 [ %4, %bb ], [ 0, %entry ] ; <i32> [#uses=1]
%5 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%6 = add nsw i32 %5, 1 ; <i32> [#uses=1]
%7 = srem i32 %6, 3 ; <i32> [#uses=2]
store i32 %7, i32* @_ZL6retidx, align 4
%8 = sext i32 %7 to i64 ; <i64> [#uses=1]
%9 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %8, i64 0 ; <i8*> [#uses=1]
%10 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %9, i8** %10, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %iftmp.181.0) nounwind
%11 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%12 = sext i32 %11 to i64 ; <i64> [#uses=1]
%13 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %12, i64 0 ; <i8*> [#uses=2]
%14 = call i64 @strlen(i8* %13) nounwind readonly ; <i64> [#uses=2]
%15 = add i64 %14, 1 ; <i64> [#uses=2]
%16 = call i8* @_Znam(i64 %15) ; <i8*> [#uses=3]
%17 = call i8* @strncpy(i8* noalias %16, i8* noalias %13, i64 %15) nounwind ; <i8*> [#uses=0]
%18 = getelementptr inbounds i8* %16, i64 %14 ; <i8*> [#uses=1]
store i8 0, i8* %18, align 1
store i8* %16, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1114EE3runEPiS1_(i32* nocapture %a, i32* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load i32* %b, align 4 ; <i32> [#uses=2]
%2 = icmp eq i32 %1, 0 ; <i1> [#uses=1]
br i1 %2, label %bb2, label %bb
bb: ; preds = %entry
%3 = load i32* %a, align 4 ; <i32> [#uses=1]
%4 = sdiv i32 %3, %1 ; <i32> [#uses=1]
br label %bb2
bb2: ; preds = %bb, %entry
%iftmp.180.0 = phi i32 [ %4, %bb ], [ 0, %entry ] ; <i32> [#uses=1]
%5 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%6 = add nsw i32 %5, 1 ; <i32> [#uses=1]
%7 = srem i32 %6, 3 ; <i32> [#uses=2]
store i32 %7, i32* @_ZL6retidx, align 4
%8 = sext i32 %7 to i64 ; <i64> [#uses=1]
%9 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %8, i64 0 ; <i8*> [#uses=1]
%10 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %9, i8** %10, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %iftmp.180.0) nounwind
%11 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%12 = sext i32 %11 to i64 ; <i64> [#uses=1]
%13 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %12, i64 0 ; <i8*> [#uses=2]
%14 = call i64 @strlen(i8* %13) nounwind readonly ; <i64> [#uses=2]
%15 = add i64 %14, 1 ; <i64> [#uses=2]
%16 = call i8* @_Znam(i64 %15) ; <i8*> [#uses=3]
%17 = call i8* @strncpy(i8* noalias %16, i8* noalias %13, i64 %15) nounwind ; <i8*> [#uses=0]
%18 = getelementptr inbounds i8* %16, i64 %14 ; <i8*> [#uses=1]
store i8 0, i8* %18, align 1
store i8* %16, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1100EE3runEPiS1_(i32* nocapture %a, i32* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load i32* %a, align 4 ; <i32> [#uses=1]
%2 = load i32* %b, align 4 ; <i32> [#uses=1]
%3 = ashr i32 %1, %2 ; <i32> [#uses=1]
%4 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%5 = add nsw i32 %4, 1 ; <i32> [#uses=1]
%6 = srem i32 %5, 3 ; <i32> [#uses=2]
store i32 %6, i32* @_ZL6retidx, align 4
%7 = sext i32 %6 to i64 ; <i64> [#uses=1]
%8 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %7, i64 0 ; <i8*> [#uses=1]
%9 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %8, i8** %9, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %3) nounwind
%10 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%11 = sext i32 %10 to i64 ; <i64> [#uses=1]
%12 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %11, i64 0 ; <i8*> [#uses=2]
%13 = call i64 @strlen(i8* %12) nounwind readonly ; <i64> [#uses=2]
%14 = add i64 %13, 1 ; <i64> [#uses=2]
%15 = call i8* @_Znam(i64 %14) ; <i8*> [#uses=3]
%16 = call i8* @strncpy(i8* noalias %15, i8* noalias %12, i64 %14) nounwind ; <i8*> [#uses=0]
%17 = getelementptr inbounds i8* %15, i64 %13 ; <i8*> [#uses=1]
store i8 0, i8* %17, align 1
store i8* %15, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1099EE3runEPiS1_(i32* nocapture %a, i32* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load i32* %a, align 4 ; <i32> [#uses=1]
%2 = load i32* %b, align 4 ; <i32> [#uses=1]
%3 = shl i32 %1, %2 ; <i32> [#uses=1]
%4 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%5 = add nsw i32 %4, 1 ; <i32> [#uses=1]
%6 = srem i32 %5, 3 ; <i32> [#uses=2]
store i32 %6, i32* @_ZL6retidx, align 4
%7 = sext i32 %6 to i64 ; <i64> [#uses=1]
%8 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %7, i64 0 ; <i8*> [#uses=1]
%9 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %8, i8** %9, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %3) nounwind
%10 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%11 = sext i32 %10 to i64 ; <i64> [#uses=1]
%12 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %11, i64 0 ; <i8*> [#uses=2]
%13 = call i64 @strlen(i8* %12) nounwind readonly ; <i64> [#uses=2]
%14 = add i64 %13, 1 ; <i64> [#uses=2]
%15 = call i8* @_Znam(i64 %14) ; <i8*> [#uses=3]
%16 = call i8* @strncpy(i8* noalias %15, i8* noalias %12, i64 %14) nounwind ; <i8*> [#uses=0]
%17 = getelementptr inbounds i8* %15, i64 %13 ; <i8*> [#uses=1]
store i8 0, i8* %17, align 1
store i8* %15, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1098EE3runEPiS1_(i32* nocapture %a, i32* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load i32* %a, align 4 ; <i32> [#uses=1]
%2 = load i32* %b, align 4 ; <i32> [#uses=1]
%not = xor i32 %2, -1 ; <i32> [#uses=1]
%3 = or i32 %1, %not ; <i32> [#uses=1]
%4 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%5 = add nsw i32 %4, 1 ; <i32> [#uses=1]
%6 = srem i32 %5, 3 ; <i32> [#uses=2]
store i32 %6, i32* @_ZL6retidx, align 4
%7 = sext i32 %6 to i64 ; <i64> [#uses=1]
%8 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %7, i64 0 ; <i8*> [#uses=1]
%9 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %8, i8** %9, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %3) nounwind
%10 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%11 = sext i32 %10 to i64 ; <i64> [#uses=1]
%12 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %11, i64 0 ; <i8*> [#uses=2]
%13 = call i64 @strlen(i8* %12) nounwind readonly ; <i64> [#uses=2]
%14 = add i64 %13, 1 ; <i64> [#uses=2]
%15 = call i8* @_Znam(i64 %14) ; <i8*> [#uses=3]
%16 = call i8* @strncpy(i8* noalias %15, i8* noalias %12, i64 %14) nounwind ; <i8*> [#uses=0]
%17 = getelementptr inbounds i8* %15, i64 %13 ; <i8*> [#uses=1]
store i8 0, i8* %17, align 1
store i8* %15, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1097EE3runEPiS1_(i32* nocapture %a, i32* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load i32* %a, align 4 ; <i32> [#uses=1]
%2 = load i32* %b, align 4 ; <i32> [#uses=1]
%not = xor i32 %2, -1 ; <i32> [#uses=1]
%3 = and i32 %1, %not ; <i32> [#uses=1]
%4 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%5 = add nsw i32 %4, 1 ; <i32> [#uses=1]
%6 = srem i32 %5, 3 ; <i32> [#uses=2]
store i32 %6, i32* @_ZL6retidx, align 4
%7 = sext i32 %6 to i64 ; <i64> [#uses=1]
%8 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %7, i64 0 ; <i8*> [#uses=1]
%9 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %8, i8** %9, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %3) nounwind
%10 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%11 = sext i32 %10 to i64 ; <i64> [#uses=1]
%12 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %11, i64 0 ; <i8*> [#uses=2]
%13 = call i64 @strlen(i8* %12) nounwind readonly ; <i64> [#uses=2]
%14 = add i64 %13, 1 ; <i64> [#uses=2]
%15 = call i8* @_Znam(i64 %14) ; <i8*> [#uses=3]
%16 = call i8* @strncpy(i8* noalias %15, i8* noalias %12, i64 %14) nounwind ; <i8*> [#uses=0]
%17 = getelementptr inbounds i8* %15, i64 %13 ; <i8*> [#uses=1]
store i8 0, i8* %17, align 1
store i8* %15, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1096EE3runEPiS1_(i32* nocapture %a, i32* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load i32* %a, align 4 ; <i32> [#uses=1]
%2 = load i32* %b, align 4 ; <i32> [#uses=1]
%not = xor i32 %1, -1 ; <i32> [#uses=1]
%3 = xor i32 %2, %not ; <i32> [#uses=1]
%4 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%5 = add nsw i32 %4, 1 ; <i32> [#uses=1]
%6 = srem i32 %5, 3 ; <i32> [#uses=2]
store i32 %6, i32* @_ZL6retidx, align 4
%7 = sext i32 %6 to i64 ; <i64> [#uses=1]
%8 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %7, i64 0 ; <i8*> [#uses=1]
%9 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %8, i8** %9, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %3) nounwind
%10 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%11 = sext i32 %10 to i64 ; <i64> [#uses=1]
%12 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %11, i64 0 ; <i8*> [#uses=2]
%13 = call i64 @strlen(i8* %12) nounwind readonly ; <i64> [#uses=2]
%14 = add i64 %13, 1 ; <i64> [#uses=2]
%15 = call i8* @_Znam(i64 %14) ; <i8*> [#uses=3]
%16 = call i8* @strncpy(i8* noalias %15, i8* noalias %12, i64 %14) nounwind ; <i8*> [#uses=0]
%17 = getelementptr inbounds i8* %15, i64 %13 ; <i8*> [#uses=1]
store i8 0, i8* %17, align 1
store i8* %15, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1095EE3runEPi(i32* nocapture %a) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load i32* %a, align 4 ; <i32> [#uses=1]
%not = xor i32 %1, -1 ; <i32> [#uses=1]
%2 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%3 = add nsw i32 %2, 1 ; <i32> [#uses=1]
%4 = srem i32 %3, 3 ; <i32> [#uses=2]
store i32 %4, i32* @_ZL6retidx, align 4
%5 = sext i32 %4 to i64 ; <i64> [#uses=1]
%6 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %5, i64 0 ; <i8*> [#uses=1]
%7 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %6, i8** %7, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %not) nounwind
%8 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%9 = sext i32 %8 to i64 ; <i64> [#uses=1]
%10 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %9, i64 0 ; <i8*> [#uses=2]
%11 = call i64 @strlen(i8* %10) nounwind readonly ; <i64> [#uses=2]
%12 = add i64 %11, 1 ; <i64> [#uses=2]
%13 = call i8* @_Znam(i64 %12) ; <i8*> [#uses=3]
%14 = call i8* @strncpy(i8* noalias %13, i8* noalias %10, i64 %12) nounwind ; <i8*> [#uses=0]
%15 = getelementptr inbounds i8* %13, i64 %11 ; <i8*> [#uses=1]
store i8 0, i8* %15, align 1
store i8* %13, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1094EE3runEPiS1_(i32* nocapture %a, i32* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load i32* %a, align 4 ; <i32> [#uses=1]
%2 = load i32* %b, align 4 ; <i32> [#uses=1]
%3 = or i32 %2, %1 ; <i32> [#uses=1]
%4 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%5 = add nsw i32 %4, 1 ; <i32> [#uses=1]
%6 = srem i32 %5, 3 ; <i32> [#uses=2]
store i32 %6, i32* @_ZL6retidx, align 4
%7 = sext i32 %6 to i64 ; <i64> [#uses=1]
%8 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %7, i64 0 ; <i8*> [#uses=1]
%9 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %8, i8** %9, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %3) nounwind
%10 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%11 = sext i32 %10 to i64 ; <i64> [#uses=1]
%12 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %11, i64 0 ; <i8*> [#uses=2]
%13 = call i64 @strlen(i8* %12) nounwind readonly ; <i64> [#uses=2]
%14 = add i64 %13, 1 ; <i64> [#uses=2]
%15 = call i8* @_Znam(i64 %14) ; <i8*> [#uses=3]
%16 = call i8* @strncpy(i8* noalias %15, i8* noalias %12, i64 %14) nounwind ; <i8*> [#uses=0]
%17 = getelementptr inbounds i8* %15, i64 %13 ; <i8*> [#uses=1]
store i8 0, i8* %17, align 1
store i8* %15, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1093EE3runEPiS1_(i32* nocapture %a, i32* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load i32* %a, align 4 ; <i32> [#uses=1]
%2 = load i32* %b, align 4 ; <i32> [#uses=1]
%3 = and i32 %2, %1 ; <i32> [#uses=1]
%4 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%5 = add nsw i32 %4, 1 ; <i32> [#uses=1]
%6 = srem i32 %5, 3 ; <i32> [#uses=2]
store i32 %6, i32* @_ZL6retidx, align 4
%7 = sext i32 %6 to i64 ; <i64> [#uses=1]
%8 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %7, i64 0 ; <i8*> [#uses=1]
%9 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %8, i8** %9, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %3) nounwind
%10 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%11 = sext i32 %10 to i64 ; <i64> [#uses=1]
%12 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %11, i64 0 ; <i8*> [#uses=2]
%13 = call i64 @strlen(i8* %12) nounwind readonly ; <i64> [#uses=2]
%14 = add i64 %13, 1 ; <i64> [#uses=2]
%15 = call i8* @_Znam(i64 %14) ; <i8*> [#uses=3]
%16 = call i8* @strncpy(i8* noalias %15, i8* noalias %12, i64 %14) nounwind ; <i8*> [#uses=0]
%17 = getelementptr inbounds i8* %15, i64 %13 ; <i8*> [#uses=1]
store i8 0, i8* %17, align 1
store i8* %15, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1092EE3runEPi(i32* nocapture %a) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load i32* %a, align 4 ; <i32> [#uses=1]
%2 = icmp eq i32 %1, 0 ; <i1> [#uses=1]
%3 = zext i1 %2 to i32 ; <i32> [#uses=1]
%4 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%5 = add nsw i32 %4, 1 ; <i32> [#uses=1]
%6 = srem i32 %5, 3 ; <i32> [#uses=2]
store i32 %6, i32* @_ZL6retidx, align 4
%7 = sext i32 %6 to i64 ; <i64> [#uses=1]
%8 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %7, i64 0 ; <i8*> [#uses=1]
%9 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %8, i8** %9, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %3) nounwind
%10 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%11 = sext i32 %10 to i64 ; <i64> [#uses=1]
%12 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %11, i64 0 ; <i8*> [#uses=2]
%13 = call i64 @strlen(i8* %12) nounwind readonly ; <i64> [#uses=2]
%14 = add i64 %13, 1 ; <i64> [#uses=2]
%15 = call i8* @_Znam(i64 %14) ; <i8*> [#uses=3]
%16 = call i8* @strncpy(i8* noalias %15, i8* noalias %12, i64 %14) nounwind ; <i8*> [#uses=0]
%17 = getelementptr inbounds i8* %15, i64 %13 ; <i8*> [#uses=1]
store i8 0, i8* %17, align 1
store i8* %15, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1091EE3runEPiS1_(i32* nocapture %a, i32* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load i32* %a, align 4 ; <i32> [#uses=1]
%2 = load i32* %b, align 4 ; <i32> [#uses=1]
%3 = xor i32 %2, %1 ; <i32> [#uses=1]
%4 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%5 = add nsw i32 %4, 1 ; <i32> [#uses=1]
%6 = srem i32 %5, 3 ; <i32> [#uses=2]
store i32 %6, i32* @_ZL6retidx, align 4
%7 = sext i32 %6 to i64 ; <i64> [#uses=1]
%8 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %7, i64 0 ; <i8*> [#uses=1]
%9 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %8, i8** %9, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %3) nounwind
%10 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%11 = sext i32 %10 to i64 ; <i64> [#uses=1]
%12 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %11, i64 0 ; <i8*> [#uses=2]
%13 = call i64 @strlen(i8* %12) nounwind readonly ; <i64> [#uses=2]
%14 = add i64 %13, 1 ; <i64> [#uses=2]
%15 = call i8* @_Znam(i64 %14) ; <i8*> [#uses=3]
%16 = call i8* @strncpy(i8* noalias %15, i8* noalias %12, i64 %14) nounwind ; <i8*> [#uses=0]
%17 = getelementptr inbounds i8* %15, i64 %13 ; <i8*> [#uses=1]
store i8 0, i8* %17, align 1
store i8* %15, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1090EE3runEPfS1_(float* nocapture %a, float* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load float* %a, align 4 ; <float> [#uses=1]
%2 = load float* %b, align 4 ; <float> [#uses=1]
%3 = fcmp oge float %1, %2 ; <i1> [#uses=1]
%4 = zext i1 %3 to i32 ; <i32> [#uses=1]
%5 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%6 = add nsw i32 %5, 1 ; <i32> [#uses=1]
%7 = srem i32 %6, 3 ; <i32> [#uses=2]
store i32 %7, i32* @_ZL6retidx, align 4
%8 = sext i32 %7 to i64 ; <i64> [#uses=1]
%9 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %8, i64 0 ; <i8*> [#uses=1]
%10 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %9, i8** %10, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %4) nounwind
%11 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%12 = sext i32 %11 to i64 ; <i64> [#uses=1]
%13 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %12, i64 0 ; <i8*> [#uses=2]
%14 = call i64 @strlen(i8* %13) nounwind readonly ; <i64> [#uses=2]
%15 = add i64 %14, 1 ; <i64> [#uses=2]
%16 = call i8* @_Znam(i64 %15) ; <i8*> [#uses=3]
%17 = call i8* @strncpy(i8* noalias %16, i8* noalias %13, i64 %15) nounwind ; <i8*> [#uses=0]
%18 = getelementptr inbounds i8* %16, i64 %14 ; <i8*> [#uses=1]
store i8 0, i8* %18, align 1
store i8* %16, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1089EE3runEPfS1_(float* nocapture %a, float* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load float* %a, align 4 ; <float> [#uses=1]
%2 = load float* %b, align 4 ; <float> [#uses=1]
%3 = fcmp ole float %1, %2 ; <i1> [#uses=1]
%4 = zext i1 %3 to i32 ; <i32> [#uses=1]
%5 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%6 = add nsw i32 %5, 1 ; <i32> [#uses=1]
%7 = srem i32 %6, 3 ; <i32> [#uses=2]
store i32 %7, i32* @_ZL6retidx, align 4
%8 = sext i32 %7 to i64 ; <i64> [#uses=1]
%9 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %8, i64 0 ; <i8*> [#uses=1]
%10 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %9, i8** %10, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %4) nounwind
%11 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%12 = sext i32 %11 to i64 ; <i64> [#uses=1]
%13 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %12, i64 0 ; <i8*> [#uses=2]
%14 = call i64 @strlen(i8* %13) nounwind readonly ; <i64> [#uses=2]
%15 = add i64 %14, 1 ; <i64> [#uses=2]
%16 = call i8* @_Znam(i64 %15) ; <i8*> [#uses=3]
%17 = call i8* @strncpy(i8* noalias %16, i8* noalias %13, i64 %15) nounwind ; <i8*> [#uses=0]
%18 = getelementptr inbounds i8* %16, i64 %14 ; <i8*> [#uses=1]
store i8 0, i8* %18, align 1
store i8* %16, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1088EE3runEPfS1_(float* nocapture %a, float* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load float* %a, align 4 ; <float> [#uses=1]
%2 = load float* %b, align 4 ; <float> [#uses=1]
%3 = fcmp ogt float %1, %2 ; <i1> [#uses=1]
%4 = zext i1 %3 to i32 ; <i32> [#uses=1]
%5 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%6 = add nsw i32 %5, 1 ; <i32> [#uses=1]
%7 = srem i32 %6, 3 ; <i32> [#uses=2]
store i32 %7, i32* @_ZL6retidx, align 4
%8 = sext i32 %7 to i64 ; <i64> [#uses=1]
%9 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %8, i64 0 ; <i8*> [#uses=1]
%10 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %9, i8** %10, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %4) nounwind
%11 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%12 = sext i32 %11 to i64 ; <i64> [#uses=1]
%13 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %12, i64 0 ; <i8*> [#uses=2]
%14 = call i64 @strlen(i8* %13) nounwind readonly ; <i64> [#uses=2]
%15 = add i64 %14, 1 ; <i64> [#uses=2]
%16 = call i8* @_Znam(i64 %15) ; <i8*> [#uses=3]
%17 = call i8* @strncpy(i8* noalias %16, i8* noalias %13, i64 %15) nounwind ; <i8*> [#uses=0]
%18 = getelementptr inbounds i8* %16, i64 %14 ; <i8*> [#uses=1]
store i8 0, i8* %18, align 1
store i8* %16, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1087EE3runEPfS1_(float* nocapture %a, float* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load float* %a, align 4 ; <float> [#uses=1]
%2 = load float* %b, align 4 ; <float> [#uses=1]
%3 = fcmp olt float %1, %2 ; <i1> [#uses=1]
%4 = zext i1 %3 to i32 ; <i32> [#uses=1]
%5 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%6 = add nsw i32 %5, 1 ; <i32> [#uses=1]
%7 = srem i32 %6, 3 ; <i32> [#uses=2]
store i32 %7, i32* @_ZL6retidx, align 4
%8 = sext i32 %7 to i64 ; <i64> [#uses=1]
%9 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %8, i64 0 ; <i8*> [#uses=1]
%10 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %9, i8** %10, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %4) nounwind
%11 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%12 = sext i32 %11 to i64 ; <i64> [#uses=1]
%13 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %12, i64 0 ; <i8*> [#uses=2]
%14 = call i64 @strlen(i8* %13) nounwind readonly ; <i64> [#uses=2]
%15 = add i64 %14, 1 ; <i64> [#uses=2]
%16 = call i8* @_Znam(i64 %15) ; <i8*> [#uses=3]
%17 = call i8* @strncpy(i8* noalias %16, i8* noalias %13, i64 %15) nounwind ; <i8*> [#uses=0]
%18 = getelementptr inbounds i8* %16, i64 %14 ; <i8*> [#uses=1]
store i8 0, i8* %18, align 1
store i8* %16, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1086EE3runEPfS1_(float* nocapture %a, float* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load float* %a, align 4 ; <float> [#uses=1]
%2 = load float* %b, align 4 ; <float> [#uses=1]
%3 = fcmp une float %1, %2 ; <i1> [#uses=1]
%4 = zext i1 %3 to i32 ; <i32> [#uses=1]
%5 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%6 = add nsw i32 %5, 1 ; <i32> [#uses=1]
%7 = srem i32 %6, 3 ; <i32> [#uses=2]
store i32 %7, i32* @_ZL6retidx, align 4
%8 = sext i32 %7 to i64 ; <i64> [#uses=1]
%9 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %8, i64 0 ; <i8*> [#uses=1]
%10 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %9, i8** %10, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %4) nounwind
%11 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%12 = sext i32 %11 to i64 ; <i64> [#uses=1]
%13 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %12, i64 0 ; <i8*> [#uses=2]
%14 = call i64 @strlen(i8* %13) nounwind readonly ; <i64> [#uses=2]
%15 = add i64 %14, 1 ; <i64> [#uses=2]
%16 = call i8* @_Znam(i64 %15) ; <i8*> [#uses=3]
%17 = call i8* @strncpy(i8* noalias %16, i8* noalias %13, i64 %15) nounwind ; <i8*> [#uses=0]
%18 = getelementptr inbounds i8* %16, i64 %14 ; <i8*> [#uses=1]
store i8 0, i8* %18, align 1
store i8* %16, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1085EE3runEPfS1_(float* nocapture %a, float* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load float* %a, align 4 ; <float> [#uses=1]
%2 = load float* %b, align 4 ; <float> [#uses=1]
%3 = fcmp oeq float %1, %2 ; <i1> [#uses=1]
%4 = zext i1 %3 to i32 ; <i32> [#uses=1]
%5 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%6 = add nsw i32 %5, 1 ; <i32> [#uses=1]
%7 = srem i32 %6, 3 ; <i32> [#uses=2]
store i32 %7, i32* @_ZL6retidx, align 4
%8 = sext i32 %7 to i64 ; <i64> [#uses=1]
%9 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %8, i64 0 ; <i8*> [#uses=1]
%10 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %9, i8** %10, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %4) nounwind
%11 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%12 = sext i32 %11 to i64 ; <i64> [#uses=1]
%13 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %12, i64 0 ; <i8*> [#uses=2]
%14 = call i64 @strlen(i8* %13) nounwind readonly ; <i64> [#uses=2]
%15 = add i64 %14, 1 ; <i64> [#uses=2]
%16 = call i8* @_Znam(i64 %15) ; <i8*> [#uses=3]
%17 = call i8* @strncpy(i8* noalias %16, i8* noalias %13, i64 %15) nounwind ; <i8*> [#uses=0]
%18 = getelementptr inbounds i8* %16, i64 %14 ; <i8*> [#uses=1]
store i8 0, i8* %18, align 1
store i8* %16, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1084EE3runEPiS1_(i32* nocapture %a, i32* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load i32* %a, align 4 ; <i32> [#uses=1]
%2 = load i32* %b, align 4 ; <i32> [#uses=1]
%3 = icmp sge i32 %1, %2 ; <i1> [#uses=1]
%4 = zext i1 %3 to i32 ; <i32> [#uses=1]
%5 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%6 = add nsw i32 %5, 1 ; <i32> [#uses=1]
%7 = srem i32 %6, 3 ; <i32> [#uses=2]
store i32 %7, i32* @_ZL6retidx, align 4
%8 = sext i32 %7 to i64 ; <i64> [#uses=1]
%9 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %8, i64 0 ; <i8*> [#uses=1]
%10 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %9, i8** %10, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %4) nounwind
%11 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%12 = sext i32 %11 to i64 ; <i64> [#uses=1]
%13 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %12, i64 0 ; <i8*> [#uses=2]
%14 = call i64 @strlen(i8* %13) nounwind readonly ; <i64> [#uses=2]
%15 = add i64 %14, 1 ; <i64> [#uses=2]
%16 = call i8* @_Znam(i64 %15) ; <i8*> [#uses=3]
%17 = call i8* @strncpy(i8* noalias %16, i8* noalias %13, i64 %15) nounwind ; <i8*> [#uses=0]
%18 = getelementptr inbounds i8* %16, i64 %14 ; <i8*> [#uses=1]
store i8 0, i8* %18, align 1
store i8* %16, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1083EE3runEPiS1_(i32* nocapture %a, i32* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load i32* %a, align 4 ; <i32> [#uses=1]
%2 = load i32* %b, align 4 ; <i32> [#uses=1]
%3 = icmp sle i32 %1, %2 ; <i1> [#uses=1]
%4 = zext i1 %3 to i32 ; <i32> [#uses=1]
%5 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%6 = add nsw i32 %5, 1 ; <i32> [#uses=1]
%7 = srem i32 %6, 3 ; <i32> [#uses=2]
store i32 %7, i32* @_ZL6retidx, align 4
%8 = sext i32 %7 to i64 ; <i64> [#uses=1]
%9 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %8, i64 0 ; <i8*> [#uses=1]
%10 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %9, i8** %10, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %4) nounwind
%11 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%12 = sext i32 %11 to i64 ; <i64> [#uses=1]
%13 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %12, i64 0 ; <i8*> [#uses=2]
%14 = call i64 @strlen(i8* %13) nounwind readonly ; <i64> [#uses=2]
%15 = add i64 %14, 1 ; <i64> [#uses=2]
%16 = call i8* @_Znam(i64 %15) ; <i8*> [#uses=3]
%17 = call i8* @strncpy(i8* noalias %16, i8* noalias %13, i64 %15) nounwind ; <i8*> [#uses=0]
%18 = getelementptr inbounds i8* %16, i64 %14 ; <i8*> [#uses=1]
store i8 0, i8* %18, align 1
store i8* %16, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1082EE3runEPiS1_(i32* nocapture %a, i32* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load i32* %a, align 4 ; <i32> [#uses=1]
%2 = load i32* %b, align 4 ; <i32> [#uses=1]
%3 = icmp sgt i32 %1, %2 ; <i1> [#uses=1]
%4 = zext i1 %3 to i32 ; <i32> [#uses=1]
%5 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%6 = add nsw i32 %5, 1 ; <i32> [#uses=1]
%7 = srem i32 %6, 3 ; <i32> [#uses=2]
store i32 %7, i32* @_ZL6retidx, align 4
%8 = sext i32 %7 to i64 ; <i64> [#uses=1]
%9 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %8, i64 0 ; <i8*> [#uses=1]
%10 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %9, i8** %10, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %4) nounwind
%11 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%12 = sext i32 %11 to i64 ; <i64> [#uses=1]
%13 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %12, i64 0 ; <i8*> [#uses=2]
%14 = call i64 @strlen(i8* %13) nounwind readonly ; <i64> [#uses=2]
%15 = add i64 %14, 1 ; <i64> [#uses=2]
%16 = call i8* @_Znam(i64 %15) ; <i8*> [#uses=3]
%17 = call i8* @strncpy(i8* noalias %16, i8* noalias %13, i64 %15) nounwind ; <i8*> [#uses=0]
%18 = getelementptr inbounds i8* %16, i64 %14 ; <i8*> [#uses=1]
store i8 0, i8* %18, align 1
store i8* %16, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1081EE3runEPiS1_(i32* nocapture %a, i32* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load i32* %a, align 4 ; <i32> [#uses=1]
%2 = load i32* %b, align 4 ; <i32> [#uses=1]
%3 = icmp slt i32 %1, %2 ; <i1> [#uses=1]
%4 = zext i1 %3 to i32 ; <i32> [#uses=1]
%5 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%6 = add nsw i32 %5, 1 ; <i32> [#uses=1]
%7 = srem i32 %6, 3 ; <i32> [#uses=2]
store i32 %7, i32* @_ZL6retidx, align 4
%8 = sext i32 %7 to i64 ; <i64> [#uses=1]
%9 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %8, i64 0 ; <i8*> [#uses=1]
%10 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %9, i8** %10, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %4) nounwind
%11 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%12 = sext i32 %11 to i64 ; <i64> [#uses=1]
%13 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %12, i64 0 ; <i8*> [#uses=2]
%14 = call i64 @strlen(i8* %13) nounwind readonly ; <i64> [#uses=2]
%15 = add i64 %14, 1 ; <i64> [#uses=2]
%16 = call i8* @_Znam(i64 %15) ; <i8*> [#uses=3]
%17 = call i8* @strncpy(i8* noalias %16, i8* noalias %13, i64 %15) nounwind ; <i8*> [#uses=0]
%18 = getelementptr inbounds i8* %16, i64 %14 ; <i8*> [#uses=1]
store i8 0, i8* %18, align 1
store i8* %16, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1080EE3runEPiS1_(i32* nocapture %a, i32* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load i32* %a, align 4 ; <i32> [#uses=1]
%2 = load i32* %b, align 4 ; <i32> [#uses=1]
%3 = icmp ne i32 %1, %2 ; <i1> [#uses=1]
%4 = zext i1 %3 to i32 ; <i32> [#uses=1]
%5 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%6 = add nsw i32 %5, 1 ; <i32> [#uses=1]
%7 = srem i32 %6, 3 ; <i32> [#uses=2]
store i32 %7, i32* @_ZL6retidx, align 4
%8 = sext i32 %7 to i64 ; <i64> [#uses=1]
%9 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %8, i64 0 ; <i8*> [#uses=1]
%10 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %9, i8** %10, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %4) nounwind
%11 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%12 = sext i32 %11 to i64 ; <i64> [#uses=1]
%13 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %12, i64 0 ; <i8*> [#uses=2]
%14 = call i64 @strlen(i8* %13) nounwind readonly ; <i64> [#uses=2]
%15 = add i64 %14, 1 ; <i64> [#uses=2]
%16 = call i8* @_Znam(i64 %15) ; <i8*> [#uses=3]
%17 = call i8* @strncpy(i8* noalias %16, i8* noalias %13, i64 %15) nounwind ; <i8*> [#uses=0]
%18 = getelementptr inbounds i8* %16, i64 %14 ; <i8*> [#uses=1]
store i8 0, i8* %18, align 1
store i8* %16, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1079EE3runEPiS1_(i32* nocapture %a, i32* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load i32* %a, align 4 ; <i32> [#uses=1]
%2 = load i32* %b, align 4 ; <i32> [#uses=1]
%3 = icmp eq i32 %1, %2 ; <i1> [#uses=1]
%4 = zext i1 %3 to i32 ; <i32> [#uses=1]
%5 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%6 = add nsw i32 %5, 1 ; <i32> [#uses=1]
%7 = srem i32 %6, 3 ; <i32> [#uses=2]
store i32 %7, i32* @_ZL6retidx, align 4
%8 = sext i32 %7 to i64 ; <i64> [#uses=1]
%9 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %8, i64 0 ; <i8*> [#uses=1]
%10 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %9, i8** %10, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %4) nounwind
%11 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%12 = sext i32 %11 to i64 ; <i64> [#uses=1]
%13 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %12, i64 0 ; <i8*> [#uses=2]
%14 = call i64 @strlen(i8* %13) nounwind readonly ; <i64> [#uses=2]
%15 = add i64 %14, 1 ; <i64> [#uses=2]
%16 = call i8* @_Znam(i64 %15) ; <i8*> [#uses=3]
%17 = call i8* @strncpy(i8* noalias %16, i8* noalias %13, i64 %15) nounwind ; <i8*> [#uses=0]
%18 = getelementptr inbounds i8* %16, i64 %14 ; <i8*> [#uses=1]
store i8 0, i8* %18, align 1
store i8* %16, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1075EE3runEPiS1_(i32* nocapture %a, i32* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load i32* %a, align 4 ; <i32> [#uses=1]
%2 = load i32* %b, align 4 ; <i32> [#uses=1]
%3 = sub nsw i32 %1, %2 ; <i32> [#uses=1]
%4 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%5 = add nsw i32 %4, 1 ; <i32> [#uses=1]
%6 = srem i32 %5, 3 ; <i32> [#uses=2]
store i32 %6, i32* @_ZL6retidx, align 4
%7 = sext i32 %6 to i64 ; <i64> [#uses=1]
%8 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %7, i64 0 ; <i8*> [#uses=1]
%9 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %8, i8** %9, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %3) nounwind
%10 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%11 = sext i32 %10 to i64 ; <i64> [#uses=1]
%12 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %11, i64 0 ; <i8*> [#uses=2]
%13 = call i64 @strlen(i8* %12) nounwind readonly ; <i64> [#uses=2]
%14 = add i64 %13, 1 ; <i64> [#uses=2]
%15 = call i8* @_Znam(i64 %14) ; <i8*> [#uses=3]
%16 = call i8* @strncpy(i8* noalias %15, i8* noalias %12, i64 %14) nounwind ; <i8*> [#uses=0]
%17 = getelementptr inbounds i8* %15, i64 %13 ; <i8*> [#uses=1]
store i8 0, i8* %17, align 1
store i8* %15, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1074EE3runEPiS1_(i32* nocapture %a, i32* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load i32* %a, align 4 ; <i32> [#uses=1]
%2 = load i32* %b, align 4 ; <i32> [#uses=1]
%3 = mul nsw i32 %2, %1 ; <i32> [#uses=1]
%4 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%5 = add nsw i32 %4, 1 ; <i32> [#uses=1]
%6 = srem i32 %5, 3 ; <i32> [#uses=2]
store i32 %6, i32* @_ZL6retidx, align 4
%7 = sext i32 %6 to i64 ; <i64> [#uses=1]
%8 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %7, i64 0 ; <i8*> [#uses=1]
%9 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %8, i8** %9, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %3) nounwind
%10 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%11 = sext i32 %10 to i64 ; <i64> [#uses=1]
%12 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %11, i64 0 ; <i8*> [#uses=2]
%13 = call i64 @strlen(i8* %12) nounwind readonly ; <i64> [#uses=2]
%14 = add i64 %13, 1 ; <i64> [#uses=2]
%15 = call i8* @_Znam(i64 %14) ; <i8*> [#uses=3]
%16 = call i8* @strncpy(i8* noalias %15, i8* noalias %12, i64 %14) nounwind ; <i8*> [#uses=0]
%17 = getelementptr inbounds i8* %15, i64 %13 ; <i8*> [#uses=1]
store i8 0, i8* %17, align 1
store i8* %15, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1073EE3runEPiS1_(i32* nocapture %a, i32* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load i32* %a, align 4 ; <i32> [#uses=1]
%2 = load i32* %b, align 4 ; <i32> [#uses=1]
%3 = add nsw i32 %2, %1 ; <i32> [#uses=1]
%4 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%5 = add nsw i32 %4, 1 ; <i32> [#uses=1]
%6 = srem i32 %5, 3 ; <i32> [#uses=2]
store i32 %6, i32* @_ZL6retidx, align 4
%7 = sext i32 %6 to i64 ; <i64> [#uses=1]
%8 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %7, i64 0 ; <i8*> [#uses=1]
%9 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %8, i8** %9, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %3) nounwind
%10 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%11 = sext i32 %10 to i64 ; <i64> [#uses=1]
%12 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %11, i64 0 ; <i8*> [#uses=2]
%13 = call i64 @strlen(i8* %12) nounwind readonly ; <i64> [#uses=2]
%14 = add i64 %13, 1 ; <i64> [#uses=2]
%15 = call i8* @_Znam(i64 %14) ; <i8*> [#uses=3]
%16 = call i8* @strncpy(i8* noalias %15, i8* noalias %12, i64 %14) nounwind ; <i8*> [#uses=0]
%17 = getelementptr inbounds i8* %15, i64 %13 ; <i8*> [#uses=1]
store i8 0, i8* %17, align 1
store i8* %15, i8** @commandret, align 8
ret void
}
define void @_Z14setsvarcheckedP5identPKc(%struct.ident* %id, i8* nocapture %val) {
entry:
%0 = getelementptr inbounds %struct.ident* %id, i64 0, i32 10 ; <i32*> [#uses=1]
%1 = load i32* %0, align 8 ; <i32> [#uses=3]
%2 = and i32 %1, 8 ; <i32> [#uses=1]
%3 = icmp eq i32 %2, 0 ; <i1> [#uses=1]
br i1 %3, label %bb1, label %bb
bb: ; preds = %entry
%4 = getelementptr inbounds %struct.ident* %id, i64 0, i32 2 ; <i8**> [#uses=1]
%5 = load i8** %4, align 8 ; <i8*> [#uses=1]
tail call void (i32, i8*, ...)* @_Z7conoutfiPKcz(i32 4, i8* getelementptr inbounds ([25 x i8]* @.str4, i64 0, i64 0), i8* %5)
ret void
bb1: ; preds = %entry
%6 = load i8* @overrideidents, align 1 ; <i8> [#uses=1]
%toBool = icmp eq i8 %6, 0 ; <i1> [#uses=1]
br i1 %toBool, label %bb2, label %bb3
bb2: ; preds = %bb1
%7 = and i32 %1, 2 ; <i32> [#uses=1]
%8 = icmp eq i32 %7, 0 ; <i1> [#uses=1]
br i1 %8, label %bb10, label %bb3
bb3: ; preds = %bb2, %bb1
%9 = and i32 %1, 1 ; <i32> [#uses=1]
%toBool4 = icmp eq i32 %9, 0 ; <i1> [#uses=1]
br i1 %toBool4, label %bb6, label %bb5
bb5: ; preds = %bb3
%10 = getelementptr inbounds %struct.ident* %id, i64 0, i32 2 ; <i8**> [#uses=1]
%11 = load i8** %10, align 8 ; <i8*> [#uses=1]
tail call void (i32, i8*, ...)* @_Z7conoutfiPKcz(i32 4, i8* getelementptr inbounds ([39 x i8]* @.str5, i64 0, i64 0), i8* %11)
ret void
bb6: ; preds = %bb3
%12 = getelementptr inbounds %struct.ident* %id, i64 0, i32 5 ; <i32*> [#uses=2]
%13 = load i32* %12, align 8 ; <i32> [#uses=1]
%14 = icmp eq i32 %13, 2147483647 ; <i1> [#uses=1]
%15 = getelementptr inbounds %struct.ident* %id, i64 0, i32 9, i32 0 ; <i32**> [#uses=1]
%16 = load i32** %15, align 8 ; <i32*> [#uses=1]
%17 = bitcast i32* %16 to i8** ; <i8**> [#uses=1]
%18 = load i8** %17, align 8 ; <i8*> [#uses=3]
br i1 %14, label %bb7, label %bb8
bb7: ; preds = %bb6
%19 = getelementptr inbounds %struct.ident* %id, i64 0, i32 8, i32 0 ; <i8**> [#uses=1]
store i8* %18, i8** %19, align 8
store i32 0, i32* %12, align 8
br label %bb16
bb8: ; preds = %bb6
%20 = icmp eq i8* %18, null ; <i1> [#uses=1]
br i1 %20, label %bb16, label %bb9
bb9: ; preds = %bb8
tail call void @_ZdaPv(i8* %18) nounwind
br label %bb16
bb10: ; preds = %bb2
%21 = getelementptr inbounds %struct.ident* %id, i64 0, i32 5 ; <i32*> [#uses=2]
%22 = load i32* %21, align 8 ; <i32> [#uses=1]
%23 = icmp eq i32 %22, 2147483647 ; <i1> [#uses=1]
br i1 %23, label %bb14, label %bb11
bb11: ; preds = %bb10
%24 = getelementptr inbounds %struct.ident* %id, i64 0, i32 8, i32 0 ; <i8**> [#uses=1]
%25 = load i8** %24, align 8 ; <i8*> [#uses=2]
%26 = icmp eq i8* %25, null ; <i1> [#uses=1]
br i1 %26, label %bb13, label %bb12
bb12: ; preds = %bb11
tail call void @_ZdaPv(i8* %25) nounwind
br label %bb13
bb13: ; preds = %bb12, %bb11
store i32 2147483647, i32* %21, align 8
br label %bb14
bb14: ; preds = %bb13, %bb10
%27 = getelementptr inbounds %struct.ident* %id, i64 0, i32 9, i32 0 ; <i32**> [#uses=1]
%28 = load i32** %27, align 8 ; <i32*> [#uses=1]
%29 = bitcast i32* %28 to i8** ; <i8**> [#uses=1]
%30 = load i8** %29, align 8 ; <i8*> [#uses=2]
%31 = icmp eq i8* %30, null ; <i1> [#uses=1]
br i1 %31, label %bb16, label %bb15
bb15: ; preds = %bb14
tail call void @_ZdaPv(i8* %30) nounwind
br label %bb16
bb16: ; preds = %bb15, %bb14, %bb9, %bb8, %bb7
%32 = getelementptr inbounds %struct.ident* %id, i64 0, i32 9, i32 0 ; <i32**> [#uses=1]
%33 = load i32** %32, align 8 ; <i32*> [#uses=1]
%34 = bitcast i32* %33 to i8** ; <i8**> [#uses=1]
%35 = tail call i64 @strlen(i8* %val) nounwind readonly ; <i64> [#uses=2]
%36 = add i64 %35, 1 ; <i64> [#uses=2]
%37 = tail call i8* @_Znam(i64 %36) ; <i8*> [#uses=3]
%38 = tail call i8* @strncpy(i8* noalias %37, i8* noalias %val, i64 %36) nounwind ; <i8*> [#uses=0]
%39 = getelementptr inbounds i8* %37, i64 %35 ; <i8*> [#uses=1]
store i8 0, i8* %39, align 1
store i8* %37, i8** %34, align 8
%40 = getelementptr inbounds %struct.ident* %id, i64 0, i32 0 ; <i32 (...)***> [#uses=1]
%41 = load i32 (...)*** %40, align 8 ; <i32 (...)**> [#uses=1]
%42 = getelementptr inbounds i32 (...)** %41, i64 2 ; <i32 (...)**> [#uses=1]
%43 = load i32 (...)** %42, align 8 ; <i32 (...)*> [#uses=1]
%44 = bitcast i32 (...)* %43 to void (%struct.ident*)* ; <void (%struct.ident*)*> [#uses=1]
tail call void %44(%struct.ident* %id)
ret void
}
define void @_Z13clearoverrideR5ident(%struct.ident* %i) {
entry:
%0 = getelementptr inbounds %struct.ident* %i, i64 0, i32 5 ; <i32*> [#uses=2]
%1 = load i32* %0, align 8 ; <i32> [#uses=1]
%2 = icmp eq i32 %1, 2147483647 ; <i1> [#uses=1]
br i1 %2, label %return, label %bb
bb: ; preds = %entry
%3 = getelementptr inbounds %struct.ident* %i, i64 0, i32 1 ; <i32*> [#uses=1]
%4 = load i32* %3, align 8 ; <i32> [#uses=1]
switch i32 %4, label %bb11 [
i32 0, label %bb6
i32 1, label %bb7
i32 2, label %bb8
i32 5, label %bb1
]
bb1: ; preds = %bb
%5 = getelementptr inbounds %struct.ident* %i, i64 0, i32 7, i32 0 ; <i8**> [#uses=2]
%6 = load i8** %5, align 8 ; <i8*> [#uses=4]
%7 = load i8* %6, align 1 ; <i8> [#uses=1]
%8 = icmp eq i8 %7, 0 ; <i1> [#uses=1]
br i1 %8, label %bb11, label %bb2
bb2: ; preds = %bb1
%9 = getelementptr inbounds %struct.ident* %i, i64 0, i32 8, i32 0 ; <i8**> [#uses=1]
%10 = load i8** %9, align 8 ; <i8*> [#uses=1]
%11 = icmp eq i8* %6, %10 ; <i1> [#uses=1]
%12 = icmp eq i8* %6, null ; <i1> [#uses=1]
%or.cond = or i1 %11, %12 ; <i1> [#uses=1]
br i1 %or.cond, label %bb5, label %bb4
bb4: ; preds = %bb2
tail call void @_ZdaPv(i8* %6) nounwind
br label %bb5
bb5: ; preds = %bb4, %bb2
%13 = tail call i8* @_Znam(i64 1) ; <i8*> [#uses=2]
store i8 0, i8* %13, align 1
store i8* %13, i8** %5, align 8
br label %bb11
bb6: ; preds = %bb
%14 = getelementptr inbounds %struct.ident* %i, i64 0, i32 9, i32 0 ; <i32**> [#uses=1]
%15 = load i32** %14, align 8 ; <i32*> [#uses=1]
%16 = getelementptr inbounds %struct.ident* %i, i64 0, i32 8, i32 0 ; <i8**> [#uses=1]
%17 = bitcast i8** %16 to i32* ; <i32*> [#uses=1]
%18 = load i32* %17, align 8 ; <i32> [#uses=1]
store i32 %18, i32* %15, align 4
%19 = getelementptr inbounds %struct.ident* %i, i64 0, i32 0 ; <i32 (...)***> [#uses=1]
%20 = load i32 (...)*** %19, align 8 ; <i32 (...)**> [#uses=1]
%21 = getelementptr inbounds i32 (...)** %20, i64 2 ; <i32 (...)**> [#uses=1]
%22 = load i32 (...)** %21, align 8 ; <i32 (...)*> [#uses=1]
%23 = bitcast i32 (...)* %22 to void (%struct.ident*)* ; <void (%struct.ident*)*> [#uses=1]
tail call void %23(%struct.ident* %i)
br label %bb11
bb7: ; preds = %bb
%24 = getelementptr inbounds %struct.ident* %i, i64 0, i32 9, i32 0 ; <i32**> [#uses=1]
%25 = load i32** %24, align 8 ; <i32*> [#uses=1]
%26 = bitcast i32* %25 to float* ; <float*> [#uses=1]
%27 = getelementptr inbounds %struct.ident* %i, i64 0, i32 8, i32 0 ; <i8**> [#uses=1]
%28 = bitcast i8** %27 to float* ; <float*> [#uses=1]
%29 = load float* %28, align 8 ; <float> [#uses=1]
store float %29, float* %26, align 4
%30 = getelementptr inbounds %struct.ident* %i, i64 0, i32 0 ; <i32 (...)***> [#uses=1]
%31 = load i32 (...)*** %30, align 8 ; <i32 (...)**> [#uses=1]
%32 = getelementptr inbounds i32 (...)** %31, i64 2 ; <i32 (...)**> [#uses=1]
%33 = load i32 (...)** %32, align 8 ; <i32 (...)*> [#uses=1]
%34 = bitcast i32 (...)* %33 to void (%struct.ident*)* ; <void (%struct.ident*)*> [#uses=1]
tail call void %34(%struct.ident* %i)
br label %bb11
bb8: ; preds = %bb
%35 = getelementptr inbounds %struct.ident* %i, i64 0, i32 9, i32 0 ; <i32**> [#uses=2]
%36 = load i32** %35, align 8 ; <i32*> [#uses=2]
%37 = bitcast i32* %36 to i8** ; <i8**> [#uses=1]
%38 = load i8** %37, align 8 ; <i8*> [#uses=2]
%39 = icmp eq i8* %38, null ; <i1> [#uses=1]
br i1 %39, label %bb10, label %bb9
bb9: ; preds = %bb8
tail call void @_ZdaPv(i8* %38) nounwind
%.pre = load i32** %35, align 8 ; <i32*> [#uses=1]
br label %bb10
bb10: ; preds = %bb9, %bb8
%40 = phi i32* [ %36, %bb8 ], [ %.pre, %bb9 ] ; <i32*> [#uses=1]
%41 = bitcast i32* %40 to i8** ; <i8**> [#uses=1]
%42 = getelementptr inbounds %struct.ident* %i, i64 0, i32 8, i32 0 ; <i8**> [#uses=1]
%43 = load i8** %42, align 8 ; <i8*> [#uses=1]
store i8* %43, i8** %41, align 8
%44 = getelementptr inbounds %struct.ident* %i, i64 0, i32 0 ; <i32 (...)***> [#uses=1]
%45 = load i32 (...)*** %44, align 8 ; <i32 (...)**> [#uses=1]
%46 = getelementptr inbounds i32 (...)** %45, i64 2 ; <i32 (...)**> [#uses=1]
%47 = load i32 (...)** %46, align 8 ; <i32 (...)*> [#uses=1]
%48 = bitcast i32 (...)* %47 to void (%struct.ident*)* ; <void (%struct.ident*)*> [#uses=1]
tail call void %48(%struct.ident* %i)
br label %bb11
bb11: ; preds = %bb10, %bb7, %bb6, %bb5, %bb1, %bb
store i32 2147483647, i32* %0, align 8
ret void
return: ; preds = %entry
ret void
}
define void @_Z14clearoverridesv() {
entry:
%0 = load %"struct.hashtable<const char*,ident>"** @idents, align 8 ; <%"struct.hashtable<const char*,ident>"*> [#uses=2]
%1 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %0, i64 0, i32 0, i32 0 ; <i32*> [#uses=1]
%2 = load i32* %1, align 8 ; <i32> [#uses=1]
%3 = icmp sgt i32 %2, 0 ; <i1> [#uses=1]
br i1 %3, label %bb, label %return
bb: ; preds = %bb4, %entry
%4 = phi %"struct.hashtable<const char*,ident>"* [ %13, %bb4 ], [ %0, %entry ] ; <%"struct.hashtable<const char*,ident>"*> [#uses=1]
%indvar = phi i64 [ %tmp, %bb4 ], [ 0, %entry ] ; <i64> [#uses=2]
%tmp = add i64 %indvar, 1 ; <i64> [#uses=2]
%tmp13 = trunc i64 %tmp to i32 ; <i32> [#uses=1]
%5 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %4, i64 0, i32 0, i32 2 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"***> [#uses=1]
%6 = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** %5, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%scevgep = getelementptr %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %6, i64 %indvar ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%7 = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %scevgep, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"*> [#uses=2]
%8 = icmp eq %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %7, null ; <i1> [#uses=1]
br i1 %8, label %bb4, label %bb1
bb1: ; preds = %bb1, %bb
%enumc.0.in7 = phi %"struct.hashset<hashtableentry<const char*, ident> >::chain"* [ %11, %bb1 ], [ %7, %bb ] ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"*> [#uses=2]
%9 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %enumc.0.in7, i64 0, i32 0, i32 1 ; <%struct.ident*> [#uses=1]
%10 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %enumc.0.in7, i64 0, i32 1 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%11 = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %10, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"*> [#uses=2]
tail call void @_Z13clearoverrideR5ident(%struct.ident* %9)
%12 = icmp eq %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %11, null ; <i1> [#uses=1]
br i1 %12, label %bb4, label %bb1
bb4: ; preds = %bb1, %bb
%13 = load %"struct.hashtable<const char*,ident>"** @idents, align 8 ; <%"struct.hashtable<const char*,ident>"*> [#uses=2]
%14 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %13, i64 0, i32 0, i32 0 ; <i32*> [#uses=1]
%15 = load i32* %14, align 8 ; <i32> [#uses=1]
%16 = icmp sgt i32 %15, %tmp13 ; <i1> [#uses=1]
br i1 %16, label %bb, label %return
return: ; preds = %bb4, %entry
ret void
}
define void @_ZN7_stdcmdILi1195EE3runEPc(i8* nocapture %s) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = call i64 @strlen(i8* %s) nounwind readonly ; <i64> [#uses=1]
%2 = trunc i64 %1 to i32 ; <i32> [#uses=1]
%3 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%4 = add nsw i32 %3, 1 ; <i32> [#uses=1]
%5 = srem i32 %4, 3 ; <i32> [#uses=2]
store i32 %5, i32* @_ZL6retidx, align 4
%6 = sext i32 %5 to i64 ; <i64> [#uses=1]
%7 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %6, i64 0 ; <i8*> [#uses=1]
%8 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %7, i8** %8, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %2) nounwind
%9 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%10 = sext i32 %9 to i64 ; <i64> [#uses=1]
%11 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %10, i64 0 ; <i8*> [#uses=2]
%12 = call i64 @strlen(i8* %11) nounwind readonly ; <i64> [#uses=2]
%13 = add i64 %12, 1 ; <i64> [#uses=2]
%14 = call i8* @_Znam(i64 %13) ; <i8*> [#uses=3]
%15 = call i8* @strncpy(i8* noalias %14, i8* noalias %11, i64 %13) nounwind ; <i8*> [#uses=0]
%16 = getelementptr inbounds i8* %14, i64 %12 ; <i8*> [#uses=1]
store i8 0, i8* %16, align 1
store i8* %14, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1194EE3runEPcS1_(i8* %a, i8* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = call i8* @strstr(i8* %a, i8* %b) nounwind readonly ; <i8*> [#uses=2]
%2 = icmp eq i8* %1, null ; <i1> [#uses=1]
br i1 %2, label %bb2, label %bb
bb: ; preds = %entry
%3 = ptrtoint i8* %1 to i64 ; <i64> [#uses=1]
%4 = trunc i64 %3 to i32 ; <i32> [#uses=1]
%5 = ptrtoint i8* %a to i64 ; <i64> [#uses=1]
%6 = trunc i64 %5 to i32 ; <i32> [#uses=1]
%7 = sub i32 %4, %6 ; <i32> [#uses=1]
br label %bb2
bb2: ; preds = %bb, %entry
%iftmp.192.0 = phi i32 [ %7, %bb ], [ -1, %entry ] ; <i32> [#uses=1]
%8 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%9 = add nsw i32 %8, 1 ; <i32> [#uses=1]
%10 = srem i32 %9, 3 ; <i32> [#uses=2]
store i32 %10, i32* @_ZL6retidx, align 4
%11 = sext i32 %10 to i64 ; <i64> [#uses=1]
%12 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %11, i64 0 ; <i8*> [#uses=1]
%13 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %12, i8** %13, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %iftmp.192.0) nounwind
%14 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%15 = sext i32 %14 to i64 ; <i64> [#uses=1]
%16 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %15, i64 0 ; <i8*> [#uses=2]
%17 = call i64 @strlen(i8* %16) nounwind readonly ; <i64> [#uses=2]
%18 = add i64 %17, 1 ; <i64> [#uses=2]
%19 = call i8* @_Znam(i64 %18) ; <i8*> [#uses=3]
%20 = call i8* @strncpy(i8* noalias %19, i8* noalias %16, i64 %18) nounwind ; <i8*> [#uses=0]
%21 = getelementptr inbounds i8* %19, i64 %17 ; <i8*> [#uses=1]
store i8 0, i8* %21, align 1
store i8* %19, i8** @commandret, align 8
ret void
}
declare i8* @strstr(i8*, i8* nocapture) nounwind readonly
define i8* @_Z10strreplacePKcS0_S0_(i8* %s, i8* nocapture %oldval, i8* nocapture %newval) {
entry:
%0 = tail call i64 @strlen(i8* %oldval) nounwind readonly ; <i64> [#uses=1]
%1 = trunc i64 %0 to i32 ; <i32> [#uses=2]
%2 = icmp eq i32 %1, 0 ; <i1> [#uses=1]
br i1 %2, label %bb, label %bb1.preheader
bb1.preheader: ; preds = %entry
%3 = sext i32 %1 to i64 ; <i64> [#uses=1]
br label %bb1
bb: ; preds = %entry
%4 = tail call i64 @strlen(i8* %s) nounwind readonly ; <i64> [#uses=2]
%5 = add i64 %4, 1 ; <i64> [#uses=2]
%6 = invoke i8* @_Znam(i64 %5)
to label %_ZN6vectorIcE6shrinkEi.exit.i34.thread unwind label %_ZN6vectorIcE6shrinkEi.exit.i.thread ; <i8*> [#uses=3]
_ZN6vectorIcE6shrinkEi.exit.i.thread: ; preds = %bb
%eh_ptr101 = tail call i8* @llvm.eh.exception() ; <i8*> [#uses=2]
%eh_select22102 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr101, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i8* null) ; <i32> [#uses=0]
br label %invcont17
_ZN6vectorIcE6shrinkEi.exit.i34.thread: ; preds = %bb
%7 = tail call i8* @strncpy(i8* noalias %6, i8* noalias %s, i64 %5) nounwind ; <i8*> [#uses=0]
%8 = getelementptr inbounds i8* %6, i64 %4 ; <i8*> [#uses=1]
store i8 0, i8* %8, align 1
ret i8* %6
bb1: ; preds = %bb9, %bb1.preheader
%buf.2.1 = phi i32 [ %buf.2.4, %bb9 ], [ 0, %bb1.preheader ] ; <i32> [#uses=3]
%buf.1.3 = phi i32 [ %buf.1.6, %bb9 ], [ 0, %bb1.preheader ] ; <i32> [#uses=2]
%buf.0.2 = phi i8* [ %buf.0.6, %bb9 ], [ null, %bb1.preheader ] ; <i8*> [#uses=2]
%s_addr.1 = phi i8* [ %42, %bb9 ], [ %s, %bb1.preheader ] ; <i8*> [#uses=3]
%9 = tail call i8* @strstr(i8* %s_addr.1, i8* %oldval) nounwind readonly ; <i8*> [#uses=3]
%10 = icmp eq i8* %9, null ; <i1> [#uses=1]
%tmp = zext i32 %buf.2.1 to i64 ; <i64> [#uses=2]
%tmp141 = add i32 %buf.2.1, 1 ; <i32> [#uses=1]
%tmp142 = zext i32 %tmp141 to i64 ; <i64> [#uses=2]
%tmp145 = sext i32 %buf.2.1 to i64 ; <i64> [#uses=2]
br i1 %10, label %bb12, label %bb4
bb2: ; preds = %bb4
%tmp156 = add i64 %tmp, %indvar153 ; <i64> [#uses=1]
%buf.2.0 = trunc i64 %tmp156 to i32 ; <i32> [#uses=1]
%11 = icmp eq i32 %buf.2.0, %buf.1.2 ; <i1> [#uses=1]
br i1 %11, label %bb.i77, label %bb1.i90
bb.i77: ; preds = %bb2
%12 = icmp eq i32 %buf.1.2, 0 ; <i1> [#uses=1]
br i1 %12, label %bb.i.i80, label %bb2.preheader.i.i78
bb2.preheader.i.i78: ; preds = %bb.i77
%13 = icmp slt i32 %buf.1.2, %tmp161 ; <i1> [#uses=1]
br i1 %13, label %bb1.i.i82, label %bb1.i90
bb.i.i80: ; preds = %bb.i77
%14 = icmp slt i32 %tmp161, 8 ; <i1> [#uses=1]
%iftmp.215.0.i.i.i79 = select i1 %14, i32 8, i32 %tmp161 ; <i32> [#uses=1]
br label %bb3.i.i84
bb1.i.i82: ; preds = %bb1.i.i82, %bb2.preheader.i.i78
%.tmp.0.i.i81 = phi i32 [ %15, %bb1.i.i82 ], [ %buf.1.2, %bb2.preheader.i.i78 ] ; <i32> [#uses=1]
%15 = shl i32 %.tmp.0.i.i81, 1 ; <i32> [#uses=3]
%16 = icmp slt i32 %15, %tmp161 ; <i1> [#uses=1]
br i1 %16, label %bb1.i.i82, label %bb3.i.i84
bb3.i.i84: ; preds = %bb1.i.i82, %bb.i.i80
%buf.1.0 = phi i32 [ %iftmp.215.0.i.i.i79, %bb.i.i80 ], [ %15, %bb1.i.i82 ] ; <i32> [#uses=6]
%17 = icmp sgt i32 %buf.1.0, %buf.1.2 ; <i1> [#uses=1]
br i1 %17, label %bb4.i.i85, label %bb1.i90
bb4.i.i85: ; preds = %bb3.i.i84
%18 = sext i32 %buf.1.0 to i64 ; <i64> [#uses=1]
%19 = invoke i8* @_Znam(i64 %18)
to label %.noexc94 unwind label %lpad ; <i8*> [#uses=4]
.noexc94: ; preds = %bb4.i.i85
%20 = icmp sgt i32 %buf.1.2, 0 ; <i1> [#uses=1]
br i1 %20, label %bb5.i.i86, label %bb1.i90
bb5.i.i86: ; preds = %.noexc94
%21 = sext i32 %buf.1.2 to i64 ; <i64> [#uses=1]
tail call void @llvm.memcpy.i64(i8* %19, i8* %buf.0.1, i64 %21, i32 1)
%22 = icmp eq i8* %buf.0.1, null ; <i1> [#uses=1]
br i1 %22, label %bb1.i90, label %bb6.i.i87
bb6.i.i87: ; preds = %bb5.i.i86
tail call void @_ZdaPv(i8* %buf.0.1) nounwind
br label %bb1.i90
bb1.i90: ; preds = %bb6.i.i87, %bb5.i.i86, %.noexc94, %bb3.i.i84, %bb2.preheader.i.i78, %bb2
%buf.1.1 = phi i32 [ %buf.1.0, %bb3.i.i84 ], [ %buf.1.2, %bb2.preheader.i.i78 ], [ %buf.1.2, %bb2 ], [ %buf.1.0, %bb6.i.i87 ], [ %buf.1.0, %bb5.i.i86 ], [ %buf.1.0, %.noexc94 ] ; <i32> [#uses=1]
%buf.0.0 = phi i8* [ %buf.0.1, %bb3.i.i84 ], [ %buf.0.1, %bb2.preheader.i.i78 ], [ %buf.0.1, %bb2 ], [ %19, %bb6.i.i87 ], [ %19, %bb5.i.i86 ], [ %19, %.noexc94 ] ; <i8*> [#uses=2]
%scevgep165 = getelementptr i8* %buf.0.0, i64 %tmp163 ; <i8*> [#uses=2]
%23 = icmp eq i8* %scevgep165, null ; <i1> [#uses=1]
br i1 %23, label %_ZN6vectorIcE3addERKc.exit95, label %bb2.i93
bb2.i93: ; preds = %bb1.i90
%24 = load i8* %s_addr.0, align 1 ; <i8> [#uses=1]
store i8 %24, i8* %scevgep165, align 1
br label %_ZN6vectorIcE3addERKc.exit95
_ZN6vectorIcE3addERKc.exit95: ; preds = %bb2.i93, %bb1.i90
%indvar.next154 = add i64 %indvar153, 1 ; <i64> [#uses=1]
br label %bb4
bb4: ; preds = %_ZN6vectorIcE3addERKc.exit95, %bb1
%indvar153 = phi i64 [ %indvar.next154, %_ZN6vectorIcE3addERKc.exit95 ], [ 0, %bb1 ] ; <i64> [#uses=5]
%buf.1.2 = phi i32 [ %buf.1.1, %_ZN6vectorIcE3addERKc.exit95 ], [ %buf.1.3, %bb1 ] ; <i32> [#uses=10]
%buf.0.1 = phi i8* [ %buf.0.0, %_ZN6vectorIcE3addERKc.exit95 ], [ %buf.0.2, %bb1 ] ; <i8*> [#uses=8]
%tmp160 = add i64 %tmp142, %indvar153 ; <i64> [#uses=2]
%tmp161 = trunc i64 %tmp160 to i32 ; <i32> [#uses=4]
%tmp163 = add i64 %tmp145, %indvar153 ; <i64> [#uses=2]
%s_addr.0 = getelementptr i8* %s_addr.1, i64 %indvar153 ; <i8*> [#uses=2]
%25 = icmp ult i8* %s_addr.0, %9 ; <i1> [#uses=1]
br i1 %25, label %bb2, label %bb8
bb6: ; preds = %bb8
%26 = icmp eq i32 %buf.2.4, %buf.1.6 ; <i1> [#uses=1]
br i1 %26, label %bb.i58, label %bb1.i71
bb.i58: ; preds = %bb6
%27 = icmp eq i32 %buf.1.6, 0 ; <i1> [#uses=1]
br i1 %27, label %bb.i.i61, label %bb2.preheader.i.i59
bb2.preheader.i.i59: ; preds = %bb.i58
%28 = icmp slt i32 %buf.1.6, %tmp181 ; <i1> [#uses=1]
br i1 %28, label %bb1.i.i63, label %bb1.i71
bb.i.i61: ; preds = %bb.i58
%29 = icmp slt i32 %tmp181, 8 ; <i1> [#uses=1]
%iftmp.215.0.i.i.i60 = select i1 %29, i32 8, i32 %tmp181 ; <i32> [#uses=1]
br label %bb3.i.i65
bb1.i.i63: ; preds = %bb1.i.i63, %bb2.preheader.i.i59
%.tmp.0.i.i62 = phi i32 [ %30, %bb1.i.i63 ], [ %buf.1.6, %bb2.preheader.i.i59 ] ; <i32> [#uses=1]
%30 = shl i32 %.tmp.0.i.i62, 1 ; <i32> [#uses=3]
%31 = icmp slt i32 %30, %tmp181 ; <i1> [#uses=1]
br i1 %31, label %bb1.i.i63, label %bb3.i.i65
bb3.i.i65: ; preds = %bb1.i.i63, %bb.i.i61
%buf.1.4 = phi i32 [ %iftmp.215.0.i.i.i60, %bb.i.i61 ], [ %30, %bb1.i.i63 ] ; <i32> [#uses=6]
%32 = icmp sgt i32 %buf.1.4, %buf.1.6 ; <i1> [#uses=1]
br i1 %32, label %bb4.i.i66, label %bb1.i71
bb4.i.i66: ; preds = %bb3.i.i65
%33 = sext i32 %buf.1.4 to i64 ; <i64> [#uses=1]
%34 = invoke i8* @_Znam(i64 %33)
to label %.noexc75 unwind label %lpad ; <i8*> [#uses=4]
.noexc75: ; preds = %bb4.i.i66
%35 = icmp sgt i32 %buf.1.6, 0 ; <i1> [#uses=1]
br i1 %35, label %bb5.i.i67, label %bb1.i71
bb5.i.i67: ; preds = %.noexc75
%36 = sext i32 %buf.1.6 to i64 ; <i64> [#uses=1]
tail call void @llvm.memcpy.i64(i8* %34, i8* %buf.0.6, i64 %36, i32 1)
%37 = icmp eq i8* %buf.0.6, null ; <i1> [#uses=1]
br i1 %37, label %bb1.i71, label %bb6.i.i68
bb6.i.i68: ; preds = %bb5.i.i67
tail call void @_ZdaPv(i8* %buf.0.6) nounwind
br label %bb1.i71
bb1.i71: ; preds = %bb6.i.i68, %bb5.i.i67, %.noexc75, %bb3.i.i65, %bb2.preheader.i.i59, %bb6
%buf.1.5 = phi i32 [ %buf.1.4, %bb3.i.i65 ], [ %buf.1.6, %bb2.preheader.i.i59 ], [ %buf.1.6, %bb6 ], [ %buf.1.4, %bb6.i.i68 ], [ %buf.1.4, %bb5.i.i67 ], [ %buf.1.4, %.noexc75 ] ; <i32> [#uses=1]
%buf.0.5 = phi i8* [ %buf.0.6, %bb3.i.i65 ], [ %buf.0.6, %bb2.preheader.i.i59 ], [ %buf.0.6, %bb6 ], [ %34, %bb6.i.i68 ], [ %34, %bb5.i.i67 ], [ %34, %.noexc75 ] ; <i8*> [#uses=2]
%scevgep183 = getelementptr i8* %buf.0.5, i64 %tmp175 ; <i8*> [#uses=2]
%38 = icmp eq i8* %scevgep183, null ; <i1> [#uses=1]
br i1 %38, label %invcont7, label %bb2.i74
bb2.i74: ; preds = %bb1.i71
%39 = load i8* %n.0, align 1 ; <i8> [#uses=1]
store i8 %39, i8* %scevgep183, align 1
br label %invcont7
invcont7: ; preds = %bb2.i74, %bb1.i71
%indvar.next172 = add i64 %indvar171, 1 ; <i64> [#uses=1]
br label %bb8
bb8: ; preds = %invcont7, %bb4
%indvar171 = phi i64 [ %indvar.next172, %invcont7 ], [ 0, %bb4 ] ; <i64> [#uses=4]
%buf.1.6 = phi i32 [ %buf.1.5, %invcont7 ], [ %buf.1.2, %bb4 ] ; <i32> [#uses=10]
%buf.0.6 = phi i8* [ %buf.0.5, %invcont7 ], [ %buf.0.1, %bb4 ] ; <i8*> [#uses=8]
%tmp175 = add i64 %tmp163, %indvar171 ; <i64> [#uses=2]
%buf.2.4 = trunc i64 %tmp175 to i32 ; <i32> [#uses=2]
%tmp180 = add i64 %tmp160, %indvar171 ; <i64> [#uses=1]
%tmp181 = trunc i64 %tmp180 to i32 ; <i32> [#uses=4]
%n.0 = getelementptr i8* %newval, i64 %indvar171 ; <i8*> [#uses=2]
%40 = load i8* %n.0, align 1 ; <i8> [#uses=1]
%41 = icmp eq i8 %40, 0 ; <i1> [#uses=1]
br i1 %41, label %bb9, label %bb6
bb9: ; preds = %bb8
%42 = getelementptr inbounds i8* %9, i64 %3 ; <i8*> [#uses=1]
br label %bb1
bb10: ; preds = %bb12
br i1 %58, label %bb.i39, label %bb1.i52
bb.i39: ; preds = %bb10
%43 = icmp eq i32 %buf.1.9, 0 ; <i1> [#uses=1]
br i1 %43, label %bb.i.i42, label %bb2.preheader.i.i40
bb2.preheader.i.i40: ; preds = %bb.i39
%44 = icmp slt i32 %buf.1.9, %tmp144 ; <i1> [#uses=1]
br i1 %44, label %bb1.i.i44, label %bb1.i52
bb.i.i42: ; preds = %bb.i39
%45 = icmp slt i32 %tmp144, 8 ; <i1> [#uses=1]
%iftmp.215.0.i.i.i41 = select i1 %45, i32 8, i32 %tmp144 ; <i32> [#uses=1]
br label %bb3.i.i46
bb1.i.i44: ; preds = %bb1.i.i44, %bb2.preheader.i.i40
%.tmp.0.i.i43 = phi i32 [ %46, %bb1.i.i44 ], [ %buf.1.9, %bb2.preheader.i.i40 ] ; <i32> [#uses=1]
%46 = shl i32 %.tmp.0.i.i43, 1 ; <i32> [#uses=3]
%47 = icmp slt i32 %46, %tmp144 ; <i1> [#uses=1]
br i1 %47, label %bb1.i.i44, label %bb3.i.i46
bb3.i.i46: ; preds = %bb1.i.i44, %bb.i.i42
%buf.1.7 = phi i32 [ %iftmp.215.0.i.i.i41, %bb.i.i42 ], [ %46, %bb1.i.i44 ] ; <i32> [#uses=6]
%48 = icmp sgt i32 %buf.1.7, %buf.1.9 ; <i1> [#uses=1]
br i1 %48, label %bb4.i.i47, label %bb1.i52
bb4.i.i47: ; preds = %bb3.i.i46
%49 = sext i32 %buf.1.7 to i64 ; <i64> [#uses=1]
%50 = invoke i8* @_Znam(i64 %49)
to label %.noexc56 unwind label %lpad ; <i8*> [#uses=4]
.noexc56: ; preds = %bb4.i.i47
%51 = icmp sgt i32 %buf.1.9, 0 ; <i1> [#uses=1]
br i1 %51, label %bb5.i.i48, label %bb1.i52
bb5.i.i48: ; preds = %.noexc56
%52 = sext i32 %buf.1.9 to i64 ; <i64> [#uses=1]
tail call void @llvm.memcpy.i64(i8* %50, i8* %buf.0.8, i64 %52, i32 1)
%53 = icmp eq i8* %buf.0.8, null ; <i1> [#uses=1]
br i1 %53, label %bb1.i52, label %bb6.i.i49
bb6.i.i49: ; preds = %bb5.i.i48
tail call void @_ZdaPv(i8* %buf.0.8) nounwind
br label %bb1.i52
bb1.i52: ; preds = %bb6.i.i49, %bb5.i.i48, %.noexc56, %bb3.i.i46, %bb2.preheader.i.i40, %bb10
%buf.1.8 = phi i32 [ %buf.1.7, %bb3.i.i46 ], [ %buf.1.9, %bb2.preheader.i.i40 ], [ %buf.1.9, %bb10 ], [ %buf.1.7, %bb6.i.i49 ], [ %buf.1.7, %bb5.i.i48 ], [ %buf.1.7, %.noexc56 ] ; <i32> [#uses=1]
%buf.0.7 = phi i8* [ %buf.0.8, %bb3.i.i46 ], [ %buf.0.8, %bb2.preheader.i.i40 ], [ %buf.0.8, %bb10 ], [ %50, %bb6.i.i49 ], [ %50, %bb5.i.i48 ], [ %50, %.noexc56 ] ; <i8*> [#uses=2]
%scevgep147 = getelementptr i8* %buf.0.7, i64 %tmp146 ; <i8*> [#uses=2]
%54 = icmp eq i8* %scevgep147, null ; <i1> [#uses=1]
br i1 %54, label %_ZN6vectorIcE3addERKc.exit57, label %bb2.i55
bb2.i55: ; preds = %bb1.i52
%55 = load i8* %s_addr.2, align 1 ; <i8> [#uses=1]
store i8 %55, i8* %scevgep147, align 1
br label %_ZN6vectorIcE3addERKc.exit57
_ZN6vectorIcE3addERKc.exit57: ; preds = %bb2.i55, %bb1.i52
%indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
br label %bb12
bb12: ; preds = %_ZN6vectorIcE3addERKc.exit57, %bb1
%indvar = phi i64 [ %indvar.next, %_ZN6vectorIcE3addERKc.exit57 ], [ 0, %bb1 ] ; <i64> [#uses=5]
%buf.1.9 = phi i32 [ %buf.1.8, %_ZN6vectorIcE3addERKc.exit57 ], [ %buf.1.3, %bb1 ] ; <i32> [#uses=15]
%buf.0.8 = phi i8* [ %buf.0.7, %_ZN6vectorIcE3addERKc.exit57 ], [ %buf.0.2, %bb1 ] ; <i8*> [#uses=14]
%tmp139 = add i64 %tmp, %indvar ; <i64> [#uses=1]
%buf.2.5 = trunc i64 %tmp139 to i32 ; <i32> [#uses=4]
%tmp143 = add i64 %tmp142, %indvar ; <i64> [#uses=1]
%tmp144 = trunc i64 %tmp143 to i32 ; <i32> [#uses=4]
%tmp146 = add i64 %tmp145, %indvar ; <i64> [#uses=1]
%s_addr.2 = getelementptr i8* %s_addr.1, i64 %indvar ; <i8*> [#uses=2]
%56 = load i8* %s_addr.2, align 1 ; <i8> [#uses=1]
%57 = icmp eq i8 %56, 0 ; <i1> [#uses=1]
%58 = icmp eq i32 %buf.2.5, %buf.1.9 ; <i1> [#uses=2]
br i1 %57, label %bb13, label %bb10
bb13: ; preds = %bb12
br i1 %58, label %bb.i, label %bb1.i38
bb.i: ; preds = %bb13
%59 = add nsw i32 %buf.2.5, 1 ; <i32> [#uses=4]
%60 = icmp eq i32 %buf.1.9, 0 ; <i1> [#uses=1]
br i1 %60, label %bb.i.i, label %bb2.preheader.i.i
bb2.preheader.i.i: ; preds = %bb.i
%61 = icmp slt i32 %buf.1.9, %59 ; <i1> [#uses=1]
br i1 %61, label %bb1.i.i, label %bb1.i38
bb.i.i: ; preds = %bb.i
%62 = icmp slt i32 %59, 8 ; <i1> [#uses=1]
%iftmp.215.0.i.i.i = select i1 %62, i32 8, i32 %59 ; <i32> [#uses=1]
br label %bb3.i.i
bb1.i.i: ; preds = %bb1.i.i, %bb2.preheader.i.i
%.tmp.0.i.i = phi i32 [ %63, %bb1.i.i ], [ %buf.1.9, %bb2.preheader.i.i ] ; <i32> [#uses=1]
%63 = shl i32 %.tmp.0.i.i, 1 ; <i32> [#uses=3]
%64 = icmp slt i32 %63, %59 ; <i1> [#uses=1]
br i1 %64, label %bb1.i.i, label %bb3.i.i
bb3.i.i: ; preds = %bb1.i.i, %bb.i.i
%65 = phi i32 [ %iftmp.215.0.i.i.i, %bb.i.i ], [ %63, %bb1.i.i ] ; <i32> [#uses=2]
%66 = icmp sgt i32 %65, %buf.1.9 ; <i1> [#uses=1]
br i1 %66, label %bb4.i.i, label %bb1.i38
bb4.i.i: ; preds = %bb3.i.i
%67 = sext i32 %65 to i64 ; <i64> [#uses=1]
%68 = invoke i8* @_Znam(i64 %67)
to label %.noexc unwind label %lpad ; <i8*> [#uses=4]
.noexc: ; preds = %bb4.i.i
%69 = icmp sgt i32 %buf.1.9, 0 ; <i1> [#uses=1]
br i1 %69, label %bb5.i.i, label %bb1.i38
bb5.i.i: ; preds = %.noexc
%70 = sext i32 %buf.1.9 to i64 ; <i64> [#uses=1]
tail call void @llvm.memcpy.i64(i8* %68, i8* %buf.0.8, i64 %70, i32 1)
%71 = icmp eq i8* %buf.0.8, null ; <i1> [#uses=1]
br i1 %71, label %bb1.i38, label %bb6.i.i
bb6.i.i: ; preds = %bb5.i.i
tail call void @_ZdaPv(i8* %buf.0.8) nounwind
br label %bb1.i38
bb1.i38: ; preds = %bb6.i.i, %bb5.i.i, %.noexc, %bb3.i.i, %bb2.preheader.i.i, %bb13
%buf.0.9 = phi i8* [ %buf.0.8, %bb3.i.i ], [ %buf.0.8, %bb2.preheader.i.i ], [ %buf.0.8, %bb13 ], [ %68, %bb6.i.i ], [ %68, %bb5.i.i ], [ %68, %.noexc ] ; <i8*> [#uses=5]
%72 = sext i32 %buf.2.5 to i64 ; <i64> [#uses=1]
%73 = getelementptr inbounds i8* %buf.0.9, i64 %72 ; <i8*> [#uses=2]
%74 = icmp eq i8* %73, null ; <i1> [#uses=1]
br i1 %74, label %invcont14, label %bb2.i
bb2.i: ; preds = %bb1.i38
store i8 0, i8* %73, align 1
br label %invcont14
invcont14: ; preds = %bb2.i, %bb1.i38
%75 = add nsw i32 %buf.2.5, 1 ; <i32> [#uses=1]
%76 = sext i32 %75 to i64 ; <i64> [#uses=2]
%77 = add i64 %76, 1 ; <i64> [#uses=2]
%78 = invoke i8* @_Znam(i64 %77)
to label %bb19 unwind label %lpad ; <i8*> [#uses=4]
invcont17: ; preds = %bb1.i, %lpad, %_ZN6vectorIcE6shrinkEi.exit.i.thread
%eh_ptr104106 = phi i8* [ %eh_ptr, %bb1.i ], [ %eh_ptr101, %_ZN6vectorIcE6shrinkEi.exit.i.thread ], [ %eh_ptr, %lpad ] ; <i8*> [#uses=1]
tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr104106)
unreachable
bb19: ; preds = %invcont14
%79 = tail call i8* @strncpy(i8* noalias %78, i8* noalias %buf.0.9, i64 %77) nounwind ; <i8*> [#uses=0]
%80 = getelementptr inbounds i8* %78, i64 %76 ; <i8*> [#uses=1]
store i8 0, i8* %80, align 1
%81 = icmp eq i8* %buf.0.9, null ; <i1> [#uses=1]
br i1 %81, label %_ZN6vectorIcED1Ev.exit37, label %bb1.i35
bb1.i35: ; preds = %bb19
tail call void @_ZdaPv(i8* %buf.0.9) nounwind
ret i8* %78
_ZN6vectorIcED1Ev.exit37: ; preds = %bb19
ret i8* %78
lpad: ; preds = %invcont14, %bb4.i.i, %bb4.i.i47, %bb4.i.i66, %bb4.i.i85
%buf.0.3 = phi i8* [ %buf.0.9, %invcont14 ], [ %buf.0.8, %bb4.i.i ], [ %buf.0.8, %bb4.i.i47 ], [ %buf.0.1, %bb4.i.i85 ], [ %buf.0.6, %bb4.i.i66 ] ; <i8*> [#uses=2]
%eh_ptr = tail call i8* @llvm.eh.exception() ; <i8*> [#uses=3]
%eh_select22 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i8* null) ; <i32> [#uses=0]
%82 = icmp eq i8* %buf.0.3, null ; <i1> [#uses=1]
br i1 %82, label %invcont17, label %bb1.i
bb1.i: ; preds = %lpad
tail call void @_ZdaPv(i8* %buf.0.3) nounwind
br label %invcont17
}
declare i8* @llvm.eh.exception() nounwind readonly
declare i32 @llvm.eh.selector(i8*, i8*, ...) nounwind
declare i32 @__gxx_personality_v0(...)
declare void @_Unwind_Resume_or_Rethrow(i8*)
define void @_ZN7_stdcmdILi1221EE3runEPcS1_S1_(i8* %s, i8* nocapture %o, i8* nocapture %n) align 2 {
entry:
%0 = tail call i8* @_Z10strreplacePKcS0_S0_(i8* %s, i8* %o, i8* %n) ; <i8*> [#uses=1]
store i8* %0, i8** @commandret, align 8
ret void
}
define void @_Z6formatPPcPi(i8** nocapture %args, i32* nocapture %numargs) {
entry:
%0 = load i8** %args, align 8 ; <i8*> [#uses=1]
br label %bb12
bb: ; preds = %bb12
%1 = getelementptr inbounds i8* %f.0, i64 1 ; <i8*> [#uses=2]
%2 = icmp eq i8 %64, 37 ; <i1> [#uses=1]
br i1 %2, label %bb1, label %bb10
bb1: ; preds = %bb
%3 = load i8* %1, align 1 ; <i8> [#uses=2]
%4 = sext i8 %3 to i32 ; <i32> [#uses=2]
%5 = getelementptr inbounds i8* %f.0, i64 2 ; <i8*> [#uses=2]
%6 = add i32 %4, -49 ; <i32> [#uses=1]
%7 = icmp ult i32 %6, 9 ; <i1> [#uses=1]
br i1 %7, label %bb2, label %bb8
bb2: ; preds = %bb1
%8 = add nsw i32 %4, -48 ; <i32> [#uses=2]
%9 = load i32* %numargs, align 4 ; <i32> [#uses=1]
%10 = icmp sgt i32 %9, %8 ; <i1> [#uses=1]
br i1 %10, label %bb3, label %bb7.preheader
bb3: ; preds = %bb2
%11 = sext i32 %8 to i64 ; <i64> [#uses=1]
%12 = getelementptr inbounds i8** %args, i64 %11 ; <i8**> [#uses=1]
%13 = load i8** %12, align 8 ; <i8*> [#uses=1]
br label %bb7.preheader
bb7.preheader: ; preds = %bb3, %bb2
%sub.0.ph = phi i8* [ %13, %bb3 ], [ getelementptr inbounds ([1 x i8]* @.str3, i64 0, i64 0), %bb2 ] ; <i8*> [#uses=1]
%tmp = zext i32 %s.2.1 to i64 ; <i64> [#uses=1]
%tmp119 = add i32 %s.2.1, 1 ; <i32> [#uses=1]
%tmp120 = zext i32 %tmp119 to i64 ; <i64> [#uses=1]
%tmp123 = sext i32 %s.2.1 to i64 ; <i64> [#uses=1]
br label %bb7
bb6: ; preds = %bb7
%14 = icmp eq i32 %s.2.0, %s.1.2 ; <i1> [#uses=1]
br i1 %14, label %bb.i76, label %bb1.i89
bb.i76: ; preds = %bb6
%15 = icmp eq i32 %s.1.2, 0 ; <i1> [#uses=1]
br i1 %15, label %bb.i.i79, label %bb2.preheader.i.i77
bb2.preheader.i.i77: ; preds = %bb.i76
%16 = icmp slt i32 %s.1.2, %tmp122 ; <i1> [#uses=1]
br i1 %16, label %bb1.i.i81, label %bb1.i89
bb.i.i79: ; preds = %bb.i76
%17 = icmp slt i32 %tmp122, 8 ; <i1> [#uses=1]
%iftmp.215.0.i.i.i78 = select i1 %17, i32 8, i32 %tmp122 ; <i32> [#uses=1]
br label %bb3.i.i83
bb1.i.i81: ; preds = %bb1.i.i81, %bb2.preheader.i.i77
%.tmp.0.i.i80 = phi i32 [ %18, %bb1.i.i81 ], [ %s.1.2, %bb2.preheader.i.i77 ] ; <i32> [#uses=1]
%18 = shl i32 %.tmp.0.i.i80, 1 ; <i32> [#uses=3]
%19 = icmp slt i32 %18, %tmp122 ; <i1> [#uses=1]
br i1 %19, label %bb1.i.i81, label %bb3.i.i83
bb3.i.i83: ; preds = %bb1.i.i81, %bb.i.i79
%s.1.0 = phi i32 [ %iftmp.215.0.i.i.i78, %bb.i.i79 ], [ %18, %bb1.i.i81 ] ; <i32> [#uses=6]
%20 = icmp sgt i32 %s.1.0, %s.1.2 ; <i1> [#uses=1]
br i1 %20, label %bb4.i.i84, label %bb1.i89
bb4.i.i84: ; preds = %bb3.i.i83
%21 = sext i32 %s.1.0 to i64 ; <i64> [#uses=1]
%22 = invoke i8* @_Znam(i64 %21)
to label %.noexc93 unwind label %lpad ; <i8*> [#uses=4]
.noexc93: ; preds = %bb4.i.i84
%23 = icmp sgt i32 %s.1.2, 0 ; <i1> [#uses=1]
br i1 %23, label %bb5.i.i85, label %bb1.i89
bb5.i.i85: ; preds = %.noexc93
%24 = sext i32 %s.1.2 to i64 ; <i64> [#uses=1]
tail call void @llvm.memcpy.i64(i8* %22, i8* %s.0.1, i64 %24, i32 1)
%25 = icmp eq i8* %s.0.1, null ; <i1> [#uses=1]
br i1 %25, label %bb1.i89, label %bb6.i.i86
bb6.i.i86: ; preds = %bb5.i.i85
tail call void @_ZdaPv(i8* %s.0.1) nounwind
br label %bb1.i89
bb1.i89: ; preds = %bb6.i.i86, %bb5.i.i85, %.noexc93, %bb3.i.i83, %bb2.preheader.i.i77, %bb6
%s.1.1 = phi i32 [ %s.1.0, %bb3.i.i83 ], [ %s.1.2, %bb2.preheader.i.i77 ], [ %s.1.2, %bb6 ], [ %s.1.0, %bb6.i.i86 ], [ %s.1.0, %bb5.i.i85 ], [ %s.1.0, %.noexc93 ] ; <i32> [#uses=1]
%s.0.0 = phi i8* [ %s.0.1, %bb3.i.i83 ], [ %s.0.1, %bb2.preheader.i.i77 ], [ %s.0.1, %bb6 ], [ %22, %bb6.i.i86 ], [ %22, %bb5.i.i85 ], [ %22, %.noexc93 ] ; <i8*> [#uses=2]
%scevgep125 = getelementptr i8* %s.0.0, i64 %tmp124 ; <i8*> [#uses=2]
%26 = icmp eq i8* %scevgep125, null ; <i1> [#uses=1]
br i1 %26, label %_ZN6vectorIcE3addERKc.exit94, label %bb2.i92
bb2.i92: ; preds = %bb1.i89
%27 = load i8* %sub.0, align 1 ; <i8> [#uses=1]
store i8 %27, i8* %scevgep125, align 1
br label %_ZN6vectorIcE3addERKc.exit94
_ZN6vectorIcE3addERKc.exit94: ; preds = %bb2.i92, %bb1.i89
%indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
br label %bb7
bb7: ; preds = %_ZN6vectorIcE3addERKc.exit94, %bb7.preheader
%indvar = phi i64 [ 0, %bb7.preheader ], [ %indvar.next, %_ZN6vectorIcE3addERKc.exit94 ] ; <i64> [#uses=5]
%s.1.2 = phi i32 [ %s.1.3, %bb7.preheader ], [ %s.1.1, %_ZN6vectorIcE3addERKc.exit94 ] ; <i32> [#uses=10]
%s.0.1 = phi i8* [ %s.0.2, %bb7.preheader ], [ %s.0.0, %_ZN6vectorIcE3addERKc.exit94 ] ; <i8*> [#uses=8]
%tmp117 = add i64 %tmp, %indvar ; <i64> [#uses=1]
%s.2.0 = trunc i64 %tmp117 to i32 ; <i32> [#uses=2]
%tmp121 = add i64 %tmp120, %indvar ; <i64> [#uses=1]
%tmp122 = trunc i64 %tmp121 to i32 ; <i32> [#uses=4]
%tmp124 = add i64 %tmp123, %indvar ; <i64> [#uses=1]
%sub.0 = getelementptr i8* %sub.0.ph, i64 %indvar ; <i8*> [#uses=2]
%28 = load i8* %sub.0, align 1 ; <i8> [#uses=1]
%29 = icmp eq i8 %28, 0 ; <i1> [#uses=1]
br i1 %29, label %bb12, label %bb6
bb8: ; preds = %bb1
%30 = icmp eq i32 %s.2.1, %s.1.3 ; <i1> [#uses=1]
br i1 %30, label %bb.i57, label %bb1.i70
bb.i57: ; preds = %bb8
%31 = add nsw i32 %s.2.1, 1 ; <i32> [#uses=4]
%32 = icmp eq i32 %s.1.3, 0 ; <i1> [#uses=1]
br i1 %32, label %bb.i.i60, label %bb2.preheader.i.i58
bb2.preheader.i.i58: ; preds = %bb.i57
%33 = icmp slt i32 %s.1.3, %31 ; <i1> [#uses=1]
br i1 %33, label %bb1.i.i62, label %bb1.i70
bb.i.i60: ; preds = %bb.i57
%34 = icmp slt i32 %31, 8 ; <i1> [#uses=1]
%iftmp.215.0.i.i.i59 = select i1 %34, i32 8, i32 %31 ; <i32> [#uses=1]
br label %bb3.i.i64
bb1.i.i62: ; preds = %bb1.i.i62, %bb2.preheader.i.i58
%.tmp.0.i.i61 = phi i32 [ %35, %bb1.i.i62 ], [ %s.1.3, %bb2.preheader.i.i58 ] ; <i32> [#uses=1]
%35 = shl i32 %.tmp.0.i.i61, 1 ; <i32> [#uses=3]
%36 = icmp slt i32 %35, %31 ; <i1> [#uses=1]
br i1 %36, label %bb1.i.i62, label %bb3.i.i64
bb3.i.i64: ; preds = %bb1.i.i62, %bb.i.i60
%s.1.4 = phi i32 [ %iftmp.215.0.i.i.i59, %bb.i.i60 ], [ %35, %bb1.i.i62 ] ; <i32> [#uses=6]
%37 = icmp sgt i32 %s.1.4, %s.1.3 ; <i1> [#uses=1]
br i1 %37, label %bb4.i.i65, label %bb1.i70
bb4.i.i65: ; preds = %bb3.i.i64
%38 = sext i32 %s.1.4 to i64 ; <i64> [#uses=1]
%39 = invoke i8* @_Znam(i64 %38)
to label %.noexc74 unwind label %lpad ; <i8*> [#uses=4]
.noexc74: ; preds = %bb4.i.i65
%40 = icmp sgt i32 %s.1.3, 0 ; <i1> [#uses=1]
br i1 %40, label %bb5.i.i66, label %bb1.i70
bb5.i.i66: ; preds = %.noexc74
%41 = sext i32 %s.1.3 to i64 ; <i64> [#uses=1]
tail call void @llvm.memcpy.i64(i8* %39, i8* %s.0.2, i64 %41, i32 1)
%42 = icmp eq i8* %s.0.2, null ; <i1> [#uses=1]
br i1 %42, label %bb1.i70, label %bb6.i.i67
bb6.i.i67: ; preds = %bb5.i.i66
tail call void @_ZdaPv(i8* %s.0.2) nounwind
br label %bb1.i70
bb1.i70: ; preds = %bb6.i.i67, %bb5.i.i66, %.noexc74, %bb3.i.i64, %bb2.preheader.i.i58, %bb8
%s.1.5 = phi i32 [ %s.1.4, %bb3.i.i64 ], [ %s.1.3, %bb2.preheader.i.i58 ], [ %s.1.3, %bb8 ], [ %s.1.4, %bb6.i.i67 ], [ %s.1.4, %bb5.i.i66 ], [ %s.1.4, %.noexc74 ] ; <i32> [#uses=1]
%s.0.4 = phi i8* [ %s.0.2, %bb3.i.i64 ], [ %s.0.2, %bb2.preheader.i.i58 ], [ %s.0.2, %bb8 ], [ %39, %bb6.i.i67 ], [ %39, %bb5.i.i66 ], [ %39, %.noexc74 ] ; <i8*> [#uses=2]
%43 = sext i32 %s.2.1 to i64 ; <i64> [#uses=1]
%44 = getelementptr inbounds i8* %s.0.4, i64 %43 ; <i8*> [#uses=2]
%45 = icmp eq i8* %44, null ; <i1> [#uses=1]
br i1 %45, label %_ZN6vectorIcE3addERKc.exit75, label %bb2.i73
bb2.i73: ; preds = %bb1.i70
store i8 %3, i8* %44, align 1
br label %_ZN6vectorIcE3addERKc.exit75
_ZN6vectorIcE3addERKc.exit75: ; preds = %bb2.i73, %bb1.i70
%46 = add nsw i32 %s.2.1, 1 ; <i32> [#uses=1]
br label %bb12
bb10: ; preds = %bb
%47 = icmp eq i32 %s.2.1, %s.1.3 ; <i1> [#uses=1]
br i1 %47, label %bb.i38, label %bb1.i51
bb.i38: ; preds = %bb10
%48 = add nsw i32 %s.2.1, 1 ; <i32> [#uses=4]
%49 = icmp eq i32 %s.1.3, 0 ; <i1> [#uses=1]
br i1 %49, label %bb.i.i41, label %bb2.preheader.i.i39
bb2.preheader.i.i39: ; preds = %bb.i38
%50 = icmp slt i32 %s.1.3, %48 ; <i1> [#uses=1]
br i1 %50, label %bb1.i.i43, label %bb1.i51
bb.i.i41: ; preds = %bb.i38
%51 = icmp slt i32 %48, 8 ; <i1> [#uses=1]
%iftmp.215.0.i.i.i40 = select i1 %51, i32 8, i32 %48 ; <i32> [#uses=1]
br label %bb3.i.i45
bb1.i.i43: ; preds = %bb1.i.i43, %bb2.preheader.i.i39
%.tmp.0.i.i42 = phi i32 [ %52, %bb1.i.i43 ], [ %s.1.3, %bb2.preheader.i.i39 ] ; <i32> [#uses=1]
%52 = shl i32 %.tmp.0.i.i42, 1 ; <i32> [#uses=3]
%53 = icmp slt i32 %52, %48 ; <i1> [#uses=1]
br i1 %53, label %bb1.i.i43, label %bb3.i.i45
bb3.i.i45: ; preds = %bb1.i.i43, %bb.i.i41
%s.1.6 = phi i32 [ %iftmp.215.0.i.i.i40, %bb.i.i41 ], [ %52, %bb1.i.i43 ] ; <i32> [#uses=6]
%54 = icmp sgt i32 %s.1.6, %s.1.3 ; <i1> [#uses=1]
br i1 %54, label %bb4.i.i46, label %bb1.i51
bb4.i.i46: ; preds = %bb3.i.i45
%55 = sext i32 %s.1.6 to i64 ; <i64> [#uses=1]
%56 = invoke i8* @_Znam(i64 %55)
to label %.noexc55 unwind label %lpad ; <i8*> [#uses=4]
.noexc55: ; preds = %bb4.i.i46
%57 = icmp sgt i32 %s.1.3, 0 ; <i1> [#uses=1]
br i1 %57, label %bb5.i.i47, label %bb1.i51
bb5.i.i47: ; preds = %.noexc55
%58 = sext i32 %s.1.3 to i64 ; <i64> [#uses=1]
tail call void @llvm.memcpy.i64(i8* %56, i8* %s.0.2, i64 %58, i32 1)
%59 = icmp eq i8* %s.0.2, null ; <i1> [#uses=1]
br i1 %59, label %bb1.i51, label %bb6.i.i48
bb6.i.i48: ; preds = %bb5.i.i47
tail call void @_ZdaPv(i8* %s.0.2) nounwind
br label %bb1.i51
bb1.i51: ; preds = %bb6.i.i48, %bb5.i.i47, %.noexc55, %bb3.i.i45, %bb2.preheader.i.i39, %bb10
%s.1.7 = phi i32 [ %s.1.6, %bb3.i.i45 ], [ %s.1.3, %bb2.preheader.i.i39 ], [ %s.1.3, %bb10 ], [ %s.1.6, %bb6.i.i48 ], [ %s.1.6, %bb5.i.i47 ], [ %s.1.6, %.noexc55 ] ; <i32> [#uses=1]
%s.0.5 = phi i8* [ %s.0.2, %bb3.i.i45 ], [ %s.0.2, %bb2.preheader.i.i39 ], [ %s.0.2, %bb10 ], [ %56, %bb6.i.i48 ], [ %56, %bb5.i.i47 ], [ %56, %.noexc55 ] ; <i8*> [#uses=2]
%60 = sext i32 %s.2.1 to i64 ; <i64> [#uses=1]
%61 = getelementptr inbounds i8* %s.0.5, i64 %60 ; <i8*> [#uses=2]
%62 = icmp eq i8* %61, null ; <i1> [#uses=1]
br i1 %62, label %_ZN6vectorIcE3addERKc.exit56, label %bb2.i54
bb2.i54: ; preds = %bb1.i51
store i8 %64, i8* %61, align 1
br label %_ZN6vectorIcE3addERKc.exit56
_ZN6vectorIcE3addERKc.exit56: ; preds = %bb2.i54, %bb1.i51
%63 = add nsw i32 %s.2.1, 1 ; <i32> [#uses=1]
br label %bb12
bb12: ; preds = %_ZN6vectorIcE3addERKc.exit56, %_ZN6vectorIcE3addERKc.exit75, %bb7, %entry
%s.2.1 = phi i32 [ 0, %entry ], [ %46, %_ZN6vectorIcE3addERKc.exit75 ], [ %63, %_ZN6vectorIcE3addERKc.exit56 ], [ %s.2.0, %bb7 ] ; <i32> [#uses=14]
%s.1.3 = phi i32 [ 0, %entry ], [ %s.1.5, %_ZN6vectorIcE3addERKc.exit75 ], [ %s.1.7, %_ZN6vectorIcE3addERKc.exit56 ], [ %s.1.2, %bb7 ] ; <i32> [#uses=26]
%s.0.2 = phi i8* [ null, %entry ], [ %s.0.4, %_ZN6vectorIcE3addERKc.exit75 ], [ %s.0.5, %_ZN6vectorIcE3addERKc.exit56 ], [ %s.0.1, %bb7 ] ; <i8*> [#uses=22]
%f.0 = phi i8* [ %0, %entry ], [ %5, %_ZN6vectorIcE3addERKc.exit75 ], [ %1, %_ZN6vectorIcE3addERKc.exit56 ], [ %5, %bb7 ] ; <i8*> [#uses=3]
%64 = load i8* %f.0, align 1 ; <i8> [#uses=3]
%65 = icmp eq i8 %64, 0 ; <i1> [#uses=1]
br i1 %65, label %bb13, label %bb
bb13: ; preds = %bb12
%66 = icmp eq i32 %s.2.1, %s.1.3 ; <i1> [#uses=1]
br i1 %66, label %bb.i, label %bb1.i37
bb.i: ; preds = %bb13
%67 = add nsw i32 %s.2.1, 1 ; <i32> [#uses=4]
%68 = icmp eq i32 %s.1.3, 0 ; <i1> [#uses=1]
br i1 %68, label %bb.i.i, label %bb2.preheader.i.i
bb2.preheader.i.i: ; preds = %bb.i
%69 = icmp slt i32 %s.1.3, %67 ; <i1> [#uses=1]
br i1 %69, label %bb1.i.i, label %bb1.i37
bb.i.i: ; preds = %bb.i
%70 = icmp slt i32 %67, 8 ; <i1> [#uses=1]
%iftmp.215.0.i.i.i = select i1 %70, i32 8, i32 %67 ; <i32> [#uses=1]
br label %bb3.i.i
bb1.i.i: ; preds = %bb1.i.i, %bb2.preheader.i.i
%.tmp.0.i.i = phi i32 [ %71, %bb1.i.i ], [ %s.1.3, %bb2.preheader.i.i ] ; <i32> [#uses=1]
%71 = shl i32 %.tmp.0.i.i, 1 ; <i32> [#uses=3]
%72 = icmp slt i32 %71, %67 ; <i1> [#uses=1]
br i1 %72, label %bb1.i.i, label %bb3.i.i
bb3.i.i: ; preds = %bb1.i.i, %bb.i.i
%73 = phi i32 [ %iftmp.215.0.i.i.i, %bb.i.i ], [ %71, %bb1.i.i ] ; <i32> [#uses=2]
%74 = icmp sgt i32 %73, %s.1.3 ; <i1> [#uses=1]
br i1 %74, label %bb4.i.i, label %bb1.i37
bb4.i.i: ; preds = %bb3.i.i
%75 = sext i32 %73 to i64 ; <i64> [#uses=1]
%76 = invoke i8* @_Znam(i64 %75)
to label %.noexc unwind label %lpad ; <i8*> [#uses=4]
.noexc: ; preds = %bb4.i.i
%77 = icmp sgt i32 %s.1.3, 0 ; <i1> [#uses=1]
br i1 %77, label %bb5.i.i, label %bb1.i37
bb5.i.i: ; preds = %.noexc
%78 = sext i32 %s.1.3 to i64 ; <i64> [#uses=1]
tail call void @llvm.memcpy.i64(i8* %76, i8* %s.0.2, i64 %78, i32 1)
%79 = icmp eq i8* %s.0.2, null ; <i1> [#uses=1]
br i1 %79, label %bb1.i37, label %bb6.i.i
bb6.i.i: ; preds = %bb5.i.i
tail call void @_ZdaPv(i8* %s.0.2) nounwind
br label %bb1.i37
bb1.i37: ; preds = %bb6.i.i, %bb5.i.i, %.noexc, %bb3.i.i, %bb2.preheader.i.i, %bb13
%s.0.6 = phi i8* [ %s.0.2, %bb3.i.i ], [ %s.0.2, %bb2.preheader.i.i ], [ %s.0.2, %bb13 ], [ %76, %bb6.i.i ], [ %76, %bb5.i.i ], [ %76, %.noexc ] ; <i8*> [#uses=6]
%80 = sext i32 %s.2.1 to i64 ; <i64> [#uses=1]
%81 = getelementptr inbounds i8* %s.0.6, i64 %80 ; <i8*> [#uses=2]
%82 = icmp eq i8* %81, null ; <i1> [#uses=1]
br i1 %82, label %invcont14, label %bb2.i
bb2.i: ; preds = %bb1.i37
store i8 0, i8* %81, align 1
br label %invcont14
invcont14: ; preds = %bb2.i, %bb1.i37
%83 = tail call i64 @strlen(i8* %s.0.6) nounwind readonly ; <i64> [#uses=2]
%84 = add i64 %83, 1 ; <i64> [#uses=2]
%85 = invoke i8* @_Znam(i64 %84)
to label %bb19 unwind label %lpad ; <i8*> [#uses=3]
invcont17: ; preds = %bb1.i, %lpad
tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
unreachable
bb19: ; preds = %invcont14
%86 = tail call i8* @strncpy(i8* noalias %85, i8* noalias %s.0.6, i64 %84) nounwind ; <i8*> [#uses=0]
%87 = getelementptr inbounds i8* %85, i64 %83 ; <i8*> [#uses=1]
store i8 0, i8* %87, align 1
store i8* %85, i8** @commandret, align 8
%88 = icmp eq i8* %s.0.6, null ; <i1> [#uses=1]
br i1 %88, label %_ZN6vectorIcED1Ev.exit36, label %bb1.i34
bb1.i34: ; preds = %bb19
tail call void @_ZdaPv(i8* %s.0.6) nounwind
ret void
_ZN6vectorIcED1Ev.exit36: ; preds = %bb19
ret void
lpad: ; preds = %invcont14, %bb4.i.i, %bb4.i.i46, %bb4.i.i65, %bb4.i.i84
%s.0.3 = phi i8* [ %s.0.6, %invcont14 ], [ %s.0.2, %bb4.i.i ], [ %s.0.1, %bb4.i.i84 ], [ %s.0.2, %bb4.i.i46 ], [ %s.0.2, %bb4.i.i65 ] ; <i8*> [#uses=2]
%eh_ptr = tail call i8* @llvm.eh.exception() ; <i8*> [#uses=2]
%eh_select21 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i8* null) ; <i32> [#uses=0]
%89 = icmp eq i8* %s.0.3, null ; <i1> [#uses=1]
br i1 %89, label %invcont17, label %bb1.i
bb1.i: ; preds = %lpad
tail call void @_ZdaPv(i8* %s.0.3) nounwind
br label %invcont17
}
define void @_ZN7_stdcmdILi1191EE3runEPcS1_(i8* nocapture %a, i8* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = call i32 @strcmp(i8* %a, i8* %b) nounwind readonly ; <i32> [#uses=1]
%.lobit = lshr i32 %1, 31 ; <i32> [#uses=1]
%.lobit.not = xor i32 %.lobit, 1 ; <i32> [#uses=1]
%2 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%3 = add nsw i32 %2, 1 ; <i32> [#uses=1]
%4 = srem i32 %3, 3 ; <i32> [#uses=2]
store i32 %4, i32* @_ZL6retidx, align 4
%5 = sext i32 %4 to i64 ; <i64> [#uses=1]
%6 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %5, i64 0 ; <i8*> [#uses=1]
%7 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %6, i8** %7, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %.lobit.not) nounwind
%8 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%9 = sext i32 %8 to i64 ; <i64> [#uses=1]
%10 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %9, i64 0 ; <i8*> [#uses=2]
%11 = call i64 @strlen(i8* %10) nounwind readonly ; <i64> [#uses=2]
%12 = add i64 %11, 1 ; <i64> [#uses=2]
%13 = call i8* @_Znam(i64 %12) ; <i8*> [#uses=3]
%14 = call i8* @strncpy(i8* noalias %13, i8* noalias %10, i64 %12) nounwind ; <i8*> [#uses=0]
%15 = getelementptr inbounds i8* %13, i64 %11 ; <i8*> [#uses=1]
store i8 0, i8* %15, align 1
store i8* %13, i8** @commandret, align 8
ret void
}
declare i32 @strcmp(i8* nocapture, i8* nocapture) nounwind readonly
define void @_ZN7_stdcmdILi1190EE3runEPcS1_(i8* nocapture %a, i8* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = call i32 @strcmp(i8* %a, i8* %b) nounwind readonly ; <i32> [#uses=1]
%2 = icmp slt i32 %1, 1 ; <i1> [#uses=1]
%3 = zext i1 %2 to i32 ; <i32> [#uses=1]
%4 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%5 = add nsw i32 %4, 1 ; <i32> [#uses=1]
%6 = srem i32 %5, 3 ; <i32> [#uses=2]
store i32 %6, i32* @_ZL6retidx, align 4
%7 = sext i32 %6 to i64 ; <i64> [#uses=1]
%8 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %7, i64 0 ; <i8*> [#uses=1]
%9 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %8, i8** %9, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %3) nounwind
%10 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%11 = sext i32 %10 to i64 ; <i64> [#uses=1]
%12 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %11, i64 0 ; <i8*> [#uses=2]
%13 = call i64 @strlen(i8* %12) nounwind readonly ; <i64> [#uses=2]
%14 = add i64 %13, 1 ; <i64> [#uses=2]
%15 = call i8* @_Znam(i64 %14) ; <i8*> [#uses=3]
%16 = call i8* @strncpy(i8* noalias %15, i8* noalias %12, i64 %14) nounwind ; <i8*> [#uses=0]
%17 = getelementptr inbounds i8* %15, i64 %13 ; <i8*> [#uses=1]
store i8 0, i8* %17, align 1
store i8* %15, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1189EE3runEPcS1_(i8* nocapture %a, i8* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = call i32 @strcmp(i8* %a, i8* %b) nounwind readonly ; <i32> [#uses=1]
%2 = icmp sgt i32 %1, 0 ; <i1> [#uses=1]
%3 = zext i1 %2 to i32 ; <i32> [#uses=1]
%4 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%5 = add nsw i32 %4, 1 ; <i32> [#uses=1]
%6 = srem i32 %5, 3 ; <i32> [#uses=2]
store i32 %6, i32* @_ZL6retidx, align 4
%7 = sext i32 %6 to i64 ; <i64> [#uses=1]
%8 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %7, i64 0 ; <i8*> [#uses=1]
%9 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %8, i8** %9, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %3) nounwind
%10 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%11 = sext i32 %10 to i64 ; <i64> [#uses=1]
%12 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %11, i64 0 ; <i8*> [#uses=2]
%13 = call i64 @strlen(i8* %12) nounwind readonly ; <i64> [#uses=2]
%14 = add i64 %13, 1 ; <i64> [#uses=2]
%15 = call i8* @_Znam(i64 %14) ; <i8*> [#uses=3]
%16 = call i8* @strncpy(i8* noalias %15, i8* noalias %12, i64 %14) nounwind ; <i8*> [#uses=0]
%17 = getelementptr inbounds i8* %15, i64 %13 ; <i8*> [#uses=1]
store i8 0, i8* %17, align 1
store i8* %15, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1188EE3runEPcS1_(i8* nocapture %a, i8* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = call i32 @strcmp(i8* %a, i8* %b) nounwind readonly ; <i32> [#uses=1]
%.lobit = lshr i32 %1, 31 ; <i32> [#uses=1]
%2 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%3 = add nsw i32 %2, 1 ; <i32> [#uses=1]
%4 = srem i32 %3, 3 ; <i32> [#uses=2]
store i32 %4, i32* @_ZL6retidx, align 4
%5 = sext i32 %4 to i64 ; <i64> [#uses=1]
%6 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %5, i64 0 ; <i8*> [#uses=1]
%7 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %6, i8** %7, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %.lobit) nounwind
%8 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%9 = sext i32 %8 to i64 ; <i64> [#uses=1]
%10 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %9, i64 0 ; <i8*> [#uses=2]
%11 = call i64 @strlen(i8* %10) nounwind readonly ; <i64> [#uses=2]
%12 = add i64 %11, 1 ; <i64> [#uses=2]
%13 = call i8* @_Znam(i64 %12) ; <i8*> [#uses=3]
%14 = call i8* @strncpy(i8* noalias %13, i8* noalias %10, i64 %12) nounwind ; <i8*> [#uses=0]
%15 = getelementptr inbounds i8* %13, i64 %11 ; <i8*> [#uses=1]
store i8 0, i8* %15, align 1
store i8* %13, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1187EE3runEPcS1_(i8* nocapture %a, i8* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = call i32 @strcmp(i8* %a, i8* %b) nounwind readonly ; <i32> [#uses=1]
%2 = icmp ne i32 %1, 0 ; <i1> [#uses=1]
%3 = zext i1 %2 to i32 ; <i32> [#uses=1]
%4 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%5 = add nsw i32 %4, 1 ; <i32> [#uses=1]
%6 = srem i32 %5, 3 ; <i32> [#uses=2]
store i32 %6, i32* @_ZL6retidx, align 4
%7 = sext i32 %6 to i64 ; <i64> [#uses=1]
%8 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %7, i64 0 ; <i8*> [#uses=1]
%9 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %8, i8** %9, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %3) nounwind
%10 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%11 = sext i32 %10 to i64 ; <i64> [#uses=1]
%12 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %11, i64 0 ; <i8*> [#uses=2]
%13 = call i64 @strlen(i8* %12) nounwind readonly ; <i64> [#uses=2]
%14 = add i64 %13, 1 ; <i64> [#uses=2]
%15 = call i8* @_Znam(i64 %14) ; <i8*> [#uses=3]
%16 = call i8* @strncpy(i8* noalias %15, i8* noalias %12, i64 %14) nounwind ; <i8*> [#uses=0]
%17 = getelementptr inbounds i8* %15, i64 %13 ; <i8*> [#uses=1]
store i8 0, i8* %17, align 1
store i8* %15, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1186EE3runEPcS1_(i8* nocapture %a, i8* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = call i32 @strcmp(i8* %a, i8* %b) nounwind readonly ; <i32> [#uses=1]
%2 = icmp eq i32 %1, 0 ; <i1> [#uses=1]
%3 = zext i1 %2 to i32 ; <i32> [#uses=1]
%4 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%5 = add nsw i32 %4, 1 ; <i32> [#uses=1]
%6 = srem i32 %5, 3 ; <i32> [#uses=2]
store i32 %6, i32* @_ZL6retidx, align 4
%7 = sext i32 %6 to i64 ; <i64> [#uses=1]
%8 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %7, i64 0 ; <i8*> [#uses=1]
%9 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %8, i8** %9, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %3) nounwind
%10 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%11 = sext i32 %10 to i64 ; <i64> [#uses=1]
%12 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %11, i64 0 ; <i8*> [#uses=2]
%13 = call i64 @strlen(i8* %12) nounwind readonly ; <i64> [#uses=2]
%14 = add i64 %13, 1 ; <i64> [#uses=2]
%15 = call i8* @_Znam(i64 %14) ; <i8*> [#uses=3]
%16 = call i8* @strncpy(i8* noalias %15, i8* noalias %12, i64 %14) nounwind ; <i8*> [#uses=0]
%17 = getelementptr inbounds i8* %15, i64 %13 ; <i8*> [#uses=1]
store i8 0, i8* %17, align 1
store i8* %15, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1185EE3runEPcS1_(i8* nocapture %a, i8* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = call i32 @strcmp(i8* %a, i8* %b) nounwind readonly ; <i32> [#uses=1]
%2 = icmp eq i32 %1, 0 ; <i1> [#uses=1]
%3 = zext i1 %2 to i32 ; <i32> [#uses=1]
%4 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%5 = add nsw i32 %4, 1 ; <i32> [#uses=1]
%6 = srem i32 %5, 3 ; <i32> [#uses=2]
store i32 %6, i32* @_ZL6retidx, align 4
%7 = sext i32 %6 to i64 ; <i64> [#uses=1]
%8 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %7, i64 0 ; <i8*> [#uses=1]
%9 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %8, i8** %9, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %3) nounwind
%10 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%11 = sext i32 %10 to i64 ; <i64> [#uses=1]
%12 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %11, i64 0 ; <i8*> [#uses=2]
%13 = call i64 @strlen(i8* %12) nounwind readonly ; <i64> [#uses=2]
%14 = add i64 %13, 1 ; <i64> [#uses=2]
%15 = call i8* @_Znam(i64 %14) ; <i8*> [#uses=3]
%16 = call i8* @strncpy(i8* noalias %15, i8* noalias %12, i64 %14) nounwind ; <i8*> [#uses=0]
%17 = getelementptr inbounds i8* %15, i64 %13 ; <i8*> [#uses=1]
store i8 0, i8* %17, align 1
store i8* %15, i8** @commandret, align 8
ret void
}
define i8* @_Z6lookupPc(i8* %n) {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%2 = getelementptr inbounds i8* %n, i64 1 ; <i8*> [#uses=3]
%3 = load %"struct.hashtable<const char*,ident>"** @idents, align 8 ; <%"struct.hashtable<const char*,ident>"*> [#uses=2]
%4 = load i8* %2, align 1 ; <i8> [#uses=2]
%5 = icmp eq i8 %4, 0 ; <i1> [#uses=1]
br i1 %5, label %_ZL6hthashPKc.exit.i, label %bb.i.i
bb.i.i: ; preds = %bb.i.i, %entry
%indvar.i.i = phi i64 [ %tmp.i, %bb.i.i ], [ 0, %entry ] ; <i64> [#uses=2]
%6 = phi i8 [ %10, %bb.i.i ], [ %4, %entry ] ; <i8> [#uses=1]
%h.04.i.i = phi i32 [ %9, %bb.i.i ], [ 5381, %entry ] ; <i32> [#uses=1]
%tmp = add i64 %indvar.i.i, 2 ; <i64> [#uses=1]
%scevgep.i.i = getelementptr i8* %n, i64 %tmp ; <i8*> [#uses=1]
%tmp.i = add i64 %indvar.i.i, 1 ; <i64> [#uses=1]
%7 = sext i8 %6 to i32 ; <i32> [#uses=1]
%8 = mul i32 %h.04.i.i, 33 ; <i32> [#uses=1]
%9 = xor i32 %8, %7 ; <i32> [#uses=2]
%10 = load i8* %scevgep.i.i, align 1 ; <i8> [#uses=2]
%11 = icmp eq i8 %10, 0 ; <i1> [#uses=1]
br i1 %11, label %_ZL6hthashPKc.exit.i, label %bb.i.i
_ZL6hthashPKc.exit.i: ; preds = %bb.i.i, %entry
%h.0.lcssa.i.i = phi i32 [ 5381, %entry ], [ %9, %bb.i.i ] ; <i32> [#uses=1]
%12 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %3, i64 0, i32 0, i32 0 ; <i32*> [#uses=1]
%13 = load i32* %12, align 8 ; <i32> [#uses=1]
%14 = add nsw i32 %13, -1 ; <i32> [#uses=1]
%15 = and i32 %14, %h.0.lcssa.i.i ; <i32> [#uses=1]
%16 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %3, i64 0, i32 0, i32 2 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"***> [#uses=1]
%17 = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** %16, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%18 = zext i32 %15 to i64 ; <i64> [#uses=1]
%19 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %17, i64 %18 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i
bb.i: ; preds = %bb3.i
%.idx.i = getelementptr %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 0 ; <i8**> [#uses=1]
%.idx.val.i = load i8** %.idx.i ; <i8*> [#uses=1]
%20 = call i32 @strcmp(i8* %2, i8* %.idx.val.i) nounwind readonly ; <i32> [#uses=1]
%21 = icmp eq i32 %20, 0 ; <i1> [#uses=1]
br i1 %21, label %_ZN9hashtableIPKc5identE6accessERKS1_.exit, label %bb2.i
bb2.i: ; preds = %bb.i
%22 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 1 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i
bb3.i: ; preds = %bb2.i, %_ZL6hthashPKc.exit.i
%c.0.in.i = phi %"struct.hashset<hashtableentry<const char*, ident> >::chain"** [ %19, %_ZL6hthashPKc.exit.i ], [ %22, %bb2.i ] ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%c.0.i = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %c.0.in.i, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"*> [#uses=9]
%23 = icmp eq %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, null ; <i1> [#uses=1]
br i1 %23, label %bb5, label %bb.i
_ZN9hashtableIPKc5identE6accessERKS1_.exit: ; preds = %bb.i
%24 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1 ; <%struct.ident*> [#uses=1]
%25 = icmp eq %struct.ident* %24, null ; <i1> [#uses=1]
br i1 %25, label %bb5, label %bb
bb: ; preds = %_ZN9hashtableIPKc5identE6accessERKS1_.exit
%26 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 1 ; <i32*> [#uses=1]
%27 = load i32* %26, align 8 ; <i32> [#uses=1]
switch i32 %27, label %bb5 [
i32 0, label %bb1
i32 1, label %bb2
i32 2, label %bb3
i32 5, label %bb4
]
bb1: ; preds = %bb
%28 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 9, i32 0 ; <i32**> [#uses=1]
%29 = load i32** %28, align 8 ; <i32*> [#uses=1]
%30 = load i32* %29, align 4 ; <i32> [#uses=1]
%31 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%32 = add nsw i32 %31, 1 ; <i32> [#uses=1]
%33 = srem i32 %32, 3 ; <i32> [#uses=2]
store i32 %33, i32* @_ZL6retidx, align 4
%34 = sext i32 %33 to i64 ; <i64> [#uses=1]
%35 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %34, i64 0 ; <i8*> [#uses=1]
%36 = getelementptr inbounds %struct.stringformatter* %1, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %35, i8** %36, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %1, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %30) nounwind
%37 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%38 = sext i32 %37 to i64 ; <i64> [#uses=1]
%39 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %38, i64 0 ; <i8*> [#uses=2]
%40 = icmp eq i8* %n, null ; <i1> [#uses=1]
br i1 %40, label %_Z11exchangestrPcPKc.exit18, label %bb.i16
bb.i16: ; preds = %bb1
call void @_ZdaPv(i8* %n) nounwind
br label %_Z11exchangestrPcPKc.exit18
_Z11exchangestrPcPKc.exit18: ; preds = %bb.i16, %bb1
%41 = call i64 @strlen(i8* %39) nounwind readonly ; <i64> [#uses=2]
%42 = add i64 %41, 1 ; <i64> [#uses=2]
%43 = call i8* @_Znam(i64 %42) ; <i8*> [#uses=3]
%44 = call i8* @strncpy(i8* noalias %43, i8* noalias %39, i64 %42) nounwind ; <i8*> [#uses=0]
%45 = getelementptr inbounds i8* %43, i64 %41 ; <i8*> [#uses=1]
store i8 0, i8* %45, align 1
ret i8* %43
bb2: ; preds = %bb
%46 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 9, i32 0 ; <i32**> [#uses=1]
%47 = load i32** %46, align 8 ; <i32*> [#uses=1]
%48 = bitcast i32* %47 to float* ; <float*> [#uses=1]
%49 = load float* %48, align 4 ; <float> [#uses=3]
%50 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%51 = add nsw i32 %50, 1 ; <i32> [#uses=1]
%52 = srem i32 %51, 3 ; <i32> [#uses=2]
store i32 %52, i32* @_ZL6retidx, align 4
%53 = fpext float %49 to double ; <double> [#uses=1]
%54 = fptosi float %49 to i32 ; <i32> [#uses=1]
%55 = sitofp i32 %54 to float ; <float> [#uses=1]
%56 = fcmp oeq float %55, %49 ; <i1> [#uses=1]
%iftmp.145.0.i = select i1 %56, [5 x i8]* @.str, [5 x i8]* @.str1 ; <[5 x i8]*> [#uses=1]
%57 = getelementptr inbounds [5 x i8]* %iftmp.145.0.i, i64 0, i64 0 ; <i8*> [#uses=1]
%58 = sext i32 %52 to i64 ; <i64> [#uses=1]
%59 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %58, i64 0 ; <i8*> [#uses=1]
%60 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %59, i8** %60, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* %57, double %53) nounwind
%61 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%62 = sext i32 %61 to i64 ; <i64> [#uses=1]
%63 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %62, i64 0 ; <i8*> [#uses=2]
%64 = icmp eq i8* %n, null ; <i1> [#uses=1]
br i1 %64, label %_Z11exchangestrPcPKc.exit15, label %bb.i13
bb.i13: ; preds = %bb2
call void @_ZdaPv(i8* %n) nounwind
br label %_Z11exchangestrPcPKc.exit15
_Z11exchangestrPcPKc.exit15: ; preds = %bb.i13, %bb2
%65 = call i64 @strlen(i8* %63) nounwind readonly ; <i64> [#uses=2]
%66 = add i64 %65, 1 ; <i64> [#uses=2]
%67 = call i8* @_Znam(i64 %66) ; <i8*> [#uses=3]
%68 = call i8* @strncpy(i8* noalias %67, i8* noalias %63, i64 %66) nounwind ; <i8*> [#uses=0]
%69 = getelementptr inbounds i8* %67, i64 %65 ; <i8*> [#uses=1]
store i8 0, i8* %69, align 1
ret i8* %67
bb3: ; preds = %bb
%70 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 9, i32 0 ; <i32**> [#uses=1]
%71 = load i32** %70, align 8 ; <i32*> [#uses=1]
%72 = bitcast i32* %71 to i8** ; <i8**> [#uses=1]
%73 = load i8** %72, align 8 ; <i8*> [#uses=2]
%74 = icmp eq i8* %n, null ; <i1> [#uses=1]
br i1 %74, label %_Z11exchangestrPcPKc.exit12, label %bb.i10
bb.i10: ; preds = %bb3
call void @_ZdaPv(i8* %n) nounwind
br label %_Z11exchangestrPcPKc.exit12
_Z11exchangestrPcPKc.exit12: ; preds = %bb.i10, %bb3
%75 = call i64 @strlen(i8* %73) nounwind readonly ; <i64> [#uses=2]
%76 = add i64 %75, 1 ; <i64> [#uses=2]
%77 = call i8* @_Znam(i64 %76) ; <i8*> [#uses=3]
%78 = call i8* @strncpy(i8* noalias %77, i8* noalias %73, i64 %76) nounwind ; <i8*> [#uses=0]
%79 = getelementptr inbounds i8* %77, i64 %75 ; <i8*> [#uses=1]
store i8 0, i8* %79, align 1
ret i8* %77
bb4: ; preds = %bb
%80 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 7, i32 0 ; <i8**> [#uses=1]
%81 = load i8** %80, align 8 ; <i8*> [#uses=2]
%82 = icmp eq i8* %n, null ; <i1> [#uses=1]
br i1 %82, label %_Z11exchangestrPcPKc.exit, label %bb.i8
bb.i8: ; preds = %bb4
call void @_ZdaPv(i8* %n) nounwind
br label %_Z11exchangestrPcPKc.exit
_Z11exchangestrPcPKc.exit: ; preds = %bb.i8, %bb4
%83 = call i64 @strlen(i8* %81) nounwind readonly ; <i64> [#uses=2]
%84 = add i64 %83, 1 ; <i64> [#uses=2]
%85 = call i8* @_Znam(i64 %84) ; <i8*> [#uses=3]
%86 = call i8* @strncpy(i8* noalias %85, i8* noalias %81, i64 %84) nounwind ; <i8*> [#uses=0]
%87 = getelementptr inbounds i8* %85, i64 %83 ; <i8*> [#uses=1]
store i8 0, i8* %87, align 1
ret i8* %85
bb5: ; preds = %bb, %_ZN9hashtableIPKc5identE6accessERKS1_.exit, %bb3.i
call void (i32, i8*, ...)* @_Z7conoutfiPKcz(i32 4, i8* getelementptr inbounds ([25 x i8]* @.str11, i64 0, i64 0), i8* %2)
ret i8* %n
}
define i8* @_Z8getaliasPKc(i8* %name) nounwind readonly {
entry:
%0 = load %"struct.hashtable<const char*,ident>"** @idents, align 8 ; <%"struct.hashtable<const char*,ident>"*> [#uses=2]
%1 = load i8* %name, align 1 ; <i8> [#uses=2]
%2 = icmp eq i8 %1, 0 ; <i1> [#uses=1]
br i1 %2, label %_ZL6hthashPKc.exit.i, label %bb.i.i
bb.i.i: ; preds = %bb.i.i, %entry
%indvar.i.i = phi i64 [ %tmp, %bb.i.i ], [ 0, %entry ] ; <i64> [#uses=1]
%3 = phi i8 [ %7, %bb.i.i ], [ %1, %entry ] ; <i8> [#uses=1]
%h.04.i.i = phi i32 [ %6, %bb.i.i ], [ 5381, %entry ] ; <i32> [#uses=1]
%tmp = add i64 %indvar.i.i, 1 ; <i64> [#uses=2]
%scevgep.i.i = getelementptr i8* %name, i64 %tmp ; <i8*> [#uses=1]
%4 = sext i8 %3 to i32 ; <i32> [#uses=1]
%5 = mul i32 %h.04.i.i, 33 ; <i32> [#uses=1]
%6 = xor i32 %5, %4 ; <i32> [#uses=2]
%7 = load i8* %scevgep.i.i, align 1 ; <i8> [#uses=2]
%8 = icmp eq i8 %7, 0 ; <i1> [#uses=1]
br i1 %8, label %_ZL6hthashPKc.exit.i, label %bb.i.i
_ZL6hthashPKc.exit.i: ; preds = %bb.i.i, %entry
%h.0.lcssa.i.i = phi i32 [ 5381, %entry ], [ %6, %bb.i.i ] ; <i32> [#uses=1]
%9 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %0, i64 0, i32 0, i32 0 ; <i32*> [#uses=1]
%10 = load i32* %9, align 8 ; <i32> [#uses=1]
%11 = add nsw i32 %10, -1 ; <i32> [#uses=1]
%12 = and i32 %11, %h.0.lcssa.i.i ; <i32> [#uses=1]
%13 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %0, i64 0, i32 0, i32 2 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"***> [#uses=1]
%14 = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** %13, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%15 = zext i32 %12 to i64 ; <i64> [#uses=1]
%16 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %14, i64 %15 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i
bb.i: ; preds = %bb3.i
%.idx.i = getelementptr %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 0 ; <i8**> [#uses=1]
%.idx.val.i = load i8** %.idx.i ; <i8*> [#uses=1]
%17 = tail call i32 @strcmp(i8* %name, i8* %.idx.val.i) nounwind readonly ; <i32> [#uses=1]
%18 = icmp eq i32 %17, 0 ; <i1> [#uses=1]
br i1 %18, label %_ZN9hashtableIPKc5identE6accessERKS1_.exit, label %bb2.i
bb2.i: ; preds = %bb.i
%19 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 1 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i
bb3.i: ; preds = %bb2.i, %_ZL6hthashPKc.exit.i
%c.0.in.i = phi %"struct.hashset<hashtableentry<const char*, ident> >::chain"** [ %16, %_ZL6hthashPKc.exit.i ], [ %19, %bb2.i ] ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%c.0.i = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %c.0.in.i, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"*> [#uses=6]
%20 = icmp eq %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, null ; <i1> [#uses=1]
br i1 %20, label %bb3, label %bb.i
_ZN9hashtableIPKc5identE6accessERKS1_.exit: ; preds = %bb.i
%21 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1 ; <%struct.ident*> [#uses=1]
%22 = icmp eq %struct.ident* %21, null ; <i1> [#uses=1]
br i1 %22, label %bb3, label %bb
bb: ; preds = %_ZN9hashtableIPKc5identE6accessERKS1_.exit
%23 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 1 ; <i32*> [#uses=1]
%24 = load i32* %23, align 8 ; <i32> [#uses=1]
%25 = icmp eq i32 %24, 5 ; <i1> [#uses=1]
br i1 %25, label %bb1, label %bb3
bb1: ; preds = %bb
%26 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 7, i32 0 ; <i8**> [#uses=1]
%27 = load i8** %26, align 8 ; <i8*> [#uses=1]
ret i8* %27
bb3: ; preds = %bb, %_ZN9hashtableIPKc5identE6accessERKS1_.exit, %bb3.i
ret i8* getelementptr inbounds ([1 x i8]* @.str3, i64 0, i64 0)
}
define void @_Z9getalias_Pc(i8* nocapture %s) {
entry:
%0 = load %"struct.hashtable<const char*,ident>"** @idents, align 8 ; <%"struct.hashtable<const char*,ident>"*> [#uses=2]
%1 = load i8* %s, align 1 ; <i8> [#uses=2]
%2 = icmp eq i8 %1, 0 ; <i1> [#uses=1]
br i1 %2, label %_ZL6hthashPKc.exit.i.i, label %bb.i.i.i
bb.i.i.i: ; preds = %bb.i.i.i, %entry
%indvar.i.i.i = phi i64 [ %tmp, %bb.i.i.i ], [ 0, %entry ] ; <i64> [#uses=1]
%3 = phi i8 [ %7, %bb.i.i.i ], [ %1, %entry ] ; <i8> [#uses=1]
%h.04.i.i.i = phi i32 [ %6, %bb.i.i.i ], [ 5381, %entry ] ; <i32> [#uses=1]
%tmp = add i64 %indvar.i.i.i, 1 ; <i64> [#uses=2]
%scevgep.i.i.i = getelementptr i8* %s, i64 %tmp ; <i8*> [#uses=1]
%4 = sext i8 %3 to i32 ; <i32> [#uses=1]
%5 = mul i32 %h.04.i.i.i, 33 ; <i32> [#uses=1]
%6 = xor i32 %5, %4 ; <i32> [#uses=2]
%7 = load i8* %scevgep.i.i.i, align 1 ; <i8> [#uses=2]
%8 = icmp eq i8 %7, 0 ; <i1> [#uses=1]
br i1 %8, label %_ZL6hthashPKc.exit.i.i, label %bb.i.i.i
_ZL6hthashPKc.exit.i.i: ; preds = %bb.i.i.i, %entry
%h.0.lcssa.i.i.i = phi i32 [ 5381, %entry ], [ %6, %bb.i.i.i ] ; <i32> [#uses=1]
%9 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %0, i64 0, i32 0, i32 0 ; <i32*> [#uses=1]
%10 = load i32* %9, align 8 ; <i32> [#uses=1]
%11 = add nsw i32 %10, -1 ; <i32> [#uses=1]
%12 = and i32 %11, %h.0.lcssa.i.i.i ; <i32> [#uses=1]
%13 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %0, i64 0, i32 0, i32 2 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"***> [#uses=1]
%14 = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** %13, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%15 = zext i32 %12 to i64 ; <i64> [#uses=1]
%16 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %14, i64 %15 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i.i
bb.i.i: ; preds = %bb3.i.i
%.idx.i.i = getelementptr %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i.i, i64 0, i32 0, i32 0 ; <i8**> [#uses=1]
%.idx.val.i.i = load i8** %.idx.i.i ; <i8*> [#uses=1]
%17 = tail call i32 @strcmp(i8* %s, i8* %.idx.val.i.i) nounwind readonly ; <i32> [#uses=1]
%18 = icmp eq i32 %17, 0 ; <i1> [#uses=1]
br i1 %18, label %_ZN9hashtableIPKc5identE6accessERKS1_.exit.i, label %bb2.i.i
bb2.i.i: ; preds = %bb.i.i
%19 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i.i, i64 0, i32 1 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i.i
bb3.i.i: ; preds = %bb2.i.i, %_ZL6hthashPKc.exit.i.i
%c.0.in.i.i = phi %"struct.hashset<hashtableentry<const char*, ident> >::chain"** [ %16, %_ZL6hthashPKc.exit.i.i ], [ %19, %bb2.i.i ] ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%c.0.i.i = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %c.0.in.i.i, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"*> [#uses=6]
%20 = icmp eq %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i.i, null ; <i1> [#uses=1]
br i1 %20, label %_Z8getaliasPKc.exit, label %bb.i.i
_ZN9hashtableIPKc5identE6accessERKS1_.exit.i: ; preds = %bb.i.i
%21 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i.i, i64 0, i32 0, i32 1 ; <%struct.ident*> [#uses=1]
%22 = icmp eq %struct.ident* %21, null ; <i1> [#uses=1]
br i1 %22, label %_Z8getaliasPKc.exit, label %bb.i
bb.i: ; preds = %_ZN9hashtableIPKc5identE6accessERKS1_.exit.i
%23 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i.i, i64 0, i32 0, i32 1, i32 1 ; <i32*> [#uses=1]
%24 = load i32* %23, align 8 ; <i32> [#uses=1]
%25 = icmp eq i32 %24, 5 ; <i1> [#uses=1]
br i1 %25, label %bb1.i, label %_Z8getaliasPKc.exit
bb1.i: ; preds = %bb.i
%26 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i.i, i64 0, i32 0, i32 1, i32 7, i32 0 ; <i8**> [#uses=1]
%27 = load i8** %26, align 8 ; <i8*> [#uses=1]
br label %_Z8getaliasPKc.exit
_Z8getaliasPKc.exit: ; preds = %bb1.i, %bb.i, %_ZN9hashtableIPKc5identE6accessERKS1_.exit.i, %bb3.i.i
%28 = phi i8* [ %27, %bb1.i ], [ getelementptr inbounds ([1 x i8]* @.str3, i64 0, i64 0), %bb.i ], [ getelementptr inbounds ([1 x i8]* @.str3, i64 0, i64 0), %_ZN9hashtableIPKc5identE6accessERKS1_.exit.i ], [ getelementptr inbounds ([1 x i8]* @.str3, i64 0, i64 0), %bb3.i.i ] ; <i8*> [#uses=2]
%29 = tail call i64 @strlen(i8* %28) nounwind readonly ; <i64> [#uses=2]
%30 = add i64 %29, 1 ; <i64> [#uses=2]
%31 = tail call i8* @_Znam(i64 %30) ; <i8*> [#uses=3]
%32 = tail call i8* @strncpy(i8* noalias %31, i8* noalias %28, i64 %30) nounwind ; <i8*> [#uses=0]
%33 = getelementptr inbounds i8* %31, i64 %29 ; <i8*> [#uses=1]
store i8 0, i8* %33, align 1
store i8* %31, i8** @commandret, align 8
ret void
}
define void @_Z8touchvarPKc(i8* %name) {
entry:
%0 = load %"struct.hashtable<const char*,ident>"** @idents, align 8 ; <%"struct.hashtable<const char*,ident>"*> [#uses=2]
%1 = load i8* %name, align 1 ; <i8> [#uses=2]
%2 = icmp eq i8 %1, 0 ; <i1> [#uses=1]
br i1 %2, label %_ZL6hthashPKc.exit.i, label %bb.i.i
bb.i.i: ; preds = %bb.i.i, %entry
%indvar.i.i = phi i64 [ %tmp, %bb.i.i ], [ 0, %entry ] ; <i64> [#uses=1]
%3 = phi i8 [ %7, %bb.i.i ], [ %1, %entry ] ; <i8> [#uses=1]
%h.04.i.i = phi i32 [ %6, %bb.i.i ], [ 5381, %entry ] ; <i32> [#uses=1]
%tmp = add i64 %indvar.i.i, 1 ; <i64> [#uses=2]
%scevgep.i.i = getelementptr i8* %name, i64 %tmp ; <i8*> [#uses=1]
%4 = sext i8 %3 to i32 ; <i32> [#uses=1]
%5 = mul i32 %h.04.i.i, 33 ; <i32> [#uses=1]
%6 = xor i32 %5, %4 ; <i32> [#uses=2]
%7 = load i8* %scevgep.i.i, align 1 ; <i8> [#uses=2]
%8 = icmp eq i8 %7, 0 ; <i1> [#uses=1]
br i1 %8, label %_ZL6hthashPKc.exit.i, label %bb.i.i
_ZL6hthashPKc.exit.i: ; preds = %bb.i.i, %entry
%h.0.lcssa.i.i = phi i32 [ 5381, %entry ], [ %6, %bb.i.i ] ; <i32> [#uses=1]
%9 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %0, i64 0, i32 0, i32 0 ; <i32*> [#uses=1]
%10 = load i32* %9, align 8 ; <i32> [#uses=1]
%11 = add nsw i32 %10, -1 ; <i32> [#uses=1]
%12 = and i32 %11, %h.0.lcssa.i.i ; <i32> [#uses=1]
%13 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %0, i64 0, i32 0, i32 2 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"***> [#uses=1]
%14 = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** %13, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%15 = zext i32 %12 to i64 ; <i64> [#uses=1]
%16 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %14, i64 %15 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i
bb.i: ; preds = %bb3.i
%.idx.i = getelementptr %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 0 ; <i8**> [#uses=1]
%.idx.val.i = load i8** %.idx.i ; <i8*> [#uses=1]
%17 = tail call i32 @strcmp(i8* %name, i8* %.idx.val.i) nounwind readonly ; <i32> [#uses=1]
%18 = icmp eq i32 %17, 0 ; <i1> [#uses=1]
br i1 %18, label %_ZN9hashtableIPKc5identE6accessERKS1_.exit, label %bb2.i
bb2.i: ; preds = %bb.i
%19 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 1 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i
bb3.i: ; preds = %bb2.i, %_ZL6hthashPKc.exit.i
%c.0.in.i = phi %"struct.hashset<hashtableentry<const char*, ident> >::chain"** [ %16, %_ZL6hthashPKc.exit.i ], [ %19, %bb2.i ] ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%c.0.i = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %c.0.in.i, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"*> [#uses=6]
%20 = icmp eq %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, null ; <i1> [#uses=1]
br i1 %20, label %return, label %bb.i
_ZN9hashtableIPKc5identE6accessERKS1_.exit: ; preds = %bb.i
%21 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1 ; <%struct.ident*> [#uses=2]
%22 = icmp eq %struct.ident* %21, null ; <i1> [#uses=1]
br i1 %22, label %return, label %bb
bb: ; preds = %_ZN9hashtableIPKc5identE6accessERKS1_.exit
%23 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 1 ; <i32*> [#uses=1]
%24 = load i32* %23, align 8 ; <i32> [#uses=1]
switch i32 %24, label %return [
i32 0, label %bb1
i32 1, label %bb1
i32 2, label %bb1
]
bb1: ; preds = %bb, %bb, %bb
%25 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 0 ; <i32 (...)***> [#uses=1]
%26 = load i32 (...)*** %25, align 8 ; <i32 (...)**> [#uses=1]
%27 = getelementptr inbounds i32 (...)** %26, i64 2 ; <i32 (...)**> [#uses=1]
%28 = load i32 (...)** %27, align 8 ; <i32 (...)*> [#uses=1]
%29 = bitcast i32 (...)* %28 to void (%struct.ident*)* ; <void (%struct.ident*)*> [#uses=1]
tail call void %29(%struct.ident* %21)
ret void
return: ; preds = %bb, %_ZN9hashtableIPKc5identE6accessERKS1_.exit, %bb3.i
ret void
}
define %struct.ident* @_Z8getidentPKc(i8* %name) nounwind readonly {
entry:
%0 = load %"struct.hashtable<const char*,ident>"** @idents, align 8 ; <%"struct.hashtable<const char*,ident>"*> [#uses=2]
%1 = load i8* %name, align 1 ; <i8> [#uses=2]
%2 = icmp eq i8 %1, 0 ; <i1> [#uses=1]
br i1 %2, label %_ZL6hthashPKc.exit.i, label %bb.i.i
bb.i.i: ; preds = %bb.i.i, %entry
%indvar.i.i = phi i64 [ %tmp, %bb.i.i ], [ 0, %entry ] ; <i64> [#uses=1]
%3 = phi i8 [ %7, %bb.i.i ], [ %1, %entry ] ; <i8> [#uses=1]
%h.04.i.i = phi i32 [ %6, %bb.i.i ], [ 5381, %entry ] ; <i32> [#uses=1]
%tmp = add i64 %indvar.i.i, 1 ; <i64> [#uses=2]
%scevgep.i.i = getelementptr i8* %name, i64 %tmp ; <i8*> [#uses=1]
%4 = sext i8 %3 to i32 ; <i32> [#uses=1]
%5 = mul i32 %h.04.i.i, 33 ; <i32> [#uses=1]
%6 = xor i32 %5, %4 ; <i32> [#uses=2]
%7 = load i8* %scevgep.i.i, align 1 ; <i8> [#uses=2]
%8 = icmp eq i8 %7, 0 ; <i1> [#uses=1]
br i1 %8, label %_ZL6hthashPKc.exit.i, label %bb.i.i
_ZL6hthashPKc.exit.i: ; preds = %bb.i.i, %entry
%h.0.lcssa.i.i = phi i32 [ 5381, %entry ], [ %6, %bb.i.i ] ; <i32> [#uses=1]
%9 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %0, i64 0, i32 0, i32 0 ; <i32*> [#uses=1]
%10 = load i32* %9, align 8 ; <i32> [#uses=1]
%11 = add nsw i32 %10, -1 ; <i32> [#uses=1]
%12 = and i32 %11, %h.0.lcssa.i.i ; <i32> [#uses=1]
%13 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %0, i64 0, i32 0, i32 2 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"***> [#uses=1]
%14 = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** %13, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%15 = zext i32 %12 to i64 ; <i64> [#uses=1]
%16 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %14, i64 %15 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i
bb.i: ; preds = %bb3.i
%.idx.i = getelementptr %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 0 ; <i8**> [#uses=1]
%.idx.val.i = load i8** %.idx.i ; <i8*> [#uses=1]
%17 = tail call i32 @strcmp(i8* %name, i8* %.idx.val.i) nounwind readonly ; <i32> [#uses=1]
%18 = icmp eq i32 %17, 0 ; <i1> [#uses=1]
br i1 %18, label %bb1.i, label %bb2.i
bb1.i: ; preds = %bb.i
%19 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1 ; <%struct.ident*> [#uses=1]
ret %struct.ident* %19
bb2.i: ; preds = %bb.i
%20 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 1 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i
bb3.i: ; preds = %bb2.i, %_ZL6hthashPKc.exit.i
%c.0.in.i = phi %"struct.hashset<hashtableentry<const char*, ident> >::chain"** [ %16, %_ZL6hthashPKc.exit.i ], [ %20, %bb2.i ] ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%c.0.i = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %c.0.in.i, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"*> [#uses=4]
%21 = icmp eq %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, null ; <i1> [#uses=1]
br i1 %21, label %_ZN9hashtableIPKc5identE6accessERKS1_.exit, label %bb.i
_ZN9hashtableIPKc5identE6accessERKS1_.exit: ; preds = %bb3.i
ret %struct.ident* null
}
define zeroext i8 @_Z11identexistsPKc(i8* %name) nounwind readonly {
entry:
%0 = load %"struct.hashtable<const char*,ident>"** @idents, align 8 ; <%"struct.hashtable<const char*,ident>"*> [#uses=2]
%1 = load i8* %name, align 1 ; <i8> [#uses=2]
%2 = icmp eq i8 %1, 0 ; <i1> [#uses=1]
br i1 %2, label %_ZL6hthashPKc.exit.i, label %bb.i.i
bb.i.i: ; preds = %bb.i.i, %entry
%indvar.i.i = phi i64 [ %tmp, %bb.i.i ], [ 0, %entry ] ; <i64> [#uses=1]
%3 = phi i8 [ %7, %bb.i.i ], [ %1, %entry ] ; <i8> [#uses=1]
%h.04.i.i = phi i32 [ %6, %bb.i.i ], [ 5381, %entry ] ; <i32> [#uses=1]
%tmp = add i64 %indvar.i.i, 1 ; <i64> [#uses=2]
%scevgep.i.i = getelementptr i8* %name, i64 %tmp ; <i8*> [#uses=1]
%4 = sext i8 %3 to i32 ; <i32> [#uses=1]
%5 = mul i32 %h.04.i.i, 33 ; <i32> [#uses=1]
%6 = xor i32 %5, %4 ; <i32> [#uses=2]
%7 = load i8* %scevgep.i.i, align 1 ; <i8> [#uses=2]
%8 = icmp eq i8 %7, 0 ; <i1> [#uses=1]
br i1 %8, label %_ZL6hthashPKc.exit.i, label %bb.i.i
_ZL6hthashPKc.exit.i: ; preds = %bb.i.i, %entry
%h.0.lcssa.i.i = phi i32 [ 5381, %entry ], [ %6, %bb.i.i ] ; <i32> [#uses=1]
%9 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %0, i64 0, i32 0, i32 0 ; <i32*> [#uses=1]
%10 = load i32* %9, align 8 ; <i32> [#uses=1]
%11 = add nsw i32 %10, -1 ; <i32> [#uses=1]
%12 = and i32 %11, %h.0.lcssa.i.i ; <i32> [#uses=1]
%13 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %0, i64 0, i32 0, i32 2 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"***> [#uses=1]
%14 = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** %13, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%15 = zext i32 %12 to i64 ; <i64> [#uses=1]
%16 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %14, i64 %15 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i
bb.i: ; preds = %bb3.i
%.idx.i = getelementptr %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 0 ; <i8**> [#uses=1]
%.idx.val.i = load i8** %.idx.i ; <i8*> [#uses=1]
%17 = tail call i32 @strcmp(i8* %name, i8* %.idx.val.i) nounwind readonly ; <i32> [#uses=1]
%18 = icmp eq i32 %17, 0 ; <i1> [#uses=1]
br i1 %18, label %bb1.i, label %bb2.i
bb1.i: ; preds = %bb.i
%19 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1 ; <%struct.ident*> [#uses=1]
%phitmp = icmp ne %struct.ident* %19, null ; <i1> [#uses=1]
br label %_ZN9hashtableIPKc5identE6accessERKS1_.exit
bb2.i: ; preds = %bb.i
%20 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 1 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i
bb3.i: ; preds = %bb2.i, %_ZL6hthashPKc.exit.i
%c.0.in.i = phi %"struct.hashset<hashtableentry<const char*, ident> >::chain"** [ %16, %_ZL6hthashPKc.exit.i ], [ %20, %bb2.i ] ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%c.0.i = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %c.0.in.i, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"*> [#uses=4]
%21 = icmp eq %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, null ; <i1> [#uses=1]
br i1 %21, label %_ZN9hashtableIPKc5identE6accessERKS1_.exit, label %bb.i
_ZN9hashtableIPKc5identE6accessERKS1_.exit: ; preds = %bb3.i, %bb1.i
%22 = phi i1 [ %phitmp, %bb1.i ], [ false, %bb3.i ] ; <i1> [#uses=1]
%retval12 = zext i1 %22 to i8 ; <i8> [#uses=1]
ret i8 %retval12
}
define i32 @_Z9getvarmaxPKc(i8* %name) nounwind readonly {
entry:
%0 = load %"struct.hashtable<const char*,ident>"** @idents, align 8 ; <%"struct.hashtable<const char*,ident>"*> [#uses=2]
%1 = load i8* %name, align 1 ; <i8> [#uses=2]
%2 = icmp eq i8 %1, 0 ; <i1> [#uses=1]
br i1 %2, label %_ZL6hthashPKc.exit.i, label %bb.i.i
bb.i.i: ; preds = %bb.i.i, %entry
%indvar.i.i = phi i64 [ %tmp, %bb.i.i ], [ 0, %entry ] ; <i64> [#uses=1]
%3 = phi i8 [ %7, %bb.i.i ], [ %1, %entry ] ; <i8> [#uses=1]
%h.04.i.i = phi i32 [ %6, %bb.i.i ], [ 5381, %entry ] ; <i32> [#uses=1]
%tmp = add i64 %indvar.i.i, 1 ; <i64> [#uses=2]
%scevgep.i.i = getelementptr i8* %name, i64 %tmp ; <i8*> [#uses=1]
%4 = sext i8 %3 to i32 ; <i32> [#uses=1]
%5 = mul i32 %h.04.i.i, 33 ; <i32> [#uses=1]
%6 = xor i32 %5, %4 ; <i32> [#uses=2]
%7 = load i8* %scevgep.i.i, align 1 ; <i8> [#uses=2]
%8 = icmp eq i8 %7, 0 ; <i1> [#uses=1]
br i1 %8, label %_ZL6hthashPKc.exit.i, label %bb.i.i
_ZL6hthashPKc.exit.i: ; preds = %bb.i.i, %entry
%h.0.lcssa.i.i = phi i32 [ 5381, %entry ], [ %6, %bb.i.i ] ; <i32> [#uses=1]
%9 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %0, i64 0, i32 0, i32 0 ; <i32*> [#uses=1]
%10 = load i32* %9, align 8 ; <i32> [#uses=1]
%11 = add nsw i32 %10, -1 ; <i32> [#uses=1]
%12 = and i32 %11, %h.0.lcssa.i.i ; <i32> [#uses=1]
%13 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %0, i64 0, i32 0, i32 2 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"***> [#uses=1]
%14 = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** %13, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%15 = zext i32 %12 to i64 ; <i64> [#uses=1]
%16 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %14, i64 %15 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i
bb.i: ; preds = %bb3.i
%.idx.i = getelementptr %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 0 ; <i8**> [#uses=1]
%.idx.val.i = load i8** %.idx.i ; <i8*> [#uses=1]
%17 = tail call i32 @strcmp(i8* %name, i8* %.idx.val.i) nounwind readonly ; <i32> [#uses=1]
%18 = icmp eq i32 %17, 0 ; <i1> [#uses=1]
br i1 %18, label %_ZN9hashtableIPKc5identE6accessERKS1_.exit, label %bb2.i
bb2.i: ; preds = %bb.i
%19 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 1 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i
bb3.i: ; preds = %bb2.i, %_ZL6hthashPKc.exit.i
%c.0.in.i = phi %"struct.hashset<hashtableentry<const char*, ident> >::chain"** [ %16, %_ZL6hthashPKc.exit.i ], [ %19, %bb2.i ] ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%c.0.i = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %c.0.in.i, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"*> [#uses=6]
%20 = icmp eq %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, null ; <i1> [#uses=1]
br i1 %20, label %bb3, label %bb.i
_ZN9hashtableIPKc5identE6accessERKS1_.exit: ; preds = %bb.i
%21 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1 ; <%struct.ident*> [#uses=1]
%22 = icmp eq %struct.ident* %21, null ; <i1> [#uses=1]
br i1 %22, label %bb3, label %bb
bb: ; preds = %_ZN9hashtableIPKc5identE6accessERKS1_.exit
%23 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 1 ; <i32*> [#uses=1]
%24 = load i32* %23, align 8 ; <i32> [#uses=1]
%25 = icmp eq i32 %24, 0 ; <i1> [#uses=1]
br i1 %25, label %bb2, label %bb3
bb2: ; preds = %bb
%26 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 4, i32 0 ; <i32*> [#uses=1]
%27 = load i32* %26, align 4 ; <i32> [#uses=1]
ret i32 %27
bb3: ; preds = %bb, %_ZN9hashtableIPKc5identE6accessERKS1_.exit, %bb3.i
ret i32 0
}
define i32 @_Z9getvarminPKc(i8* %name) nounwind readonly {
entry:
%0 = load %"struct.hashtable<const char*,ident>"** @idents, align 8 ; <%"struct.hashtable<const char*,ident>"*> [#uses=2]
%1 = load i8* %name, align 1 ; <i8> [#uses=2]
%2 = icmp eq i8 %1, 0 ; <i1> [#uses=1]
br i1 %2, label %_ZL6hthashPKc.exit.i, label %bb.i.i
bb.i.i: ; preds = %bb.i.i, %entry
%indvar.i.i = phi i64 [ %tmp, %bb.i.i ], [ 0, %entry ] ; <i64> [#uses=1]
%3 = phi i8 [ %7, %bb.i.i ], [ %1, %entry ] ; <i8> [#uses=1]
%h.04.i.i = phi i32 [ %6, %bb.i.i ], [ 5381, %entry ] ; <i32> [#uses=1]
%tmp = add i64 %indvar.i.i, 1 ; <i64> [#uses=2]
%scevgep.i.i = getelementptr i8* %name, i64 %tmp ; <i8*> [#uses=1]
%4 = sext i8 %3 to i32 ; <i32> [#uses=1]
%5 = mul i32 %h.04.i.i, 33 ; <i32> [#uses=1]
%6 = xor i32 %5, %4 ; <i32> [#uses=2]
%7 = load i8* %scevgep.i.i, align 1 ; <i8> [#uses=2]
%8 = icmp eq i8 %7, 0 ; <i1> [#uses=1]
br i1 %8, label %_ZL6hthashPKc.exit.i, label %bb.i.i
_ZL6hthashPKc.exit.i: ; preds = %bb.i.i, %entry
%h.0.lcssa.i.i = phi i32 [ 5381, %entry ], [ %6, %bb.i.i ] ; <i32> [#uses=1]
%9 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %0, i64 0, i32 0, i32 0 ; <i32*> [#uses=1]
%10 = load i32* %9, align 8 ; <i32> [#uses=1]
%11 = add nsw i32 %10, -1 ; <i32> [#uses=1]
%12 = and i32 %11, %h.0.lcssa.i.i ; <i32> [#uses=1]
%13 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %0, i64 0, i32 0, i32 2 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"***> [#uses=1]
%14 = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** %13, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%15 = zext i32 %12 to i64 ; <i64> [#uses=1]
%16 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %14, i64 %15 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i
bb.i: ; preds = %bb3.i
%.idx.i = getelementptr %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 0 ; <i8**> [#uses=1]
%.idx.val.i = load i8** %.idx.i ; <i8*> [#uses=1]
%17 = tail call i32 @strcmp(i8* %name, i8* %.idx.val.i) nounwind readonly ; <i32> [#uses=1]
%18 = icmp eq i32 %17, 0 ; <i1> [#uses=1]
br i1 %18, label %_ZN9hashtableIPKc5identE6accessERKS1_.exit, label %bb2.i
bb2.i: ; preds = %bb.i
%19 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 1 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i
bb3.i: ; preds = %bb2.i, %_ZL6hthashPKc.exit.i
%c.0.in.i = phi %"struct.hashset<hashtableentry<const char*, ident> >::chain"** [ %16, %_ZL6hthashPKc.exit.i ], [ %19, %bb2.i ] ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%c.0.i = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %c.0.in.i, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"*> [#uses=6]
%20 = icmp eq %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, null ; <i1> [#uses=1]
br i1 %20, label %bb3, label %bb.i
_ZN9hashtableIPKc5identE6accessERKS1_.exit: ; preds = %bb.i
%21 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1 ; <%struct.ident*> [#uses=1]
%22 = icmp eq %struct.ident* %21, null ; <i1> [#uses=1]
br i1 %22, label %bb3, label %bb
bb: ; preds = %_ZN9hashtableIPKc5identE6accessERKS1_.exit
%23 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 1 ; <i32*> [#uses=1]
%24 = load i32* %23, align 8 ; <i32> [#uses=1]
%25 = icmp eq i32 %24, 0 ; <i1> [#uses=1]
br i1 %25, label %bb2, label %bb3
bb2: ; preds = %bb
%26 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 3, i32 0 ; <i32*> [#uses=1]
%27 = load i32* %26, align 8 ; <i32> [#uses=1]
ret i32 %27
bb3: ; preds = %bb, %_ZN9hashtableIPKc5identE6accessERKS1_.exit, %bb3.i
ret i32 0
}
define i32 @_Z6getvarPKc(i8* %name) nounwind readonly {
entry:
%0 = load %"struct.hashtable<const char*,ident>"** @idents, align 8 ; <%"struct.hashtable<const char*,ident>"*> [#uses=2]
%1 = load i8* %name, align 1 ; <i8> [#uses=2]
%2 = icmp eq i8 %1, 0 ; <i1> [#uses=1]
br i1 %2, label %_ZL6hthashPKc.exit.i, label %bb.i.i
bb.i.i: ; preds = %bb.i.i, %entry
%indvar.i.i = phi i64 [ %tmp, %bb.i.i ], [ 0, %entry ] ; <i64> [#uses=1]
%3 = phi i8 [ %7, %bb.i.i ], [ %1, %entry ] ; <i8> [#uses=1]
%h.04.i.i = phi i32 [ %6, %bb.i.i ], [ 5381, %entry ] ; <i32> [#uses=1]
%tmp = add i64 %indvar.i.i, 1 ; <i64> [#uses=2]
%scevgep.i.i = getelementptr i8* %name, i64 %tmp ; <i8*> [#uses=1]
%4 = sext i8 %3 to i32 ; <i32> [#uses=1]
%5 = mul i32 %h.04.i.i, 33 ; <i32> [#uses=1]
%6 = xor i32 %5, %4 ; <i32> [#uses=2]
%7 = load i8* %scevgep.i.i, align 1 ; <i8> [#uses=2]
%8 = icmp eq i8 %7, 0 ; <i1> [#uses=1]
br i1 %8, label %_ZL6hthashPKc.exit.i, label %bb.i.i
_ZL6hthashPKc.exit.i: ; preds = %bb.i.i, %entry
%h.0.lcssa.i.i = phi i32 [ 5381, %entry ], [ %6, %bb.i.i ] ; <i32> [#uses=1]
%9 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %0, i64 0, i32 0, i32 0 ; <i32*> [#uses=1]
%10 = load i32* %9, align 8 ; <i32> [#uses=1]
%11 = add nsw i32 %10, -1 ; <i32> [#uses=1]
%12 = and i32 %11, %h.0.lcssa.i.i ; <i32> [#uses=1]
%13 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %0, i64 0, i32 0, i32 2 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"***> [#uses=1]
%14 = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** %13, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%15 = zext i32 %12 to i64 ; <i64> [#uses=1]
%16 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %14, i64 %15 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i
bb.i: ; preds = %bb3.i
%.idx.i = getelementptr %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 0 ; <i8**> [#uses=1]
%.idx.val.i = load i8** %.idx.i ; <i8*> [#uses=1]
%17 = tail call i32 @strcmp(i8* %name, i8* %.idx.val.i) nounwind readonly ; <i32> [#uses=1]
%18 = icmp eq i32 %17, 0 ; <i1> [#uses=1]
br i1 %18, label %_ZN9hashtableIPKc5identE6accessERKS1_.exit, label %bb2.i
bb2.i: ; preds = %bb.i
%19 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 1 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i
bb3.i: ; preds = %bb2.i, %_ZL6hthashPKc.exit.i
%c.0.in.i = phi %"struct.hashset<hashtableentry<const char*, ident> >::chain"** [ %16, %_ZL6hthashPKc.exit.i ], [ %19, %bb2.i ] ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%c.0.i = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %c.0.in.i, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"*> [#uses=6]
%20 = icmp eq %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, null ; <i1> [#uses=1]
br i1 %20, label %bb3, label %bb.i
_ZN9hashtableIPKc5identE6accessERKS1_.exit: ; preds = %bb.i
%21 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1 ; <%struct.ident*> [#uses=1]
%22 = icmp eq %struct.ident* %21, null ; <i1> [#uses=1]
br i1 %22, label %bb3, label %bb
bb: ; preds = %_ZN9hashtableIPKc5identE6accessERKS1_.exit
%23 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 1 ; <i32*> [#uses=1]
%24 = load i32* %23, align 8 ; <i32> [#uses=1]
%25 = icmp eq i32 %24, 0 ; <i1> [#uses=1]
br i1 %25, label %bb2, label %bb3
bb2: ; preds = %bb
%26 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 9, i32 0 ; <i32**> [#uses=1]
%27 = load i32** %26, align 8 ; <i32*> [#uses=1]
%28 = load i32* %27, align 4 ; <i32> [#uses=1]
ret i32 %28
bb3: ; preds = %bb, %_ZN9hashtableIPKc5identE6accessERKS1_.exit, %bb3.i
ret i32 0
}
define void @_Z7setsvarPKcS0_b(i8* %name, i8* nocapture %str, i8 zeroext %dofunc) {
entry:
%0 = load %"struct.hashtable<const char*,ident>"** @idents, align 8 ; <%"struct.hashtable<const char*,ident>"*> [#uses=2]
%1 = load i8* %name, align 1 ; <i8> [#uses=2]
%2 = icmp eq i8 %1, 0 ; <i1> [#uses=1]
br i1 %2, label %_ZL6hthashPKc.exit.i, label %bb.i.i
bb.i.i: ; preds = %bb.i.i, %entry
%indvar.i.i = phi i64 [ %tmp, %bb.i.i ], [ 0, %entry ] ; <i64> [#uses=1]
%3 = phi i8 [ %7, %bb.i.i ], [ %1, %entry ] ; <i8> [#uses=1]
%h.04.i.i = phi i32 [ %6, %bb.i.i ], [ 5381, %entry ] ; <i32> [#uses=1]
%tmp = add i64 %indvar.i.i, 1 ; <i64> [#uses=2]
%scevgep.i.i = getelementptr i8* %name, i64 %tmp ; <i8*> [#uses=1]
%4 = sext i8 %3 to i32 ; <i32> [#uses=1]
%5 = mul i32 %h.04.i.i, 33 ; <i32> [#uses=1]
%6 = xor i32 %5, %4 ; <i32> [#uses=2]
%7 = load i8* %scevgep.i.i, align 1 ; <i8> [#uses=2]
%8 = icmp eq i8 %7, 0 ; <i1> [#uses=1]
br i1 %8, label %_ZL6hthashPKc.exit.i, label %bb.i.i
_ZL6hthashPKc.exit.i: ; preds = %bb.i.i, %entry
%h.0.lcssa.i.i = phi i32 [ 5381, %entry ], [ %6, %bb.i.i ] ; <i32> [#uses=1]
%9 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %0, i64 0, i32 0, i32 0 ; <i32*> [#uses=1]
%10 = load i32* %9, align 8 ; <i32> [#uses=1]
%11 = add nsw i32 %10, -1 ; <i32> [#uses=1]
%12 = and i32 %11, %h.0.lcssa.i.i ; <i32> [#uses=1]
%13 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %0, i64 0, i32 0, i32 2 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"***> [#uses=1]
%14 = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** %13, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%15 = zext i32 %12 to i64 ; <i64> [#uses=1]
%16 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %14, i64 %15 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i
bb.i: ; preds = %bb3.i
%.idx.i = getelementptr %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 0 ; <i8**> [#uses=1]
%.idx.val.i = load i8** %.idx.i ; <i8*> [#uses=1]
%17 = tail call i32 @strcmp(i8* %name, i8* %.idx.val.i) nounwind readonly ; <i32> [#uses=1]
%18 = icmp eq i32 %17, 0 ; <i1> [#uses=1]
br i1 %18, label %_ZN9hashtableIPKc5identE6accessERKS1_.exit, label %bb2.i
bb2.i: ; preds = %bb.i
%19 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 1 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i
bb3.i: ; preds = %bb2.i, %_ZL6hthashPKc.exit.i
%c.0.in.i = phi %"struct.hashset<hashtableentry<const char*, ident> >::chain"** [ %16, %_ZL6hthashPKc.exit.i ], [ %19, %bb2.i ] ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%c.0.i = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %c.0.in.i, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"*> [#uses=15]
%20 = icmp eq %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, null ; <i1> [#uses=1]
br i1 %20, label %return, label %bb.i
_ZN9hashtableIPKc5identE6accessERKS1_.exit: ; preds = %bb.i
%21 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1 ; <%struct.ident*> [#uses=2]
%22 = icmp eq %struct.ident* %21, null ; <i1> [#uses=1]
br i1 %22, label %return, label %bb
bb: ; preds = %_ZN9hashtableIPKc5identE6accessERKS1_.exit
%23 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 1 ; <i32*> [#uses=1]
%24 = load i32* %23, align 8 ; <i32> [#uses=1]
%25 = icmp eq i32 %24, 2 ; <i1> [#uses=1]
br i1 %25, label %bb1, label %return
bb1: ; preds = %bb
%26 = load i8* @overrideidents, align 1 ; <i8> [#uses=1]
%toBool = icmp eq i8 %26, 0 ; <i1> [#uses=1]
%27 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 10 ; <i32*> [#uses=1]
%28 = load i32* %27, align 8 ; <i32> [#uses=3]
br i1 %toBool, label %bb2, label %bb3
bb2: ; preds = %bb1
%29 = and i32 %28, 2 ; <i32> [#uses=1]
%30 = icmp eq i32 %29, 0 ; <i1> [#uses=1]
br i1 %30, label %bb10, label %bb3
bb3: ; preds = %bb2, %bb1
%31 = phi i32 [ %28, %bb2 ], [ %28, %bb1 ] ; <i32> [#uses=1]
%32 = and i32 %31, 1 ; <i32> [#uses=1]
%toBool4 = icmp eq i32 %32, 0 ; <i1> [#uses=1]
br i1 %toBool4, label %bb6, label %bb5
bb5: ; preds = %bb3
%33 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 2 ; <i8**> [#uses=1]
%34 = load i8** %33, align 8 ; <i8*> [#uses=1]
tail call void (i32, i8*, ...)* @_Z7conoutfiPKcz(i32 4, i8* getelementptr inbounds ([39 x i8]* @.str5, i64 0, i64 0), i8* %34)
ret void
bb6: ; preds = %bb3
%35 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 5 ; <i32*> [#uses=2]
%36 = load i32* %35, align 8 ; <i32> [#uses=1]
%37 = icmp eq i32 %36, 2147483647 ; <i1> [#uses=1]
%38 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 9, i32 0 ; <i32**> [#uses=1]
%39 = load i32** %38, align 8 ; <i32*> [#uses=1]
%40 = bitcast i32* %39 to i8** ; <i8**> [#uses=1]
%41 = load i8** %40, align 8 ; <i8*> [#uses=3]
br i1 %37, label %bb7, label %bb8
bb7: ; preds = %bb6
%42 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 8, i32 0 ; <i8**> [#uses=1]
store i8* %41, i8** %42, align 8
store i32 0, i32* %35, align 8
br label %bb16
bb8: ; preds = %bb6
%43 = icmp eq i8* %41, null ; <i1> [#uses=1]
br i1 %43, label %bb16, label %bb9
bb9: ; preds = %bb8
tail call void @_ZdaPv(i8* %41) nounwind
br label %bb16
bb10: ; preds = %bb2
%44 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 5 ; <i32*> [#uses=2]
%45 = load i32* %44, align 8 ; <i32> [#uses=1]
%46 = icmp eq i32 %45, 2147483647 ; <i1> [#uses=1]
br i1 %46, label %bb14, label %bb11
bb11: ; preds = %bb10
%47 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 8, i32 0 ; <i8**> [#uses=1]
%48 = load i8** %47, align 8 ; <i8*> [#uses=2]
%49 = icmp eq i8* %48, null ; <i1> [#uses=1]
br i1 %49, label %bb13, label %bb12
bb12: ; preds = %bb11
tail call void @_ZdaPv(i8* %48) nounwind
br label %bb13
bb13: ; preds = %bb12, %bb11
store i32 2147483647, i32* %44, align 8
br label %bb14
bb14: ; preds = %bb13, %bb10
%50 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 9, i32 0 ; <i32**> [#uses=1]
%51 = load i32** %50, align 8 ; <i32*> [#uses=1]
%52 = bitcast i32* %51 to i8** ; <i8**> [#uses=1]
%53 = load i8** %52, align 8 ; <i8*> [#uses=2]
%54 = icmp eq i8* %53, null ; <i1> [#uses=1]
br i1 %54, label %bb16, label %bb15
bb15: ; preds = %bb14
tail call void @_ZdaPv(i8* %53) nounwind
br label %bb16
bb16: ; preds = %bb15, %bb14, %bb9, %bb8, %bb7
%55 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 9, i32 0 ; <i32**> [#uses=1]
%56 = load i32** %55, align 8 ; <i32*> [#uses=1]
%57 = bitcast i32* %56 to i8** ; <i8**> [#uses=1]
%58 = tail call i64 @strlen(i8* %str) nounwind readonly ; <i64> [#uses=2]
%59 = add i64 %58, 1 ; <i64> [#uses=2]
%60 = tail call i8* @_Znam(i64 %59) ; <i8*> [#uses=3]
%61 = tail call i8* @strncpy(i8* noalias %60, i8* noalias %str, i64 %59) nounwind ; <i8*> [#uses=0]
%62 = getelementptr inbounds i8* %60, i64 %58 ; <i8*> [#uses=1]
store i8 0, i8* %62, align 1
store i8* %60, i8** %57, align 8
%toBool17 = icmp eq i8 %dofunc, 0 ; <i1> [#uses=1]
br i1 %toBool17, label %return, label %bb18
bb18: ; preds = %bb16
%63 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 0 ; <i32 (...)***> [#uses=1]
%64 = load i32 (...)*** %63, align 8 ; <i32 (...)**> [#uses=1]
%65 = getelementptr inbounds i32 (...)** %64, i64 2 ; <i32 (...)**> [#uses=1]
%66 = load i32 (...)** %65, align 8 ; <i32 (...)*> [#uses=1]
%67 = bitcast i32 (...)* %66 to void (%struct.ident*)* ; <void (%struct.ident*)*> [#uses=1]
tail call void %67(%struct.ident* %21)
ret void
return: ; preds = %bb16, %bb, %_ZN9hashtableIPKc5identE6accessERKS1_.exit, %bb3.i
ret void
}
define void @_Z7setfvarPKcfbb(i8* %name, float %f, i8 zeroext %dofunc, i8 zeroext %doclamp) {
entry:
%0 = load %"struct.hashtable<const char*,ident>"** @idents, align 8 ; <%"struct.hashtable<const char*,ident>"*> [#uses=2]
%1 = load i8* %name, align 1 ; <i8> [#uses=2]
%2 = icmp eq i8 %1, 0 ; <i1> [#uses=1]
br i1 %2, label %_ZL6hthashPKc.exit.i, label %bb.i.i
bb.i.i: ; preds = %bb.i.i, %entry
%indvar.i.i = phi i64 [ %tmp, %bb.i.i ], [ 0, %entry ] ; <i64> [#uses=1]
%3 = phi i8 [ %7, %bb.i.i ], [ %1, %entry ] ; <i8> [#uses=1]
%h.04.i.i = phi i32 [ %6, %bb.i.i ], [ 5381, %entry ] ; <i32> [#uses=1]
%tmp = add i64 %indvar.i.i, 1 ; <i64> [#uses=2]
%scevgep.i.i = getelementptr i8* %name, i64 %tmp ; <i8*> [#uses=1]
%4 = sext i8 %3 to i32 ; <i32> [#uses=1]
%5 = mul i32 %h.04.i.i, 33 ; <i32> [#uses=1]
%6 = xor i32 %5, %4 ; <i32> [#uses=2]
%7 = load i8* %scevgep.i.i, align 1 ; <i8> [#uses=2]
%8 = icmp eq i8 %7, 0 ; <i1> [#uses=1]
br i1 %8, label %_ZL6hthashPKc.exit.i, label %bb.i.i
_ZL6hthashPKc.exit.i: ; preds = %bb.i.i, %entry
%h.0.lcssa.i.i = phi i32 [ 5381, %entry ], [ %6, %bb.i.i ] ; <i32> [#uses=1]
%9 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %0, i64 0, i32 0, i32 0 ; <i32*> [#uses=1]
%10 = load i32* %9, align 8 ; <i32> [#uses=1]
%11 = add nsw i32 %10, -1 ; <i32> [#uses=1]
%12 = and i32 %11, %h.0.lcssa.i.i ; <i32> [#uses=1]
%13 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %0, i64 0, i32 0, i32 2 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"***> [#uses=1]
%14 = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** %13, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%15 = zext i32 %12 to i64 ; <i64> [#uses=1]
%16 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %14, i64 %15 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i
bb.i: ; preds = %bb3.i
%.idx.i = getelementptr %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 0 ; <i8**> [#uses=1]
%.idx.val.i = load i8** %.idx.i ; <i8*> [#uses=1]
%17 = tail call i32 @strcmp(i8* %name, i8* %.idx.val.i) nounwind readonly ; <i32> [#uses=1]
%18 = icmp eq i32 %17, 0 ; <i1> [#uses=1]
br i1 %18, label %_ZN9hashtableIPKc5identE6accessERKS1_.exit, label %bb2.i
bb2.i: ; preds = %bb.i
%19 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 1 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i
bb3.i: ; preds = %bb2.i, %_ZL6hthashPKc.exit.i
%c.0.in.i = phi %"struct.hashset<hashtableentry<const char*, ident> >::chain"** [ %16, %_ZL6hthashPKc.exit.i ], [ %19, %bb2.i ] ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%c.0.i = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %c.0.in.i, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"*> [#uses=15]
%20 = icmp eq %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, null ; <i1> [#uses=1]
br i1 %20, label %return, label %bb.i
_ZN9hashtableIPKc5identE6accessERKS1_.exit: ; preds = %bb.i
%21 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1 ; <%struct.ident*> [#uses=2]
%22 = icmp eq %struct.ident* %21, null ; <i1> [#uses=1]
br i1 %22, label %return, label %bb
bb: ; preds = %_ZN9hashtableIPKc5identE6accessERKS1_.exit
%23 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 1 ; <i32*> [#uses=1]
%24 = load i32* %23, align 8 ; <i32> [#uses=1]
%25 = icmp eq i32 %24, 1 ; <i1> [#uses=1]
br i1 %25, label %bb1, label %return
bb1: ; preds = %bb
%26 = load i8* @overrideidents, align 1 ; <i8> [#uses=1]
%toBool = icmp eq i8 %26, 0 ; <i1> [#uses=1]
%27 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 10 ; <i32*> [#uses=1]
%28 = load i32* %27, align 8 ; <i32> [#uses=3]
br i1 %toBool, label %bb2, label %bb3
bb2: ; preds = %bb1
%29 = and i32 %28, 2 ; <i32> [#uses=1]
%30 = icmp eq i32 %29, 0 ; <i1> [#uses=1]
br i1 %30, label %bb8, label %bb3
bb3: ; preds = %bb2, %bb1
%31 = phi i32 [ %28, %bb2 ], [ %28, %bb1 ] ; <i32> [#uses=1]
%32 = and i32 %31, 1 ; <i32> [#uses=1]
%toBool4 = icmp eq i32 %32, 0 ; <i1> [#uses=1]
br i1 %toBool4, label %bb6, label %bb5
bb5: ; preds = %bb3
%33 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 2 ; <i8**> [#uses=1]
%34 = load i8** %33, align 8 ; <i8*> [#uses=1]
tail call void (i32, i8*, ...)* @_Z7conoutfiPKcz(i32 4, i8* getelementptr inbounds ([39 x i8]* @.str5, i64 0, i64 0), i8* %34)
ret void
bb6: ; preds = %bb3
%35 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 5 ; <i32*> [#uses=2]
%36 = load i32* %35, align 8 ; <i32> [#uses=1]
%37 = icmp eq i32 %36, 2147483647 ; <i1> [#uses=1]
br i1 %37, label %bb7, label %bb10
bb7: ; preds = %bb6
%38 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 9, i32 0 ; <i32**> [#uses=1]
%39 = load i32** %38, align 8 ; <i32*> [#uses=1]
%40 = bitcast i32* %39 to float* ; <float*> [#uses=1]
%41 = load float* %40, align 4 ; <float> [#uses=1]
%42 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 8, i32 0 ; <i8**> [#uses=1]
%43 = bitcast i8** %42 to float* ; <float*> [#uses=1]
store float %41, float* %43, align 8
store i32 0, i32* %35, align 8
br label %bb10
bb8: ; preds = %bb2
%44 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 5 ; <i32*> [#uses=2]
%45 = load i32* %44, align 8 ; <i32> [#uses=1]
%46 = icmp eq i32 %45, 2147483647 ; <i1> [#uses=1]
br i1 %46, label %bb10, label %bb9
bb9: ; preds = %bb8
store i32 2147483647, i32* %44, align 8
br label %bb10
bb10: ; preds = %bb9, %bb8, %bb7, %bb6
%toBool11 = icmp eq i8 %doclamp, 0 ; <i1> [#uses=1]
%47 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 9, i32 0 ; <i32**> [#uses=1]
%48 = load i32** %47, align 8 ; <i32*> [#uses=1]
%49 = bitcast i32* %48 to float* ; <float*> [#uses=1]
br i1 %toBool11, label %bb14, label %bb12
bb12: ; preds = %bb10
%50 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 4, i32 0 ; <i32*> [#uses=1]
%51 = bitcast i32* %50 to float* ; <float*> [#uses=1]
%52 = load float* %51, align 4 ; <float> [#uses=2]
%53 = fcmp ogt float %52, %f ; <i1> [#uses=1]
%iftmp.223.0.i = select i1 %53, float %f, float %52 ; <float> [#uses=2]
%54 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 3, i32 0 ; <i32*> [#uses=1]
%55 = bitcast i32* %54 to float* ; <float*> [#uses=1]
%56 = load float* %55, align 8 ; <float> [#uses=2]
%57 = fcmp ogt float %56, %iftmp.223.0.i ; <i1> [#uses=1]
%iftmp.224.0.i = select i1 %57, float %56, float %iftmp.223.0.i ; <float> [#uses=1]
br label %bb14
bb14: ; preds = %bb12, %bb10
%storemerge = phi float [ %iftmp.224.0.i, %bb12 ], [ %f, %bb10 ] ; <float> [#uses=1]
store float %storemerge, float* %49, align 4
%toBool15 = icmp eq i8 %dofunc, 0 ; <i1> [#uses=1]
br i1 %toBool15, label %return, label %bb16
bb16: ; preds = %bb14
%58 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 0 ; <i32 (...)***> [#uses=1]
%59 = load i32 (...)*** %58, align 8 ; <i32 (...)**> [#uses=1]
%60 = getelementptr inbounds i32 (...)** %59, i64 2 ; <i32 (...)**> [#uses=1]
%61 = load i32 (...)** %60, align 8 ; <i32 (...)*> [#uses=1]
%62 = bitcast i32 (...)* %61 to void (%struct.ident*)* ; <void (%struct.ident*)*> [#uses=1]
tail call void %62(%struct.ident* %21)
ret void
return: ; preds = %bb14, %bb, %_ZN9hashtableIPKc5identE6accessERKS1_.exit, %bb3.i
ret void
}
define void @_Z6setvarPKcibb(i8* %name, i32 %i, i8 zeroext %dofunc, i8 zeroext %doclamp) {
entry:
%0 = load %"struct.hashtable<const char*,ident>"** @idents, align 8 ; <%"struct.hashtable<const char*,ident>"*> [#uses=2]
%1 = load i8* %name, align 1 ; <i8> [#uses=2]
%2 = icmp eq i8 %1, 0 ; <i1> [#uses=1]
br i1 %2, label %_ZL6hthashPKc.exit.i, label %bb.i.i
bb.i.i: ; preds = %bb.i.i, %entry
%indvar.i.i = phi i64 [ %tmp, %bb.i.i ], [ 0, %entry ] ; <i64> [#uses=1]
%3 = phi i8 [ %7, %bb.i.i ], [ %1, %entry ] ; <i8> [#uses=1]
%h.04.i.i = phi i32 [ %6, %bb.i.i ], [ 5381, %entry ] ; <i32> [#uses=1]
%tmp = add i64 %indvar.i.i, 1 ; <i64> [#uses=2]
%scevgep.i.i = getelementptr i8* %name, i64 %tmp ; <i8*> [#uses=1]
%4 = sext i8 %3 to i32 ; <i32> [#uses=1]
%5 = mul i32 %h.04.i.i, 33 ; <i32> [#uses=1]
%6 = xor i32 %5, %4 ; <i32> [#uses=2]
%7 = load i8* %scevgep.i.i, align 1 ; <i8> [#uses=2]
%8 = icmp eq i8 %7, 0 ; <i1> [#uses=1]
br i1 %8, label %_ZL6hthashPKc.exit.i, label %bb.i.i
_ZL6hthashPKc.exit.i: ; preds = %bb.i.i, %entry
%h.0.lcssa.i.i = phi i32 [ 5381, %entry ], [ %6, %bb.i.i ] ; <i32> [#uses=1]
%9 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %0, i64 0, i32 0, i32 0 ; <i32*> [#uses=1]
%10 = load i32* %9, align 8 ; <i32> [#uses=1]
%11 = add nsw i32 %10, -1 ; <i32> [#uses=1]
%12 = and i32 %11, %h.0.lcssa.i.i ; <i32> [#uses=1]
%13 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %0, i64 0, i32 0, i32 2 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"***> [#uses=1]
%14 = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** %13, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%15 = zext i32 %12 to i64 ; <i64> [#uses=1]
%16 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %14, i64 %15 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i
bb.i: ; preds = %bb3.i
%.idx.i = getelementptr %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 0 ; <i8**> [#uses=1]
%.idx.val.i = load i8** %.idx.i ; <i8*> [#uses=1]
%17 = tail call i32 @strcmp(i8* %name, i8* %.idx.val.i) nounwind readonly ; <i32> [#uses=1]
%18 = icmp eq i32 %17, 0 ; <i1> [#uses=1]
br i1 %18, label %_ZN9hashtableIPKc5identE6accessERKS1_.exit, label %bb2.i
bb2.i: ; preds = %bb.i
%19 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 1 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i
bb3.i: ; preds = %bb2.i, %_ZL6hthashPKc.exit.i
%c.0.in.i = phi %"struct.hashset<hashtableentry<const char*, ident> >::chain"** [ %16, %_ZL6hthashPKc.exit.i ], [ %19, %bb2.i ] ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%c.0.i = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %c.0.in.i, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"*> [#uses=15]
%20 = icmp eq %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, null ; <i1> [#uses=1]
br i1 %20, label %return, label %bb.i
_ZN9hashtableIPKc5identE6accessERKS1_.exit: ; preds = %bb.i
%21 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1 ; <%struct.ident*> [#uses=2]
%22 = icmp eq %struct.ident* %21, null ; <i1> [#uses=1]
br i1 %22, label %return, label %bb
bb: ; preds = %_ZN9hashtableIPKc5identE6accessERKS1_.exit
%23 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 1 ; <i32*> [#uses=1]
%24 = load i32* %23, align 8 ; <i32> [#uses=1]
%25 = icmp eq i32 %24, 0 ; <i1> [#uses=1]
br i1 %25, label %bb1, label %return
bb1: ; preds = %bb
%26 = load i8* @overrideidents, align 1 ; <i8> [#uses=1]
%toBool = icmp eq i8 %26, 0 ; <i1> [#uses=1]
%27 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 10 ; <i32*> [#uses=1]
%28 = load i32* %27, align 8 ; <i32> [#uses=3]
br i1 %toBool, label %bb2, label %bb3
bb2: ; preds = %bb1
%29 = and i32 %28, 2 ; <i32> [#uses=1]
%30 = icmp eq i32 %29, 0 ; <i1> [#uses=1]
br i1 %30, label %bb8, label %bb3
bb3: ; preds = %bb2, %bb1
%31 = phi i32 [ %28, %bb2 ], [ %28, %bb1 ] ; <i32> [#uses=1]
%32 = and i32 %31, 1 ; <i32> [#uses=1]
%toBool4 = icmp eq i32 %32, 0 ; <i1> [#uses=1]
br i1 %toBool4, label %bb6, label %bb5
bb5: ; preds = %bb3
%33 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 2 ; <i8**> [#uses=1]
%34 = load i8** %33, align 8 ; <i8*> [#uses=1]
tail call void (i32, i8*, ...)* @_Z7conoutfiPKcz(i32 4, i8* getelementptr inbounds ([39 x i8]* @.str5, i64 0, i64 0), i8* %34)
ret void
bb6: ; preds = %bb3
%35 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 5 ; <i32*> [#uses=2]
%36 = load i32* %35, align 8 ; <i32> [#uses=1]
%37 = icmp eq i32 %36, 2147483647 ; <i1> [#uses=1]
br i1 %37, label %bb7, label %bb10
bb7: ; preds = %bb6
%38 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 9, i32 0 ; <i32**> [#uses=1]
%39 = load i32** %38, align 8 ; <i32*> [#uses=1]
%40 = load i32* %39, align 4 ; <i32> [#uses=1]
%41 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 8, i32 0 ; <i8**> [#uses=1]
%42 = bitcast i8** %41 to i32* ; <i32*> [#uses=1]
store i32 %40, i32* %42, align 8
store i32 0, i32* %35, align 8
br label %bb10
bb8: ; preds = %bb2
%43 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 5 ; <i32*> [#uses=2]
%44 = load i32* %43, align 8 ; <i32> [#uses=1]
%45 = icmp eq i32 %44, 2147483647 ; <i1> [#uses=1]
br i1 %45, label %bb10, label %bb9
bb9: ; preds = %bb8
store i32 2147483647, i32* %43, align 8
br label %bb10
bb10: ; preds = %bb9, %bb8, %bb7, %bb6
%toBool11 = icmp eq i8 %doclamp, 0 ; <i1> [#uses=1]
%46 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 9, i32 0 ; <i32**> [#uses=1]
%47 = load i32** %46, align 8 ; <i32*> [#uses=1]
br i1 %toBool11, label %bb14, label %bb12
bb12: ; preds = %bb10
%48 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 4, i32 0 ; <i32*> [#uses=1]
%49 = load i32* %48, align 4 ; <i32> [#uses=2]
%50 = icmp sgt i32 %49, %i ; <i1> [#uses=1]
%iftmp.222.0.i = select i1 %50, i32 %i, i32 %49 ; <i32> [#uses=2]
%51 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 3, i32 0 ; <i32*> [#uses=1]
%52 = load i32* %51, align 8 ; <i32> [#uses=2]
%53 = icmp sgt i32 %52, %iftmp.222.0.i ; <i1> [#uses=1]
%iftmp.215.0.i = select i1 %53, i32 %52, i32 %iftmp.222.0.i ; <i32> [#uses=1]
br label %bb14
bb14: ; preds = %bb12, %bb10
%storemerge = phi i32 [ %iftmp.215.0.i, %bb12 ], [ %i, %bb10 ] ; <i32> [#uses=1]
store i32 %storemerge, i32* %47, align 4
%toBool15 = icmp eq i8 %dofunc, 0 ; <i1> [#uses=1]
br i1 %toBool15, label %return, label %bb16
bb16: ; preds = %bb14
%54 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 0 ; <i32 (...)***> [#uses=1]
%55 = load i32 (...)*** %54, align 8 ; <i32 (...)**> [#uses=1]
%56 = getelementptr inbounds i32 (...)** %55, i64 2 ; <i32 (...)**> [#uses=1]
%57 = load i32 (...)** %56, align 8 ; <i32 (...)*> [#uses=1]
%58 = bitcast i32 (...)* %57 to void (%struct.ident*)* ; <void (%struct.ident*)*> [#uses=1]
tail call void %58(%struct.ident* %21)
ret void
return: ; preds = %bb14, %bb, %_ZN9hashtableIPKc5identE6accessERKS1_.exit, %bb3.i
ret void
}
define void @_Z8resetvarPc(i8* %name) {
entry:
%0 = load %"struct.hashtable<const char*,ident>"** @idents, align 8 ; <%"struct.hashtable<const char*,ident>"*> [#uses=2]
%1 = load i8* %name, align 1 ; <i8> [#uses=2]
%2 = icmp eq i8 %1, 0 ; <i1> [#uses=1]
br i1 %2, label %_ZL6hthashPKc.exit.i, label %bb.i.i
bb.i.i: ; preds = %bb.i.i, %entry
%indvar.i.i = phi i64 [ %tmp, %bb.i.i ], [ 0, %entry ] ; <i64> [#uses=1]
%3 = phi i8 [ %7, %bb.i.i ], [ %1, %entry ] ; <i8> [#uses=1]
%h.04.i.i = phi i32 [ %6, %bb.i.i ], [ 5381, %entry ] ; <i32> [#uses=1]
%tmp = add i64 %indvar.i.i, 1 ; <i64> [#uses=2]
%scevgep.i.i = getelementptr i8* %name, i64 %tmp ; <i8*> [#uses=1]
%4 = sext i8 %3 to i32 ; <i32> [#uses=1]
%5 = mul i32 %h.04.i.i, 33 ; <i32> [#uses=1]
%6 = xor i32 %5, %4 ; <i32> [#uses=2]
%7 = load i8* %scevgep.i.i, align 1 ; <i8> [#uses=2]
%8 = icmp eq i8 %7, 0 ; <i1> [#uses=1]
br i1 %8, label %_ZL6hthashPKc.exit.i, label %bb.i.i
_ZL6hthashPKc.exit.i: ; preds = %bb.i.i, %entry
%h.0.lcssa.i.i = phi i32 [ 5381, %entry ], [ %6, %bb.i.i ] ; <i32> [#uses=1]
%9 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %0, i64 0, i32 0, i32 0 ; <i32*> [#uses=1]
%10 = load i32* %9, align 8 ; <i32> [#uses=1]
%11 = add nsw i32 %10, -1 ; <i32> [#uses=1]
%12 = and i32 %11, %h.0.lcssa.i.i ; <i32> [#uses=1]
%13 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %0, i64 0, i32 0, i32 2 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"***> [#uses=1]
%14 = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** %13, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%15 = zext i32 %12 to i64 ; <i64> [#uses=1]
%16 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %14, i64 %15 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i
bb.i: ; preds = %bb3.i
%.idx.i = getelementptr %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 0 ; <i8**> [#uses=1]
%.idx.val.i = load i8** %.idx.i ; <i8*> [#uses=1]
%17 = tail call i32 @strcmp(i8* %name, i8* %.idx.val.i) nounwind readonly ; <i32> [#uses=1]
%18 = icmp eq i32 %17, 0 ; <i1> [#uses=1]
br i1 %18, label %_ZN9hashtableIPKc5identE6accessERKS1_.exit, label %bb2.i
bb2.i: ; preds = %bb.i
%19 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 1 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i
bb3.i: ; preds = %bb2.i, %_ZL6hthashPKc.exit.i
%c.0.in.i = phi %"struct.hashset<hashtableentry<const char*, ident> >::chain"** [ %16, %_ZL6hthashPKc.exit.i ], [ %19, %bb2.i ] ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%c.0.i = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %c.0.in.i, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"*> [#uses=6]
%20 = icmp eq %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, null ; <i1> [#uses=1]
br i1 %20, label %return, label %bb.i
_ZN9hashtableIPKc5identE6accessERKS1_.exit: ; preds = %bb.i
%21 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1 ; <%struct.ident*> [#uses=2]
%22 = icmp eq %struct.ident* %21, null ; <i1> [#uses=1]
br i1 %22, label %return, label %bb
bb: ; preds = %_ZN9hashtableIPKc5identE6accessERKS1_.exit
%23 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 10 ; <i32*> [#uses=1]
%24 = load i32* %23, align 8 ; <i32> [#uses=1]
%25 = and i32 %24, 8 ; <i32> [#uses=1]
%26 = icmp eq i32 %25, 0 ; <i1> [#uses=1]
br i1 %26, label %bb2, label %bb1
bb1: ; preds = %bb
%27 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 2 ; <i8**> [#uses=1]
%28 = load i8** %27, align 8 ; <i8*> [#uses=1]
tail call void (i32, i8*, ...)* @_Z7conoutfiPKcz(i32 4, i8* getelementptr inbounds ([25 x i8]* @.str4, i64 0, i64 0), i8* %28)
ret void
bb2: ; preds = %bb
tail call void @_Z13clearoverrideR5ident(%struct.ident* %21)
ret void
return: ; preds = %_ZN9hashtableIPKc5identE6accessERKS1_.exit, %bb3.i
ret void
}
declare i64 @strtol(i8* noalias, i8** noalias nocapture, i32) nounwind
declare double @strtod(i8* noalias, i8** noalias nocapture) nounwind
define void @_ZN7_stdcmdILi1153EE3runEPPcPi(i8** nocapture %args, i32* nocapture %numargs) align 2 {
entry:
%end.i6 = alloca i8*, align 8 ; <i8**> [#uses=2]
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%end.i = alloca i8*, align 8 ; <i8**> [#uses=2]
%1 = load i32* %numargs, align 4 ; <i32> [#uses=2]
%2 = icmp sgt i32 %1, 0 ; <i1> [#uses=1]
br i1 %2, label %bb, label %bb4.preheader
bb: ; preds = %entry
%3 = add nsw i32 %1, -1 ; <i32> [#uses=1]
%4 = sext i32 %3 to i64 ; <i64> [#uses=1]
%5 = getelementptr inbounds i8** %args, i64 %4 ; <i8**> [#uses=1]
%6 = load i8** %5, align 8 ; <i8*> [#uses=3]
%7 = call double @strtod(i8* noalias %6, i8** noalias %end.i) nounwind ; <double> [#uses=2]
%8 = fcmp une double %7, 0.000000e+00 ; <i1> [#uses=1]
br i1 %8, label %bb4.i, label %bb.i
bb.i: ; preds = %bb
%9 = load i8** %end.i, align 8 ; <i8*> [#uses=2]
%10 = icmp eq i8* %9, %6 ; <i1> [#uses=1]
br i1 %10, label %bb4.i, label %bb1.i
bb1.i: ; preds = %bb.i
%11 = load i8* %9, align 1 ; <i8> [#uses=1]
switch i8 %11, label %bb4.i [
i8 88, label %bb5.i
i8 120, label %bb5.i
]
bb4.i: ; preds = %bb1.i, %bb.i, %bb
%12 = fptrunc double %7 to float ; <float> [#uses=1]
br label %bb4.preheader
bb5.i: ; preds = %bb1.i, %bb1.i
%13 = call i64 @strtol(i8* noalias nocapture %6, i8** noalias null, i32 0) nounwind readonly ; <i64> [#uses=1]
%14 = trunc i64 %13 to i32 ; <i32> [#uses=1]
%15 = sitofp i32 %14 to float ; <float> [#uses=1]
br label %bb4.preheader
bb4.preheader: ; preds = %bb5.i, %bb4.i, %entry
%val.0.ph = phi float [ %15, %bb5.i ], [ %12, %bb4.i ], [ 0.000000e+00, %entry ] ; <float> [#uses=2]
%16 = load i32* %numargs, align 4 ; <i32> [#uses=1]
%17 = add nsw i32 %16, -1 ; <i32> [#uses=1]
%18 = icmp sgt i32 %17, 0 ; <i1> [#uses=1]
br i1 %18, label %bb3, label %bb5
bb3: ; preds = %_ZL10parsefloatPKc.exit11, %bb4.preheader
%indvar = phi i64 [ %tmp, %_ZL10parsefloatPKc.exit11 ], [ 0, %bb4.preheader ] ; <i64> [#uses=2]
%val.012 = phi float [ %iftmp.224.0.i, %_ZL10parsefloatPKc.exit11 ], [ %val.0.ph, %bb4.preheader ] ; <float> [#uses=2]
%scevgep = getelementptr i8** %args, i64 %indvar ; <i8**> [#uses=1]
%tmp = add i64 %indvar, 1 ; <i64> [#uses=2]
%tmp14 = trunc i64 %tmp to i32 ; <i32> [#uses=1]
%19 = load i8** %scevgep, align 8 ; <i8*> [#uses=3]
%20 = call double @strtod(i8* noalias %19, i8** noalias %end.i6) nounwind ; <double> [#uses=2]
%21 = fcmp une double %20, 0.000000e+00 ; <i1> [#uses=1]
br i1 %21, label %bb4.i9, label %bb.i7
bb.i7: ; preds = %bb3
%22 = load i8** %end.i6, align 8 ; <i8*> [#uses=2]
%23 = icmp eq i8* %22, %19 ; <i1> [#uses=1]
br i1 %23, label %bb4.i9, label %bb1.i8
bb1.i8: ; preds = %bb.i7
%24 = load i8* %22, align 1 ; <i8> [#uses=1]
switch i8 %24, label %bb4.i9 [
i8 88, label %bb5.i10
i8 120, label %bb5.i10
]
bb4.i9: ; preds = %bb1.i8, %bb.i7, %bb3
%25 = fptrunc double %20 to float ; <float> [#uses=1]
br label %_ZL10parsefloatPKc.exit11
bb5.i10: ; preds = %bb1.i8, %bb1.i8
%26 = call i64 @strtol(i8* noalias nocapture %19, i8** noalias null, i32 0) nounwind readonly ; <i64> [#uses=1]
%27 = trunc i64 %26 to i32 ; <i32> [#uses=1]
%28 = sitofp i32 %27 to float ; <float> [#uses=1]
br label %_ZL10parsefloatPKc.exit11
_ZL10parsefloatPKc.exit11: ; preds = %bb5.i10, %bb4.i9
%29 = phi float [ %28, %bb5.i10 ], [ %25, %bb4.i9 ] ; <float> [#uses=2]
%30 = fcmp ogt float %val.012, %29 ; <i1> [#uses=1]
%iftmp.224.0.i = select i1 %30, float %val.012, float %29 ; <float> [#uses=2]
%31 = load i32* %numargs, align 4 ; <i32> [#uses=1]
%32 = add nsw i32 %31, -1 ; <i32> [#uses=1]
%33 = icmp sgt i32 %32, %tmp14 ; <i1> [#uses=1]
br i1 %33, label %bb3, label %bb5
bb5: ; preds = %_ZL10parsefloatPKc.exit11, %bb4.preheader
%val.0.lcssa = phi float [ %val.0.ph, %bb4.preheader ], [ %iftmp.224.0.i, %_ZL10parsefloatPKc.exit11 ] ; <float> [#uses=3]
%34 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%35 = add nsw i32 %34, 1 ; <i32> [#uses=1]
%36 = srem i32 %35, 3 ; <i32> [#uses=2]
store i32 %36, i32* @_ZL6retidx, align 4
%37 = fpext float %val.0.lcssa to double ; <double> [#uses=1]
%38 = fptosi float %val.0.lcssa to i32 ; <i32> [#uses=1]
%39 = sitofp i32 %38 to float ; <float> [#uses=1]
%40 = fcmp oeq float %39, %val.0.lcssa ; <i1> [#uses=1]
%iftmp.145.0.i.i = select i1 %40, [5 x i8]* @.str, [5 x i8]* @.str1 ; <[5 x i8]*> [#uses=1]
%41 = getelementptr inbounds [5 x i8]* %iftmp.145.0.i.i, i64 0, i64 0 ; <i8*> [#uses=1]
%42 = sext i32 %36 to i64 ; <i64> [#uses=1]
%43 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %42, i64 0 ; <i8*> [#uses=1]
%44 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %43, i8** %44, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* %41, double %37) nounwind
%45 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%46 = sext i32 %45 to i64 ; <i64> [#uses=1]
%47 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %46, i64 0 ; <i8*> [#uses=2]
%48 = call i64 @strlen(i8* %47) nounwind readonly ; <i64> [#uses=2]
%49 = add i64 %48, 1 ; <i64> [#uses=2]
%50 = call i8* @_Znam(i64 %49) ; <i8*> [#uses=3]
%51 = call i8* @strncpy(i8* noalias %50, i8* noalias %47, i64 %49) nounwind ; <i8*> [#uses=0]
%52 = getelementptr inbounds i8* %50, i64 %48 ; <i8*> [#uses=1]
store i8 0, i8* %52, align 1
store i8* %50, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1147EE3runEPPcPi(i8** nocapture %args, i32* nocapture %numargs) align 2 {
entry:
%end.i6 = alloca i8*, align 8 ; <i8**> [#uses=2]
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%end.i = alloca i8*, align 8 ; <i8**> [#uses=2]
%1 = load i32* %numargs, align 4 ; <i32> [#uses=2]
%2 = icmp sgt i32 %1, 0 ; <i1> [#uses=1]
br i1 %2, label %bb, label %bb4.preheader
bb: ; preds = %entry
%3 = add nsw i32 %1, -1 ; <i32> [#uses=1]
%4 = sext i32 %3 to i64 ; <i64> [#uses=1]
%5 = getelementptr inbounds i8** %args, i64 %4 ; <i8**> [#uses=1]
%6 = load i8** %5, align 8 ; <i8*> [#uses=3]
%7 = call double @strtod(i8* noalias %6, i8** noalias %end.i) nounwind ; <double> [#uses=2]
%8 = fcmp une double %7, 0.000000e+00 ; <i1> [#uses=1]
br i1 %8, label %bb4.i, label %bb.i
bb.i: ; preds = %bb
%9 = load i8** %end.i, align 8 ; <i8*> [#uses=2]
%10 = icmp eq i8* %9, %6 ; <i1> [#uses=1]
br i1 %10, label %bb4.i, label %bb1.i
bb1.i: ; preds = %bb.i
%11 = load i8* %9, align 1 ; <i8> [#uses=1]
switch i8 %11, label %bb4.i [
i8 88, label %bb5.i
i8 120, label %bb5.i
]
bb4.i: ; preds = %bb1.i, %bb.i, %bb
%12 = fptrunc double %7 to float ; <float> [#uses=1]
br label %bb4.preheader
bb5.i: ; preds = %bb1.i, %bb1.i
%13 = call i64 @strtol(i8* noalias nocapture %6, i8** noalias null, i32 0) nounwind readonly ; <i64> [#uses=1]
%14 = trunc i64 %13 to i32 ; <i32> [#uses=1]
%15 = sitofp i32 %14 to float ; <float> [#uses=1]
br label %bb4.preheader
bb4.preheader: ; preds = %bb5.i, %bb4.i, %entry
%val.0.ph = phi float [ %15, %bb5.i ], [ %12, %bb4.i ], [ 0.000000e+00, %entry ] ; <float> [#uses=2]
%16 = load i32* %numargs, align 4 ; <i32> [#uses=1]
%17 = add nsw i32 %16, -1 ; <i32> [#uses=1]
%18 = icmp sgt i32 %17, 0 ; <i1> [#uses=1]
br i1 %18, label %bb3, label %bb5
bb3: ; preds = %_ZL10parsefloatPKc.exit11, %bb4.preheader
%indvar = phi i64 [ %tmp, %_ZL10parsefloatPKc.exit11 ], [ 0, %bb4.preheader ] ; <i64> [#uses=2]
%val.012 = phi float [ %iftmp.223.0.i, %_ZL10parsefloatPKc.exit11 ], [ %val.0.ph, %bb4.preheader ] ; <float> [#uses=2]
%scevgep = getelementptr i8** %args, i64 %indvar ; <i8**> [#uses=1]
%tmp = add i64 %indvar, 1 ; <i64> [#uses=2]
%tmp14 = trunc i64 %tmp to i32 ; <i32> [#uses=1]
%19 = load i8** %scevgep, align 8 ; <i8*> [#uses=3]
%20 = call double @strtod(i8* noalias %19, i8** noalias %end.i6) nounwind ; <double> [#uses=2]
%21 = fcmp une double %20, 0.000000e+00 ; <i1> [#uses=1]
br i1 %21, label %bb4.i9, label %bb.i7
bb.i7: ; preds = %bb3
%22 = load i8** %end.i6, align 8 ; <i8*> [#uses=2]
%23 = icmp eq i8* %22, %19 ; <i1> [#uses=1]
br i1 %23, label %bb4.i9, label %bb1.i8
bb1.i8: ; preds = %bb.i7
%24 = load i8* %22, align 1 ; <i8> [#uses=1]
switch i8 %24, label %bb4.i9 [
i8 88, label %bb5.i10
i8 120, label %bb5.i10
]
bb4.i9: ; preds = %bb1.i8, %bb.i7, %bb3
%25 = fptrunc double %20 to float ; <float> [#uses=1]
br label %_ZL10parsefloatPKc.exit11
bb5.i10: ; preds = %bb1.i8, %bb1.i8
%26 = call i64 @strtol(i8* noalias nocapture %19, i8** noalias null, i32 0) nounwind readonly ; <i64> [#uses=1]
%27 = trunc i64 %26 to i32 ; <i32> [#uses=1]
%28 = sitofp i32 %27 to float ; <float> [#uses=1]
br label %_ZL10parsefloatPKc.exit11
_ZL10parsefloatPKc.exit11: ; preds = %bb5.i10, %bb4.i9
%29 = phi float [ %28, %bb5.i10 ], [ %25, %bb4.i9 ] ; <float> [#uses=2]
%30 = fcmp olt float %val.012, %29 ; <i1> [#uses=1]
%iftmp.223.0.i = select i1 %30, float %val.012, float %29 ; <float> [#uses=2]
%31 = load i32* %numargs, align 4 ; <i32> [#uses=1]
%32 = add nsw i32 %31, -1 ; <i32> [#uses=1]
%33 = icmp sgt i32 %32, %tmp14 ; <i1> [#uses=1]
br i1 %33, label %bb3, label %bb5
bb5: ; preds = %_ZL10parsefloatPKc.exit11, %bb4.preheader
%val.0.lcssa = phi float [ %val.0.ph, %bb4.preheader ], [ %iftmp.223.0.i, %_ZL10parsefloatPKc.exit11 ] ; <float> [#uses=3]
%34 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%35 = add nsw i32 %34, 1 ; <i32> [#uses=1]
%36 = srem i32 %35, 3 ; <i32> [#uses=2]
store i32 %36, i32* @_ZL6retidx, align 4
%37 = fpext float %val.0.lcssa to double ; <double> [#uses=1]
%38 = fptosi float %val.0.lcssa to i32 ; <i32> [#uses=1]
%39 = sitofp i32 %38 to float ; <float> [#uses=1]
%40 = fcmp oeq float %39, %val.0.lcssa ; <i1> [#uses=1]
%iftmp.145.0.i.i = select i1 %40, [5 x i8]* @.str, [5 x i8]* @.str1 ; <[5 x i8]*> [#uses=1]
%41 = getelementptr inbounds [5 x i8]* %iftmp.145.0.i.i, i64 0, i64 0 ; <i8*> [#uses=1]
%42 = sext i32 %36 to i64 ; <i64> [#uses=1]
%43 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %42, i64 0 ; <i8*> [#uses=1]
%44 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %43, i8** %44, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* %41, double %37) nounwind
%45 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%46 = sext i32 %45 to i64 ; <i64> [#uses=1]
%47 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %46, i64 0 ; <i8*> [#uses=2]
%48 = call i64 @strlen(i8* %47) nounwind readonly ; <i64> [#uses=2]
%49 = add i64 %48, 1 ; <i64> [#uses=2]
%50 = call i8* @_Znam(i64 %49) ; <i8*> [#uses=3]
%51 = call i8* @strncpy(i8* noalias %50, i8* noalias %47, i64 %49) nounwind ; <i8*> [#uses=0]
%52 = getelementptr inbounds i8* %50, i64 %48 ; <i8*> [#uses=1]
store i8 0, i8* %52, align 1
store i8* %50, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1141EE3runEPPcPi(i8** nocapture %args, i32* nocapture %numargs) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load i32* %numargs, align 4 ; <i32> [#uses=4]
%2 = icmp sgt i32 %1, 0 ; <i1> [#uses=1]
br i1 %2, label %bb, label %bb4.preheader
bb: ; preds = %entry
%3 = add nsw i32 %1, -1 ; <i32> [#uses=1]
%4 = sext i32 %3 to i64 ; <i64> [#uses=1]
%5 = getelementptr inbounds i8** %args, i64 %4 ; <i8**> [#uses=1]
%6 = load i8** %5, align 8 ; <i8*> [#uses=1]
%7 = call i64 @strtol(i8* noalias nocapture %6, i8** noalias null, i32 0) nounwind readonly ; <i64> [#uses=1]
%8 = trunc i64 %7 to i32 ; <i32> [#uses=1]
br label %bb4.preheader
bb4.preheader: ; preds = %bb, %entry
%val.0.ph = phi i32 [ %8, %bb ], [ 0, %entry ] ; <i32> [#uses=2]
%9 = add nsw i32 %1, -1 ; <i32> [#uses=2]
%10 = icmp sgt i32 %9, 0 ; <i1> [#uses=1]
br i1 %10, label %bb.nph, label %bb5
bb.nph: ; preds = %bb4.preheader
%tmp = icmp sgt i32 %9, 1 ; <i1> [#uses=1]
%.op = add i32 %1, -2 ; <i32> [#uses=1]
%11 = zext i32 %.op to i64 ; <i64> [#uses=1]
%.op11 = add i64 %11, 1 ; <i64> [#uses=1]
%tmp10 = select i1 %tmp, i64 %.op11, i64 1 ; <i64> [#uses=1]
br label %bb3
bb3: ; preds = %bb3, %bb.nph
%indvar = phi i64 [ 0, %bb.nph ], [ %indvar.next, %bb3 ] ; <i64> [#uses=2]
%val.06 = phi i32 [ %val.0.ph, %bb.nph ], [ %iftmp.215.0.i, %bb3 ] ; <i32> [#uses=2]
%scevgep = getelementptr i8** %args, i64 %indvar ; <i8**> [#uses=1]
%12 = load i8** %scevgep, align 8 ; <i8*> [#uses=1]
%13 = call i64 @strtol(i8* noalias nocapture %12, i8** noalias null, i32 0) nounwind readonly ; <i64> [#uses=1]
%14 = trunc i64 %13 to i32 ; <i32> [#uses=2]
%15 = icmp sgt i32 %val.06, %14 ; <i1> [#uses=1]
%iftmp.215.0.i = select i1 %15, i32 %val.06, i32 %14 ; <i32> [#uses=2]
%indvar.next = add i64 %indvar, 1 ; <i64> [#uses=2]
%exitcond = icmp eq i64 %indvar.next, %tmp10 ; <i1> [#uses=1]
br i1 %exitcond, label %bb5, label %bb3
bb5: ; preds = %bb3, %bb4.preheader
%val.0.lcssa = phi i32 [ %val.0.ph, %bb4.preheader ], [ %iftmp.215.0.i, %bb3 ] ; <i32> [#uses=1]
%16 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%17 = add nsw i32 %16, 1 ; <i32> [#uses=1]
%18 = srem i32 %17, 3 ; <i32> [#uses=2]
store i32 %18, i32* @_ZL6retidx, align 4
%19 = sext i32 %18 to i64 ; <i64> [#uses=1]
%20 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %19, i64 0 ; <i8*> [#uses=1]
%21 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %20, i8** %21, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %val.0.lcssa) nounwind
%22 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%23 = sext i32 %22 to i64 ; <i64> [#uses=1]
%24 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %23, i64 0 ; <i8*> [#uses=2]
%25 = call i64 @strlen(i8* %24) nounwind readonly ; <i64> [#uses=2]
%26 = add i64 %25, 1 ; <i64> [#uses=2]
%27 = call i8* @_Znam(i64 %26) ; <i8*> [#uses=3]
%28 = call i8* @strncpy(i8* noalias %27, i8* noalias %24, i64 %26) nounwind ; <i8*> [#uses=0]
%29 = getelementptr inbounds i8* %27, i64 %25 ; <i8*> [#uses=1]
store i8 0, i8* %29, align 1
store i8* %27, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1135EE3runEPPcPi(i8** nocapture %args, i32* nocapture %numargs) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load i32* %numargs, align 4 ; <i32> [#uses=4]
%2 = icmp sgt i32 %1, 0 ; <i1> [#uses=1]
br i1 %2, label %bb, label %bb4.preheader
bb: ; preds = %entry
%3 = add nsw i32 %1, -1 ; <i32> [#uses=1]
%4 = sext i32 %3 to i64 ; <i64> [#uses=1]
%5 = getelementptr inbounds i8** %args, i64 %4 ; <i8**> [#uses=1]
%6 = load i8** %5, align 8 ; <i8*> [#uses=1]
%7 = call i64 @strtol(i8* noalias nocapture %6, i8** noalias null, i32 0) nounwind readonly ; <i64> [#uses=1]
%8 = trunc i64 %7 to i32 ; <i32> [#uses=1]
br label %bb4.preheader
bb4.preheader: ; preds = %bb, %entry
%val.0.ph = phi i32 [ %8, %bb ], [ 0, %entry ] ; <i32> [#uses=2]
%9 = add nsw i32 %1, -1 ; <i32> [#uses=2]
%10 = icmp sgt i32 %9, 0 ; <i1> [#uses=1]
br i1 %10, label %bb.nph, label %bb5
bb.nph: ; preds = %bb4.preheader
%tmp = icmp sgt i32 %9, 1 ; <i1> [#uses=1]
%.op = add i32 %1, -2 ; <i32> [#uses=1]
%11 = zext i32 %.op to i64 ; <i64> [#uses=1]
%.op11 = add i64 %11, 1 ; <i64> [#uses=1]
%tmp10 = select i1 %tmp, i64 %.op11, i64 1 ; <i64> [#uses=1]
br label %bb3
bb3: ; preds = %bb3, %bb.nph
%indvar = phi i64 [ 0, %bb.nph ], [ %indvar.next, %bb3 ] ; <i64> [#uses=2]
%val.06 = phi i32 [ %val.0.ph, %bb.nph ], [ %iftmp.222.0.i, %bb3 ] ; <i32> [#uses=2]
%scevgep = getelementptr i8** %args, i64 %indvar ; <i8**> [#uses=1]
%12 = load i8** %scevgep, align 8 ; <i8*> [#uses=1]
%13 = call i64 @strtol(i8* noalias nocapture %12, i8** noalias null, i32 0) nounwind readonly ; <i64> [#uses=1]
%14 = trunc i64 %13 to i32 ; <i32> [#uses=2]
%15 = icmp slt i32 %val.06, %14 ; <i1> [#uses=1]
%iftmp.222.0.i = select i1 %15, i32 %val.06, i32 %14 ; <i32> [#uses=2]
%indvar.next = add i64 %indvar, 1 ; <i64> [#uses=2]
%exitcond = icmp eq i64 %indvar.next, %tmp10 ; <i1> [#uses=1]
br i1 %exitcond, label %bb5, label %bb3
bb5: ; preds = %bb3, %bb4.preheader
%val.0.lcssa = phi i32 [ %val.0.ph, %bb4.preheader ], [ %iftmp.222.0.i, %bb3 ] ; <i32> [#uses=1]
%16 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%17 = add nsw i32 %16, 1 ; <i32> [#uses=1]
%18 = srem i32 %17, 3 ; <i32> [#uses=2]
store i32 %18, i32* @_ZL6retidx, align 4
%19 = sext i32 %18 to i64 ; <i64> [#uses=1]
%20 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %19, i64 0 ; <i8*> [#uses=1]
%21 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %20, i8** %21, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %val.0.lcssa) nounwind
%22 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%23 = sext i32 %22 to i64 ; <i64> [#uses=1]
%24 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %23, i64 0 ; <i8*> [#uses=2]
%25 = call i64 @strlen(i8* %24) nounwind readonly ; <i64> [#uses=2]
%26 = add i64 %25, 1 ; <i64> [#uses=2]
%27 = call i8* @_Znam(i64 %26) ; <i8*> [#uses=3]
%28 = call i8* @strncpy(i8* noalias %27, i8* noalias %24, i64 %26) nounwind ; <i8*> [#uses=0]
%29 = getelementptr inbounds i8* %27, i64 %25 ; <i8*> [#uses=1]
store i8 0, i8* %29, align 1
store i8* %27, i8** @commandret, align 8
ret void
}
define void @_Z6substrPcPiS_(i8* nocapture %s, i32* nocapture %start, i8* nocapture %count) {
entry:
%0 = tail call i64 @strlen(i8* %s) nounwind readonly ; <i64> [#uses=1]
%1 = trunc i64 %0 to i32 ; <i32> [#uses=3]
%2 = load i32* %start, align 4 ; <i32> [#uses=2]
%3 = icmp slt i32 %2, %1 ; <i1> [#uses=1]
%iftmp.222.0.i = select i1 %3, i32 %2, i32 %1 ; <i32> [#uses=2]
%4 = icmp slt i32 %iftmp.222.0.i, 0 ; <i1> [#uses=1]
%iftmp.215.0.i4 = select i1 %4, i32 0, i32 %iftmp.222.0.i ; <i32> [#uses=2]
%5 = load i8* %count, align 1 ; <i8> [#uses=1]
%6 = icmp eq i8 %5, 0 ; <i1> [#uses=1]
%7 = sub nsw i32 %1, %iftmp.215.0.i4 ; <i32> [#uses=3]
br i1 %6, label %bb2, label %bb
bb: ; preds = %entry
%8 = tail call i64 @strtol(i8* noalias nocapture %count, i8** noalias null, i32 0) nounwind readonly ; <i64> [#uses=1]
%9 = trunc i64 %8 to i32 ; <i32> [#uses=2]
%10 = icmp slt i32 %9, %7 ; <i1> [#uses=1]
%iftmp.222.0.i3 = select i1 %10, i32 %9, i32 %7 ; <i32> [#uses=2]
%11 = icmp slt i32 %iftmp.222.0.i3, 0 ; <i1> [#uses=1]
%iftmp.215.0.i = select i1 %11, i32 0, i32 %iftmp.222.0.i3 ; <i32> [#uses=1]
br label %bb2
bb2: ; preds = %bb, %entry
%iftmp.164.0.in = phi i32 [ %iftmp.215.0.i, %bb ], [ %7, %entry ] ; <i32> [#uses=1]
%iftmp.164.0 = sext i32 %iftmp.164.0.in to i64 ; <i64> [#uses=2]
%12 = sext i32 %iftmp.215.0.i4 to i64 ; <i64> [#uses=1]
%13 = getelementptr inbounds i8* %s, i64 %12 ; <i8*> [#uses=1]
%14 = add i64 %iftmp.164.0, 1 ; <i64> [#uses=2]
%15 = tail call i8* @_Znam(i64 %14) ; <i8*> [#uses=3]
%16 = tail call i8* @strncpy(i8* noalias %15, i8* noalias %13, i64 %14) nounwind ; <i8*> [#uses=0]
%17 = getelementptr inbounds i8* %15, i64 %iftmp.164.0 ; <i8*> [#uses=1]
store i8 0, i8* %17, align 1
store i8* %15, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi845EE3runEPcS1_S1_(i8* nocapture %cond, i8* nocapture %t, i8* nocapture %f) align 2 {
entry:
%0 = load i8* %cond, align 1 ; <i8> [#uses=3]
%1 = icmp eq i8 %0, 0 ; <i1> [#uses=1]
br i1 %1, label %bb6, label %bb
bb: ; preds = %entry
%2 = sext i8 %0 to i32 ; <i32> [#uses=1]
%3 = add i32 %2, -48 ; <i32> [#uses=1]
%4 = icmp ult i32 %3, 10 ; <i1> [#uses=1]
br i1 %4, label %bb4, label %bb.i
bb.i: ; preds = %bb
switch i8 %0, label %bb7 [
i8 43, label %_ZL9isintegerPc.exit
i8 45, label %_ZL9isintegerPc.exit
i8 46, label %_ZL9isintegerPc.exit
]
_ZL9isintegerPc.exit: ; preds = %bb.i, %bb.i, %bb.i
%5 = getelementptr inbounds i8* %cond, i64 1 ; <i8*> [#uses=1]
%6 = load i8* %5, align 1 ; <i8> [#uses=1]
%7 = sext i8 %6 to i32 ; <i32> [#uses=1]
%8 = add i32 %7, -48 ; <i32> [#uses=1]
%phitmp = icmp ugt i32 %8, 9 ; <i1> [#uses=1]
br i1 %phitmp, label %bb7, label %bb4
bb4: ; preds = %_ZL9isintegerPc.exit, %bb
%9 = tail call i64 @strtol(i8* noalias nocapture %cond, i8** noalias null, i32 0) nounwind readonly ; <i64> [#uses=1]
%10 = trunc i64 %9 to i32 ; <i32> [#uses=1]
%11 = icmp eq i32 %10, 0 ; <i1> [#uses=1]
br i1 %11, label %bb6, label %bb7
bb6: ; preds = %bb4, %entry
br label %bb7
bb7: ; preds = %bb6, %bb4, %_ZL9isintegerPc.exit, %bb.i
%iftmp.150.0 = phi i8* [ %f, %bb6 ], [ %t, %bb4 ], [ %t, %_ZL9isintegerPc.exit ], [ %t, %bb.i ] ; <i8*> [#uses=2]
%12 = tail call i64 @strlen(i8* %iftmp.150.0) nounwind readonly ; <i64> [#uses=2]
%13 = add i64 %12, 1 ; <i64> [#uses=2]
%14 = tail call i8* @_Znam(i64 %13) ; <i8*> [#uses=3]
%15 = tail call i8* @strncpy(i8* noalias %14, i8* noalias %iftmp.150.0, i64 %13) nounwind ; <i8*> [#uses=0]
%16 = getelementptr inbounds i8* %14, i64 %12 ; <i8*> [#uses=1]
store i8 0, i8* %16, align 1
store i8* %14, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1129EE3runEPf(float* nocapture %a) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load float* %a, align 4 ; <float> [#uses=1]
%2 = call float @llvm.exp.f32(float %1) ; <float> [#uses=3]
%3 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%4 = add nsw i32 %3, 1 ; <i32> [#uses=1]
%5 = srem i32 %4, 3 ; <i32> [#uses=2]
store i32 %5, i32* @_ZL6retidx, align 4
%6 = fpext float %2 to double ; <double> [#uses=1]
%7 = fptosi float %2 to i32 ; <i32> [#uses=1]
%8 = sitofp i32 %7 to float ; <float> [#uses=1]
%9 = fcmp oeq float %8, %2 ; <i1> [#uses=1]
%iftmp.145.0.i.i = select i1 %9, [5 x i8]* @.str, [5 x i8]* @.str1 ; <[5 x i8]*> [#uses=1]
%10 = getelementptr inbounds [5 x i8]* %iftmp.145.0.i.i, i64 0, i64 0 ; <i8*> [#uses=1]
%11 = sext i32 %5 to i64 ; <i64> [#uses=1]
%12 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %11, i64 0 ; <i8*> [#uses=1]
%13 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %12, i8** %13, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* %10, double %6) nounwind
%14 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%15 = sext i32 %14 to i64 ; <i64> [#uses=1]
%16 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %15, i64 0 ; <i8*> [#uses=2]
%17 = call i64 @strlen(i8* %16) nounwind readonly ; <i64> [#uses=2]
%18 = add i64 %17, 1 ; <i64> [#uses=2]
%19 = call i8* @_Znam(i64 %18) ; <i8*> [#uses=3]
%20 = call i8* @strncpy(i8* noalias %19, i8* noalias %16, i64 %18) nounwind ; <i8*> [#uses=0]
%21 = getelementptr inbounds i8* %19, i64 %17 ; <i8*> [#uses=1]
store i8 0, i8* %21, align 1
store i8* %19, i8** @commandret, align 8
ret void
}
declare float @llvm.exp.f32(float) nounwind readonly
define void @_ZN7_stdcmdILi1128EE3runEPf(float* nocapture %a) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load float* %a, align 4 ; <float> [#uses=1]
%2 = call float @llvm.log10.f32(float %1) ; <float> [#uses=3]
%3 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%4 = add nsw i32 %3, 1 ; <i32> [#uses=1]
%5 = srem i32 %4, 3 ; <i32> [#uses=2]
store i32 %5, i32* @_ZL6retidx, align 4
%6 = fpext float %2 to double ; <double> [#uses=1]
%7 = fptosi float %2 to i32 ; <i32> [#uses=1]
%8 = sitofp i32 %7 to float ; <float> [#uses=1]
%9 = fcmp oeq float %8, %2 ; <i1> [#uses=1]
%iftmp.145.0.i.i = select i1 %9, [5 x i8]* @.str, [5 x i8]* @.str1 ; <[5 x i8]*> [#uses=1]
%10 = getelementptr inbounds [5 x i8]* %iftmp.145.0.i.i, i64 0, i64 0 ; <i8*> [#uses=1]
%11 = sext i32 %5 to i64 ; <i64> [#uses=1]
%12 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %11, i64 0 ; <i8*> [#uses=1]
%13 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %12, i8** %13, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* %10, double %6) nounwind
%14 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%15 = sext i32 %14 to i64 ; <i64> [#uses=1]
%16 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %15, i64 0 ; <i8*> [#uses=2]
%17 = call i64 @strlen(i8* %16) nounwind readonly ; <i64> [#uses=2]
%18 = add i64 %17, 1 ; <i64> [#uses=2]
%19 = call i8* @_Znam(i64 %18) ; <i8*> [#uses=3]
%20 = call i8* @strncpy(i8* noalias %19, i8* noalias %16, i64 %18) nounwind ; <i8*> [#uses=0]
%21 = getelementptr inbounds i8* %19, i64 %17 ; <i8*> [#uses=1]
store i8 0, i8* %21, align 1
store i8* %19, i8** @commandret, align 8
ret void
}
declare float @llvm.log10.f32(float) nounwind readonly
define void @_ZN7_stdcmdILi1127EE3runEPf(float* nocapture %a) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load float* %a, align 4 ; <float> [#uses=1]
%2 = fpext float %1 to double ; <double> [#uses=1]
%3 = call double @llvm.log.f64(double %2) ; <double> [#uses=1]
%4 = fdiv double %3, 0x3FE62E42FEFA39EF ; <double> [#uses=1]
%5 = fptrunc double %4 to float ; <float> [#uses=3]
%6 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%7 = add nsw i32 %6, 1 ; <i32> [#uses=1]
%8 = srem i32 %7, 3 ; <i32> [#uses=2]
store i32 %8, i32* @_ZL6retidx, align 4
%9 = fpext float %5 to double ; <double> [#uses=1]
%10 = fptosi float %5 to i32 ; <i32> [#uses=1]
%11 = sitofp i32 %10 to float ; <float> [#uses=1]
%12 = fcmp oeq float %11, %5 ; <i1> [#uses=1]
%iftmp.145.0.i.i = select i1 %12, [5 x i8]* @.str, [5 x i8]* @.str1 ; <[5 x i8]*> [#uses=1]
%13 = getelementptr inbounds [5 x i8]* %iftmp.145.0.i.i, i64 0, i64 0 ; <i8*> [#uses=1]
%14 = sext i32 %8 to i64 ; <i64> [#uses=1]
%15 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %14, i64 0 ; <i8*> [#uses=1]
%16 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %15, i8** %16, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* %13, double %9) nounwind
%17 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%18 = sext i32 %17 to i64 ; <i64> [#uses=1]
%19 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %18, i64 0 ; <i8*> [#uses=2]
%20 = call i64 @strlen(i8* %19) nounwind readonly ; <i64> [#uses=2]
%21 = add i64 %20, 1 ; <i64> [#uses=2]
%22 = call i8* @_Znam(i64 %21) ; <i8*> [#uses=3]
%23 = call i8* @strncpy(i8* noalias %22, i8* noalias %19, i64 %21) nounwind ; <i8*> [#uses=0]
%24 = getelementptr inbounds i8* %22, i64 %20 ; <i8*> [#uses=1]
store i8 0, i8* %24, align 1
store i8* %22, i8** @commandret, align 8
ret void
}
declare double @llvm.log.f64(double) nounwind readonly
define void @_ZN7_stdcmdILi1126EE3runEPf(float* nocapture %a) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load float* %a, align 4 ; <float> [#uses=1]
%2 = call float @llvm.log.f32(float %1) ; <float> [#uses=3]
%3 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%4 = add nsw i32 %3, 1 ; <i32> [#uses=1]
%5 = srem i32 %4, 3 ; <i32> [#uses=2]
store i32 %5, i32* @_ZL6retidx, align 4
%6 = fpext float %2 to double ; <double> [#uses=1]
%7 = fptosi float %2 to i32 ; <i32> [#uses=1]
%8 = sitofp i32 %7 to float ; <float> [#uses=1]
%9 = fcmp oeq float %8, %2 ; <i1> [#uses=1]
%iftmp.145.0.i.i = select i1 %9, [5 x i8]* @.str, [5 x i8]* @.str1 ; <[5 x i8]*> [#uses=1]
%10 = getelementptr inbounds [5 x i8]* %iftmp.145.0.i.i, i64 0, i64 0 ; <i8*> [#uses=1]
%11 = sext i32 %5 to i64 ; <i64> [#uses=1]
%12 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %11, i64 0 ; <i8*> [#uses=1]
%13 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %12, i8** %13, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* %10, double %6) nounwind
%14 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%15 = sext i32 %14 to i64 ; <i64> [#uses=1]
%16 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %15, i64 0 ; <i8*> [#uses=2]
%17 = call i64 @strlen(i8* %16) nounwind readonly ; <i64> [#uses=2]
%18 = add i64 %17, 1 ; <i64> [#uses=2]
%19 = call i8* @_Znam(i64 %18) ; <i8*> [#uses=3]
%20 = call i8* @strncpy(i8* noalias %19, i8* noalias %16, i64 %18) nounwind ; <i8*> [#uses=0]
%21 = getelementptr inbounds i8* %19, i64 %17 ; <i8*> [#uses=1]
store i8 0, i8* %21, align 1
store i8* %19, i8** @commandret, align 8
ret void
}
declare float @llvm.log.f32(float) nounwind readonly
define void @_ZN7_stdcmdILi1125EE3runEPfS1_(float* nocapture %a, float* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load float* %b, align 4 ; <float> [#uses=1]
%2 = fpext float %1 to double ; <double> [#uses=1]
%3 = load float* %a, align 4 ; <float> [#uses=1]
%4 = fpext float %3 to double ; <double> [#uses=1]
%5 = call double @llvm.pow.f64(double %4, double %2) ; <double> [#uses=1]
%6 = fptrunc double %5 to float ; <float> [#uses=3]
%7 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%8 = add nsw i32 %7, 1 ; <i32> [#uses=1]
%9 = srem i32 %8, 3 ; <i32> [#uses=2]
store i32 %9, i32* @_ZL6retidx, align 4
%10 = fpext float %6 to double ; <double> [#uses=1]
%11 = fptosi float %6 to i32 ; <i32> [#uses=1]
%12 = sitofp i32 %11 to float ; <float> [#uses=1]
%13 = fcmp oeq float %12, %6 ; <i1> [#uses=1]
%iftmp.145.0.i.i = select i1 %13, [5 x i8]* @.str, [5 x i8]* @.str1 ; <[5 x i8]*> [#uses=1]
%14 = getelementptr inbounds [5 x i8]* %iftmp.145.0.i.i, i64 0, i64 0 ; <i8*> [#uses=1]
%15 = sext i32 %9 to i64 ; <i64> [#uses=1]
%16 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %15, i64 0 ; <i8*> [#uses=1]
%17 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %16, i8** %17, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* %14, double %10) nounwind
%18 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%19 = sext i32 %18 to i64 ; <i64> [#uses=1]
%20 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %19, i64 0 ; <i8*> [#uses=2]
%21 = call i64 @strlen(i8* %20) nounwind readonly ; <i64> [#uses=2]
%22 = add i64 %21, 1 ; <i64> [#uses=2]
%23 = call i8* @_Znam(i64 %22) ; <i8*> [#uses=3]
%24 = call i8* @strncpy(i8* noalias %23, i8* noalias %20, i64 %22) nounwind ; <i8*> [#uses=0]
%25 = getelementptr inbounds i8* %23, i64 %21 ; <i8*> [#uses=1]
store i8 0, i8* %25, align 1
store i8* %23, i8** @commandret, align 8
ret void
}
declare double @llvm.pow.f64(double, double) nounwind readonly
define void @_ZN7_stdcmdILi1124EE3runEPf(float* nocapture %a) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load float* %a, align 4 ; <float> [#uses=1]
%2 = call float @sqrtf(float %1) nounwind readonly ; <float> [#uses=3]
%3 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%4 = add nsw i32 %3, 1 ; <i32> [#uses=1]
%5 = srem i32 %4, 3 ; <i32> [#uses=2]
store i32 %5, i32* @_ZL6retidx, align 4
%6 = fpext float %2 to double ; <double> [#uses=1]
%7 = fptosi float %2 to i32 ; <i32> [#uses=1]
%8 = sitofp i32 %7 to float ; <float> [#uses=1]
%9 = fcmp oeq float %8, %2 ; <i1> [#uses=1]
%iftmp.145.0.i.i = select i1 %9, [5 x i8]* @.str, [5 x i8]* @.str1 ; <[5 x i8]*> [#uses=1]
%10 = getelementptr inbounds [5 x i8]* %iftmp.145.0.i.i, i64 0, i64 0 ; <i8*> [#uses=1]
%11 = sext i32 %5 to i64 ; <i64> [#uses=1]
%12 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %11, i64 0 ; <i8*> [#uses=1]
%13 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %12, i8** %13, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* %10, double %6) nounwind
%14 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%15 = sext i32 %14 to i64 ; <i64> [#uses=1]
%16 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %15, i64 0 ; <i8*> [#uses=2]
%17 = call i64 @strlen(i8* %16) nounwind readonly ; <i64> [#uses=2]
%18 = add i64 %17, 1 ; <i64> [#uses=2]
%19 = call i8* @_Znam(i64 %18) ; <i8*> [#uses=3]
%20 = call i8* @strncpy(i8* noalias %19, i8* noalias %16, i64 %18) nounwind ; <i8*> [#uses=0]
%21 = getelementptr inbounds i8* %19, i64 %17 ; <i8*> [#uses=1]
store i8 0, i8* %21, align 1
store i8* %19, i8** @commandret, align 8
ret void
}
declare float @sqrtf(float) nounwind readonly
define void @_ZN7_stdcmdILi1123EE3runEPf(float* nocapture %a) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load float* %a, align 4 ; <float> [#uses=1]
%2 = fpext float %1 to double ; <double> [#uses=1]
%3 = call double @atan(double %2) nounwind readonly ; <double> [#uses=1]
%4 = fdiv double %3, 0x3F91DF46A0000000 ; <double> [#uses=1]
%5 = fptrunc double %4 to float ; <float> [#uses=3]
%6 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%7 = add nsw i32 %6, 1 ; <i32> [#uses=1]
%8 = srem i32 %7, 3 ; <i32> [#uses=2]
store i32 %8, i32* @_ZL6retidx, align 4
%9 = fpext float %5 to double ; <double> [#uses=1]
%10 = fptosi float %5 to i32 ; <i32> [#uses=1]
%11 = sitofp i32 %10 to float ; <float> [#uses=1]
%12 = fcmp oeq float %11, %5 ; <i1> [#uses=1]
%iftmp.145.0.i.i = select i1 %12, [5 x i8]* @.str, [5 x i8]* @.str1 ; <[5 x i8]*> [#uses=1]
%13 = getelementptr inbounds [5 x i8]* %iftmp.145.0.i.i, i64 0, i64 0 ; <i8*> [#uses=1]
%14 = sext i32 %8 to i64 ; <i64> [#uses=1]
%15 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %14, i64 0 ; <i8*> [#uses=1]
%16 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %15, i8** %16, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* %13, double %9) nounwind
%17 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%18 = sext i32 %17 to i64 ; <i64> [#uses=1]
%19 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %18, i64 0 ; <i8*> [#uses=2]
%20 = call i64 @strlen(i8* %19) nounwind readonly ; <i64> [#uses=2]
%21 = add i64 %20, 1 ; <i64> [#uses=2]
%22 = call i8* @_Znam(i64 %21) ; <i8*> [#uses=3]
%23 = call i8* @strncpy(i8* noalias %22, i8* noalias %19, i64 %21) nounwind ; <i8*> [#uses=0]
%24 = getelementptr inbounds i8* %22, i64 %20 ; <i8*> [#uses=1]
store i8 0, i8* %24, align 1
store i8* %22, i8** @commandret, align 8
ret void
}
declare double @atan(double) nounwind readonly
define void @_ZN7_stdcmdILi1122EE3runEPf(float* nocapture %a) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load float* %a, align 4 ; <float> [#uses=1]
%2 = fpext float %1 to double ; <double> [#uses=1]
%3 = call double @acos(double %2) nounwind readonly ; <double> [#uses=1]
%4 = fdiv double %3, 0x3F91DF46A0000000 ; <double> [#uses=1]
%5 = fptrunc double %4 to float ; <float> [#uses=3]
%6 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%7 = add nsw i32 %6, 1 ; <i32> [#uses=1]
%8 = srem i32 %7, 3 ; <i32> [#uses=2]
store i32 %8, i32* @_ZL6retidx, align 4
%9 = fpext float %5 to double ; <double> [#uses=1]
%10 = fptosi float %5 to i32 ; <i32> [#uses=1]
%11 = sitofp i32 %10 to float ; <float> [#uses=1]
%12 = fcmp oeq float %11, %5 ; <i1> [#uses=1]
%iftmp.145.0.i.i = select i1 %12, [5 x i8]* @.str, [5 x i8]* @.str1 ; <[5 x i8]*> [#uses=1]
%13 = getelementptr inbounds [5 x i8]* %iftmp.145.0.i.i, i64 0, i64 0 ; <i8*> [#uses=1]
%14 = sext i32 %8 to i64 ; <i64> [#uses=1]
%15 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %14, i64 0 ; <i8*> [#uses=1]
%16 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %15, i8** %16, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* %13, double %9) nounwind
%17 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%18 = sext i32 %17 to i64 ; <i64> [#uses=1]
%19 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %18, i64 0 ; <i8*> [#uses=2]
%20 = call i64 @strlen(i8* %19) nounwind readonly ; <i64> [#uses=2]
%21 = add i64 %20, 1 ; <i64> [#uses=2]
%22 = call i8* @_Znam(i64 %21) ; <i8*> [#uses=3]
%23 = call i8* @strncpy(i8* noalias %22, i8* noalias %19, i64 %21) nounwind ; <i8*> [#uses=0]
%24 = getelementptr inbounds i8* %22, i64 %20 ; <i8*> [#uses=1]
store i8 0, i8* %24, align 1
store i8* %22, i8** @commandret, align 8
ret void
}
declare double @acos(double) nounwind readonly
define void @_ZN7_stdcmdILi1121EE3runEPf(float* nocapture %a) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load float* %a, align 4 ; <float> [#uses=1]
%2 = fpext float %1 to double ; <double> [#uses=1]
%3 = call double @asin(double %2) nounwind readonly ; <double> [#uses=1]
%4 = fdiv double %3, 0x3F91DF46A0000000 ; <double> [#uses=1]
%5 = fptrunc double %4 to float ; <float> [#uses=3]
%6 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%7 = add nsw i32 %6, 1 ; <i32> [#uses=1]
%8 = srem i32 %7, 3 ; <i32> [#uses=2]
store i32 %8, i32* @_ZL6retidx, align 4
%9 = fpext float %5 to double ; <double> [#uses=1]
%10 = fptosi float %5 to i32 ; <i32> [#uses=1]
%11 = sitofp i32 %10 to float ; <float> [#uses=1]
%12 = fcmp oeq float %11, %5 ; <i1> [#uses=1]
%iftmp.145.0.i.i = select i1 %12, [5 x i8]* @.str, [5 x i8]* @.str1 ; <[5 x i8]*> [#uses=1]
%13 = getelementptr inbounds [5 x i8]* %iftmp.145.0.i.i, i64 0, i64 0 ; <i8*> [#uses=1]
%14 = sext i32 %8 to i64 ; <i64> [#uses=1]
%15 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %14, i64 0 ; <i8*> [#uses=1]
%16 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %15, i8** %16, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* %13, double %9) nounwind
%17 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%18 = sext i32 %17 to i64 ; <i64> [#uses=1]
%19 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %18, i64 0 ; <i8*> [#uses=2]
%20 = call i64 @strlen(i8* %19) nounwind readonly ; <i64> [#uses=2]
%21 = add i64 %20, 1 ; <i64> [#uses=2]
%22 = call i8* @_Znam(i64 %21) ; <i8*> [#uses=3]
%23 = call i8* @strncpy(i8* noalias %22, i8* noalias %19, i64 %21) nounwind ; <i8*> [#uses=0]
%24 = getelementptr inbounds i8* %22, i64 %20 ; <i8*> [#uses=1]
store i8 0, i8* %24, align 1
store i8* %22, i8** @commandret, align 8
ret void
}
declare double @asin(double) nounwind readonly
define void @_ZN7_stdcmdILi1120EE3runEPf(float* nocapture %a) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load float* %a, align 4 ; <float> [#uses=1]
%2 = fmul float %1, 0x3F91DF46A0000000 ; <float> [#uses=1]
%3 = call float @tanf(float %2) nounwind readonly ; <float> [#uses=3]
%4 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%5 = add nsw i32 %4, 1 ; <i32> [#uses=1]
%6 = srem i32 %5, 3 ; <i32> [#uses=2]
store i32 %6, i32* @_ZL6retidx, align 4
%7 = fpext float %3 to double ; <double> [#uses=1]
%8 = fptosi float %3 to i32 ; <i32> [#uses=1]
%9 = sitofp i32 %8 to float ; <float> [#uses=1]
%10 = fcmp oeq float %9, %3 ; <i1> [#uses=1]
%iftmp.145.0.i.i = select i1 %10, [5 x i8]* @.str, [5 x i8]* @.str1 ; <[5 x i8]*> [#uses=1]
%11 = getelementptr inbounds [5 x i8]* %iftmp.145.0.i.i, i64 0, i64 0 ; <i8*> [#uses=1]
%12 = sext i32 %6 to i64 ; <i64> [#uses=1]
%13 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %12, i64 0 ; <i8*> [#uses=1]
%14 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %13, i8** %14, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* %11, double %7) nounwind
%15 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%16 = sext i32 %15 to i64 ; <i64> [#uses=1]
%17 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %16, i64 0 ; <i8*> [#uses=2]
%18 = call i64 @strlen(i8* %17) nounwind readonly ; <i64> [#uses=2]
%19 = add i64 %18, 1 ; <i64> [#uses=2]
%20 = call i8* @_Znam(i64 %19) ; <i8*> [#uses=3]
%21 = call i8* @strncpy(i8* noalias %20, i8* noalias %17, i64 %19) nounwind ; <i8*> [#uses=0]
%22 = getelementptr inbounds i8* %20, i64 %18 ; <i8*> [#uses=1]
store i8 0, i8* %22, align 1
store i8* %20, i8** @commandret, align 8
ret void
}
declare float @tanf(float) nounwind readonly
define void @_ZN7_stdcmdILi1119EE3runEPf(float* nocapture %a) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load float* %a, align 4 ; <float> [#uses=1]
%2 = fmul float %1, 0x3F91DF46A0000000 ; <float> [#uses=1]
%3 = call float @cosf(float %2) nounwind readonly ; <float> [#uses=3]
%4 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%5 = add nsw i32 %4, 1 ; <i32> [#uses=1]
%6 = srem i32 %5, 3 ; <i32> [#uses=2]
store i32 %6, i32* @_ZL6retidx, align 4
%7 = fpext float %3 to double ; <double> [#uses=1]
%8 = fptosi float %3 to i32 ; <i32> [#uses=1]
%9 = sitofp i32 %8 to float ; <float> [#uses=1]
%10 = fcmp oeq float %9, %3 ; <i1> [#uses=1]
%iftmp.145.0.i.i = select i1 %10, [5 x i8]* @.str, [5 x i8]* @.str1 ; <[5 x i8]*> [#uses=1]
%11 = getelementptr inbounds [5 x i8]* %iftmp.145.0.i.i, i64 0, i64 0 ; <i8*> [#uses=1]
%12 = sext i32 %6 to i64 ; <i64> [#uses=1]
%13 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %12, i64 0 ; <i8*> [#uses=1]
%14 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %13, i8** %14, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* %11, double %7) nounwind
%15 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%16 = sext i32 %15 to i64 ; <i64> [#uses=1]
%17 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %16, i64 0 ; <i8*> [#uses=2]
%18 = call i64 @strlen(i8* %17) nounwind readonly ; <i64> [#uses=2]
%19 = add i64 %18, 1 ; <i64> [#uses=2]
%20 = call i8* @_Znam(i64 %19) ; <i8*> [#uses=3]
%21 = call i8* @strncpy(i8* noalias %20, i8* noalias %17, i64 %19) nounwind ; <i8*> [#uses=0]
%22 = getelementptr inbounds i8* %20, i64 %18 ; <i8*> [#uses=1]
store i8 0, i8* %22, align 1
store i8* %20, i8** @commandret, align 8
ret void
}
declare float @cosf(float) nounwind readonly
define void @_ZN7_stdcmdILi1118EE3runEPf(float* nocapture %a) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load float* %a, align 4 ; <float> [#uses=1]
%2 = fmul float %1, 0x3F91DF46A0000000 ; <float> [#uses=1]
%3 = call float @sinf(float %2) nounwind readonly ; <float> [#uses=3]
%4 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%5 = add nsw i32 %4, 1 ; <i32> [#uses=1]
%6 = srem i32 %5, 3 ; <i32> [#uses=2]
store i32 %6, i32* @_ZL6retidx, align 4
%7 = fpext float %3 to double ; <double> [#uses=1]
%8 = fptosi float %3 to i32 ; <i32> [#uses=1]
%9 = sitofp i32 %8 to float ; <float> [#uses=1]
%10 = fcmp oeq float %9, %3 ; <i1> [#uses=1]
%iftmp.145.0.i.i = select i1 %10, [5 x i8]* @.str, [5 x i8]* @.str1 ; <[5 x i8]*> [#uses=1]
%11 = getelementptr inbounds [5 x i8]* %iftmp.145.0.i.i, i64 0, i64 0 ; <i8*> [#uses=1]
%12 = sext i32 %6 to i64 ; <i64> [#uses=1]
%13 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %12, i64 0 ; <i8*> [#uses=1]
%14 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %13, i8** %14, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* %11, double %7) nounwind
%15 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%16 = sext i32 %15 to i64 ; <i64> [#uses=1]
%17 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %16, i64 0 ; <i8*> [#uses=2]
%18 = call i64 @strlen(i8* %17) nounwind readonly ; <i64> [#uses=2]
%19 = add i64 %18, 1 ; <i64> [#uses=2]
%20 = call i8* @_Znam(i64 %19) ; <i8*> [#uses=3]
%21 = call i8* @strncpy(i8* noalias %20, i8* noalias %17, i64 %19) nounwind ; <i8*> [#uses=0]
%22 = getelementptr inbounds i8* %20, i64 %18 ; <i8*> [#uses=1]
store i8 0, i8* %22, align 1
store i8* %20, i8** @commandret, align 8
ret void
}
declare float @sinf(float) nounwind readonly
define void @_ZN7_stdcmdILi1117EE3runEPfS1_(float* nocapture %a, float* nocapture %b) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = load float* %b, align 4 ; <float> [#uses=2]
%2 = fcmp une float %1, 0.000000e+00 ; <i1> [#uses=1]
br i1 %2, label %bb, label %bb2
bb: ; preds = %entry
%3 = fpext float %1 to double ; <double> [#uses=1]
%4 = load float* %a, align 4 ; <float> [#uses=1]
%5 = fpext float %4 to double ; <double> [#uses=1]
%6 = call double @fmod(double %5, double %3) nounwind readonly ; <double> [#uses=1]
%7 = fptrunc double %6 to float ; <float> [#uses=1]
br label %bb2
bb2: ; preds = %bb, %entry
%iftmp.183.0 = phi float [ %7, %bb ], [ 0.000000e+00, %entry ] ; <float> [#uses=3]
%8 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%9 = add nsw i32 %8, 1 ; <i32> [#uses=1]
%10 = srem i32 %9, 3 ; <i32> [#uses=2]
store i32 %10, i32* @_ZL6retidx, align 4
%11 = fpext float %iftmp.183.0 to double ; <double> [#uses=1]
%12 = fptosi float %iftmp.183.0 to i32 ; <i32> [#uses=1]
%13 = sitofp i32 %12 to float ; <float> [#uses=1]
%14 = fcmp oeq float %13, %iftmp.183.0 ; <i1> [#uses=1]
%iftmp.145.0.i.i = select i1 %14, [5 x i8]* @.str, [5 x i8]* @.str1 ; <[5 x i8]*> [#uses=1]
%15 = getelementptr inbounds [5 x i8]* %iftmp.145.0.i.i, i64 0, i64 0 ; <i8*> [#uses=1]
%16 = sext i32 %10 to i64 ; <i64> [#uses=1]
%17 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %16, i64 0 ; <i8*> [#uses=1]
%18 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %17, i8** %18, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* %15, double %11) nounwind
%19 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%20 = sext i32 %19 to i64 ; <i64> [#uses=1]
%21 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %20, i64 0 ; <i8*> [#uses=2]
%22 = call i64 @strlen(i8* %21) nounwind readonly ; <i64> [#uses=2]
%23 = add i64 %22, 1 ; <i64> [#uses=2]
%24 = call i8* @_Znam(i64 %23) ; <i8*> [#uses=3]
%25 = call i8* @strncpy(i8* noalias %24, i8* noalias %21, i64 %23) nounwind ; <i8*> [#uses=0]
%26 = getelementptr inbounds i8* %24, i64 %22 ; <i8*> [#uses=1]
store i8 0, i8* %26, align 1
store i8* %24, i8** @commandret, align 8
ret void
}
declare double @fmod(double, double) nounwind readonly
define i32 @_Z7listlenPKc(i8* %s) nounwind readonly {
entry:
%0 = tail call i64 @strspn(i8* %s, i8* getelementptr inbounds ([4 x i8]* @.str12, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=1]
%1 = getelementptr inbounds i8* %s, i64 %0 ; <i8*> [#uses=2]
%2 = load i8* %1, align 1 ; <i8> [#uses=2]
%3 = icmp eq i8 %2, 0 ; <i1> [#uses=1]
br i1 %3, label %bb5, label %bb
bb: ; preds = %bb3, %entry
%4 = phi i8 [ %15, %bb3 ], [ %2, %entry ] ; <i8> [#uses=1]
%s_addr.19 = phi i8* [ %14, %bb3 ], [ %1, %entry ] ; <i8*> [#uses=5]
%n.08 = phi i32 [ %tmp, %bb3 ], [ 0, %entry ] ; <i32> [#uses=1]
%tmp = add i32 %n.08, 1 ; <i32> [#uses=2]
%5 = icmp eq i8 %4, 34 ; <i1> [#uses=1]
br i1 %5, label %bb1, label %bb2
bb1: ; preds = %bb
%6 = getelementptr inbounds i8* %s_addr.19, i64 1 ; <i8*> [#uses=1]
%7 = tail call i64 @strcspn(i8* %6, i8* getelementptr inbounds ([4 x i8]* @.str13, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=1]
%.sum = add i64 %7, 1 ; <i64> [#uses=2]
%8 = getelementptr inbounds i8* %s_addr.19, i64 %.sum ; <i8*> [#uses=1]
%9 = load i8* %8, align 1 ; <i8> [#uses=1]
%10 = icmp eq i8 %9, 34 ; <i1> [#uses=1]
%11 = zext i1 %10 to i64 ; <i64> [#uses=1]
%.sum7 = add i64 %11, %.sum ; <i64> [#uses=1]
br label %bb3
bb2: ; preds = %bb
%12 = tail call i64 @strcspn(i8* %s_addr.19, i8* getelementptr inbounds ([5 x i8]* @.str14, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=1]
br label %bb3
bb3: ; preds = %bb2, %bb1
%.sum7.pn = phi i64 [ %.sum7, %bb1 ], [ %12, %bb2 ] ; <i64> [#uses=2]
%s_addr.0 = getelementptr inbounds i8* %s_addr.19, i64 %.sum7.pn ; <i8*> [#uses=1]
%13 = tail call i64 @strspn(i8* %s_addr.0, i8* getelementptr inbounds ([4 x i8]* @.str12, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=1]
%s_addr.0.sum = add i64 %13, %.sum7.pn ; <i64> [#uses=1]
%14 = getelementptr inbounds i8* %s_addr.19, i64 %s_addr.0.sum ; <i8*> [#uses=2]
%15 = load i8* %14, align 1 ; <i8> [#uses=2]
%16 = icmp eq i8 %15, 0 ; <i1> [#uses=1]
br i1 %16, label %bb5, label %bb
bb5: ; preds = %bb3, %entry
%n.0.lcssa = phi i32 [ 0, %entry ], [ %tmp, %bb3 ] ; <i32> [#uses=1]
ret i32 %n.0.lcssa
}
declare i64 @strspn(i8* nocapture, i8* nocapture) nounwind readonly
declare i64 @strcspn(i8*, i8*) nounwind readonly
define void @_Z10prettylistPKcS0_(i8* %s, i8* nocapture %conj) {
entry:
%0 = tail call i64 @strspn(i8* %s, i8* getelementptr inbounds ([4 x i8]* @.str12, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=2]
%1 = getelementptr inbounds i8* %s, i64 %0 ; <i8*> [#uses=2]
%2 = tail call i64 @strspn(i8* %1, i8* getelementptr inbounds ([4 x i8]* @.str12, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=1]
%.sum120 = add i64 %2, %0 ; <i64> [#uses=1]
%3 = getelementptr inbounds i8* %s, i64 %.sum120 ; <i8*> [#uses=2]
%4 = load i8* %3, align 1 ; <i8> [#uses=2]
%5 = icmp eq i8 %4, 0 ; <i1> [#uses=1]
br i1 %5, label %_Z7listlenPKc.exit, label %bb.i117
bb.i117: ; preds = %bb3.i, %entry
%6 = phi i8 [ %17, %bb3.i ], [ %4, %entry ] ; <i8> [#uses=1]
%s_addr.19.i = phi i8* [ %16, %bb3.i ], [ %3, %entry ] ; <i8*> [#uses=5]
%n.08.i = phi i32 [ %tmp.i, %bb3.i ], [ 0, %entry ] ; <i32> [#uses=1]
%tmp.i = add i32 %n.08.i, 1 ; <i32> [#uses=2]
%7 = icmp eq i8 %6, 34 ; <i1> [#uses=1]
br i1 %7, label %bb1.i118, label %bb2.i119
bb1.i118: ; preds = %bb.i117
%8 = getelementptr inbounds i8* %s_addr.19.i, i64 1 ; <i8*> [#uses=1]
%9 = tail call i64 @strcspn(i8* %8, i8* getelementptr inbounds ([4 x i8]* @.str13, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=1]
%.sum.i = add i64 %9, 1 ; <i64> [#uses=2]
%10 = getelementptr inbounds i8* %s_addr.19.i, i64 %.sum.i ; <i8*> [#uses=1]
%11 = load i8* %10, align 1 ; <i8> [#uses=1]
%12 = icmp eq i8 %11, 34 ; <i1> [#uses=1]
%13 = zext i1 %12 to i64 ; <i64> [#uses=1]
%.sum7.i = add i64 %13, %.sum.i ; <i64> [#uses=1]
br label %bb3.i
bb2.i119: ; preds = %bb.i117
%14 = tail call i64 @strcspn(i8* %s_addr.19.i, i8* getelementptr inbounds ([5 x i8]* @.str14, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=1]
br label %bb3.i
bb3.i: ; preds = %bb2.i119, %bb1.i118
%.sum7.pn.i = phi i64 [ %.sum7.i, %bb1.i118 ], [ %14, %bb2.i119 ] ; <i64> [#uses=2]
%s_addr.0.i = getelementptr inbounds i8* %s_addr.19.i, i64 %.sum7.pn.i ; <i8*> [#uses=1]
%15 = tail call i64 @strspn(i8* %s_addr.0.i, i8* getelementptr inbounds ([4 x i8]* @.str12, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=1]
%s_addr.0.sum.i = add i64 %15, %.sum7.pn.i ; <i64> [#uses=1]
%16 = getelementptr inbounds i8* %s_addr.19.i, i64 %s_addr.0.sum.i ; <i8*> [#uses=2]
%17 = load i8* %16, align 1 ; <i8> [#uses=2]
%18 = icmp eq i8 %17, 0 ; <i1> [#uses=1]
br i1 %18, label %_Z7listlenPKc.exit, label %bb.i117
_Z7listlenPKc.exit: ; preds = %bb3.i, %entry
%n.0.lcssa.i = phi i32 [ 0, %entry ], [ %tmp.i, %bb3.i ] ; <i32> [#uses=3]
%19 = icmp sgt i32 %n.0.lcssa.i, 2 ; <i1> [#uses=1]
br label %bb16
bb1: ; preds = %bb16
%20 = getelementptr inbounds i8* %s_addr.1, i64 1 ; <i8*> [#uses=1]
%21 = tail call i64 @strcspn(i8* %20, i8* getelementptr inbounds ([4 x i8]* @.str13, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=1]
%.sum = add i64 %21, 1 ; <i64> [#uses=2]
%22 = getelementptr inbounds i8* %s_addr.1, i64 %.sum ; <i8*> [#uses=1]
%23 = load i8* %22, align 1 ; <i8> [#uses=1]
%24 = icmp eq i8 %23, 34 ; <i1> [#uses=1]
%25 = zext i1 %24 to i64 ; <i64> [#uses=1]
%.sum32 = add i64 %25, %.sum ; <i64> [#uses=1]
br label %bb3
bb2: ; preds = %bb16
%26 = tail call i64 @strcspn(i8* %s_addr.1, i8* getelementptr inbounds ([5 x i8]* @.str14, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=1]
br label %bb3
bb3: ; preds = %bb2, %bb1
%.sum32.pn = phi i64 [ %.sum32, %bb1 ], [ %26, %bb2 ] ; <i64> [#uses=3]
%s_addr.0 = getelementptr inbounds i8* %s_addr.1, i64 %.sum32.pn ; <i8*> [#uses=1]
%27 = trunc i64 %.sum32.pn to i32 ; <i32> [#uses=2]
%28 = add nsw i32 %27, %p.2.0 ; <i32> [#uses=11]
%29 = icmp sgt i32 %28, %p.1.2 ; <i1> [#uses=1]
br i1 %29, label %bb.i.i102, label %invcont
bb.i.i102: ; preds = %bb3
%30 = icmp eq i32 %p.1.2, 0 ; <i1> [#uses=1]
br i1 %30, label %bb.i.i.i105, label %bb2.preheader.i.i.i103
bb2.preheader.i.i.i103: ; preds = %bb.i.i102
%31 = icmp slt i32 %p.1.2, %28 ; <i1> [#uses=1]
br i1 %31, label %bb1.i.i.i107, label %invcont
bb.i.i.i105: ; preds = %bb.i.i102
%32 = icmp slt i32 %28, 8 ; <i1> [#uses=1]
%iftmp.215.0.i.i.i.i104 = select i1 %32, i32 8, i32 %28 ; <i32> [#uses=1]
br label %bb3.i.i.i109
bb1.i.i.i107: ; preds = %bb1.i.i.i107, %bb2.preheader.i.i.i103
%.tmp.0.i.i.i106 = phi i32 [ %33, %bb1.i.i.i107 ], [ %p.1.2, %bb2.preheader.i.i.i103 ] ; <i32> [#uses=1]
%33 = shl i32 %.tmp.0.i.i.i106, 1 ; <i32> [#uses=3]
%34 = icmp slt i32 %33, %28 ; <i1> [#uses=1]
br i1 %34, label %bb1.i.i.i107, label %bb3.i.i.i109
bb3.i.i.i109: ; preds = %bb1.i.i.i107, %bb.i.i.i105
%p.1.0 = phi i32 [ %iftmp.215.0.i.i.i.i104, %bb.i.i.i105 ], [ %33, %bb1.i.i.i107 ] ; <i32> [#uses=6]
%35 = icmp sgt i32 %p.1.0, %p.1.2 ; <i1> [#uses=1]
br i1 %35, label %bb4.i.i.i110, label %invcont
bb4.i.i.i110: ; preds = %bb3.i.i.i109
%36 = sext i32 %p.1.0 to i64 ; <i64> [#uses=1]
%37 = invoke i8* @_Znam(i64 %36)
to label %.noexc115 unwind label %lpad ; <i8*> [#uses=4]
.noexc115: ; preds = %bb4.i.i.i110
%38 = icmp sgt i32 %p.1.2, 0 ; <i1> [#uses=1]
br i1 %38, label %bb5.i.i.i111, label %invcont
bb5.i.i.i111: ; preds = %.noexc115
%39 = sext i32 %p.1.2 to i64 ; <i64> [#uses=1]
tail call void @llvm.memcpy.i64(i8* %37, i8* %p.0.1, i64 %39, i32 1)
%40 = icmp eq i8* %p.0.1, null ; <i1> [#uses=1]
br i1 %40, label %invcont, label %bb6.i.i.i112
bb6.i.i.i112: ; preds = %bb5.i.i.i111
tail call void @_ZdaPv(i8* %p.0.1) nounwind
br label %invcont
invcont: ; preds = %bb6.i.i.i112, %bb5.i.i.i111, %.noexc115, %bb3.i.i.i109, %bb2.preheader.i.i.i103, %bb3
%p.1.1 = phi i32 [ %p.1.0, %bb3.i.i.i109 ], [ %p.1.2, %bb2.preheader.i.i.i103 ], [ %p.1.2, %bb3 ], [ %p.1.0, %bb6.i.i.i112 ], [ %p.1.0, %bb5.i.i.i111 ], [ %p.1.0, %.noexc115 ] ; <i32> [#uses=11]
%p.0.0 = phi i8* [ %p.0.1, %bb3.i.i.i109 ], [ %p.0.1, %bb2.preheader.i.i.i103 ], [ %p.0.1, %bb3 ], [ %37, %bb6.i.i.i112 ], [ %37, %bb5.i.i.i111 ], [ %37, %.noexc115 ] ; <i8*> [#uses=10]
%41 = sext i32 %p.2.0 to i64 ; <i64> [#uses=1]
%42 = getelementptr inbounds i8* %p.0.0, i64 %41 ; <i8*> [#uses=1]
%43 = sext i32 %27 to i64 ; <i64> [#uses=1]
tail call void @llvm.memcpy.i64(i8* %42, i8* %s_addr.1, i64 %43, i32 1) nounwind
%44 = icmp slt i32 %tmp143, %n.0.lcssa.i ; <i1> [#uses=1]
br i1 %44, label %bb4, label %bb15
bb4: ; preds = %invcont
br i1 %19, label %bb6, label %bb5
bb5: ; preds = %bb4
%45 = load i8* %conj, align 1 ; <i8> [#uses=1]
%46 = icmp eq i8 %45, 0 ; <i1> [#uses=1]
br i1 %46, label %bb6, label %bb8
bb6: ; preds = %bb5, %bb4
%47 = icmp eq i32 %28, %p.1.1 ; <i1> [#uses=1]
br i1 %47, label %bb.i83, label %bb1.i96
bb.i83: ; preds = %bb6
%48 = add nsw i32 %28, 1 ; <i32> [#uses=4]
%49 = icmp eq i32 %p.1.1, 0 ; <i1> [#uses=1]
br i1 %49, label %bb.i.i86, label %bb2.preheader.i.i84
bb2.preheader.i.i84: ; preds = %bb.i83
%50 = icmp slt i32 %p.1.1, %48 ; <i1> [#uses=1]
br i1 %50, label %bb1.i.i88, label %bb1.i96
bb.i.i86: ; preds = %bb.i83
%51 = icmp slt i32 %48, 8 ; <i1> [#uses=1]
%iftmp.215.0.i.i.i85 = select i1 %51, i32 8, i32 %48 ; <i32> [#uses=1]
br label %bb3.i.i90
bb1.i.i88: ; preds = %bb1.i.i88, %bb2.preheader.i.i84
%.tmp.0.i.i87 = phi i32 [ %52, %bb1.i.i88 ], [ %p.1.1, %bb2.preheader.i.i84 ] ; <i32> [#uses=1]
%52 = shl i32 %.tmp.0.i.i87, 1 ; <i32> [#uses=3]
%53 = icmp slt i32 %52, %48 ; <i1> [#uses=1]
br i1 %53, label %bb1.i.i88, label %bb3.i.i90
bb3.i.i90: ; preds = %bb1.i.i88, %bb.i.i86
%p.1.3 = phi i32 [ %iftmp.215.0.i.i.i85, %bb.i.i86 ], [ %52, %bb1.i.i88 ] ; <i32> [#uses=6]
%54 = icmp sgt i32 %p.1.3, %p.1.1 ; <i1> [#uses=1]
br i1 %54, label %bb4.i.i91, label %bb1.i96
bb4.i.i91: ; preds = %bb3.i.i90
%55 = sext i32 %p.1.3 to i64 ; <i64> [#uses=1]
%56 = invoke i8* @_Znam(i64 %55)
to label %.noexc100 unwind label %lpad ; <i8*> [#uses=4]
.noexc100: ; preds = %bb4.i.i91
%57 = icmp sgt i32 %p.1.1, 0 ; <i1> [#uses=1]
br i1 %57, label %bb5.i.i92, label %bb1.i96
bb5.i.i92: ; preds = %.noexc100
%58 = sext i32 %p.1.1 to i64 ; <i64> [#uses=1]
tail call void @llvm.memcpy.i64(i8* %56, i8* %p.0.0, i64 %58, i32 1)
%59 = icmp eq i8* %p.0.0, null ; <i1> [#uses=1]
br i1 %59, label %bb1.i96, label %bb6.i.i93
bb6.i.i93: ; preds = %bb5.i.i92
tail call void @_ZdaPv(i8* %p.0.0) nounwind
br label %bb1.i96
bb1.i96: ; preds = %bb6.i.i93, %bb5.i.i92, %.noexc100, %bb3.i.i90, %bb2.preheader.i.i84, %bb6
%p.1.4 = phi i32 [ %p.1.3, %bb3.i.i90 ], [ %p.1.1, %bb2.preheader.i.i84 ], [ %p.1.1, %bb6 ], [ %p.1.3, %bb6.i.i93 ], [ %p.1.3, %bb5.i.i92 ], [ %p.1.3, %.noexc100 ] ; <i32> [#uses=1]
%p.0.3 = phi i8* [ %p.0.0, %bb3.i.i90 ], [ %p.0.0, %bb2.preheader.i.i84 ], [ %p.0.0, %bb6 ], [ %56, %bb6.i.i93 ], [ %56, %bb5.i.i92 ], [ %56, %.noexc100 ] ; <i8*> [#uses=2]
%60 = sext i32 %28 to i64 ; <i64> [#uses=1]
%61 = getelementptr inbounds i8* %p.0.3, i64 %60 ; <i8*> [#uses=2]
%62 = icmp eq i8* %61, null ; <i1> [#uses=1]
br i1 %62, label %_ZN6vectorIcE3addERKc.exit101, label %bb2.i99
bb2.i99: ; preds = %bb1.i96
store i8 44, i8* %61, align 1
br label %_ZN6vectorIcE3addERKc.exit101
_ZN6vectorIcE3addERKc.exit101: ; preds = %bb2.i99, %bb1.i96
%63 = add nsw i32 %28, 1 ; <i32> [#uses=1]
br label %bb8
bb8: ; preds = %_ZN6vectorIcE3addERKc.exit101, %bb5
%p.2.2 = phi i32 [ %63, %_ZN6vectorIcE3addERKc.exit101 ], [ %28, %bb5 ] ; <i32> [#uses=6]
%p.1.5 = phi i32 [ %p.1.4, %_ZN6vectorIcE3addERKc.exit101 ], [ %p.1.1, %bb5 ] ; <i32> [#uses=11]
%p.0.4 = phi i8* [ %p.0.3, %_ZN6vectorIcE3addERKc.exit101 ], [ %p.0.0, %bb5 ] ; <i8*> [#uses=9]
%64 = icmp eq i32 %tmp, %n.0.lcssa.i ; <i1> [#uses=1]
br i1 %64, label %bb9, label %bb13
bb9: ; preds = %bb8
%65 = load i8* %conj, align 1 ; <i8> [#uses=1]
%66 = icmp eq i8 %65, 0 ; <i1> [#uses=1]
br i1 %66, label %bb13, label %bb10
bb10: ; preds = %bb9
%67 = icmp eq i32 %p.2.2, %p.1.5 ; <i1> [#uses=1]
br i1 %67, label %bb.i64, label %bb1.i77
bb.i64: ; preds = %bb10
%68 = add nsw i32 %p.2.2, 1 ; <i32> [#uses=4]
%69 = icmp eq i32 %p.1.5, 0 ; <i1> [#uses=1]
br i1 %69, label %bb.i.i67, label %bb2.preheader.i.i65
bb2.preheader.i.i65: ; preds = %bb.i64
%70 = icmp slt i32 %p.1.5, %68 ; <i1> [#uses=1]
br i1 %70, label %bb1.i.i69, label %bb1.i77
bb.i.i67: ; preds = %bb.i64
%71 = icmp slt i32 %68, 8 ; <i1> [#uses=1]
%iftmp.215.0.i.i.i66 = select i1 %71, i32 8, i32 %68 ; <i32> [#uses=1]
br label %bb3.i.i71
bb1.i.i69: ; preds = %bb1.i.i69, %bb2.preheader.i.i65
%.tmp.0.i.i68 = phi i32 [ %72, %bb1.i.i69 ], [ %p.1.5, %bb2.preheader.i.i65 ] ; <i32> [#uses=1]
%72 = shl i32 %.tmp.0.i.i68, 1 ; <i32> [#uses=3]
%73 = icmp slt i32 %72, %68 ; <i1> [#uses=1]
br i1 %73, label %bb1.i.i69, label %bb3.i.i71
bb3.i.i71: ; preds = %bb1.i.i69, %bb.i.i67
%p.1.7 = phi i32 [ %iftmp.215.0.i.i.i66, %bb.i.i67 ], [ %72, %bb1.i.i69 ] ; <i32> [#uses=6]
%74 = icmp sgt i32 %p.1.7, %p.1.5 ; <i1> [#uses=1]
br i1 %74, label %bb4.i.i72, label %bb1.i77
bb4.i.i72: ; preds = %bb3.i.i71
%75 = sext i32 %p.1.7 to i64 ; <i64> [#uses=1]
%76 = invoke i8* @_Znam(i64 %75)
to label %.noexc81 unwind label %lpad ; <i8*> [#uses=4]
.noexc81: ; preds = %bb4.i.i72
%77 = icmp sgt i32 %p.1.5, 0 ; <i1> [#uses=1]
br i1 %77, label %bb5.i.i73, label %bb1.i77
bb5.i.i73: ; preds = %.noexc81
%78 = sext i32 %p.1.5 to i64 ; <i64> [#uses=1]
tail call void @llvm.memcpy.i64(i8* %76, i8* %p.0.4, i64 %78, i32 1)
%79 = icmp eq i8* %p.0.4, null ; <i1> [#uses=1]
br i1 %79, label %bb1.i77, label %bb6.i.i74
bb6.i.i74: ; preds = %bb5.i.i73
tail call void @_ZdaPv(i8* %p.0.4) nounwind
br label %bb1.i77
bb1.i77: ; preds = %bb6.i.i74, %bb5.i.i73, %.noexc81, %bb3.i.i71, %bb2.preheader.i.i65, %bb10
%p.1.8 = phi i32 [ %p.1.7, %bb3.i.i71 ], [ %p.1.5, %bb2.preheader.i.i65 ], [ %p.1.5, %bb10 ], [ %p.1.7, %bb6.i.i74 ], [ %p.1.7, %bb5.i.i73 ], [ %p.1.7, %.noexc81 ] ; <i32> [#uses=9]
%p.0.6 = phi i8* [ %p.0.4, %bb3.i.i71 ], [ %p.0.4, %bb2.preheader.i.i65 ], [ %p.0.4, %bb10 ], [ %76, %bb6.i.i74 ], [ %76, %bb5.i.i73 ], [ %76, %.noexc81 ] ; <i8*> [#uses=8]
%80 = sext i32 %p.2.2 to i64 ; <i64> [#uses=1]
%81 = getelementptr inbounds i8* %p.0.6, i64 %80 ; <i8*> [#uses=2]
%82 = icmp eq i8* %81, null ; <i1> [#uses=1]
br i1 %82, label %invcont11, label %bb2.i80
bb2.i80: ; preds = %bb1.i77
store i8 32, i8* %81, align 1
br label %invcont11
invcont11: ; preds = %bb2.i80, %bb1.i77
%83 = add nsw i32 %p.2.2, 1 ; <i32> [#uses=2]
%84 = tail call i64 @strlen(i8* %conj) nounwind readonly ; <i64> [#uses=1]
%85 = trunc i64 %84 to i32 ; <i32> [#uses=2]
%86 = add nsw i32 %85, %83 ; <i32> [#uses=6]
%87 = icmp sgt i32 %86, %p.1.8 ; <i1> [#uses=1]
br i1 %87, label %bb.i.i62, label %_ZN6vectorIcE3putEPKci.exit
bb.i.i62: ; preds = %invcont11
%88 = icmp eq i32 %p.1.8, 0 ; <i1> [#uses=1]
br i1 %88, label %bb.i.i.i, label %bb2.preheader.i.i.i
bb2.preheader.i.i.i: ; preds = %bb.i.i62
%89 = icmp slt i32 %p.1.8, %86 ; <i1> [#uses=1]
br i1 %89, label %bb1.i.i.i, label %_ZN6vectorIcE3putEPKci.exit
bb.i.i.i: ; preds = %bb.i.i62
%90 = icmp slt i32 %86, 8 ; <i1> [#uses=1]
%iftmp.215.0.i.i.i.i = select i1 %90, i32 8, i32 %86 ; <i32> [#uses=1]
br label %bb3.i.i.i
bb1.i.i.i: ; preds = %bb1.i.i.i, %bb2.preheader.i.i.i
%.tmp.0.i.i.i = phi i32 [ %91, %bb1.i.i.i ], [ %p.1.8, %bb2.preheader.i.i.i ] ; <i32> [#uses=1]
%91 = shl i32 %.tmp.0.i.i.i, 1 ; <i32> [#uses=3]
%92 = icmp slt i32 %91, %86 ; <i1> [#uses=1]
br i1 %92, label %bb1.i.i.i, label %bb3.i.i.i
bb3.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
%p.1.10 = phi i32 [ %iftmp.215.0.i.i.i.i, %bb.i.i.i ], [ %91, %bb1.i.i.i ] ; <i32> [#uses=6]
%93 = icmp sgt i32 %p.1.10, %p.1.8 ; <i1> [#uses=1]
br i1 %93, label %bb4.i.i.i, label %_ZN6vectorIcE3putEPKci.exit
bb4.i.i.i: ; preds = %bb3.i.i.i
%94 = sext i32 %p.1.10 to i64 ; <i64> [#uses=1]
%95 = invoke i8* @_Znam(i64 %94)
to label %.noexc63 unwind label %lpad ; <i8*> [#uses=4]
.noexc63: ; preds = %bb4.i.i.i
%96 = icmp sgt i32 %p.1.8, 0 ; <i1> [#uses=1]
br i1 %96, label %bb5.i.i.i, label %_ZN6vectorIcE3putEPKci.exit
bb5.i.i.i: ; preds = %.noexc63
%97 = sext i32 %p.1.8 to i64 ; <i64> [#uses=1]
tail call void @llvm.memcpy.i64(i8* %95, i8* %p.0.6, i64 %97, i32 1)
%98 = icmp eq i8* %p.0.6, null ; <i1> [#uses=1]
br i1 %98, label %_ZN6vectorIcE3putEPKci.exit, label %bb6.i.i.i
bb6.i.i.i: ; preds = %bb5.i.i.i
tail call void @_ZdaPv(i8* %p.0.6) nounwind
br label %_ZN6vectorIcE3putEPKci.exit
_ZN6vectorIcE3putEPKci.exit: ; preds = %bb6.i.i.i, %bb5.i.i.i, %.noexc63, %bb3.i.i.i, %bb2.preheader.i.i.i, %invcont11
%p.1.11 = phi i32 [ %p.1.10, %bb3.i.i.i ], [ %p.1.8, %bb2.preheader.i.i.i ], [ %p.1.8, %invcont11 ], [ %p.1.10, %bb6.i.i.i ], [ %p.1.10, %bb5.i.i.i ], [ %p.1.10, %.noexc63 ] ; <i32> [#uses=1]
%p.0.8 = phi i8* [ %p.0.6, %bb3.i.i.i ], [ %p.0.6, %bb2.preheader.i.i.i ], [ %p.0.6, %invcont11 ], [ %95, %bb6.i.i.i ], [ %95, %bb5.i.i.i ], [ %95, %.noexc63 ] ; <i8*> [#uses=2]
%99 = sext i32 %83 to i64 ; <i64> [#uses=1]
%100 = getelementptr inbounds i8* %p.0.8, i64 %99 ; <i8*> [#uses=1]
%101 = sext i32 %85 to i64 ; <i64> [#uses=1]
tail call void @llvm.memcpy.i64(i8* %100, i8* %conj, i64 %101, i32 1) nounwind
br label %bb13
bb13: ; preds = %_ZN6vectorIcE3putEPKci.exit, %bb9, %bb8
%p.2.4 = phi i32 [ %p.2.2, %bb9 ], [ %86, %_ZN6vectorIcE3putEPKci.exit ], [ %p.2.2, %bb8 ] ; <i32> [#uses=4]
%p.1.9 = phi i32 [ %p.1.5, %bb9 ], [ %p.1.11, %_ZN6vectorIcE3putEPKci.exit ], [ %p.1.5, %bb8 ] ; <i32> [#uses=9]
%p.0.7 = phi i8* [ %p.0.4, %bb9 ], [ %p.0.8, %_ZN6vectorIcE3putEPKci.exit ], [ %p.0.4, %bb8 ] ; <i8*> [#uses=7]
%102 = icmp eq i32 %p.2.4, %p.1.9 ; <i1> [#uses=1]
br i1 %102, label %bb.i43, label %bb1.i56
bb.i43: ; preds = %bb13
%103 = add nsw i32 %p.2.4, 1 ; <i32> [#uses=4]
%104 = icmp eq i32 %p.1.9, 0 ; <i1> [#uses=1]
br i1 %104, label %bb.i.i46, label %bb2.preheader.i.i44
bb2.preheader.i.i44: ; preds = %bb.i43
%105 = icmp slt i32 %p.1.9, %103 ; <i1> [#uses=1]
br i1 %105, label %bb1.i.i48, label %bb1.i56
bb.i.i46: ; preds = %bb.i43
%106 = icmp slt i32 %103, 8 ; <i1> [#uses=1]
%iftmp.215.0.i.i.i45 = select i1 %106, i32 8, i32 %103 ; <i32> [#uses=1]
br label %bb3.i.i50
bb1.i.i48: ; preds = %bb1.i.i48, %bb2.preheader.i.i44
%.tmp.0.i.i47 = phi i32 [ %107, %bb1.i.i48 ], [ %p.1.9, %bb2.preheader.i.i44 ] ; <i32> [#uses=1]
%107 = shl i32 %.tmp.0.i.i47, 1 ; <i32> [#uses=3]
%108 = icmp slt i32 %107, %103 ; <i1> [#uses=1]
br i1 %108, label %bb1.i.i48, label %bb3.i.i50
bb3.i.i50: ; preds = %bb1.i.i48, %bb.i.i46
%p.1.12 = phi i32 [ %iftmp.215.0.i.i.i45, %bb.i.i46 ], [ %107, %bb1.i.i48 ] ; <i32> [#uses=6]
%109 = icmp sgt i32 %p.1.12, %p.1.9 ; <i1> [#uses=1]
br i1 %109, label %bb4.i.i51, label %bb1.i56
bb4.i.i51: ; preds = %bb3.i.i50
%110 = sext i32 %p.1.12 to i64 ; <i64> [#uses=1]
%111 = invoke i8* @_Znam(i64 %110)
to label %.noexc60 unwind label %lpad ; <i8*> [#uses=4]
.noexc60: ; preds = %bb4.i.i51
%112 = icmp sgt i32 %p.1.9, 0 ; <i1> [#uses=1]
br i1 %112, label %bb5.i.i52, label %bb1.i56
bb5.i.i52: ; preds = %.noexc60
%113 = sext i32 %p.1.9 to i64 ; <i64> [#uses=1]
tail call void @llvm.memcpy.i64(i8* %111, i8* %p.0.7, i64 %113, i32 1)
%114 = icmp eq i8* %p.0.7, null ; <i1> [#uses=1]
br i1 %114, label %bb1.i56, label %bb6.i.i53
bb6.i.i53: ; preds = %bb5.i.i52
tail call void @_ZdaPv(i8* %p.0.7) nounwind
br label %bb1.i56
bb1.i56: ; preds = %bb6.i.i53, %bb5.i.i52, %.noexc60, %bb3.i.i50, %bb2.preheader.i.i44, %bb13
%p.1.13 = phi i32 [ %p.1.12, %bb3.i.i50 ], [ %p.1.9, %bb2.preheader.i.i44 ], [ %p.1.9, %bb13 ], [ %p.1.12, %bb6.i.i53 ], [ %p.1.12, %bb5.i.i52 ], [ %p.1.12, %.noexc60 ] ; <i32> [#uses=1]
%p.0.9 = phi i8* [ %p.0.7, %bb3.i.i50 ], [ %p.0.7, %bb2.preheader.i.i44 ], [ %p.0.7, %bb13 ], [ %111, %bb6.i.i53 ], [ %111, %bb5.i.i52 ], [ %111, %.noexc60 ] ; <i8*> [#uses=2]
%115 = sext i32 %p.2.4 to i64 ; <i64> [#uses=1]
%116 = getelementptr inbounds i8* %p.0.9, i64 %115 ; <i8*> [#uses=2]
%117 = icmp eq i8* %116, null ; <i1> [#uses=1]
br i1 %117, label %_ZN6vectorIcE3addERKc.exit61, label %bb2.i59
bb2.i59: ; preds = %bb1.i56
store i8 32, i8* %116, align 1
br label %_ZN6vectorIcE3addERKc.exit61
_ZN6vectorIcE3addERKc.exit61: ; preds = %bb2.i59, %bb1.i56
%118 = add nsw i32 %p.2.4, 1 ; <i32> [#uses=1]
br label %bb15
bb15: ; preds = %_ZN6vectorIcE3addERKc.exit61, %invcont
%p.2.3 = phi i32 [ %118, %_ZN6vectorIcE3addERKc.exit61 ], [ %28, %invcont ] ; <i32> [#uses=1]
%p.1.6 = phi i32 [ %p.1.13, %_ZN6vectorIcE3addERKc.exit61 ], [ %p.1.1, %invcont ] ; <i32> [#uses=1]
%p.0.5 = phi i8* [ %p.0.9, %_ZN6vectorIcE3addERKc.exit61 ], [ %p.0.0, %invcont ] ; <i8*> [#uses=1]
%119 = tail call i64 @strspn(i8* %s_addr.0, i8* getelementptr inbounds ([4 x i8]* @.str12, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=1]
%s_addr.0.sum = add i64 %119, %.sum32.pn ; <i64> [#uses=1]
%120 = getelementptr inbounds i8* %s_addr.1, i64 %s_addr.0.sum ; <i8*> [#uses=1]
br label %bb16
bb16: ; preds = %bb15, %_Z7listlenPKc.exit
%p.2.0 = phi i32 [ 0, %_Z7listlenPKc.exit ], [ %p.2.3, %bb15 ] ; <i32> [#uses=5]
%p.1.2 = phi i32 [ 0, %_Z7listlenPKc.exit ], [ %p.1.6, %bb15 ] ; <i32> [#uses=16]
%p.0.1 = phi i8* [ null, %_Z7listlenPKc.exit ], [ %p.0.5, %bb15 ] ; <i8*> [#uses=14]
%n.0 = phi i32 [ 0, %_Z7listlenPKc.exit ], [ %tmp143, %bb15 ] ; <i32> [#uses=2]
%s_addr.1 = phi i8* [ %1, %_Z7listlenPKc.exit ], [ %120, %bb15 ] ; <i8*> [#uses=7]
%tmp = add i32 %n.0, 2 ; <i32> [#uses=1]
%tmp143 = add i32 %n.0, 1 ; <i32> [#uses=2]
%121 = load i8* %s_addr.1, align 1 ; <i8> [#uses=1]
switch i8 %121, label %bb2 [
i8 0, label %bb17
i8 34, label %bb1
]
bb17: ; preds = %bb16
%122 = icmp eq i32 %p.2.0, %p.1.2 ; <i1> [#uses=1]
br i1 %122, label %bb.i, label %bb1.i42
bb.i: ; preds = %bb17
%123 = add nsw i32 %p.2.0, 1 ; <i32> [#uses=4]
%124 = icmp eq i32 %p.1.2, 0 ; <i1> [#uses=1]
br i1 %124, label %bb.i.i, label %bb2.preheader.i.i
bb2.preheader.i.i: ; preds = %bb.i
%125 = icmp slt i32 %p.1.2, %123 ; <i1> [#uses=1]
br i1 %125, label %bb1.i.i, label %bb1.i42
bb.i.i: ; preds = %bb.i
%126 = icmp slt i32 %123, 8 ; <i1> [#uses=1]
%iftmp.215.0.i.i.i = select i1 %126, i32 8, i32 %123 ; <i32> [#uses=1]
br label %bb3.i.i
bb1.i.i: ; preds = %bb1.i.i, %bb2.preheader.i.i
%.tmp.0.i.i = phi i32 [ %127, %bb1.i.i ], [ %p.1.2, %bb2.preheader.i.i ] ; <i32> [#uses=1]
%127 = shl i32 %.tmp.0.i.i, 1 ; <i32> [#uses=3]
%128 = icmp slt i32 %127, %123 ; <i1> [#uses=1]
br i1 %128, label %bb1.i.i, label %bb3.i.i
bb3.i.i: ; preds = %bb1.i.i, %bb.i.i
%129 = phi i32 [ %iftmp.215.0.i.i.i, %bb.i.i ], [ %127, %bb1.i.i ] ; <i32> [#uses=2]
%130 = icmp sgt i32 %129, %p.1.2 ; <i1> [#uses=1]
br i1 %130, label %bb4.i.i, label %bb1.i42
bb4.i.i: ; preds = %bb3.i.i
%131 = sext i32 %129 to i64 ; <i64> [#uses=1]
%132 = invoke i8* @_Znam(i64 %131)
to label %.noexc unwind label %lpad ; <i8*> [#uses=4]
.noexc: ; preds = %bb4.i.i
%133 = icmp sgt i32 %p.1.2, 0 ; <i1> [#uses=1]
br i1 %133, label %bb5.i.i, label %bb1.i42
bb5.i.i: ; preds = %.noexc
%134 = sext i32 %p.1.2 to i64 ; <i64> [#uses=1]
tail call void @llvm.memcpy.i64(i8* %132, i8* %p.0.1, i64 %134, i32 1)
%135 = icmp eq i8* %p.0.1, null ; <i1> [#uses=1]
br i1 %135, label %bb1.i42, label %bb6.i.i
bb6.i.i: ; preds = %bb5.i.i
tail call void @_ZdaPv(i8* %p.0.1) nounwind
br label %bb1.i42
bb1.i42: ; preds = %bb6.i.i, %bb5.i.i, %.noexc, %bb3.i.i, %bb2.preheader.i.i, %bb17
%p.0.10 = phi i8* [ %p.0.1, %bb3.i.i ], [ %p.0.1, %bb2.preheader.i.i ], [ %p.0.1, %bb17 ], [ %132, %bb6.i.i ], [ %132, %bb5.i.i ], [ %132, %.noexc ] ; <i8*> [#uses=6]
%136 = sext i32 %p.2.0 to i64 ; <i64> [#uses=1]
%137 = getelementptr inbounds i8* %p.0.10, i64 %136 ; <i8*> [#uses=2]
%138 = icmp eq i8* %137, null ; <i1> [#uses=1]
br i1 %138, label %invcont18, label %bb2.i
bb2.i: ; preds = %bb1.i42
store i8 0, i8* %137, align 1
br label %invcont18
invcont18: ; preds = %bb2.i, %bb1.i42
%139 = tail call i64 @strlen(i8* %p.0.10) nounwind readonly ; <i64> [#uses=2]
%140 = add i64 %139, 1 ; <i64> [#uses=2]
%141 = invoke i8* @_Znam(i64 %140)
to label %bb23 unwind label %lpad ; <i8*> [#uses=3]
invcont21: ; preds = %bb1.i, %lpad
tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
unreachable
bb23: ; preds = %invcont18
%142 = tail call i8* @strncpy(i8* noalias %141, i8* noalias %p.0.10, i64 %140) nounwind ; <i8*> [#uses=0]
%143 = getelementptr inbounds i8* %141, i64 %139 ; <i8*> [#uses=1]
store i8 0, i8* %143, align 1
store i8* %141, i8** @commandret, align 8
%144 = icmp eq i8* %p.0.10, null ; <i1> [#uses=1]
br i1 %144, label %_ZN6vectorIcED1Ev.exit41, label %bb1.i39
bb1.i39: ; preds = %bb23
tail call void @_ZdaPv(i8* %p.0.10) nounwind
ret void
_ZN6vectorIcED1Ev.exit41: ; preds = %bb23
ret void
lpad: ; preds = %invcont18, %bb4.i.i, %bb4.i.i51, %bb4.i.i.i, %bb4.i.i72, %bb4.i.i91, %bb4.i.i.i110
%p.0.2 = phi i8* [ %p.0.10, %invcont18 ], [ %p.0.1, %bb4.i.i ], [ %p.0.1, %bb4.i.i.i110 ], [ %p.0.0, %bb4.i.i91 ], [ %p.0.4, %bb4.i.i72 ], [ %p.0.6, %bb4.i.i.i ], [ %p.0.7, %bb4.i.i51 ] ; <i8*> [#uses=2]
%eh_ptr = tail call i8* @llvm.eh.exception() ; <i8*> [#uses=2]
%eh_select25 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i8* null) ; <i32> [#uses=0]
%145 = icmp eq i8* %p.0.2, null ; <i1> [#uses=1]
br i1 %145, label %invcont21, label %bb1.i
bb1.i: ; preds = %lpad
tail call void @_ZdaPv(i8* %p.0.2) nounwind
br label %invcont21
}
define void @_ZN7_stdcmdILi971EE3runEPc(i8* %s) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = call i64 @strspn(i8* %s, i8* getelementptr inbounds ([4 x i8]* @.str12, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=1]
%2 = getelementptr inbounds i8* %s, i64 %1 ; <i8*> [#uses=2]
%3 = load i8* %2, align 1 ; <i8> [#uses=2]
%4 = icmp eq i8 %3, 0 ; <i1> [#uses=1]
br i1 %4, label %_Z7listlenPKc.exit, label %bb.i
bb.i: ; preds = %bb3.i, %entry
%5 = phi i8 [ %16, %bb3.i ], [ %3, %entry ] ; <i8> [#uses=1]
%s_addr.19.i = phi i8* [ %15, %bb3.i ], [ %2, %entry ] ; <i8*> [#uses=5]
%n.08.i = phi i32 [ %tmp.i, %bb3.i ], [ 0, %entry ] ; <i32> [#uses=1]
%tmp.i = add i32 %n.08.i, 1 ; <i32> [#uses=2]
%6 = icmp eq i8 %5, 34 ; <i1> [#uses=1]
br i1 %6, label %bb1.i, label %bb2.i
bb1.i: ; preds = %bb.i
%7 = getelementptr inbounds i8* %s_addr.19.i, i64 1 ; <i8*> [#uses=1]
%8 = call i64 @strcspn(i8* %7, i8* getelementptr inbounds ([4 x i8]* @.str13, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=1]
%.sum.i = add i64 %8, 1 ; <i64> [#uses=2]
%9 = getelementptr inbounds i8* %s_addr.19.i, i64 %.sum.i ; <i8*> [#uses=1]
%10 = load i8* %9, align 1 ; <i8> [#uses=1]
%11 = icmp eq i8 %10, 34 ; <i1> [#uses=1]
%12 = zext i1 %11 to i64 ; <i64> [#uses=1]
%.sum7.i = add i64 %12, %.sum.i ; <i64> [#uses=1]
br label %bb3.i
bb2.i: ; preds = %bb.i
%13 = call i64 @strcspn(i8* %s_addr.19.i, i8* getelementptr inbounds ([5 x i8]* @.str14, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=1]
br label %bb3.i
bb3.i: ; preds = %bb2.i, %bb1.i
%.sum7.pn.i = phi i64 [ %.sum7.i, %bb1.i ], [ %13, %bb2.i ] ; <i64> [#uses=2]
%s_addr.0.i = getelementptr inbounds i8* %s_addr.19.i, i64 %.sum7.pn.i ; <i8*> [#uses=1]
%14 = call i64 @strspn(i8* %s_addr.0.i, i8* getelementptr inbounds ([4 x i8]* @.str12, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=1]
%s_addr.0.sum.i = add i64 %14, %.sum7.pn.i ; <i64> [#uses=1]
%15 = getelementptr inbounds i8* %s_addr.19.i, i64 %s_addr.0.sum.i ; <i8*> [#uses=2]
%16 = load i8* %15, align 1 ; <i8> [#uses=2]
%17 = icmp eq i8 %16, 0 ; <i1> [#uses=1]
br i1 %17, label %_Z7listlenPKc.exit, label %bb.i
_Z7listlenPKc.exit: ; preds = %bb3.i, %entry
%n.0.lcssa.i = phi i32 [ 0, %entry ], [ %tmp.i, %bb3.i ] ; <i32> [#uses=1]
%18 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%19 = add nsw i32 %18, 1 ; <i32> [#uses=1]
%20 = srem i32 %19, 3 ; <i32> [#uses=2]
store i32 %20, i32* @_ZL6retidx, align 4
%21 = sext i32 %20 to i64 ; <i64> [#uses=1]
%22 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %21, i64 0 ; <i8*> [#uses=1]
%23 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %22, i8** %23, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %n.0.lcssa.i) nounwind
%24 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%25 = sext i32 %24 to i64 ; <i64> [#uses=1]
%26 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %25, i64 0 ; <i8*> [#uses=2]
%27 = call i64 @strlen(i8* %26) nounwind readonly ; <i64> [#uses=2]
%28 = add i64 %27, 1 ; <i64> [#uses=2]
%29 = call i8* @_Znam(i64 %28) ; <i8*> [#uses=3]
%30 = call i8* @strncpy(i8* noalias %29, i8* noalias %26, i64 %28) nounwind ; <i8*> [#uses=0]
%31 = getelementptr inbounds i8* %29, i64 %27 ; <i8*> [#uses=1]
store i8 0, i8* %31, align 1
store i8* %29, i8** @commandret, align 8
ret void
}
define i8* @_Z9indexlistPKci(i8* %s, i32 %pos) {
entry:
%0 = tail call i64 @strspn(i8* %s, i8* getelementptr inbounds ([4 x i8]* @.str12, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=1]
%1 = getelementptr inbounds i8* %s, i64 %0 ; <i8*> [#uses=1]
br label %bb5
bb: ; preds = %bb5
%2 = icmp eq i8 %17, 34 ; <i1> [#uses=1]
br i1 %2, label %bb1, label %bb2
bb1: ; preds = %bb
%3 = getelementptr inbounds i8* %s_addr.1, i64 1 ; <i8*> [#uses=1]
%4 = tail call i64 @strcspn(i8* %3, i8* getelementptr inbounds ([4 x i8]* @.str13, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=1]
%.sum16 = add i64 %4, 1 ; <i64> [#uses=2]
%5 = getelementptr inbounds i8* %s_addr.1, i64 %.sum16 ; <i8*> [#uses=1]
%6 = load i8* %5, align 1 ; <i8> [#uses=1]
%7 = icmp eq i8 %6, 34 ; <i1> [#uses=1]
%8 = zext i1 %7 to i64 ; <i64> [#uses=1]
%.sum17 = add i64 %8, %.sum16 ; <i64> [#uses=1]
br label %bb3
bb2: ; preds = %bb
%9 = tail call i64 @strcspn(i8* %s_addr.1, i8* getelementptr inbounds ([5 x i8]* @.str14, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=1]
br label %bb3
bb3: ; preds = %bb2, %bb1
%.sum17.pn = phi i64 [ %.sum17, %bb1 ], [ %9, %bb2 ] ; <i64> [#uses=2]
%s_addr.0 = getelementptr inbounds i8* %s_addr.1, i64 %.sum17.pn ; <i8*> [#uses=1]
%10 = tail call i64 @strspn(i8* %s_addr.0, i8* getelementptr inbounds ([4 x i8]* @.str12, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=1]
%s_addr.0.sum = add i64 %10, %.sum17.pn ; <i64> [#uses=1]
%11 = getelementptr inbounds i8* %s_addr.1, i64 %s_addr.0.sum ; <i8*> [#uses=3]
%12 = load i8* %11, align 1 ; <i8> [#uses=2]
%13 = icmp eq i8 %12, 0 ; <i1> [#uses=1]
br i1 %13, label %bb6, label %bb4
bb4: ; preds = %bb3
%14 = add nsw i32 %15, 1 ; <i32> [#uses=1]
br label %bb5
bb5: ; preds = %bb4, %entry
%15 = phi i32 [ 0, %entry ], [ %14, %bb4 ] ; <i32> [#uses=2]
%s_addr.1 = phi i8* [ %1, %entry ], [ %11, %bb4 ] ; <i8*> [#uses=7]
%16 = icmp slt i32 %15, %pos ; <i1> [#uses=1]
%17 = load i8* %s_addr.1, align 1 ; <i8> [#uses=2]
br i1 %16, label %bb, label %bb6
bb6: ; preds = %bb5, %bb3
%18 = phi i8 [ %12, %bb3 ], [ %17, %bb5 ] ; <i8> [#uses=1]
%s_addr.2 = phi i8* [ %11, %bb3 ], [ %s_addr.1, %bb5 ] ; <i8*> [#uses=7]
%19 = icmp eq i8 %18, 34 ; <i1> [#uses=2]
br i1 %19, label %bb7, label %bb8
bb7: ; preds = %bb6
%20 = getelementptr inbounds i8* %s_addr.2, i64 1 ; <i8*> [#uses=1]
%21 = tail call i64 @strcspn(i8* %20, i8* getelementptr inbounds ([4 x i8]* @.str13, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=1]
%.sum = add i64 %21, 1 ; <i64> [#uses=2]
%22 = getelementptr inbounds i8* %s_addr.2, i64 %.sum ; <i8*> [#uses=1]
%23 = load i8* %22, align 1 ; <i8> [#uses=1]
%24 = icmp eq i8 %23, 34 ; <i1> [#uses=1]
%25 = zext i1 %24 to i64 ; <i64> [#uses=1]
%.sum14 = add i64 %25, %.sum ; <i64> [#uses=1]
br label %bb9
bb8: ; preds = %bb6
%26 = tail call i64 @strcspn(i8* %s_addr.2, i8* getelementptr inbounds ([5 x i8]* @.str14, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=1]
br label %bb9
bb9: ; preds = %bb8, %bb7
%.sum14.pn = phi i64 [ %.sum14, %bb7 ], [ %26, %bb8 ] ; <i64> [#uses=2]
%s_addr.3 = getelementptr inbounds i8* %s_addr.2, i64 %.sum14.pn ; <i8*> [#uses=2]
br i1 %19, label %bb10, label %bb12
bb10: ; preds = %bb9
%27 = getelementptr inbounds i8* %s_addr.2, i64 1 ; <i8*> [#uses=2]
%s_addr.3.sum15 = add i64 %.sum14.pn, -1 ; <i64> [#uses=1]
%28 = getelementptr inbounds i8* %s_addr.2, i64 %s_addr.3.sum15 ; <i8*> [#uses=2]
%29 = load i8* %28, align 1 ; <i8> [#uses=1]
%30 = icmp eq i8 %29, 34 ; <i1> [#uses=1]
br i1 %30, label %bb11, label %bb12
bb11: ; preds = %bb10
br label %bb12
bb12: ; preds = %bb11, %bb10, %bb9
%e.0 = phi i8* [ %27, %bb11 ], [ %27, %bb10 ], [ %s_addr.2, %bb9 ] ; <i8*> [#uses=2]
%s_addr.4 = phi i8* [ %28, %bb11 ], [ %s_addr.3, %bb10 ], [ %s_addr.3, %bb9 ] ; <i8*> [#uses=1]
%31 = ptrtoint i8* %s_addr.4 to i64 ; <i64> [#uses=1]
%32 = ptrtoint i8* %e.0 to i64 ; <i64> [#uses=1]
%33 = sub nsw i64 %31, %32 ; <i64> [#uses=2]
%34 = add i64 %33, 1 ; <i64> [#uses=2]
%35 = tail call i8* @_Znam(i64 %34) ; <i8*> [#uses=3]
%36 = tail call i8* @strncpy(i8* noalias %35, i8* noalias %e.0, i64 %34) nounwind ; <i8*> [#uses=0]
%37 = getelementptr inbounds i8* %35, i64 %33 ; <i8*> [#uses=1]
store i8 0, i8* %37, align 1
ret i8* %35
}
define void @_Z2atPcPi(i8* %s, i32* nocapture %pos) {
entry:
%0 = load i32* %pos, align 4 ; <i32> [#uses=1]
%1 = tail call i8* @_Z9indexlistPKci(i8* %s, i32 %0) ; <i8*> [#uses=1]
store i8* %1, i8** @commandret, align 8
ret void
}
define void @_Z11explodelistPKcR6vectorIPcE(i8* %s, %"struct.vector<char*>"* nocapture %elems) {
entry:
%0 = alloca i8*, align 8 ; <i8**> [#uses=2]
%1 = call i64 @strspn(i8* %s, i8* getelementptr inbounds ([4 x i8]* @.str12, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=1]
%2 = getelementptr inbounds i8* %s, i64 %1 ; <i8*> [#uses=2]
%3 = load i8* %2, align 1 ; <i8> [#uses=2]
%4 = icmp eq i8 %3, 0 ; <i1> [#uses=1]
br i1 %4, label %return, label %bb
bb: ; preds = %bb9, %entry
%5 = phi i8 [ %30, %bb9 ], [ %3, %entry ] ; <i8> [#uses=1]
%s_addr.114 = phi i8* [ %29, %bb9 ], [ %2, %entry ] ; <i8*> [#uses=8]
%6 = icmp eq i8 %5, 34 ; <i1> [#uses=2]
br i1 %6, label %bb1, label %bb2
bb1: ; preds = %bb
%7 = getelementptr inbounds i8* %s_addr.114, i64 1 ; <i8*> [#uses=1]
%8 = call i64 @strcspn(i8* %7, i8* getelementptr inbounds ([4 x i8]* @.str13, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=1]
%.sum = add i64 %8, 1 ; <i64> [#uses=2]
%9 = getelementptr inbounds i8* %s_addr.114, i64 %.sum ; <i8*> [#uses=1]
%10 = load i8* %9, align 1 ; <i8> [#uses=1]
%11 = icmp eq i8 %10, 34 ; <i1> [#uses=1]
%12 = zext i1 %11 to i64 ; <i64> [#uses=1]
%.sum12 = add i64 %12, %.sum ; <i64> [#uses=1]
br label %bb3
bb2: ; preds = %bb
%13 = call i64 @strcspn(i8* %s_addr.114, i8* getelementptr inbounds ([5 x i8]* @.str14, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=1]
br label %bb3
bb3: ; preds = %bb2, %bb1
%.sum12.pn = phi i64 [ %.sum12, %bb1 ], [ %13, %bb2 ] ; <i64> [#uses=6]
%s_addr.0 = getelementptr inbounds i8* %s_addr.114, i64 %.sum12.pn ; <i8*> [#uses=1]
br i1 %6, label %bb4, label %bb8
bb4: ; preds = %bb3
%s_addr.0.sum13 = add i64 %.sum12.pn, -1 ; <i64> [#uses=1]
%14 = getelementptr inbounds i8* %s_addr.114, i64 %s_addr.0.sum13 ; <i8*> [#uses=1]
%15 = load i8* %14, align 1 ; <i8> [#uses=1]
%16 = icmp eq i8 %15, 34 ; <i1> [#uses=1]
%iftmp.159.0 = select i1 %16, i64 2, i64 1 ; <i64> [#uses=1]
%17 = sub nsw i64 %.sum12.pn, %iftmp.159.0 ; <i64> [#uses=2]
%18 = getelementptr inbounds i8* %s_addr.114, i64 1 ; <i8*> [#uses=1]
%19 = add i64 %17, 1 ; <i64> [#uses=2]
%20 = call i8* @_Znam(i64 %19) ; <i8*> [#uses=3]
%21 = call i8* @strncpy(i8* noalias %20, i8* noalias %18, i64 %19) nounwind ; <i8*> [#uses=0]
%22 = getelementptr inbounds i8* %20, i64 %17 ; <i8*> [#uses=1]
store i8 0, i8* %22, align 1
br label %bb9
bb8: ; preds = %bb3
%23 = add i64 %.sum12.pn, 1 ; <i64> [#uses=2]
%24 = call i8* @_Znam(i64 %23) ; <i8*> [#uses=3]
%25 = call i8* @strncpy(i8* noalias %24, i8* noalias %s_addr.114, i64 %23) nounwind ; <i8*> [#uses=0]
%26 = getelementptr inbounds i8* %24, i64 %.sum12.pn ; <i8*> [#uses=1]
store i8 0, i8* %26, align 1
br label %bb9
bb9: ; preds = %bb8, %bb4
%iftmp.156.0 = phi i8* [ %20, %bb4 ], [ %24, %bb8 ] ; <i8*> [#uses=1]
store i8* %iftmp.156.0, i8** %0, align 8
%27 = call i8** @_ZN6vectorIPcE3addERKS0_(%"struct.vector<char*>"* %elems, i8** %0) ; <i8**> [#uses=0]
%28 = call i64 @strspn(i8* %s_addr.0, i8* getelementptr inbounds ([4 x i8]* @.str12, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=1]
%s_addr.0.sum = add i64 %28, %.sum12.pn ; <i64> [#uses=1]
%29 = getelementptr inbounds i8* %s_addr.114, i64 %s_addr.0.sum ; <i8*> [#uses=2]
%30 = load i8* %29, align 1 ; <i8> [#uses=2]
%31 = icmp eq i8 %30, 0 ; <i1> [#uses=1]
br i1 %31, label %return, label %bb
return: ; preds = %bb9, %entry
ret void
}
define i32 @_Z12listincludesPKcS0_i(i8* %list, i8* nocapture %needle, i32 %needlelen) nounwind readonly {
entry:
%0 = tail call i64 @strspn(i8* %list, i8* getelementptr inbounds ([4 x i8]* @.str12, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=1]
%1 = getelementptr inbounds i8* %list, i64 %0 ; <i8*> [#uses=1]
br label %bb12
bb: ; preds = %bb12
%2 = icmp eq i8 %24, 34 ; <i1> [#uses=2]
br i1 %2, label %bb1, label %bb2
bb1: ; preds = %bb
%3 = getelementptr inbounds i8* %s.1, i64 1 ; <i8*> [#uses=1]
%4 = tail call i64 @strcspn(i8* %3, i8* getelementptr inbounds ([4 x i8]* @.str13, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=1]
%.sum = add i64 %4, 1 ; <i64> [#uses=2]
%5 = getelementptr inbounds i8* %s.1, i64 %.sum ; <i8*> [#uses=1]
%6 = load i8* %5, align 1 ; <i8> [#uses=1]
%7 = icmp eq i8 %6, 34 ; <i1> [#uses=1]
%8 = zext i1 %7 to i64 ; <i64> [#uses=1]
%.sum16 = add i64 %8, %.sum ; <i64> [#uses=1]
br label %bb3
bb2: ; preds = %bb
%9 = tail call i64 @strcspn(i8* %s.1, i8* getelementptr inbounds ([5 x i8]* @.str14, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=1]
br label %bb3
bb3: ; preds = %bb2, %bb1
%.sum16.pn = phi i64 [ %.sum16, %bb1 ], [ %9, %bb2 ] ; <i64> [#uses=4]
%s.0 = getelementptr inbounds i8* %s.1, i64 %.sum16.pn ; <i8*> [#uses=1]
%10 = trunc i64 %.sum16.pn to i32 ; <i32> [#uses=2]
br i1 %2, label %bb4, label %bb8
bb4: ; preds = %bb3
%11 = getelementptr inbounds i8* %s.1, i64 1 ; <i8*> [#uses=1]
%s.0.sum17 = add i64 %.sum16.pn, -1 ; <i64> [#uses=1]
%12 = getelementptr inbounds i8* %s.1, i64 %s.0.sum17 ; <i8*> [#uses=1]
%13 = load i8* %12, align 1 ; <i8> [#uses=1]
%14 = icmp eq i8 %13, 34 ; <i1> [#uses=1]
%iftmp.174.0 = select i1 %14, i32 2, i32 1 ; <i32> [#uses=1]
%15 = sub nsw i32 %10, %iftmp.174.0 ; <i32> [#uses=1]
br label %bb8
bb8: ; preds = %bb4, %bb3
%elem.0 = phi i8* [ %11, %bb4 ], [ %s.1, %bb3 ] ; <i8*> [#uses=1]
%len.0 = phi i32 [ %15, %bb4 ], [ %10, %bb3 ] ; <i32> [#uses=2]
%16 = icmp eq i32 %len.0, %needlelen ; <i1> [#uses=1]
br i1 %16, label %bb9, label %bb11
bb9: ; preds = %bb8
%17 = sext i32 %len.0 to i64 ; <i64> [#uses=1]
%18 = tail call i32 @strncmp(i8* %needle, i8* %elem.0, i64 %17) nounwind readonly ; <i32> [#uses=1]
%19 = icmp eq i32 %18, 0 ; <i1> [#uses=1]
br i1 %19, label %bb14, label %bb11
bb11: ; preds = %bb9, %bb8
%20 = tail call i64 @strspn(i8* %s.0, i8* getelementptr inbounds ([4 x i8]* @.str12, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=1]
%s.0.sum = add i64 %20, %.sum16.pn ; <i64> [#uses=1]
%21 = getelementptr inbounds i8* %s.1, i64 %s.0.sum ; <i8*> [#uses=1]
%22 = add nsw i32 %23, 1 ; <i32> [#uses=1]
br label %bb12
bb12: ; preds = %bb11, %entry
%s.1 = phi i8* [ %1, %entry ], [ %21, %bb11 ] ; <i8*> [#uses=9]
%23 = phi i32 [ 0, %entry ], [ %22, %bb11 ] ; <i32> [#uses=2]
%24 = load i8* %s.1, align 1 ; <i8> [#uses=2]
%25 = icmp eq i8 %24, 0 ; <i1> [#uses=1]
br i1 %25, label %bb14, label %bb
bb14: ; preds = %bb12, %bb9
%.0 = phi i32 [ %23, %bb9 ], [ -1, %bb12 ] ; <i32> [#uses=1]
ret i32 %.0
}
declare i32 @strncmp(i8* nocapture, i8* nocapture, i64) nounwind readonly
define void @_ZN7_stdcmdILi1069EE3runEPcS1_(i8* %list, i8* nocapture %elem) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = call i64 @strlen(i8* %elem) nounwind readonly ; <i64> [#uses=1]
%2 = trunc i64 %1 to i32 ; <i32> [#uses=1]
%3 = call i32 @_Z12listincludesPKcS0_i(i8* %list, i8* %elem, i32 %2) nounwind ; <i32> [#uses=1]
%4 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%5 = add nsw i32 %4, 1 ; <i32> [#uses=1]
%6 = srem i32 %5, 3 ; <i32> [#uses=2]
store i32 %6, i32* @_ZL6retidx, align 4
%7 = sext i32 %6 to i64 ; <i64> [#uses=1]
%8 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %7, i64 0 ; <i8*> [#uses=1]
%9 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %8, i8** %9, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %3) nounwind
%10 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%11 = sext i32 %10 to i64 ; <i64> [#uses=1]
%12 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %11, i64 0 ; <i8*> [#uses=2]
%13 = call i64 @strlen(i8* %12) nounwind readonly ; <i64> [#uses=2]
%14 = add i64 %13, 1 ; <i64> [#uses=2]
%15 = call i8* @_Znam(i64 %14) ; <i8*> [#uses=3]
%16 = call i8* @strncpy(i8* noalias %15, i8* noalias %12, i64 %14) nounwind ; <i8*> [#uses=0]
%17 = getelementptr inbounds i8* %15, i64 %13 ; <i8*> [#uses=1]
store i8 0, i8* %17, align 1
store i8* %15, i8** @commandret, align 8
ret void
}
define i8* @_Z7listdelPKcS0_(i8* %s, i8* %del) {
entry:
%0 = tail call i64 @strspn(i8* %s, i8* getelementptr inbounds ([4 x i8]* @.str12, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=1]
%1 = getelementptr inbounds i8* %s, i64 %0 ; <i8*> [#uses=1]
br label %bb17
bb: ; preds = %bb17
%2 = icmp eq i8 %53, 34 ; <i1> [#uses=2]
br i1 %2, label %bb1, label %bb2
bb1: ; preds = %bb
%3 = getelementptr inbounds i8* %s_addr.1, i64 1 ; <i8*> [#uses=1]
%4 = tail call i64 @strcspn(i8* %3, i8* getelementptr inbounds ([4 x i8]* @.str13, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=1]
%.sum = add i64 %4, 1 ; <i64> [#uses=2]
%5 = getelementptr inbounds i8* %s_addr.1, i64 %.sum ; <i8*> [#uses=1]
%6 = load i8* %5, align 1 ; <i8> [#uses=1]
%7 = icmp eq i8 %6, 34 ; <i1> [#uses=1]
%8 = zext i1 %7 to i64 ; <i64> [#uses=1]
%.sum33 = add i64 %8, %.sum ; <i64> [#uses=1]
br label %bb3
bb2: ; preds = %bb
%9 = tail call i64 @strcspn(i8* %s_addr.1, i8* getelementptr inbounds ([5 x i8]* @.str14, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=1]
br label %bb3
bb3: ; preds = %bb2, %bb1
%.sum33.pn = phi i64 [ %.sum33, %bb1 ], [ %9, %bb2 ] ; <i64> [#uses=4]
%s_addr.0 = getelementptr inbounds i8* %s_addr.1, i64 %.sum33.pn ; <i8*> [#uses=1]
%10 = trunc i64 %.sum33.pn to i32 ; <i32> [#uses=2]
br i1 %2, label %bb4, label %bb8
bb4: ; preds = %bb3
%11 = getelementptr inbounds i8* %s_addr.1, i64 1 ; <i8*> [#uses=1]
%s_addr.0.sum34 = add i64 %.sum33.pn, -1 ; <i64> [#uses=1]
%12 = getelementptr inbounds i8* %s_addr.1, i64 %s_addr.0.sum34 ; <i8*> [#uses=1]
%13 = load i8* %12, align 1 ; <i8> [#uses=1]
%14 = icmp eq i8 %13, 34 ; <i1> [#uses=1]
%iftmp.177.0 = select i1 %14, i32 2, i32 1 ; <i32> [#uses=1]
%15 = sub nsw i32 %10, %iftmp.177.0 ; <i32> [#uses=1]
br label %bb8
bb8: ; preds = %bb4, %bb3
%elem.0 = phi i8* [ %11, %bb4 ], [ %s_addr.1, %bb3 ] ; <i8*> [#uses=2]
%len.0 = phi i32 [ %15, %bb4 ], [ %10, %bb3 ] ; <i32> [#uses=3]
%16 = tail call i32 @_Z12listincludesPKcS0_i(i8* %del, i8* %elem.0, i32 %len.0) nounwind ; <i32> [#uses=1]
%toBool = icmp slt i32 %16, 0 ; <i1> [#uses=1]
br i1 %toBool, label %bb9, label %bb16
bb9: ; preds = %bb8
%17 = icmp eq i32 %p.2.3, 0 ; <i1> [#uses=1]
br i1 %17, label %bb14, label %bb13
bb13: ; preds = %bb9
%18 = icmp eq i32 %p.2.3, %p.1.4 ; <i1> [#uses=1]
br i1 %18, label %bb.i47, label %bb1.i60
bb.i47: ; preds = %bb13
%19 = add nsw i32 %p.2.3, 1 ; <i32> [#uses=4]
%20 = icmp eq i32 %p.1.4, 0 ; <i1> [#uses=1]
br i1 %20, label %bb.i.i50, label %bb2.preheader.i.i48
bb2.preheader.i.i48: ; preds = %bb.i47
%21 = icmp slt i32 %p.1.4, %19 ; <i1> [#uses=1]
br i1 %21, label %bb1.i.i52, label %bb1.i60
bb.i.i50: ; preds = %bb.i47
%22 = icmp slt i32 %19, 8 ; <i1> [#uses=1]
%iftmp.215.0.i.i.i49 = select i1 %22, i32 8, i32 %19 ; <i32> [#uses=1]
br label %bb3.i.i54
bb1.i.i52: ; preds = %bb1.i.i52, %bb2.preheader.i.i48
%.tmp.0.i.i51 = phi i32 [ %23, %bb1.i.i52 ], [ %p.1.4, %bb2.preheader.i.i48 ] ; <i32> [#uses=1]
%23 = shl i32 %.tmp.0.i.i51, 1 ; <i32> [#uses=3]
%24 = icmp slt i32 %23, %19 ; <i1> [#uses=1]
br i1 %24, label %bb1.i.i52, label %bb3.i.i54
bb3.i.i54: ; preds = %bb1.i.i52, %bb.i.i50
%p.1.0 = phi i32 [ %iftmp.215.0.i.i.i49, %bb.i.i50 ], [ %23, %bb1.i.i52 ] ; <i32> [#uses=6]
%25 = icmp sgt i32 %p.1.0, %p.1.4 ; <i1> [#uses=1]
br i1 %25, label %bb4.i.i55, label %bb1.i60
bb4.i.i55: ; preds = %bb3.i.i54
%26 = sext i32 %p.1.0 to i64 ; <i64> [#uses=1]
%27 = invoke i8* @_Znam(i64 %26)
to label %.noexc64 unwind label %lpad ; <i8*> [#uses=4]
.noexc64: ; preds = %bb4.i.i55
%28 = icmp sgt i32 %p.1.4, 0 ; <i1> [#uses=1]
br i1 %28, label %bb5.i.i56, label %bb1.i60
bb5.i.i56: ; preds = %.noexc64
%29 = sext i32 %p.1.4 to i64 ; <i64> [#uses=1]
tail call void @llvm.memcpy.i64(i8* %27, i8* %p.0.4, i64 %29, i32 1)
%30 = icmp eq i8* %p.0.4, null ; <i1> [#uses=1]
br i1 %30, label %bb1.i60, label %bb6.i.i57
bb6.i.i57: ; preds = %bb5.i.i56
tail call void @_ZdaPv(i8* %p.0.4) nounwind
br label %bb1.i60
bb1.i60: ; preds = %bb6.i.i57, %bb5.i.i56, %.noexc64, %bb3.i.i54, %bb2.preheader.i.i48, %bb13
%p.1.1 = phi i32 [ %p.1.0, %bb3.i.i54 ], [ %p.1.4, %bb2.preheader.i.i48 ], [ %p.1.4, %bb13 ], [ %p.1.0, %bb6.i.i57 ], [ %p.1.0, %bb5.i.i56 ], [ %p.1.0, %.noexc64 ] ; <i32> [#uses=1]
%p.0.0 = phi i8* [ %p.0.4, %bb3.i.i54 ], [ %p.0.4, %bb2.preheader.i.i48 ], [ %p.0.4, %bb13 ], [ %27, %bb6.i.i57 ], [ %27, %bb5.i.i56 ], [ %27, %.noexc64 ] ; <i8*> [#uses=2]
%31 = sext i32 %p.2.3 to i64 ; <i64> [#uses=1]
%32 = getelementptr inbounds i8* %p.0.0, i64 %31 ; <i8*> [#uses=2]
%33 = icmp eq i8* %32, null ; <i1> [#uses=1]
br i1 %33, label %_ZN6vectorIcE3addERKc.exit65, label %bb2.i63
bb2.i63: ; preds = %bb1.i60
store i8 32, i8* %32, align 1
br label %_ZN6vectorIcE3addERKc.exit65
_ZN6vectorIcE3addERKc.exit65: ; preds = %bb2.i63, %bb1.i60
%34 = add nsw i32 %p.2.3, 1 ; <i32> [#uses=1]
br label %bb14
bb14: ; preds = %_ZN6vectorIcE3addERKc.exit65, %bb9
%p.2.0 = phi i32 [ %34, %_ZN6vectorIcE3addERKc.exit65 ], [ %p.2.3, %bb9 ] ; <i32> [#uses=2]
%p.1.2 = phi i32 [ %p.1.1, %_ZN6vectorIcE3addERKc.exit65 ], [ %p.1.4, %bb9 ] ; <i32> [#uses=9]
%p.0.1 = phi i8* [ %p.0.0, %_ZN6vectorIcE3addERKc.exit65 ], [ %p.0.4, %bb9 ] ; <i8*> [#uses=7]
%35 = add nsw i32 %p.2.0, %len.0 ; <i32> [#uses=6]
%36 = icmp sgt i32 %35, %p.1.2 ; <i1> [#uses=1]
br i1 %36, label %bb.i.i45, label %_ZN6vectorIcE3putEPKci.exit
bb.i.i45: ; preds = %bb14
%37 = icmp eq i32 %p.1.2, 0 ; <i1> [#uses=1]
br i1 %37, label %bb.i.i.i, label %bb2.preheader.i.i.i
bb2.preheader.i.i.i: ; preds = %bb.i.i45
%38 = icmp slt i32 %p.1.2, %35 ; <i1> [#uses=1]
br i1 %38, label %bb1.i.i.i, label %_ZN6vectorIcE3putEPKci.exit
bb.i.i.i: ; preds = %bb.i.i45
%39 = icmp slt i32 %35, 8 ; <i1> [#uses=1]
%iftmp.215.0.i.i.i.i = select i1 %39, i32 8, i32 %35 ; <i32> [#uses=1]
br label %bb3.i.i.i
bb1.i.i.i: ; preds = %bb1.i.i.i, %bb2.preheader.i.i.i
%.tmp.0.i.i.i = phi i32 [ %40, %bb1.i.i.i ], [ %p.1.2, %bb2.preheader.i.i.i ] ; <i32> [#uses=1]
%40 = shl i32 %.tmp.0.i.i.i, 1 ; <i32> [#uses=3]
%41 = icmp slt i32 %40, %35 ; <i1> [#uses=1]
br i1 %41, label %bb1.i.i.i, label %bb3.i.i.i
bb3.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
%p.1.5 = phi i32 [ %iftmp.215.0.i.i.i.i, %bb.i.i.i ], [ %40, %bb1.i.i.i ] ; <i32> [#uses=6]
%42 = icmp sgt i32 %p.1.5, %p.1.2 ; <i1> [#uses=1]
br i1 %42, label %bb4.i.i.i, label %_ZN6vectorIcE3putEPKci.exit
bb4.i.i.i: ; preds = %bb3.i.i.i
%43 = sext i32 %p.1.5 to i64 ; <i64> [#uses=1]
%44 = invoke i8* @_Znam(i64 %43)
to label %.noexc46 unwind label %lpad ; <i8*> [#uses=4]
.noexc46: ; preds = %bb4.i.i.i
%45 = icmp sgt i32 %p.1.2, 0 ; <i1> [#uses=1]
br i1 %45, label %bb5.i.i.i, label %_ZN6vectorIcE3putEPKci.exit
bb5.i.i.i: ; preds = %.noexc46
%46 = sext i32 %p.1.2 to i64 ; <i64> [#uses=1]
tail call void @llvm.memcpy.i64(i8* %44, i8* %p.0.1, i64 %46, i32 1)
%47 = icmp eq i8* %p.0.1, null ; <i1> [#uses=1]
br i1 %47, label %_ZN6vectorIcE3putEPKci.exit, label %bb6.i.i.i
bb6.i.i.i: ; preds = %bb5.i.i.i
tail call void @_ZdaPv(i8* %p.0.1) nounwind
br label %_ZN6vectorIcE3putEPKci.exit
_ZN6vectorIcE3putEPKci.exit: ; preds = %bb6.i.i.i, %bb5.i.i.i, %.noexc46, %bb3.i.i.i, %bb2.preheader.i.i.i, %bb14
%p.1.6 = phi i32 [ %p.1.5, %bb3.i.i.i ], [ %p.1.2, %bb2.preheader.i.i.i ], [ %p.1.2, %bb14 ], [ %p.1.5, %bb6.i.i.i ], [ %p.1.5, %bb5.i.i.i ], [ %p.1.5, %.noexc46 ] ; <i32> [#uses=1]
%p.0.5 = phi i8* [ %p.0.1, %bb3.i.i.i ], [ %p.0.1, %bb2.preheader.i.i.i ], [ %p.0.1, %bb14 ], [ %44, %bb6.i.i.i ], [ %44, %bb5.i.i.i ], [ %44, %.noexc46 ] ; <i8*> [#uses=2]
%48 = sext i32 %p.2.0 to i64 ; <i64> [#uses=1]
%49 = getelementptr inbounds i8* %p.0.5, i64 %48 ; <i8*> [#uses=1]
%50 = sext i32 %len.0 to i64 ; <i64> [#uses=1]
tail call void @llvm.memcpy.i64(i8* %49, i8* %elem.0, i64 %50, i32 1) nounwind
br label %bb16
bb16: ; preds = %_ZN6vectorIcE3putEPKci.exit, %bb8
%p.2.1 = phi i32 [ %35, %_ZN6vectorIcE3putEPKci.exit ], [ %p.2.3, %bb8 ] ; <i32> [#uses=1]
%p.1.3 = phi i32 [ %p.1.6, %_ZN6vectorIcE3putEPKci.exit ], [ %p.1.4, %bb8 ] ; <i32> [#uses=1]
%p.0.2 = phi i8* [ %p.0.5, %_ZN6vectorIcE3putEPKci.exit ], [ %p.0.4, %bb8 ] ; <i8*> [#uses=1]
%51 = tail call i64 @strspn(i8* %s_addr.0, i8* getelementptr inbounds ([4 x i8]* @.str12, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=1]
%s_addr.0.sum = add i64 %51, %.sum33.pn ; <i64> [#uses=1]
%52 = getelementptr inbounds i8* %s_addr.1, i64 %s_addr.0.sum ; <i8*> [#uses=1]
br label %bb17
bb17: ; preds = %bb16, %entry
%p.2.3 = phi i32 [ 0, %entry ], [ %p.2.1, %bb16 ] ; <i32> [#uses=10]
%p.1.4 = phi i32 [ 0, %entry ], [ %p.1.3, %bb16 ] ; <i32> [#uses=18]
%p.0.4 = phi i8* [ null, %entry ], [ %p.0.2, %bb16 ] ; <i8*> [#uses=16]
%s_addr.1 = phi i8* [ %1, %entry ], [ %52, %bb16 ] ; <i8*> [#uses=9]
%53 = load i8* %s_addr.1, align 1 ; <i8> [#uses=2]
%54 = icmp eq i8 %53, 0 ; <i1> [#uses=1]
br i1 %54, label %bb18, label %bb
bb18: ; preds = %bb17
%55 = icmp eq i32 %p.2.3, %p.1.4 ; <i1> [#uses=1]
br i1 %55, label %bb.i, label %bb1.i44
bb.i: ; preds = %bb18
%56 = add nsw i32 %p.2.3, 1 ; <i32> [#uses=4]
%57 = icmp eq i32 %p.1.4, 0 ; <i1> [#uses=1]
br i1 %57, label %bb.i.i, label %bb2.preheader.i.i
bb2.preheader.i.i: ; preds = %bb.i
%58 = icmp slt i32 %p.1.4, %56 ; <i1> [#uses=1]
br i1 %58, label %bb1.i.i, label %bb1.i44
bb.i.i: ; preds = %bb.i
%59 = icmp slt i32 %56, 8 ; <i1> [#uses=1]
%iftmp.215.0.i.i.i = select i1 %59, i32 8, i32 %56 ; <i32> [#uses=1]
br label %bb3.i.i
bb1.i.i: ; preds = %bb1.i.i, %bb2.preheader.i.i
%.tmp.0.i.i = phi i32 [ %60, %bb1.i.i ], [ %p.1.4, %bb2.preheader.i.i ] ; <i32> [#uses=1]
%60 = shl i32 %.tmp.0.i.i, 1 ; <i32> [#uses=3]
%61 = icmp slt i32 %60, %56 ; <i1> [#uses=1]
br i1 %61, label %bb1.i.i, label %bb3.i.i
bb3.i.i: ; preds = %bb1.i.i, %bb.i.i
%62 = phi i32 [ %iftmp.215.0.i.i.i, %bb.i.i ], [ %60, %bb1.i.i ] ; <i32> [#uses=2]
%63 = icmp sgt i32 %62, %p.1.4 ; <i1> [#uses=1]
br i1 %63, label %bb4.i.i, label %bb1.i44
bb4.i.i: ; preds = %bb3.i.i
%64 = sext i32 %62 to i64 ; <i64> [#uses=1]
%65 = invoke i8* @_Znam(i64 %64)
to label %.noexc unwind label %lpad ; <i8*> [#uses=4]
.noexc: ; preds = %bb4.i.i
%66 = icmp sgt i32 %p.1.4, 0 ; <i1> [#uses=1]
br i1 %66, label %bb5.i.i, label %bb1.i44
bb5.i.i: ; preds = %.noexc
%67 = sext i32 %p.1.4 to i64 ; <i64> [#uses=1]
tail call void @llvm.memcpy.i64(i8* %65, i8* %p.0.4, i64 %67, i32 1)
%68 = icmp eq i8* %p.0.4, null ; <i1> [#uses=1]
br i1 %68, label %bb1.i44, label %bb6.i.i
bb6.i.i: ; preds = %bb5.i.i
tail call void @_ZdaPv(i8* %p.0.4) nounwind
br label %bb1.i44
bb1.i44: ; preds = %bb6.i.i, %bb5.i.i, %.noexc, %bb3.i.i, %bb2.preheader.i.i, %bb18
%p.0.6 = phi i8* [ %p.0.4, %bb3.i.i ], [ %p.0.4, %bb2.preheader.i.i ], [ %p.0.4, %bb18 ], [ %65, %bb6.i.i ], [ %65, %bb5.i.i ], [ %65, %.noexc ] ; <i8*> [#uses=6]
%69 = sext i32 %p.2.3 to i64 ; <i64> [#uses=1]
%70 = getelementptr inbounds i8* %p.0.6, i64 %69 ; <i8*> [#uses=2]
%71 = icmp eq i8* %70, null ; <i1> [#uses=1]
br i1 %71, label %invcont19, label %bb2.i
bb2.i: ; preds = %bb1.i44
store i8 0, i8* %70, align 1
br label %invcont19
invcont19: ; preds = %bb2.i, %bb1.i44
%72 = tail call i64 @strlen(i8* %p.0.6) nounwind readonly ; <i64> [#uses=2]
%73 = add i64 %72, 1 ; <i64> [#uses=2]
%74 = invoke i8* @_Znam(i64 %73)
to label %invcont20 unwind label %lpad ; <i8*> [#uses=4]
invcont20: ; preds = %invcont19
%75 = tail call i8* @strncpy(i8* noalias %74, i8* noalias %p.0.6, i64 %73) nounwind ; <i8*> [#uses=0]
%76 = getelementptr inbounds i8* %74, i64 %72 ; <i8*> [#uses=1]
store i8 0, i8* %76, align 1
%77 = icmp eq i8* %p.0.6, null ; <i1> [#uses=1]
br i1 %77, label %_ZN6vectorIcED1Ev.exit43, label %bb1.i41
bb1.i41: ; preds = %invcont20
tail call void @_ZdaPv(i8* %p.0.6) nounwind
ret i8* %74
_ZN6vectorIcED1Ev.exit43: ; preds = %invcont20
ret i8* %74
invcont22: ; preds = %bb1.i, %lpad
tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
unreachable
lpad: ; preds = %invcont19, %bb4.i.i, %bb4.i.i.i, %bb4.i.i55
%p.0.3 = phi i8* [ %p.0.6, %invcont19 ], [ %p.0.4, %bb4.i.i ], [ %p.0.4, %bb4.i.i55 ], [ %p.0.1, %bb4.i.i.i ] ; <i8*> [#uses=2]
%eh_ptr = tail call i8* @llvm.eh.exception() ; <i8*> [#uses=2]
%eh_select26 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i8* null) ; <i32> [#uses=0]
%78 = icmp eq i8* %p.0.3, null ; <i1> [#uses=1]
br i1 %78, label %invcont22, label %bb1.i
bb1.i: ; preds = %lpad
tail call void @_ZdaPv(i8* %p.0.3) nounwind
br label %invcont22
}
define void @_ZN7_stdcmdILi1068EE3runEPcS1_(i8* %list, i8* %del) align 2 {
entry:
%0 = tail call i8* @_Z7listdelPKcS0_(i8* %list, i8* %del) ; <i8*> [#uses=1]
store i8* %0, i8** @commandret, align 8
ret void
}
define i8* @_Z4concPPcib(i8** nocapture %w, i32 %n, i8 zeroext %space) {
entry:
%toBool = icmp eq i8 %space, 0 ; <i1> [#uses=2]
br i1 %toBool, label %bb4.preheader, label %bb
bb: ; preds = %entry
%0 = add nsw i32 %n, -1 ; <i32> [#uses=2]
%1 = icmp sgt i32 %0, 0 ; <i1> [#uses=1]
%iftmp.215.0.i = select i1 %1, i32 %0, i32 0 ; <i32> [#uses=1]
br label %bb4.preheader
bb4.preheader: ; preds = %bb, %entry
%len.0.ph = phi i32 [ %iftmp.215.0.i, %bb ], [ 0, %entry ] ; <i32> [#uses=2]
%2 = icmp sgt i32 %n, 0 ; <i1> [#uses=1]
br i1 %2, label %bb.nph, label %bb5
bb.nph: ; preds = %bb4.preheader
%tmp = zext i32 %n to i64 ; <i64> [#uses=1]
br label %bb3
bb3: ; preds = %bb3, %bb.nph
%indvar19 = phi i64 [ 0, %bb.nph ], [ %indvar.next20, %bb3 ] ; <i64> [#uses=2]
%len.014 = phi i32 [ %len.0.ph, %bb.nph ], [ %6, %bb3 ] ; <i32> [#uses=1]
%scevgep21 = getelementptr i8** %w, i64 %indvar19 ; <i8**> [#uses=1]
%3 = load i8** %scevgep21, align 8 ; <i8*> [#uses=1]
%4 = tail call i64 @strlen(i8* %3) nounwind readonly ; <i64> [#uses=1]
%5 = trunc i64 %4 to i32 ; <i32> [#uses=1]
%6 = add nsw i32 %5, %len.014 ; <i32> [#uses=2]
%indvar.next20 = add i64 %indvar19, 1 ; <i64> [#uses=2]
%exitcond = icmp eq i64 %indvar.next20, %tmp ; <i1> [#uses=1]
br i1 %exitcond, label %bb5, label %bb3
bb5: ; preds = %bb3, %bb4.preheader
%len.0.lcssa = phi i32 [ %len.0.ph, %bb4.preheader ], [ %6, %bb3 ] ; <i32> [#uses=1]
%7 = sext i32 %len.0.lcssa to i64 ; <i64> [#uses=2]
%8 = add i64 %7, 1 ; <i64> [#uses=2]
%9 = tail call i8* @_Znam(i64 %8) ; <i8*> [#uses=7]
tail call void @llvm.memset.i64(i8* %9, i8 0, i64 %8, i32 1)
%10 = getelementptr inbounds i8* %9, i64 %7 ; <i8*> [#uses=1]
store i8 0, i8* %10, align 1
%11 = add nsw i32 %n, -1 ; <i32> [#uses=2]
br i1 %toBool, label %bb11.us, label %bb11
bb11.us: ; preds = %bb10.us, %bb5
%indvar = phi i64 [ %indvar.next, %bb10.us ], [ 0, %bb5 ] ; <i64> [#uses=3]
%i.0.us = trunc i64 %indvar to i32 ; <i32> [#uses=2]
%12 = icmp slt i32 %i.0.us, %n ; <i1> [#uses=1]
br i1 %12, label %bb6.us, label %bb12
bb10.us: ; preds = %bb6.us
%indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
br label %bb11.us
bb6.us: ; preds = %bb11.us
%scevgep = getelementptr i8** %w, i64 %indvar ; <i8**> [#uses=1]
%13 = load i8** %scevgep, align 8 ; <i8*> [#uses=1]
%14 = tail call i8* @strcat(i8* noalias %9, i8* noalias %13) nounwind ; <i8*> [#uses=0]
%15 = icmp eq i32 %11, %i.0.us ; <i1> [#uses=1]
br i1 %15, label %bb12, label %bb10.us
bb6: ; preds = %bb11
%scevgep18 = getelementptr i8** %w, i64 %indvar16 ; <i8**> [#uses=1]
%16 = load i8** %scevgep18, align 8 ; <i8*> [#uses=1]
%17 = tail call i8* @strcat(i8* noalias %9, i8* noalias %16) nounwind ; <i8*> [#uses=0]
%18 = icmp eq i32 %11, %i.0 ; <i1> [#uses=1]
br i1 %18, label %bb12, label %bb10
bb10: ; preds = %bb6
%strlen = tail call i64 @strlen(i8* %9) ; <i64> [#uses=1]
%endptr = getelementptr i8* %9, i64 %strlen ; <i8*> [#uses=1]
%19 = bitcast i8* %endptr to i16* ; <i16*> [#uses=1]
store i16 32, i16* %19, align 1
%indvar.next17 = add i64 %indvar16, 1 ; <i64> [#uses=1]
br label %bb11
bb11: ; preds = %bb10, %bb5
%indvar16 = phi i64 [ %indvar.next17, %bb10 ], [ 0, %bb5 ] ; <i64> [#uses=3]
%i.0 = trunc i64 %indvar16 to i32 ; <i32> [#uses=2]
%20 = icmp slt i32 %i.0, %n ; <i1> [#uses=1]
br i1 %20, label %bb6, label %bb12
bb12: ; preds = %bb11, %bb6, %bb6.us, %bb11.us
ret i8* %9
}
declare i8* @strcat(i8* noalias, i8* noalias nocapture) nounwind
define void @_Z10concatwordPPcPi(i8** nocapture %args, i32* nocapture %numargs) {
entry:
%0 = load i32* %numargs, align 4 ; <i32> [#uses=1]
%1 = tail call i8* @_Z4concPPcib(i8** %args, i32 %0, i8 zeroext 0) ; <i8*> [#uses=1]
store i8* %1, i8** @commandret, align 8
ret void
}
define void @_Z9pushidentR5identPc(%struct.ident* nocapture %id, i8* %val) {
entry:
%0 = getelementptr inbounds %struct.ident* %id, i64 0, i32 1 ; <i32*> [#uses=1]
%1 = load i32* %0, align 8 ; <i32> [#uses=1]
%2 = icmp eq i32 %1, 5 ; <i1> [#uses=1]
br i1 %2, label %bb, label %return
bb: ; preds = %entry
%3 = tail call i8* @_Znwm(i64 16) ; <i8*> [#uses=3]
%4 = getelementptr inbounds %struct.ident* %id, i64 0, i32 8, i32 0 ; <i8**> [#uses=1]
%5 = load i8** %4, align 8 ; <i8*> [#uses=1]
%6 = getelementptr inbounds %struct.ident* %id, i64 0, i32 7, i32 0 ; <i8**> [#uses=2]
%7 = load i8** %6, align 8 ; <i8*> [#uses=4]
%8 = icmp eq i8* %5, %7 ; <i1> [#uses=1]
br i1 %8, label %bb1, label %bb3
bb1: ; preds = %bb
%9 = tail call i64 @strlen(i8* %7) nounwind readonly ; <i64> [#uses=2]
%10 = add i64 %9, 1 ; <i64> [#uses=2]
%11 = tail call i8* @_Znam(i64 %10) ; <i8*> [#uses=3]
%12 = tail call i8* @strncpy(i8* noalias %11, i8* noalias %7, i64 %10) nounwind ; <i8*> [#uses=0]
%13 = getelementptr inbounds i8* %11, i64 %9 ; <i8*> [#uses=1]
store i8 0, i8* %13, align 1
br label %bb3
bb3: ; preds = %bb1, %bb
%iftmp.29.0 = phi i8* [ %11, %bb1 ], [ %7, %bb ] ; <i8*> [#uses=1]
%14 = bitcast i8* %3 to i8** ; <i8**> [#uses=1]
store i8* %iftmp.29.0, i8** %14, align 8
%15 = getelementptr inbounds %struct.ident* %id, i64 0, i32 6, i32 0 ; <void ()**> [#uses=2]
%16 = load void ()** %15, align 8 ; <void ()*> [#uses=1]
%17 = bitcast void ()* %16 to %struct.identstack* ; <%struct.identstack*> [#uses=1]
%18 = getelementptr inbounds i8* %3, i64 8 ; <i8*> [#uses=1]
%19 = bitcast i8* %18 to %struct.identstack** ; <%struct.identstack**> [#uses=1]
store %struct.identstack* %17, %struct.identstack** %19, align 8
%.c = bitcast i8* %3 to void ()* ; <void ()*> [#uses=1]
store void ()* %.c, void ()** %15
store i8* %val, i8** %6, align 8
ret void
return: ; preds = %entry
ret void
}
declare i8* @_Znwm(i64)
declare void @_ZdlPv(i8*) nounwind
define linkonce_odr %struct.ident* @_ZN9hashtableIPKc5identE6accessERKS1_RKS2_(%"struct.hashtable<const char*,ident>"* nocapture %this, i8** nocapture %key, %struct.ident* nocapture %data) align 2 {
entry:
%0 = load i8** %key, align 8 ; <i8*> [#uses=3]
%1 = load i8* %0, align 1 ; <i8> [#uses=2]
%2 = icmp eq i8 %1, 0 ; <i1> [#uses=1]
br i1 %2, label %_ZL6hthashPKc.exit, label %bb.i
bb.i: ; preds = %bb.i, %entry
%indvar.i = phi i64 [ %tmp, %bb.i ], [ 0, %entry ] ; <i64> [#uses=1]
%3 = phi i8 [ %7, %bb.i ], [ %1, %entry ] ; <i8> [#uses=1]
%h.04.i = phi i32 [ %6, %bb.i ], [ 5381, %entry ] ; <i32> [#uses=1]
%tmp = add i64 %indvar.i, 1 ; <i64> [#uses=2]
%scevgep.i = getelementptr i8* %0, i64 %tmp ; <i8*> [#uses=1]
%4 = sext i8 %3 to i32 ; <i32> [#uses=1]
%5 = mul i32 %h.04.i, 33 ; <i32> [#uses=1]
%6 = xor i32 %5, %4 ; <i32> [#uses=2]
%7 = load i8* %scevgep.i, align 1 ; <i8> [#uses=2]
%8 = icmp eq i8 %7, 0 ; <i1> [#uses=1]
br i1 %8, label %_ZL6hthashPKc.exit, label %bb.i
_ZL6hthashPKc.exit: ; preds = %bb.i, %entry
%h.0.lcssa.i = phi i32 [ 5381, %entry ], [ %6, %bb.i ] ; <i32> [#uses=1]
%9 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %this, i64 0, i32 0, i32 0 ; <i32*> [#uses=1]
%10 = load i32* %9, align 8 ; <i32> [#uses=1]
%11 = add nsw i32 %10, -1 ; <i32> [#uses=1]
%12 = and i32 %11, %h.0.lcssa.i ; <i32> [#uses=1]
%13 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %this, i64 0, i32 0, i32 2 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"***> [#uses=3]
%14 = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** %13, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=2]
%15 = zext i32 %12 to i64 ; <i64> [#uses=3]
%16 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %14, i64 %15 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3
bb: ; preds = %bb3
%.idx = getelementptr %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0, i64 0, i32 0, i32 0 ; <i8**> [#uses=1]
%.idx.val = load i8** %.idx ; <i8*> [#uses=1]
%17 = tail call i32 @strcmp(i8* %0, i8* %.idx.val) nounwind readonly ; <i32> [#uses=1]
%18 = icmp eq i32 %17, 0 ; <i1> [#uses=1]
br i1 %18, label %bb1, label %bb2
bb1: ; preds = %bb
%19 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0, i64 0, i32 0, i32 1 ; <%struct.ident*> [#uses=1]
ret %struct.ident* %19
bb2: ; preds = %bb
%20 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0, i64 0, i32 1 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3
bb3: ; preds = %bb2, %_ZL6hthashPKc.exit
%c.0.in = phi %"struct.hashset<hashtableentry<const char*, ident> >::chain"** [ %16, %_ZL6hthashPKc.exit ], [ %20, %bb2 ] ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%c.0 = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %c.0.in, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"*> [#uses=4]
%21 = icmp eq %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0, null ; <i1> [#uses=1]
br i1 %21, label %bb4, label %bb
bb4: ; preds = %bb3
%22 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %this, i64 0, i32 0, i32 4 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=4]
%23 = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %22, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"*> [#uses=2]
%24 = icmp eq %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %23, null ; <i1> [#uses=1]
br i1 %24, label %bb.i.i, label %_ZN9hashtableIPKc5identE6insertERKS1_j.exit
bb.i.i: ; preds = %bb4
%25 = tail call i8* @_Znwm(i64 6152) ; <i8*> [#uses=7]
br label %invcont.i.i.i
invcont.i.i.i: ; preds = %invcont.i.i.i, %bb.i.i
%indvar.i.i.i = phi i64 [ 0, %bb.i.i ], [ %indvar.next.i.i.i, %invcont.i.i.i ] ; <i64> [#uses=2]
%tmp17 = mul i64 %indvar.i.i.i, 96 ; <i64> [#uses=1]
%tmp1822 = or i64 %tmp17, 8 ; <i64> [#uses=1]
%scevgep19 = getelementptr i8* %25, i64 %tmp1822 ; <i8*> [#uses=1]
%scevgep.i.i.i = bitcast i8* %scevgep19 to i32 (...)*** ; <i32 (...)***> [#uses=1]
store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV5ident, i64 0, i64 2), i32 (...)*** %scevgep.i.i.i, align 8
%indvar.next.i.i.i = add i64 %indvar.i.i.i, 1 ; <i64> [#uses=2]
%exitcond16 = icmp eq i64 %indvar.next.i.i.i, 64 ; <i1> [#uses=1]
br i1 %exitcond16, label %bb.nph.i.i, label %invcont.i.i.i
bb.nph.i.i: ; preds = %invcont.i.i.i
%26 = bitcast i8* %25 to %"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"* ; <%"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"*> [#uses=1]
%27 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %this, i64 0, i32 0, i32 3 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"**> [#uses=2]
%28 = load %"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"** %27, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"*> [#uses=1]
%29 = getelementptr inbounds i8* %25, i64 6144 ; <i8*> [#uses=1]
%30 = bitcast i8* %29 to %"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"** ; <%"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"**> [#uses=1]
store %"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"* %28, %"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"** %30, align 8
store %"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"* %26, %"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"** %27, align 8
br label %bb3.i.i
bb3.i.i: ; preds = %bb3.i.i, %bb.nph.i.i
%indvar.i.i = phi i64 [ 0, %bb.nph.i.i ], [ %indvar.next.i.i, %bb3.i.i ] ; <i64> [#uses=2]
%tmp10 = mul i64 %indvar.i.i, 96 ; <i64> [#uses=2]
%tmp11 = add i64 %tmp10, 88 ; <i64> [#uses=1]
%scevgep = getelementptr i8* %25, i64 %tmp11 ; <i8*> [#uses=1]
%scevgep13.i.i = bitcast i8* %scevgep to %"struct.hashset<hashtableentry<const char*, ident> >::chain"** ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%tmp13 = add i64 %tmp10, 96 ; <i64> [#uses=1]
%scevgep14 = getelementptr i8* %25, i64 %tmp13 ; <i8*> [#uses=1]
%scevgep1516.i.i = bitcast i8* %scevgep14 to %"struct.hashset<hashtableentry<const char*, ident> >::chain"* ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"*> [#uses=1]
store %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %scevgep1516.i.i, %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %scevgep13.i.i, align 8
%indvar.next.i.i = add i64 %indvar.i.i, 1 ; <i64> [#uses=2]
%exitcond = icmp eq i64 %indvar.next.i.i, 63 ; <i1> [#uses=1]
br i1 %exitcond, label %bb5.i.i, label %bb3.i.i
bb5.i.i: ; preds = %bb3.i.i
%31 = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %22, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"*> [#uses=1]
%32 = getelementptr inbounds i8* %25, i64 6136 ; <i8*> [#uses=1]
%33 = bitcast i8* %32 to %"struct.hashset<hashtableentry<const char*, ident> >::chain"** ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
store %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %31, %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %33, align 8
%34 = bitcast i8* %25 to %"struct.hashset<hashtableentry<const char*, ident> >::chain"* ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"*> [#uses=2]
store %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %34, %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %22, align 8
%.pre = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** %13, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %_ZN9hashtableIPKc5identE6insertERKS1_j.exit
_ZN9hashtableIPKc5identE6insertERKS1_j.exit: ; preds = %bb5.i.i, %bb4
%35 = phi %"struct.hashset<hashtableentry<const char*, ident> >::chain"** [ %.pre, %bb5.i.i ], [ %14, %bb4 ] ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%36 = phi %"struct.hashset<hashtableentry<const char*, ident> >::chain"* [ %34, %bb5.i.i ], [ %23, %bb4 ] ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"*> [#uses=4]
%37 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %36, i64 0, i32 1 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=2]
%38 = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %37, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"*> [#uses=1]
store %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %38, %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %22, align 8
%39 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %35, i64 %15 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%40 = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %39, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"*> [#uses=1]
store %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %40, %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %37, align 8
%41 = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** %13, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%42 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %41, i64 %15 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
store %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %36, %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %42, align 8
%43 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %this, i64 0, i32 0, i32 1 ; <i32*> [#uses=2]
%44 = load i32* %43, align 4 ; <i32> [#uses=1]
%45 = add nsw i32 %44, 1 ; <i32> [#uses=1]
store i32 %45, i32* %43, align 4
%46 = load i8** %key, align 8 ; <i8*> [#uses=1]
%47 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %36, i64 0, i32 0, i32 0 ; <i8**> [#uses=1]
store i8* %46, i8** %47, align 8
%48 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %36, i64 0, i32 0, i32 1 ; <%struct.ident*> [#uses=2]
%49 = bitcast %struct.ident* %48 to i8* ; <i8*> [#uses=1]
%50 = bitcast %struct.ident* %data to i8* ; <i8*> [#uses=1]
tail call void @llvm.memcpy.i64(i8* %49, i8* %50, i64 80, i32 8) nounwind
ret %struct.ident* %48
}
define void @_Z8addidentPKcP5ident(i8* %name, %struct.ident* nocapture %id) {
entry:
%name_addr = alloca i8*, align 8 ; <i8**> [#uses=2]
store i8* %name, i8** %name_addr
%0 = load %"struct.hashtable<const char*,ident>"** @idents, align 8 ; <%"struct.hashtable<const char*,ident>"*> [#uses=2]
%1 = icmp eq %"struct.hashtable<const char*,ident>"* %0, null ; <i1> [#uses=1]
br i1 %1, label %bb, label %bb3
bb: ; preds = %entry
%2 = call i8* @_Znwm(i64 32) ; <i8*> [#uses=7]
%3 = bitcast i8* %2 to %"struct.hashtable<const char*,ident>"* ; <%"struct.hashtable<const char*,ident>"*> [#uses=2]
%4 = bitcast i8* %2 to i32* ; <i32*> [#uses=1]
store i32 1024, i32* %4, align 8
%5 = getelementptr inbounds i8* %2, i64 4 ; <i8*> [#uses=1]
%6 = bitcast i8* %5 to i32* ; <i32*> [#uses=1]
store i32 0, i32* %6, align 4
%7 = getelementptr inbounds i8* %2, i64 16 ; <i8*> [#uses=1]
%8 = bitcast i8* %7 to %"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"** ; <%"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"**> [#uses=1]
store %"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"* null, %"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"** %8, align 8
%9 = getelementptr inbounds i8* %2, i64 24 ; <i8*> [#uses=1]
%10 = bitcast i8* %9 to %"struct.hashset<hashtableentry<const char*, ident> >::chain"** ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
store %"struct.hashset<hashtableentry<const char*, ident> >::chain"* null, %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %10, align 8
%11 = invoke i8* @_Znam(i64 8192)
to label %.noexc unwind label %lpad ; <i8*> [#uses=1]
.noexc: ; preds = %bb
%12 = bitcast i8* %11 to %"struct.hashset<hashtableentry<const char*, ident> >::chain"** ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=2]
%13 = getelementptr inbounds i8* %2, i64 8 ; <i8*> [#uses=1]
%14 = bitcast i8* %13 to %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"***> [#uses=2]
store %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %12, %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** %14, align 8
store %"struct.hashset<hashtableentry<const char*, ident> >::chain"* null, %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %12, align 8
br label %bb.bb_crit_edge.i.i
bb.bb_crit_edge.i.i: ; preds = %bb.bb_crit_edge.i.i, %.noexc
%indvar.i = phi i64 [ 0, %.noexc ], [ %tmp, %bb.bb_crit_edge.i.i ] ; <i64> [#uses=1]
%tmp = add i64 %indvar.i, 1 ; <i64> [#uses=3]
%.pre.i.i = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** %14, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%scevgep.i.i = getelementptr %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %.pre.i.i, i64 %tmp ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
store %"struct.hashset<hashtableentry<const char*, ident> >::chain"* null, %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %scevgep.i.i, align 8
%exitcond = icmp eq i64 %tmp, 1023 ; <i1> [#uses=1]
br i1 %exitcond, label %bb2, label %bb.bb_crit_edge.i.i
bb2: ; preds = %bb.bb_crit_edge.i.i
store %"struct.hashtable<const char*,ident>"* %3, %"struct.hashtable<const char*,ident>"** @idents, align 8
br label %bb3
bb3: ; preds = %bb2, %entry
%15 = phi %"struct.hashtable<const char*,ident>"* [ %3, %bb2 ], [ %0, %entry ] ; <%"struct.hashtable<const char*,ident>"*> [#uses=1]
%16 = call %struct.ident* @_ZN9hashtableIPKc5identE6accessERKS1_RKS2_(%"struct.hashtable<const char*,ident>"* %15, i8** %name_addr, %struct.ident* %id) ; <%struct.ident*> [#uses=0]
ret void
lpad: ; preds = %bb
%eh_ptr = call i8* @llvm.eh.exception() ; <i8*> [#uses=2]
%eh_select5 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i8* null) ; <i32> [#uses=0]
call void @_ZdlPv(i8* %2) nounwind
call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
unreachable
}
define void @_Z6aliasaPKcPc(i8* %name, i8* %action) {
entry:
%b1 = alloca %struct.ident, align 8 ; <%struct.ident*> [#uses=9]
%0 = load %"struct.hashtable<const char*,ident>"** @idents, align 8 ; <%"struct.hashtable<const char*,ident>"*> [#uses=2]
%1 = load i8* %name, align 1 ; <i8> [#uses=2]
%2 = icmp eq i8 %1, 0 ; <i1> [#uses=1]
br i1 %2, label %_ZL6hthashPKc.exit.i, label %bb.i.i
bb.i.i: ; preds = %bb.i.i, %entry
%indvar.i.i = phi i64 [ %tmp, %bb.i.i ], [ 0, %entry ] ; <i64> [#uses=1]
%3 = phi i8 [ %7, %bb.i.i ], [ %1, %entry ] ; <i8> [#uses=1]
%h.04.i.i = phi i32 [ %6, %bb.i.i ], [ 5381, %entry ] ; <i32> [#uses=1]
%tmp = add i64 %indvar.i.i, 1 ; <i64> [#uses=2]
%scevgep.i.i = getelementptr i8* %name, i64 %tmp ; <i8*> [#uses=1]
%4 = sext i8 %3 to i32 ; <i32> [#uses=1]
%5 = mul i32 %h.04.i.i, 33 ; <i32> [#uses=1]
%6 = xor i32 %5, %4 ; <i32> [#uses=2]
%7 = load i8* %scevgep.i.i, align 1 ; <i8> [#uses=2]
%8 = icmp eq i8 %7, 0 ; <i1> [#uses=1]
br i1 %8, label %_ZL6hthashPKc.exit.i, label %bb.i.i
_ZL6hthashPKc.exit.i: ; preds = %bb.i.i, %entry
%h.0.lcssa.i.i = phi i32 [ 5381, %entry ], [ %6, %bb.i.i ] ; <i32> [#uses=1]
%9 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %0, i64 0, i32 0, i32 0 ; <i32*> [#uses=1]
%10 = load i32* %9, align 8 ; <i32> [#uses=1]
%11 = add nsw i32 %10, -1 ; <i32> [#uses=1]
%12 = and i32 %11, %h.0.lcssa.i.i ; <i32> [#uses=1]
%13 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %0, i64 0, i32 0, i32 2 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"***> [#uses=1]
%14 = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** %13, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%15 = zext i32 %12 to i64 ; <i64> [#uses=1]
%16 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %14, i64 %15 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i
bb.i: ; preds = %bb3.i
%.idx.i = getelementptr %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 0 ; <i8**> [#uses=1]
%.idx.val.i = load i8** %.idx.i ; <i8*> [#uses=1]
%17 = call i32 @strcmp(i8* %name, i8* %.idx.val.i) nounwind readonly ; <i32> [#uses=1]
%18 = icmp eq i32 %17, 0 ; <i1> [#uses=1]
br i1 %18, label %_ZN9hashtableIPKc5identE6accessERKS1_.exit, label %bb2.i
bb2.i: ; preds = %bb.i
%19 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 1 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i
bb3.i: ; preds = %bb2.i, %_ZL6hthashPKc.exit.i
%c.0.in.i = phi %"struct.hashset<hashtableentry<const char*, ident> >::chain"** [ %16, %_ZL6hthashPKc.exit.i ], [ %19, %bb2.i ] ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%c.0.i = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %c.0.in.i, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"*> [#uses=9]
%20 = icmp eq %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, null ; <i1> [#uses=1]
br i1 %20, label %bb, label %bb.i
_ZN9hashtableIPKc5identE6accessERKS1_.exit: ; preds = %bb.i
%21 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1 ; <%struct.ident*> [#uses=1]
%22 = icmp eq %struct.ident* %21, null ; <i1> [#uses=1]
br i1 %22, label %bb, label %bb8
bb: ; preds = %_ZN9hashtableIPKc5identE6accessERKS1_.exit, %bb3.i
%23 = load i8* @persistidents, align 1 ; <i8> [#uses=1]
%not.toBool = icmp ne i8 %23, 0 ; <i1> [#uses=1]
%iftmp.38.0 = zext i1 %not.toBool to i32 ; <i32> [#uses=1]
%24 = call i64 @strlen(i8* %name) nounwind readonly ; <i64> [#uses=2]
%25 = add i64 %24, 1 ; <i64> [#uses=2]
%26 = call i8* @_Znam(i64 %25) ; <i8*> [#uses=3]
%27 = call i8* @strncpy(i8* noalias %26, i8* noalias %name, i64 %25) nounwind ; <i8*> [#uses=0]
%28 = getelementptr inbounds i8* %26, i64 %24 ; <i8*> [#uses=1]
store i8 0, i8* %28, align 1
%29 = getelementptr inbounds %struct.ident* %b1, i64 0, i32 0 ; <i32 (...)***> [#uses=1]
store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV5ident, i64 0, i64 2), i32 (...)*** %29, align 8
%30 = getelementptr inbounds %struct.ident* %b1, i64 0, i32 1 ; <i32*> [#uses=1]
store i32 5, i32* %30, align 8
%31 = getelementptr inbounds %struct.ident* %b1, i64 0, i32 2 ; <i8**> [#uses=2]
store i8* %26, i8** %31, align 8
%32 = getelementptr inbounds %struct.ident* %b1, i64 0, i32 5 ; <i32*> [#uses=2]
store i32 2147483647, i32* %32, align 8
%33 = getelementptr inbounds %struct.ident* %b1, i64 0, i32 6, i32 0 ; <void ()**> [#uses=1]
store void ()* null, void ()** %33
%34 = getelementptr inbounds %struct.ident* %b1, i64 0, i32 7, i32 0 ; <i8**> [#uses=1]
store i8* %action, i8** %34, align 8
%35 = getelementptr inbounds %struct.ident* %b1, i64 0, i32 8, i32 0 ; <i8**> [#uses=1]
store i8* null, i8** %35, align 8
%36 = getelementptr inbounds %struct.ident* %b1, i64 0, i32 10 ; <i32*> [#uses=1]
store i32 %iftmp.38.0, i32* %36, align 8
%37 = load i8* @overrideidents, align 1 ; <i8> [#uses=1]
%toBool5 = icmp eq i8 %37, 0 ; <i1> [#uses=1]
br i1 %toBool5, label %bb7, label %bb6
bb6: ; preds = %bb
store i32 0, i32* %32, align 8
br label %bb7
bb7: ; preds = %bb6, %bb
%38 = load %"struct.hashtable<const char*,ident>"** @idents, align 8 ; <%"struct.hashtable<const char*,ident>"*> [#uses=1]
%39 = call %struct.ident* @_ZN9hashtableIPKc5identE6accessERKS1_RKS2_(%"struct.hashtable<const char*,ident>"* %38, i8** %31, %struct.ident* %b1) ; <%struct.ident*> [#uses=0]
ret void
bb8: ; preds = %_ZN9hashtableIPKc5identE6accessERKS1_.exit
%40 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 1 ; <i32*> [#uses=1]
%41 = load i32* %40, align 8 ; <i32> [#uses=1]
%42 = icmp eq i32 %41, 5 ; <i1> [#uses=1]
br i1 %42, label %bb11, label %bb9
bb9: ; preds = %bb8
call void (i32, i8*, ...)* @_Z7conoutfiPKcz(i32 4, i8* getelementptr inbounds ([41 x i8]* @.str16, i64 0, i64 0), i8* %name)
%43 = icmp eq i8* %action, null ; <i1> [#uses=1]
br i1 %43, label %return, label %bb10
bb10: ; preds = %bb9
call void @_ZdaPv(i8* %action) nounwind
ret void
bb11: ; preds = %bb8
%44 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 7, i32 0 ; <i8**> [#uses=2]
%45 = load i8** %44, align 8 ; <i8*> [#uses=3]
%46 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 8, i32 0 ; <i8**> [#uses=1]
%47 = load i8** %46, align 8 ; <i8*> [#uses=1]
%48 = icmp eq i8* %45, %47 ; <i1> [#uses=1]
%49 = icmp eq i8* %45, null ; <i1> [#uses=1]
%or.cond = or i1 %48, %49 ; <i1> [#uses=1]
br i1 %or.cond, label %bb14, label %bb13
bb13: ; preds = %bb11
call void @_ZdaPv(i8* %45) nounwind
br label %bb14
bb14: ; preds = %bb13, %bb11
store i8* %action, i8** %44, align 8
%50 = load i8* @overrideidents, align 1 ; <i8> [#uses=1]
%toBool15 = icmp eq i8 %50, 0 ; <i1> [#uses=1]
%51 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 5 ; <i32*> [#uses=3]
br i1 %toBool15, label %bb17, label %bb16
bb16: ; preds = %bb14
store i32 0, i32* %51, align 8
ret void
bb17: ; preds = %bb14
%52 = load i32* %51, align 8 ; <i32> [#uses=1]
%53 = icmp eq i32 %52, 2147483647 ; <i1> [#uses=1]
br i1 %53, label %bb19, label %bb18
bb18: ; preds = %bb17
store i32 2147483647, i32* %51, align 8
br label %bb19
bb19: ; preds = %bb18, %bb17
%54 = load i8* @persistidents, align 1 ; <i8> [#uses=1]
%toBool20 = icmp eq i8 %54, 0 ; <i1> [#uses=1]
%55 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 10 ; <i32*> [#uses=3]
%56 = load i32* %55, align 8 ; <i32> [#uses=3]
%57 = and i32 %56, 1 ; <i32> [#uses=1]
%toBool22 = icmp eq i32 %57, 0 ; <i1> [#uses=2]
br i1 %toBool20, label %bb27, label %bb21
bb21: ; preds = %bb19
br i1 %toBool22, label %bb26, label %return
bb26: ; preds = %bb21
%58 = or i32 %56, 1 ; <i32> [#uses=1]
store i32 %58, i32* %55, align 8
ret void
bb27: ; preds = %bb19
br i1 %toBool22, label %return, label %bb29
bb29: ; preds = %bb27
%59 = and i32 %56, -2 ; <i32> [#uses=1]
store i32 %59, i32* %55, align 8
ret void
return: ; preds = %bb27, %bb21, %bb9
ret void
}
define void @_Z5aliasPKcS0_(i8* %name, i8* nocapture %action) {
entry:
%0 = tail call i64 @strlen(i8* %action) nounwind readonly ; <i64> [#uses=2]
%1 = add i64 %0, 1 ; <i64> [#uses=2]
%2 = tail call i8* @_Znam(i64 %1) ; <i8*> [#uses=3]
%3 = tail call i8* @strncpy(i8* noalias %2, i8* noalias %action, i64 %1) nounwind ; <i8*> [#uses=0]
%4 = getelementptr inbounds i8* %2, i64 %0 ; <i8*> [#uses=1]
store i8 0, i8* %4, align 1
tail call void @_Z6aliasaPKcPc(i8* %name, i8* %2)
ret void
}
define %struct.ident* @_Z8newidentPKc(i8* %name) {
entry:
%init = alloca %struct.ident, align 8 ; <%struct.ident*> [#uses=9]
%0 = load %"struct.hashtable<const char*,ident>"** @idents, align 8 ; <%"struct.hashtable<const char*,ident>"*> [#uses=2]
%1 = load i8* %name, align 1 ; <i8> [#uses=2]
%2 = icmp eq i8 %1, 0 ; <i1> [#uses=1]
br i1 %2, label %_ZL6hthashPKc.exit.i, label %bb.i.i
bb.i.i: ; preds = %bb.i.i, %entry
%indvar.i.i = phi i64 [ %tmp, %bb.i.i ], [ 0, %entry ] ; <i64> [#uses=1]
%3 = phi i8 [ %7, %bb.i.i ], [ %1, %entry ] ; <i8> [#uses=1]
%h.04.i.i = phi i32 [ %6, %bb.i.i ], [ 5381, %entry ] ; <i32> [#uses=1]
%tmp = add i64 %indvar.i.i, 1 ; <i64> [#uses=2]
%scevgep.i.i = getelementptr i8* %name, i64 %tmp ; <i8*> [#uses=1]
%4 = sext i8 %3 to i32 ; <i32> [#uses=1]
%5 = mul i32 %h.04.i.i, 33 ; <i32> [#uses=1]
%6 = xor i32 %5, %4 ; <i32> [#uses=2]
%7 = load i8* %scevgep.i.i, align 1 ; <i8> [#uses=2]
%8 = icmp eq i8 %7, 0 ; <i1> [#uses=1]
br i1 %8, label %_ZL6hthashPKc.exit.i, label %bb.i.i
_ZL6hthashPKc.exit.i: ; preds = %bb.i.i, %entry
%h.0.lcssa.i.i = phi i32 [ 5381, %entry ], [ %6, %bb.i.i ] ; <i32> [#uses=1]
%9 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %0, i64 0, i32 0, i32 0 ; <i32*> [#uses=1]
%10 = load i32* %9, align 8 ; <i32> [#uses=1]
%11 = add nsw i32 %10, -1 ; <i32> [#uses=1]
%12 = and i32 %11, %h.0.lcssa.i.i ; <i32> [#uses=1]
%13 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %0, i64 0, i32 0, i32 2 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"***> [#uses=1]
%14 = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** %13, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%15 = zext i32 %12 to i64 ; <i64> [#uses=1]
%16 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %14, i64 %15 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i
bb.i: ; preds = %bb3.i
%.idx.i = getelementptr %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 0 ; <i8**> [#uses=1]
%.idx.val.i = load i8** %.idx.i ; <i8*> [#uses=1]
%17 = call i32 @strcmp(i8* %name, i8* %.idx.val.i) nounwind readonly ; <i32> [#uses=1]
%18 = icmp eq i32 %17, 0 ; <i1> [#uses=1]
br i1 %18, label %_ZN9hashtableIPKc5identE6accessERKS1_.exit, label %bb2.i
bb2.i: ; preds = %bb.i
%19 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 1 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i
bb3.i: ; preds = %bb2.i, %_ZL6hthashPKc.exit.i
%c.0.in.i = phi %"struct.hashset<hashtableentry<const char*, ident> >::chain"** [ %16, %_ZL6hthashPKc.exit.i ], [ %19, %bb2.i ] ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%c.0.i = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %c.0.in.i, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"*> [#uses=4]
%20 = icmp eq %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, null ; <i1> [#uses=1]
br i1 %20, label %bb, label %bb.i
_ZN9hashtableIPKc5identE6accessERKS1_.exit: ; preds = %bb.i
%21 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1 ; <%struct.ident*> [#uses=2]
%22 = icmp eq %struct.ident* %21, null ; <i1> [#uses=1]
br i1 %22, label %bb, label %bb4
bb: ; preds = %_ZN9hashtableIPKc5identE6accessERKS1_.exit, %bb3.i
%23 = load i8* @persistidents, align 1 ; <i8> [#uses=1]
%not.toBool = icmp ne i8 %23, 0 ; <i1> [#uses=1]
%iftmp.31.0 = zext i1 %not.toBool to i32 ; <i32> [#uses=1]
%24 = call i8* @_Znam(i64 1) ; <i8*> [#uses=2]
store i8 0, i8* %24, align 1
%25 = call i64 @strlen(i8* %name) nounwind readonly ; <i64> [#uses=2]
%26 = add i64 %25, 1 ; <i64> [#uses=2]
%27 = call i8* @_Znam(i64 %26) ; <i8*> [#uses=3]
%28 = call i8* @strncpy(i8* noalias %27, i8* noalias %name, i64 %26) nounwind ; <i8*> [#uses=0]
%29 = getelementptr inbounds i8* %27, i64 %25 ; <i8*> [#uses=1]
store i8 0, i8* %29, align 1
%30 = getelementptr inbounds %struct.ident* %init, i64 0, i32 0 ; <i32 (...)***> [#uses=1]
store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV5ident, i64 0, i64 2), i32 (...)*** %30, align 8
%31 = getelementptr inbounds %struct.ident* %init, i64 0, i32 1 ; <i32*> [#uses=1]
store i32 5, i32* %31, align 8
%32 = getelementptr inbounds %struct.ident* %init, i64 0, i32 2 ; <i8**> [#uses=2]
store i8* %27, i8** %32, align 8
%33 = getelementptr inbounds %struct.ident* %init, i64 0, i32 5 ; <i32*> [#uses=1]
store i32 2147483647, i32* %33, align 8
%34 = getelementptr inbounds %struct.ident* %init, i64 0, i32 6, i32 0 ; <void ()**> [#uses=1]
store void ()* null, void ()** %34
%35 = getelementptr inbounds %struct.ident* %init, i64 0, i32 7, i32 0 ; <i8**> [#uses=1]
store i8* %24, i8** %35, align 8
%36 = getelementptr inbounds %struct.ident* %init, i64 0, i32 8, i32 0 ; <i8**> [#uses=1]
store i8* null, i8** %36, align 8
%37 = getelementptr inbounds %struct.ident* %init, i64 0, i32 10 ; <i32*> [#uses=1]
store i32 %iftmp.31.0, i32* %37, align 8
%38 = load %"struct.hashtable<const char*,ident>"** @idents, align 8 ; <%"struct.hashtable<const char*,ident>"*> [#uses=1]
%39 = call %struct.ident* @_ZN9hashtableIPKc5identE6accessERKS1_RKS2_(%"struct.hashtable<const char*,ident>"* %38, i8** %32, %struct.ident* %init) ; <%struct.ident*> [#uses=1]
ret %struct.ident* %39
bb4: ; preds = %_ZN9hashtableIPKc5identE6accessERKS1_.exit
ret %struct.ident* %21
}
define void @_Z5pushaPKcPc(i8* %name, i8* %action) {
entry:
%0 = tail call %struct.ident* @_Z8newidentPKc(i8* %name) ; <%struct.ident*> [#uses=4]
%1 = getelementptr inbounds %struct.ident* %0, i64 0, i32 1 ; <i32*> [#uses=1]
%2 = load i32* %1, align 8 ; <i32> [#uses=1]
%3 = icmp eq i32 %2, 5 ; <i1> [#uses=1]
br i1 %3, label %bb.i, label %_Z9pushidentR5identPc.exit
bb.i: ; preds = %entry
%4 = tail call i8* @_Znwm(i64 16) ; <i8*> [#uses=3]
%5 = getelementptr inbounds %struct.ident* %0, i64 0, i32 8, i32 0 ; <i8**> [#uses=1]
%6 = load i8** %5, align 8 ; <i8*> [#uses=1]
%7 = getelementptr inbounds %struct.ident* %0, i64 0, i32 7, i32 0 ; <i8**> [#uses=2]
%8 = load i8** %7, align 8 ; <i8*> [#uses=4]
%9 = icmp eq i8* %6, %8 ; <i1> [#uses=1]
br i1 %9, label %bb1.i, label %bb3.i
bb1.i: ; preds = %bb.i
%10 = tail call i64 @strlen(i8* %8) nounwind readonly ; <i64> [#uses=2]
%11 = add i64 %10, 1 ; <i64> [#uses=2]
%12 = tail call i8* @_Znam(i64 %11) ; <i8*> [#uses=3]
%13 = tail call i8* @strncpy(i8* noalias %12, i8* noalias %8, i64 %11) nounwind ; <i8*> [#uses=0]
%14 = getelementptr inbounds i8* %12, i64 %10 ; <i8*> [#uses=1]
store i8 0, i8* %14, align 1
br label %bb3.i
bb3.i: ; preds = %bb1.i, %bb.i
%iftmp.29.0.i = phi i8* [ %12, %bb1.i ], [ %8, %bb.i ] ; <i8*> [#uses=1]
%15 = bitcast i8* %4 to i8** ; <i8**> [#uses=1]
store i8* %iftmp.29.0.i, i8** %15, align 8
%16 = getelementptr inbounds %struct.ident* %0, i64 0, i32 6, i32 0 ; <void ()**> [#uses=2]
%17 = load void ()** %16, align 8 ; <void ()*> [#uses=1]
%18 = bitcast void ()* %17 to %struct.identstack* ; <%struct.identstack*> [#uses=1]
%19 = getelementptr inbounds i8* %4, i64 8 ; <i8*> [#uses=1]
%20 = bitcast i8* %19 to %struct.identstack** ; <%struct.identstack**> [#uses=1]
store %struct.identstack* %18, %struct.identstack** %20, align 8
%.c.i = bitcast i8* %4 to void ()* ; <void ()*> [#uses=1]
store void ()* %.c.i, void ()** %16
store i8* %action, i8** %7, align 8
ret void
_Z9pushidentR5identPc.exit: ; preds = %entry
ret void
}
define void @_Z4pushPcS_(i8* %name, i8* nocapture %action) {
entry:
%0 = tail call i64 @strlen(i8* %action) nounwind readonly ; <i64> [#uses=2]
%1 = add i64 %0, 1 ; <i64> [#uses=2]
%2 = tail call i8* @_Znam(i64 %1) ; <i8*> [#uses=3]
%3 = tail call i8* @strncpy(i8* noalias %2, i8* noalias %action, i64 %1) nounwind ; <i8*> [#uses=0]
%4 = getelementptr inbounds i8* %2, i64 %0 ; <i8*> [#uses=1]
store i8 0, i8* %4, align 1
%5 = tail call %struct.ident* @_Z8newidentPKc(i8* %name) ; <%struct.ident*> [#uses=4]
%6 = getelementptr inbounds %struct.ident* %5, i64 0, i32 1 ; <i32*> [#uses=1]
%7 = load i32* %6, align 8 ; <i32> [#uses=1]
%8 = icmp eq i32 %7, 5 ; <i1> [#uses=1]
br i1 %8, label %bb.i.i, label %_Z5pushaPKcPc.exit
bb.i.i: ; preds = %entry
%9 = tail call i8* @_Znwm(i64 16) ; <i8*> [#uses=3]
%10 = getelementptr inbounds %struct.ident* %5, i64 0, i32 8, i32 0 ; <i8**> [#uses=1]
%11 = load i8** %10, align 8 ; <i8*> [#uses=1]
%12 = getelementptr inbounds %struct.ident* %5, i64 0, i32 7, i32 0 ; <i8**> [#uses=2]
%13 = load i8** %12, align 8 ; <i8*> [#uses=4]
%14 = icmp eq i8* %11, %13 ; <i1> [#uses=1]
br i1 %14, label %bb1.i.i, label %bb3.i.i
bb1.i.i: ; preds = %bb.i.i
%15 = tail call i64 @strlen(i8* %13) nounwind readonly ; <i64> [#uses=2]
%16 = add i64 %15, 1 ; <i64> [#uses=2]
%17 = tail call i8* @_Znam(i64 %16) ; <i8*> [#uses=3]
%18 = tail call i8* @strncpy(i8* noalias %17, i8* noalias %13, i64 %16) nounwind ; <i8*> [#uses=0]
%19 = getelementptr inbounds i8* %17, i64 %15 ; <i8*> [#uses=1]
store i8 0, i8* %19, align 1
br label %bb3.i.i
bb3.i.i: ; preds = %bb1.i.i, %bb.i.i
%iftmp.29.0.i.i = phi i8* [ %17, %bb1.i.i ], [ %13, %bb.i.i ] ; <i8*> [#uses=1]
%20 = bitcast i8* %9 to i8** ; <i8**> [#uses=1]
store i8* %iftmp.29.0.i.i, i8** %20, align 8
%21 = getelementptr inbounds %struct.ident* %5, i64 0, i32 6, i32 0 ; <void ()**> [#uses=2]
%22 = load void ()** %21, align 8 ; <void ()*> [#uses=1]
%23 = bitcast void ()* %22 to %struct.identstack* ; <%struct.identstack*> [#uses=1]
%24 = getelementptr inbounds i8* %9, i64 8 ; <i8*> [#uses=1]
%25 = bitcast i8* %24 to %struct.identstack** ; <%struct.identstack**> [#uses=1]
store %struct.identstack* %23, %struct.identstack** %25, align 8
%.c.i.i = bitcast i8* %9 to void ()* ; <void ()*> [#uses=1]
store void ()* %.c.i.i, void ()** %21
store i8* %2, i8** %12, align 8
ret void
_Z5pushaPKcPc.exit: ; preds = %entry
ret void
}
define zeroext i8 @_Z10addcommandPKcPFvvES0_(i8* %name, void ()* %fun, i8* %narg) {
entry:
%name_addr = alloca i8*, align 8 ; <i8**> [#uses=2]
%c = alloca %struct.ident, align 8 ; <%struct.ident*> [#uses=9]
store i8* %name, i8** %name_addr
%0 = load %"struct.hashtable<const char*,ident>"** @idents, align 8 ; <%"struct.hashtable<const char*,ident>"*> [#uses=2]
%1 = icmp eq %"struct.hashtable<const char*,ident>"* %0, null ; <i1> [#uses=1]
br i1 %1, label %bb, label %bb3
bb: ; preds = %entry
%2 = call i8* @_Znwm(i64 32) ; <i8*> [#uses=7]
%3 = bitcast i8* %2 to %"struct.hashtable<const char*,ident>"* ; <%"struct.hashtable<const char*,ident>"*> [#uses=2]
%4 = bitcast i8* %2 to i32* ; <i32*> [#uses=1]
store i32 1024, i32* %4, align 8
%5 = getelementptr inbounds i8* %2, i64 4 ; <i8*> [#uses=1]
%6 = bitcast i8* %5 to i32* ; <i32*> [#uses=1]
store i32 0, i32* %6, align 4
%7 = getelementptr inbounds i8* %2, i64 16 ; <i8*> [#uses=1]
%8 = bitcast i8* %7 to %"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"** ; <%"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"**> [#uses=1]
store %"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"* null, %"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"** %8, align 8
%9 = getelementptr inbounds i8* %2, i64 24 ; <i8*> [#uses=1]
%10 = bitcast i8* %9 to %"struct.hashset<hashtableentry<const char*, ident> >::chain"** ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
store %"struct.hashset<hashtableentry<const char*, ident> >::chain"* null, %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %10, align 8
%11 = invoke i8* @_Znam(i64 8192)
to label %.noexc unwind label %lpad ; <i8*> [#uses=1]
.noexc: ; preds = %bb
%12 = bitcast i8* %11 to %"struct.hashset<hashtableentry<const char*, ident> >::chain"** ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=2]
%13 = getelementptr inbounds i8* %2, i64 8 ; <i8*> [#uses=1]
%14 = bitcast i8* %13 to %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"***> [#uses=2]
store %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %12, %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** %14, align 8
store %"struct.hashset<hashtableentry<const char*, ident> >::chain"* null, %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %12, align 8
br label %bb.bb_crit_edge.i.i
bb.bb_crit_edge.i.i: ; preds = %bb.bb_crit_edge.i.i, %.noexc
%indvar.i = phi i64 [ 0, %.noexc ], [ %tmp, %bb.bb_crit_edge.i.i ] ; <i64> [#uses=1]
%tmp = add i64 %indvar.i, 1 ; <i64> [#uses=3]
%.pre.i.i = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** %14, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%scevgep.i.i = getelementptr %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %.pre.i.i, i64 %tmp ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
store %"struct.hashset<hashtableentry<const char*, ident> >::chain"* null, %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %scevgep.i.i, align 8
%exitcond = icmp eq i64 %tmp, 1023 ; <i1> [#uses=1]
br i1 %exitcond, label %bb2, label %bb.bb_crit_edge.i.i
bb2: ; preds = %bb.bb_crit_edge.i.i
store %"struct.hashtable<const char*,ident>"* %3, %"struct.hashtable<const char*,ident>"** @idents, align 8
br label %bb3
bb3: ; preds = %bb2, %entry
%15 = phi %"struct.hashtable<const char*,ident>"* [ %3, %bb2 ], [ %0, %entry ] ; <%"struct.hashtable<const char*,ident>"*> [#uses=1]
%16 = getelementptr inbounds %struct.ident* %c, i64 0, i32 0 ; <i32 (...)***> [#uses=1]
store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV5ident, i64 0, i64 2), i32 (...)*** %16, align 8
%17 = getelementptr inbounds %struct.ident* %c, i64 0, i32 1 ; <i32*> [#uses=1]
store i32 3, i32* %17, align 8
%18 = getelementptr inbounds %struct.ident* %c, i64 0, i32 2 ; <i8**> [#uses=1]
store i8* %name, i8** %18, align 8
%19 = getelementptr inbounds %struct.ident* %c, i64 0, i32 5 ; <i32*> [#uses=1]
store i32 2147483647, i32* %19, align 8
%20 = getelementptr inbounds %struct.ident* %c, i64 0, i32 6, i32 0 ; <void ()**> [#uses=1]
store void ()* %fun, void ()** %20, align 8
%21 = getelementptr inbounds %struct.ident* %c, i64 0, i32 7, i32 0 ; <i8**> [#uses=1]
store i8* %narg, i8** %21, align 8
%22 = getelementptr inbounds %struct.ident* %c, i64 0, i32 8, i32 0 ; <i8**> [#uses=1]
store i8* null, i8** %22, align 8
%23 = getelementptr inbounds %struct.ident* %c, i64 0, i32 10 ; <i32*> [#uses=1]
store i32 0, i32* %23, align 8
%24 = call %struct.ident* @_ZN9hashtableIPKc5identE6accessERKS1_RKS2_(%"struct.hashtable<const char*,ident>"* %15, i8** %name_addr, %struct.ident* %c) ; <%struct.ident*> [#uses=0]
ret i8 0
lpad: ; preds = %bb
%eh_ptr = call i8* @llvm.eh.exception() ; <i8*> [#uses=2]
%eh_select7 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i8* null) ; <i32> [#uses=0]
call void @_ZdlPv(i8* %2) nounwind
call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
unreachable
}
define i8* @_Z9svariablePKcS0_PPcPFvvEi(i8* %name, i8* nocapture %cur, i8** %storage, void ()* %fun, i32 %flags) {
entry:
%name_addr = alloca i8*, align 8 ; <i8**> [#uses=2]
%v = alloca %struct.ident, align 8 ; <%struct.ident*> [#uses=9]
store i8* %name, i8** %name_addr
%0 = load %"struct.hashtable<const char*,ident>"** @idents, align 8 ; <%"struct.hashtable<const char*,ident>"*> [#uses=1]
%1 = icmp eq %"struct.hashtable<const char*,ident>"* %0, null ; <i1> [#uses=1]
br i1 %1, label %bb, label %bb3
bb: ; preds = %entry
%2 = call i8* @_Znwm(i64 32) ; <i8*> [#uses=7]
%3 = bitcast i8* %2 to %"struct.hashtable<const char*,ident>"* ; <%"struct.hashtable<const char*,ident>"*> [#uses=1]
%4 = bitcast i8* %2 to i32* ; <i32*> [#uses=1]
store i32 1024, i32* %4, align 8
%5 = getelementptr inbounds i8* %2, i64 4 ; <i8*> [#uses=1]
%6 = bitcast i8* %5 to i32* ; <i32*> [#uses=1]
store i32 0, i32* %6, align 4
%7 = getelementptr inbounds i8* %2, i64 16 ; <i8*> [#uses=1]
%8 = bitcast i8* %7 to %"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"** ; <%"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"**> [#uses=1]
store %"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"* null, %"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"** %8, align 8
%9 = getelementptr inbounds i8* %2, i64 24 ; <i8*> [#uses=1]
%10 = bitcast i8* %9 to %"struct.hashset<hashtableentry<const char*, ident> >::chain"** ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
store %"struct.hashset<hashtableentry<const char*, ident> >::chain"* null, %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %10, align 8
%11 = invoke i8* @_Znam(i64 8192)
to label %.noexc unwind label %lpad ; <i8*> [#uses=1]
.noexc: ; preds = %bb
%12 = bitcast i8* %11 to %"struct.hashset<hashtableentry<const char*, ident> >::chain"** ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=2]
%13 = getelementptr inbounds i8* %2, i64 8 ; <i8*> [#uses=1]
%14 = bitcast i8* %13 to %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"***> [#uses=2]
store %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %12, %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** %14, align 8
store %"struct.hashset<hashtableentry<const char*, ident> >::chain"* null, %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %12, align 8
br label %bb.bb_crit_edge.i.i
bb.bb_crit_edge.i.i: ; preds = %bb.bb_crit_edge.i.i, %.noexc
%indvar.i = phi i64 [ 0, %.noexc ], [ %tmp, %bb.bb_crit_edge.i.i ] ; <i64> [#uses=1]
%tmp = add i64 %indvar.i, 1 ; <i64> [#uses=3]
%.pre.i.i = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** %14, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%scevgep.i.i = getelementptr %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %.pre.i.i, i64 %tmp ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
store %"struct.hashset<hashtableentry<const char*, ident> >::chain"* null, %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %scevgep.i.i, align 8
%exitcond = icmp eq i64 %tmp, 1023 ; <i1> [#uses=1]
br i1 %exitcond, label %bb2, label %bb.bb_crit_edge.i.i
bb2: ; preds = %bb.bb_crit_edge.i.i
store %"struct.hashtable<const char*,ident>"* %3, %"struct.hashtable<const char*,ident>"** @idents, align 8
br label %bb3
bb3: ; preds = %bb2, %entry
%15 = call i64 @strlen(i8* %cur) nounwind readonly ; <i64> [#uses=2]
%16 = add i64 %15, 1 ; <i64> [#uses=2]
%17 = call i8* @_Znam(i64 %16) ; <i8*> [#uses=3]
%18 = call i8* @strncpy(i8* noalias %17, i8* noalias %cur, i64 %16) nounwind ; <i8*> [#uses=0]
%19 = getelementptr inbounds i8* %17, i64 %15 ; <i8*> [#uses=1]
store i8 0, i8* %19, align 1
%20 = getelementptr inbounds %struct.ident* %v, i64 0, i32 0 ; <i32 (...)***> [#uses=1]
store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV5ident, i64 0, i64 2), i32 (...)*** %20, align 8
%21 = getelementptr inbounds %struct.ident* %v, i64 0, i32 1 ; <i32*> [#uses=1]
store i32 2, i32* %21, align 8
%22 = getelementptr inbounds %struct.ident* %v, i64 0, i32 2 ; <i8**> [#uses=1]
store i8* %name, i8** %22, align 8
%23 = getelementptr inbounds %struct.ident* %v, i64 0, i32 5 ; <i32*> [#uses=1]
store i32 2147483647, i32* %23, align 8
%24 = getelementptr inbounds %struct.ident* %v, i64 0, i32 6, i32 0 ; <void ()**> [#uses=1]
store void ()* %fun, void ()** %24, align 8
%25 = getelementptr inbounds %struct.ident* %v, i64 0, i32 10 ; <i32*> [#uses=1]
store i32 %flags, i32* %25, align 8
%26 = getelementptr inbounds %struct.ident* %v, i64 0, i32 7, i32 0 ; <i8**> [#uses=2]
store i8* %17, i8** %26, align 8
%27 = getelementptr inbounds %struct.ident* %v, i64 0, i32 9, i32 0 ; <i32**> [#uses=1]
%s.c.i = bitcast i8** %storage to i32* ; <i32*> [#uses=1]
store i32* %s.c.i, i32** %27
%28 = load %"struct.hashtable<const char*,ident>"** @idents, align 8 ; <%"struct.hashtable<const char*,ident>"*> [#uses=1]
%29 = call %struct.ident* @_ZN9hashtableIPKc5identE6accessERKS1_RKS2_(%"struct.hashtable<const char*,ident>"* %28, i8** %name_addr, %struct.ident* %v) ; <%struct.ident*> [#uses=0]
%30 = load i8** %26, align 8 ; <i8*> [#uses=1]
ret i8* %30
lpad: ; preds = %bb
%eh_ptr = call i8* @llvm.eh.exception() ; <i8*> [#uses=2]
%eh_select6 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i8* null) ; <i32> [#uses=0]
call void @_ZdlPv(i8* %2) nounwind
call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
unreachable
}
define float @_Z9fvariablePKcfffPfPFvvEi(i8* %name, float %min, float %cur, float %max, float* %storage, void ()* %fun, i32 %flags) {
entry:
%name_addr = alloca i8*, align 8 ; <i8**> [#uses=2]
%v = alloca %struct.ident, align 8 ; <%struct.ident*> [#uses=11]
store i8* %name, i8** %name_addr
%0 = load %"struct.hashtable<const char*,ident>"** @idents, align 8 ; <%"struct.hashtable<const char*,ident>"*> [#uses=2]
%1 = icmp eq %"struct.hashtable<const char*,ident>"* %0, null ; <i1> [#uses=1]
br i1 %1, label %bb, label %bb3
bb: ; preds = %entry
%2 = call i8* @_Znwm(i64 32) ; <i8*> [#uses=7]
%3 = bitcast i8* %2 to %"struct.hashtable<const char*,ident>"* ; <%"struct.hashtable<const char*,ident>"*> [#uses=2]
%4 = bitcast i8* %2 to i32* ; <i32*> [#uses=1]
store i32 1024, i32* %4, align 8
%5 = getelementptr inbounds i8* %2, i64 4 ; <i8*> [#uses=1]
%6 = bitcast i8* %5 to i32* ; <i32*> [#uses=1]
store i32 0, i32* %6, align 4
%7 = getelementptr inbounds i8* %2, i64 16 ; <i8*> [#uses=1]
%8 = bitcast i8* %7 to %"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"** ; <%"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"**> [#uses=1]
store %"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"* null, %"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"** %8, align 8
%9 = getelementptr inbounds i8* %2, i64 24 ; <i8*> [#uses=1]
%10 = bitcast i8* %9 to %"struct.hashset<hashtableentry<const char*, ident> >::chain"** ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
store %"struct.hashset<hashtableentry<const char*, ident> >::chain"* null, %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %10, align 8
%11 = invoke i8* @_Znam(i64 8192)
to label %.noexc unwind label %lpad ; <i8*> [#uses=1]
.noexc: ; preds = %bb
%12 = bitcast i8* %11 to %"struct.hashset<hashtableentry<const char*, ident> >::chain"** ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=2]
%13 = getelementptr inbounds i8* %2, i64 8 ; <i8*> [#uses=1]
%14 = bitcast i8* %13 to %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"***> [#uses=2]
store %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %12, %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** %14, align 8
store %"struct.hashset<hashtableentry<const char*, ident> >::chain"* null, %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %12, align 8
br label %bb.bb_crit_edge.i.i
bb.bb_crit_edge.i.i: ; preds = %bb.bb_crit_edge.i.i, %.noexc
%indvar.i = phi i64 [ 0, %.noexc ], [ %tmp, %bb.bb_crit_edge.i.i ] ; <i64> [#uses=1]
%tmp = add i64 %indvar.i, 1 ; <i64> [#uses=3]
%.pre.i.i = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** %14, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%scevgep.i.i = getelementptr %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %.pre.i.i, i64 %tmp ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
store %"struct.hashset<hashtableentry<const char*, ident> >::chain"* null, %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %scevgep.i.i, align 8
%exitcond = icmp eq i64 %tmp, 1023 ; <i1> [#uses=1]
br i1 %exitcond, label %bb2, label %bb.bb_crit_edge.i.i
bb2: ; preds = %bb.bb_crit_edge.i.i
store %"struct.hashtable<const char*,ident>"* %3, %"struct.hashtable<const char*,ident>"** @idents, align 8
br label %bb3
bb3: ; preds = %bb2, %entry
%15 = phi %"struct.hashtable<const char*,ident>"* [ %3, %bb2 ], [ %0, %entry ] ; <%"struct.hashtable<const char*,ident>"*> [#uses=1]
%16 = getelementptr inbounds %struct.ident* %v, i64 0, i32 0 ; <i32 (...)***> [#uses=1]
store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV5ident, i64 0, i64 2), i32 (...)*** %16, align 8
%17 = getelementptr inbounds %struct.ident* %v, i64 0, i32 1 ; <i32*> [#uses=1]
store i32 1, i32* %17, align 8
%18 = getelementptr inbounds %struct.ident* %v, i64 0, i32 2 ; <i8**> [#uses=1]
store i8* %name, i8** %18, align 8
%19 = getelementptr inbounds %struct.ident* %v, i64 0, i32 3, i32 0 ; <i32*> [#uses=1]
%20 = bitcast i32* %19 to float* ; <float*> [#uses=1]
store float %min, float* %20, align 8
%21 = getelementptr inbounds %struct.ident* %v, i64 0, i32 4, i32 0 ; <i32*> [#uses=1]
%22 = bitcast i32* %21 to float* ; <float*> [#uses=1]
store float %max, float* %22, align 4
%23 = getelementptr inbounds %struct.ident* %v, i64 0, i32 5 ; <i32*> [#uses=1]
store i32 2147483647, i32* %23, align 8
%24 = getelementptr inbounds %struct.ident* %v, i64 0, i32 6, i32 0 ; <void ()**> [#uses=1]
store void ()* %fun, void ()** %24, align 8
%25 = fcmp ogt float %min, %max ; <i1> [#uses=1]
%iftmp.17.0.i = select i1 %25, i32 8, i32 0 ; <i32> [#uses=1]
%26 = or i32 %iftmp.17.0.i, %flags ; <i32> [#uses=1]
%27 = getelementptr inbounds %struct.ident* %v, i64 0, i32 10 ; <i32*> [#uses=1]
store i32 %26, i32* %27, align 8
%28 = getelementptr inbounds %struct.ident* %v, i64 0, i32 7, i32 0 ; <i8**> [#uses=1]
%29 = bitcast i8** %28 to float* ; <float*> [#uses=1]
store float %cur, float* %29, align 8
%30 = getelementptr inbounds %struct.ident* %v, i64 0, i32 9, i32 0 ; <i32**> [#uses=1]
%s.c.i = bitcast float* %storage to i32* ; <i32*> [#uses=1]
store i32* %s.c.i, i32** %30
%31 = call %struct.ident* @_ZN9hashtableIPKc5identE6accessERKS1_RKS2_(%"struct.hashtable<const char*,ident>"* %15, i8** %name_addr, %struct.ident* %v) ; <%struct.ident*> [#uses=0]
ret float %cur
lpad: ; preds = %bb
%eh_ptr = call i8* @llvm.eh.exception() ; <i8*> [#uses=2]
%eh_select6 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i8* null) ; <i32> [#uses=0]
call void @_ZdlPv(i8* %2) nounwind
call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
unreachable
}
define i32 @_Z8variablePKciiiPiPFvvEi(i8* %name, i32 %min, i32 %cur, i32 %max, i32* %storage, void ()* %fun, i32 %flags) {
entry:
%name_addr = alloca i8*, align 8 ; <i8**> [#uses=2]
%v = alloca %struct.ident, align 8 ; <%struct.ident*> [#uses=11]
store i8* %name, i8** %name_addr
%0 = load %"struct.hashtable<const char*,ident>"** @idents, align 8 ; <%"struct.hashtable<const char*,ident>"*> [#uses=2]
%1 = icmp eq %"struct.hashtable<const char*,ident>"* %0, null ; <i1> [#uses=1]
br i1 %1, label %bb, label %bb3
bb: ; preds = %entry
%2 = call i8* @_Znwm(i64 32) ; <i8*> [#uses=7]
%3 = bitcast i8* %2 to %"struct.hashtable<const char*,ident>"* ; <%"struct.hashtable<const char*,ident>"*> [#uses=2]
%4 = bitcast i8* %2 to i32* ; <i32*> [#uses=1]
store i32 1024, i32* %4, align 8
%5 = getelementptr inbounds i8* %2, i64 4 ; <i8*> [#uses=1]
%6 = bitcast i8* %5 to i32* ; <i32*> [#uses=1]
store i32 0, i32* %6, align 4
%7 = getelementptr inbounds i8* %2, i64 16 ; <i8*> [#uses=1]
%8 = bitcast i8* %7 to %"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"** ; <%"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"**> [#uses=1]
store %"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"* null, %"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"** %8, align 8
%9 = getelementptr inbounds i8* %2, i64 24 ; <i8*> [#uses=1]
%10 = bitcast i8* %9 to %"struct.hashset<hashtableentry<const char*, ident> >::chain"** ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
store %"struct.hashset<hashtableentry<const char*, ident> >::chain"* null, %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %10, align 8
%11 = invoke i8* @_Znam(i64 8192)
to label %.noexc unwind label %lpad ; <i8*> [#uses=1]
.noexc: ; preds = %bb
%12 = bitcast i8* %11 to %"struct.hashset<hashtableentry<const char*, ident> >::chain"** ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=2]
%13 = getelementptr inbounds i8* %2, i64 8 ; <i8*> [#uses=1]
%14 = bitcast i8* %13 to %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"***> [#uses=2]
store %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %12, %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** %14, align 8
store %"struct.hashset<hashtableentry<const char*, ident> >::chain"* null, %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %12, align 8
br label %bb.bb_crit_edge.i.i
bb.bb_crit_edge.i.i: ; preds = %bb.bb_crit_edge.i.i, %.noexc
%indvar.i = phi i64 [ 0, %.noexc ], [ %tmp, %bb.bb_crit_edge.i.i ] ; <i64> [#uses=1]
%tmp = add i64 %indvar.i, 1 ; <i64> [#uses=3]
%.pre.i.i = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** %14, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%scevgep.i.i = getelementptr %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %.pre.i.i, i64 %tmp ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
store %"struct.hashset<hashtableentry<const char*, ident> >::chain"* null, %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %scevgep.i.i, align 8
%exitcond = icmp eq i64 %tmp, 1023 ; <i1> [#uses=1]
br i1 %exitcond, label %bb2, label %bb.bb_crit_edge.i.i
bb2: ; preds = %bb.bb_crit_edge.i.i
store %"struct.hashtable<const char*,ident>"* %3, %"struct.hashtable<const char*,ident>"** @idents, align 8
br label %bb3
bb3: ; preds = %bb2, %entry
%15 = phi %"struct.hashtable<const char*,ident>"* [ %3, %bb2 ], [ %0, %entry ] ; <%"struct.hashtable<const char*,ident>"*> [#uses=1]
%16 = getelementptr inbounds %struct.ident* %v, i64 0, i32 0 ; <i32 (...)***> [#uses=1]
store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV5ident, i64 0, i64 2), i32 (...)*** %16, align 8
%17 = getelementptr inbounds %struct.ident* %v, i64 0, i32 1 ; <i32*> [#uses=1]
store i32 0, i32* %17, align 8
%18 = getelementptr inbounds %struct.ident* %v, i64 0, i32 2 ; <i8**> [#uses=1]
store i8* %name, i8** %18, align 8
%19 = getelementptr inbounds %struct.ident* %v, i64 0, i32 3, i32 0 ; <i32*> [#uses=1]
store i32 %min, i32* %19, align 8
%20 = getelementptr inbounds %struct.ident* %v, i64 0, i32 4, i32 0 ; <i32*> [#uses=1]
store i32 %max, i32* %20, align 4
%21 = getelementptr inbounds %struct.ident* %v, i64 0, i32 5 ; <i32*> [#uses=1]
store i32 2147483647, i32* %21, align 8
%22 = getelementptr inbounds %struct.ident* %v, i64 0, i32 6, i32 0 ; <void ()**> [#uses=1]
store void ()* %fun, void ()** %22, align 8
%23 = icmp sgt i32 %min, %max ; <i1> [#uses=1]
%iftmp.15.0.i = select i1 %23, i32 8, i32 0 ; <i32> [#uses=1]
%24 = or i32 %iftmp.15.0.i, %flags ; <i32> [#uses=1]
%25 = getelementptr inbounds %struct.ident* %v, i64 0, i32 10 ; <i32*> [#uses=1]
store i32 %24, i32* %25, align 8
%26 = getelementptr inbounds %struct.ident* %v, i64 0, i32 7, i32 0 ; <i8**> [#uses=1]
%27 = bitcast i8** %26 to i32* ; <i32*> [#uses=1]
store i32 %cur, i32* %27, align 8
%28 = getelementptr inbounds %struct.ident* %v, i64 0, i32 9, i32 0 ; <i32**> [#uses=1]
store i32* %storage, i32** %28, align 8
%29 = call %struct.ident* @_ZN9hashtableIPKc5identE6accessERKS1_RKS2_(%"struct.hashtable<const char*,ident>"* %15, i8** %name_addr, %struct.ident* %v) ; <%struct.ident*> [#uses=0]
ret i32 %cur
lpad: ; preds = %bb
%eh_ptr = call i8* @llvm.eh.exception() ; <i8*> [#uses=2]
%eh_select6 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i8* null) ; <i32> [#uses=0]
call void @_ZdlPv(i8* %2) nounwind
call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
unreachable
}
define void @_Z3popPc(i8* %name) nounwind {
entry:
%0 = load %"struct.hashtable<const char*,ident>"** @idents, align 8 ; <%"struct.hashtable<const char*,ident>"*> [#uses=2]
%1 = load i8* %name, align 1 ; <i8> [#uses=2]
%2 = icmp eq i8 %1, 0 ; <i1> [#uses=1]
br i1 %2, label %_ZL6hthashPKc.exit.i, label %bb.i.i
bb.i.i: ; preds = %bb.i.i, %entry
%indvar.i.i = phi i64 [ %tmp, %bb.i.i ], [ 0, %entry ] ; <i64> [#uses=1]
%3 = phi i8 [ %7, %bb.i.i ], [ %1, %entry ] ; <i8> [#uses=1]
%h.04.i.i = phi i32 [ %6, %bb.i.i ], [ 5381, %entry ] ; <i32> [#uses=1]
%tmp = add i64 %indvar.i.i, 1 ; <i64> [#uses=2]
%scevgep.i.i = getelementptr i8* %name, i64 %tmp ; <i8*> [#uses=1]
%4 = sext i8 %3 to i32 ; <i32> [#uses=1]
%5 = mul i32 %h.04.i.i, 33 ; <i32> [#uses=1]
%6 = xor i32 %5, %4 ; <i32> [#uses=2]
%7 = load i8* %scevgep.i.i, align 1 ; <i8> [#uses=2]
%8 = icmp eq i8 %7, 0 ; <i1> [#uses=1]
br i1 %8, label %_ZL6hthashPKc.exit.i, label %bb.i.i
_ZL6hthashPKc.exit.i: ; preds = %bb.i.i, %entry
%h.0.lcssa.i.i = phi i32 [ 5381, %entry ], [ %6, %bb.i.i ] ; <i32> [#uses=1]
%9 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %0, i64 0, i32 0, i32 0 ; <i32*> [#uses=1]
%10 = load i32* %9, align 8 ; <i32> [#uses=1]
%11 = add nsw i32 %10, -1 ; <i32> [#uses=1]
%12 = and i32 %11, %h.0.lcssa.i.i ; <i32> [#uses=1]
%13 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %0, i64 0, i32 0, i32 2 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"***> [#uses=1]
%14 = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** %13, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%15 = zext i32 %12 to i64 ; <i64> [#uses=1]
%16 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %14, i64 %15 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i
bb.i: ; preds = %bb3.i
%.idx.i = getelementptr %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 0 ; <i8**> [#uses=1]
%.idx.val.i = load i8** %.idx.i ; <i8*> [#uses=1]
%17 = tail call i32 @strcmp(i8* %name, i8* %.idx.val.i) nounwind readonly ; <i32> [#uses=1]
%18 = icmp eq i32 %17, 0 ; <i1> [#uses=1]
br i1 %18, label %_ZN9hashtableIPKc5identE6accessERKS1_.exit, label %bb2.i
bb2.i: ; preds = %bb.i
%19 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 1 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i
bb3.i: ; preds = %bb2.i, %_ZL6hthashPKc.exit.i
%c.0.in.i = phi %"struct.hashset<hashtableentry<const char*, ident> >::chain"** [ %16, %_ZL6hthashPKc.exit.i ], [ %19, %bb2.i ] ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%c.0.i = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %c.0.in.i, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"*> [#uses=8]
%20 = icmp eq %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, null ; <i1> [#uses=1]
br i1 %20, label %_Z8popidentR5ident.exit, label %bb.i
_ZN9hashtableIPKc5identE6accessERKS1_.exit: ; preds = %bb.i
%21 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1 ; <%struct.ident*> [#uses=1]
%22 = icmp eq %struct.ident* %21, null ; <i1> [#uses=1]
br i1 %22, label %_Z8popidentR5ident.exit, label %bb
bb: ; preds = %_ZN9hashtableIPKc5identE6accessERKS1_.exit
%23 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 1 ; <i32*> [#uses=1]
%24 = load i32* %23, align 8 ; <i32> [#uses=1]
%25 = icmp eq i32 %24, 5 ; <i1> [#uses=1]
br i1 %25, label %bb.i2, label %_Z8popidentR5ident.exit
bb.i2: ; preds = %bb
%26 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 6, i32 0 ; <void ()**> [#uses=3]
%27 = load void ()** %26, align 8 ; <void ()*> [#uses=2]
%28 = icmp eq void ()* %27, null ; <i1> [#uses=1]
br i1 %28, label %_Z8popidentR5ident.exit, label %bb1.i3
bb1.i3: ; preds = %bb.i2
%29 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 7, i32 0 ; <i8**> [#uses=2]
%30 = load i8** %29, align 8 ; <i8*> [#uses=3]
%31 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 8, i32 0 ; <i8**> [#uses=1]
%32 = load i8** %31, align 8 ; <i8*> [#uses=1]
%33 = icmp eq i8* %30, %32 ; <i1> [#uses=1]
%34 = icmp eq i8* %30, null ; <i1> [#uses=1]
%or.cond.i = or i1 %33, %34 ; <i1> [#uses=1]
br i1 %or.cond.i, label %bb4.i, label %bb3.i4
bb3.i4: ; preds = %bb1.i3
tail call void @_ZdaPv(i8* %30) nounwind
%.pre.i = load void ()** %26, align 8 ; <void ()*> [#uses=1]
br label %bb4.i
bb4.i: ; preds = %bb3.i4, %bb1.i3
%35 = phi void ()* [ %27, %bb1.i3 ], [ %.pre.i, %bb3.i4 ] ; <void ()*> [#uses=3]
%36 = bitcast void ()* %35 to %struct.identstack* ; <%struct.identstack*> [#uses=1]
%37 = bitcast void ()* %35 to i8** ; <i8**> [#uses=1]
%38 = load i8** %37, align 8 ; <i8*> [#uses=1]
store i8* %38, i8** %29, align 8
%39 = getelementptr inbounds %struct.identstack* %36, i64 0, i32 1 ; <%struct.identstack**> [#uses=1]
%40 = load %struct.identstack** %39, align 8 ; <%struct.identstack*> [#uses=1]
%.c.i = bitcast %struct.identstack* %40 to void ()* ; <void ()*> [#uses=1]
store void ()* %.c.i, void ()** %26
%41 = bitcast void ()* %35 to i8* ; <i8*> [#uses=1]
tail call void @_ZdlPv(i8* %41) nounwind
ret void
_Z8popidentR5ident.exit: ; preds = %bb.i2, %bb, %_ZN9hashtableIPKc5identE6accessERKS1_.exit, %bb3.i
ret void
}
declare i32 @__cxa_atexit(void (i8*)*, i8*, i8*) nounwind
define void @_ZN7_stdcmdILi844EE3runEPcS1_S1_(i8* nocapture %cond, i8* %t, i8* %f) align 2 {
entry:
%0 = load i8* %cond, align 1 ; <i8> [#uses=3]
%1 = icmp eq i8 %0, 0 ; <i1> [#uses=1]
br i1 %1, label %bb6, label %bb
bb: ; preds = %entry
%2 = sext i8 %0 to i32 ; <i32> [#uses=1]
%3 = add i32 %2, -48 ; <i32> [#uses=1]
%4 = icmp ult i32 %3, 10 ; <i1> [#uses=1]
br i1 %4, label %bb4, label %bb.i
bb.i: ; preds = %bb
switch i8 %0, label %bb7 [
i8 43, label %_ZL9isintegerPc.exit
i8 45, label %_ZL9isintegerPc.exit
i8 46, label %_ZL9isintegerPc.exit
]
_ZL9isintegerPc.exit: ; preds = %bb.i, %bb.i, %bb.i
%5 = getelementptr inbounds i8* %cond, i64 1 ; <i8*> [#uses=1]
%6 = load i8* %5, align 1 ; <i8> [#uses=1]
%7 = sext i8 %6 to i32 ; <i32> [#uses=1]
%8 = add i32 %7, -48 ; <i32> [#uses=1]
%phitmp = icmp ugt i32 %8, 9 ; <i1> [#uses=1]
br i1 %phitmp, label %bb7, label %bb4
bb4: ; preds = %_ZL9isintegerPc.exit, %bb
%9 = tail call i64 @strtol(i8* noalias nocapture %cond, i8** noalias null, i32 0) nounwind readonly ; <i64> [#uses=1]
%10 = trunc i64 %9 to i32 ; <i32> [#uses=1]
%11 = icmp eq i32 %10, 0 ; <i1> [#uses=1]
br i1 %11, label %bb6, label %bb7
bb6: ; preds = %bb4, %entry
br label %bb7
bb7: ; preds = %bb6, %bb4, %_ZL9isintegerPc.exit, %bb.i
%iftmp.149.0 = phi i8* [ %f, %bb6 ], [ %t, %bb4 ], [ %t, %_ZL9isintegerPc.exit ], [ %t, %bb.i ] ; <i8*> [#uses=1]
%12 = tail call i8* @_Z10executeretPKc(i8* %iftmp.149.0) ; <i8*> [#uses=1]
store i8* %12, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi858EE3runEPcPiS1_(i8* %var, i32* nocapture %n, i8* %body) align 2 {
entry:
%0 = load i32* %n, align 4 ; <i32> [#uses=1]
%1 = icmp slt i32 %0, 1 ; <i1> [#uses=1]
br i1 %1, label %_Z8popidentR5ident.exit, label %bb
bb: ; preds = %entry
%2 = tail call %struct.ident* @_Z8newidentPKc(i8* %var) ; <%struct.ident*> [#uses=7]
%3 = getelementptr inbounds %struct.ident* %2, i64 0, i32 1 ; <i32*> [#uses=3]
%4 = load i32* %3, align 8 ; <i32> [#uses=2]
%5 = icmp eq i32 %4, 5 ; <i1> [#uses=1]
br i1 %5, label %bb6.preheader, label %_Z8popidentR5ident.exit
bb6.preheader: ; preds = %bb
%6 = load i32* %n, align 4 ; <i32> [#uses=1]
%7 = icmp sgt i32 %6, 0 ; <i1> [#uses=1]
br i1 %7, label %bb.nph, label %bb7
bb.nph: ; preds = %bb6.preheader
%8 = getelementptr inbounds %struct.ident* %2, i64 0, i32 8, i32 0 ; <i8**> [#uses=1]
%9 = getelementptr inbounds %struct.ident* %2, i64 0, i32 7, i32 0 ; <i8**> [#uses=3]
%10 = getelementptr inbounds %struct.ident* %2, i64 0, i32 6, i32 0 ; <void ()**> [#uses=2]
br label %bb2
bb2: ; preds = %_Z7executePKc.exit, %bb.nph
%11 = phi i32 [ 0, %bb.nph ], [ %tmp, %_Z7executePKc.exit ] ; <i32> [#uses=3]
%tmp = add i32 %11, 1 ; <i32> [#uses=2]
%12 = icmp eq i32 %11, 0 ; <i1> [#uses=1]
br i1 %12, label %bb4, label %bb3
bb3: ; preds = %bb2
%13 = load i8** %9, align 8 ; <i8*> [#uses=1]
%14 = tail call i32 (i8*, i8*, ...)* @sprintf(i8* noalias %13, i8* noalias getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %11) nounwind ; <i32> [#uses=0]
br label %bb5
bb4: ; preds = %bb2
%15 = tail call i8* @_Znam(i64 17) ; <i8*> [#uses=3]
%16 = tail call i8* @strncpy(i8* noalias %15, i8* noalias getelementptr inbounds ([2 x i8]* @.str148, i64 0, i64 0), i64 17) nounwind ; <i8*> [#uses=0]
%17 = getelementptr inbounds i8* %15, i64 16 ; <i8*> [#uses=1]
store i8 0, i8* %17, align 1
%18 = load i32* %3, align 8 ; <i32> [#uses=1]
%19 = icmp eq i32 %18, 5 ; <i1> [#uses=1]
br i1 %19, label %bb.i10, label %bb5
bb.i10: ; preds = %bb4
%20 = tail call i8* @_Znwm(i64 16) ; <i8*> [#uses=3]
%21 = load i8** %8, align 8 ; <i8*> [#uses=1]
%22 = load i8** %9, align 8 ; <i8*> [#uses=4]
%23 = icmp eq i8* %21, %22 ; <i1> [#uses=1]
br i1 %23, label %bb1.i11, label %bb3.i13
bb1.i11: ; preds = %bb.i10
%24 = tail call i64 @strlen(i8* %22) nounwind readonly ; <i64> [#uses=2]
%25 = add i64 %24, 1 ; <i64> [#uses=2]
%26 = tail call i8* @_Znam(i64 %25) ; <i8*> [#uses=3]
%27 = tail call i8* @strncpy(i8* noalias %26, i8* noalias %22, i64 %25) nounwind ; <i8*> [#uses=0]
%28 = getelementptr inbounds i8* %26, i64 %24 ; <i8*> [#uses=1]
store i8 0, i8* %28, align 1
br label %bb3.i13
bb3.i13: ; preds = %bb1.i11, %bb.i10
%iftmp.29.0.i = phi i8* [ %26, %bb1.i11 ], [ %22, %bb.i10 ] ; <i8*> [#uses=1]
%29 = bitcast i8* %20 to i8** ; <i8**> [#uses=1]
store i8* %iftmp.29.0.i, i8** %29, align 8
%30 = load void ()** %10, align 8 ; <void ()*> [#uses=1]
%31 = bitcast void ()* %30 to %struct.identstack* ; <%struct.identstack*> [#uses=1]
%32 = getelementptr inbounds i8* %20, i64 8 ; <i8*> [#uses=1]
%33 = bitcast i8* %32 to %struct.identstack** ; <%struct.identstack**> [#uses=1]
store %struct.identstack* %31, %struct.identstack** %33, align 8
%.c.i12 = bitcast i8* %20 to void ()* ; <void ()*> [#uses=1]
store void ()* %.c.i12, void ()** %10
store i8* %15, i8** %9, align 8
br label %bb5
bb5: ; preds = %bb3.i13, %bb4, %bb3
%34 = tail call i8* @_Z10executeretPKc(i8* %body) ; <i8*> [#uses=2]
%35 = icmp eq i8* %34, null ; <i1> [#uses=1]
br i1 %35, label %_Z7executePKc.exit, label %bb.i9
bb.i9: ; preds = %bb5
tail call void @_ZdaPv(i8* %34) nounwind
br label %_Z7executePKc.exit
_Z7executePKc.exit: ; preds = %bb.i9, %bb5
%36 = load i32* %n, align 4 ; <i32> [#uses=1]
%37 = icmp sgt i32 %36, %tmp ; <i1> [#uses=1]
br i1 %37, label %bb2, label %bb6.bb7_crit_edge
bb6.bb7_crit_edge: ; preds = %_Z7executePKc.exit
%.pre = load i32* %3, align 8 ; <i32> [#uses=1]
br label %bb7
bb7: ; preds = %bb6.bb7_crit_edge, %bb6.preheader
%38 = phi i32 [ %.pre, %bb6.bb7_crit_edge ], [ %4, %bb6.preheader ] ; <i32> [#uses=1]
%39 = icmp eq i32 %38, 5 ; <i1> [#uses=1]
br i1 %39, label %bb.i, label %_Z8popidentR5ident.exit
bb.i: ; preds = %bb7
%40 = getelementptr inbounds %struct.ident* %2, i64 0, i32 6, i32 0 ; <void ()**> [#uses=3]
%41 = load void ()** %40, align 8 ; <void ()*> [#uses=2]
%42 = icmp eq void ()* %41, null ; <i1> [#uses=1]
br i1 %42, label %_Z8popidentR5ident.exit, label %bb1.i
bb1.i: ; preds = %bb.i
%43 = getelementptr inbounds %struct.ident* %2, i64 0, i32 7, i32 0 ; <i8**> [#uses=2]
%44 = load i8** %43, align 8 ; <i8*> [#uses=3]
%45 = getelementptr inbounds %struct.ident* %2, i64 0, i32 8, i32 0 ; <i8**> [#uses=1]
%46 = load i8** %45, align 8 ; <i8*> [#uses=1]
%47 = icmp eq i8* %44, %46 ; <i1> [#uses=1]
%48 = icmp eq i8* %44, null ; <i1> [#uses=1]
%or.cond.i = or i1 %47, %48 ; <i1> [#uses=1]
br i1 %or.cond.i, label %bb4.i, label %bb3.i
bb3.i: ; preds = %bb1.i
tail call void @_ZdaPv(i8* %44) nounwind
%.pre.i = load void ()** %40, align 8 ; <void ()*> [#uses=1]
br label %bb4.i
bb4.i: ; preds = %bb3.i, %bb1.i
%49 = phi void ()* [ %41, %bb1.i ], [ %.pre.i, %bb3.i ] ; <void ()*> [#uses=3]
%50 = bitcast void ()* %49 to %struct.identstack* ; <%struct.identstack*> [#uses=1]
%51 = bitcast void ()* %49 to i8** ; <i8**> [#uses=1]
%52 = load i8** %51, align 8 ; <i8*> [#uses=1]
store i8* %52, i8** %43, align 8
%53 = getelementptr inbounds %struct.identstack* %50, i64 0, i32 1 ; <%struct.identstack**> [#uses=1]
%54 = load %struct.identstack** %53, align 8 ; <%struct.identstack*> [#uses=1]
%.c.i = bitcast %struct.identstack* %54 to void ()* ; <void ()*> [#uses=1]
store void ()* %.c.i, void ()** %40
%55 = bitcast void ()* %49 to i8* ; <i8*> [#uses=1]
tail call void @_ZdlPv(i8* %55) nounwind
ret void
_Z8popidentR5ident.exit: ; preds = %bb.i, %bb7, %bb, %entry
ret void
}
define void @_ZN7_stdcmdILi872EE3runEPcPiS1_S1_(i8* %var, i32* nocapture %n, i8* %cond, i8* %body) align 2 {
entry:
%0 = load i32* %n, align 4 ; <i32> [#uses=1]
%1 = icmp slt i32 %0, 1 ; <i1> [#uses=1]
br i1 %1, label %_Z8popidentR5ident.exit, label %bb
bb: ; preds = %entry
%2 = tail call %struct.ident* @_Z8newidentPKc(i8* %var) ; <%struct.ident*> [#uses=4]
%3 = getelementptr inbounds %struct.ident* %2, i64 0, i32 1 ; <i32*> [#uses=3]
%4 = load i32* %3, align 8 ; <i32> [#uses=1]
%5 = icmp eq i32 %4, 5 ; <i1> [#uses=1]
br i1 %5, label %bb7.preheader, label %_Z8popidentR5ident.exit
bb7.preheader: ; preds = %bb
%6 = getelementptr inbounds %struct.ident* %2, i64 0, i32 8, i32 0 ; <i8**> [#uses=2]
%7 = getelementptr inbounds %struct.ident* %2, i64 0, i32 7, i32 0 ; <i8**> [#uses=5]
%8 = getelementptr inbounds %struct.ident* %2, i64 0, i32 6, i32 0 ; <void ()**> [#uses=5]
br label %bb7
bb2: ; preds = %bb7
%9 = icmp eq i32 %38, 0 ; <i1> [#uses=1]
br i1 %9, label %bb4, label %bb3
bb3: ; preds = %bb2
%10 = load i8** %7, align 8 ; <i8*> [#uses=1]
%11 = tail call i32 (i8*, i8*, ...)* @sprintf(i8* noalias %10, i8* noalias getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %38) nounwind ; <i32> [#uses=0]
br label %bb5
bb4: ; preds = %bb2
%12 = tail call i8* @_Znam(i64 17) ; <i8*> [#uses=3]
%13 = tail call i8* @strncpy(i8* noalias %12, i8* noalias getelementptr inbounds ([2 x i8]* @.str148, i64 0, i64 0), i64 17) nounwind ; <i8*> [#uses=0]
%14 = getelementptr inbounds i8* %12, i64 16 ; <i8*> [#uses=1]
store i8 0, i8* %14, align 1
%15 = load i32* %3, align 8 ; <i32> [#uses=1]
%16 = icmp eq i32 %15, 5 ; <i1> [#uses=1]
br i1 %16, label %bb.i14, label %bb5
bb.i14: ; preds = %bb4
%17 = tail call i8* @_Znwm(i64 16) ; <i8*> [#uses=3]
%18 = load i8** %6, align 8 ; <i8*> [#uses=1]
%19 = load i8** %7, align 8 ; <i8*> [#uses=4]
%20 = icmp eq i8* %18, %19 ; <i1> [#uses=1]
br i1 %20, label %bb1.i15, label %bb3.i17
bb1.i15: ; preds = %bb.i14
%21 = tail call i64 @strlen(i8* %19) nounwind readonly ; <i64> [#uses=2]
%22 = add i64 %21, 1 ; <i64> [#uses=2]
%23 = tail call i8* @_Znam(i64 %22) ; <i8*> [#uses=3]
%24 = tail call i8* @strncpy(i8* noalias %23, i8* noalias %19, i64 %22) nounwind ; <i8*> [#uses=0]
%25 = getelementptr inbounds i8* %23, i64 %21 ; <i8*> [#uses=1]
store i8 0, i8* %25, align 1
br label %bb3.i17
bb3.i17: ; preds = %bb1.i15, %bb.i14
%iftmp.29.0.i = phi i8* [ %23, %bb1.i15 ], [ %19, %bb.i14 ] ; <i8*> [#uses=1]
%26 = bitcast i8* %17 to i8** ; <i8**> [#uses=1]
store i8* %iftmp.29.0.i, i8** %26, align 8
%27 = load void ()** %8, align 8 ; <void ()*> [#uses=1]
%28 = bitcast void ()* %27 to %struct.identstack* ; <%struct.identstack*> [#uses=1]
%29 = getelementptr inbounds i8* %17, i64 8 ; <i8*> [#uses=1]
%30 = bitcast i8* %29 to %struct.identstack** ; <%struct.identstack**> [#uses=1]
store %struct.identstack* %28, %struct.identstack** %30, align 8
%.c.i16 = bitcast i8* %17 to void ()* ; <void ()*> [#uses=1]
store void ()* %.c.i16, void ()** %8
store i8* %12, i8** %7, align 8
br label %bb5
bb5: ; preds = %bb3.i17, %bb4, %bb3
%31 = tail call i8* @_Z10executeretPKc(i8* %cond) ; <i8*> [#uses=3]
%32 = icmp eq i8* %31, null ; <i1> [#uses=1]
br i1 %32, label %bb8, label %_Z7executePKc.exit13
_Z7executePKc.exit13: ; preds = %bb5
%33 = tail call i64 @strtol(i8* noalias nocapture %31, i8** noalias null, i32 0) nounwind readonly ; <i64> [#uses=1]
%34 = trunc i64 %33 to i32 ; <i32> [#uses=1]
tail call void @_ZdaPv(i8* %31) nounwind
%phitmp = icmp eq i32 %34, 0 ; <i1> [#uses=1]
br i1 %phitmp, label %bb8, label %bb6
bb6: ; preds = %_Z7executePKc.exit13
%35 = tail call i8* @_Z10executeretPKc(i8* %body) ; <i8*> [#uses=2]
%36 = icmp eq i8* %35, null ; <i1> [#uses=1]
br i1 %36, label %_Z7executePKc.exit, label %bb.i10
bb.i10: ; preds = %bb6
tail call void @_ZdaPv(i8* %35) nounwind
br label %_Z7executePKc.exit
_Z7executePKc.exit: ; preds = %bb.i10, %bb6
%37 = add nsw i32 %38, 1 ; <i32> [#uses=1]
br label %bb7
bb7: ; preds = %_Z7executePKc.exit, %bb7.preheader
%38 = phi i32 [ %37, %_Z7executePKc.exit ], [ 0, %bb7.preheader ] ; <i32> [#uses=4]
%39 = load i32* %n, align 4 ; <i32> [#uses=1]
%40 = icmp sgt i32 %39, %38 ; <i1> [#uses=1]
br i1 %40, label %bb2, label %bb8
bb8: ; preds = %bb7, %_Z7executePKc.exit13, %bb5
%41 = load i32* %3, align 8 ; <i32> [#uses=1]
%42 = icmp eq i32 %41, 5 ; <i1> [#uses=1]
br i1 %42, label %bb.i, label %_Z8popidentR5ident.exit
bb.i: ; preds = %bb8
%43 = load void ()** %8, align 8 ; <void ()*> [#uses=2]
%44 = icmp eq void ()* %43, null ; <i1> [#uses=1]
br i1 %44, label %_Z8popidentR5ident.exit, label %bb1.i
bb1.i: ; preds = %bb.i
%45 = load i8** %7, align 8 ; <i8*> [#uses=3]
%46 = load i8** %6, align 8 ; <i8*> [#uses=1]
%47 = icmp eq i8* %45, %46 ; <i1> [#uses=1]
%48 = icmp eq i8* %45, null ; <i1> [#uses=1]
%or.cond.i = or i1 %47, %48 ; <i1> [#uses=1]
br i1 %or.cond.i, label %bb4.i, label %bb3.i
bb3.i: ; preds = %bb1.i
tail call void @_ZdaPv(i8* %45) nounwind
%.pre.i = load void ()** %8, align 8 ; <void ()*> [#uses=1]
br label %bb4.i
bb4.i: ; preds = %bb3.i, %bb1.i
%49 = phi void ()* [ %43, %bb1.i ], [ %.pre.i, %bb3.i ] ; <void ()*> [#uses=3]
%50 = bitcast void ()* %49 to %struct.identstack* ; <%struct.identstack*> [#uses=1]
%51 = bitcast void ()* %49 to i8** ; <i8**> [#uses=1]
%52 = load i8** %51, align 8 ; <i8*> [#uses=1]
store i8* %52, i8** %7, align 8
%53 = getelementptr inbounds %struct.identstack* %50, i64 0, i32 1 ; <%struct.identstack**> [#uses=1]
%54 = load %struct.identstack** %53, align 8 ; <%struct.identstack*> [#uses=1]
%.c.i = bitcast %struct.identstack* %54 to void ()* ; <void ()*> [#uses=1]
store void ()* %.c.i, void ()** %8
%55 = bitcast void ()* %49 to i8* ; <i8*> [#uses=1]
tail call void @_ZdlPv(i8* %55) nounwind
ret void
_Z8popidentR5ident.exit: ; preds = %bb.i, %bb8, %bb, %entry
ret void
}
define void @_ZN7_stdcmdILi873EE3runEPcS1_(i8* %cond, i8* %body) align 2 {
entry:
br label %bb1
bb: ; preds = %_Z7executePKc.exit5
%0 = tail call i8* @_Z10executeretPKc(i8* %body) ; <i8*> [#uses=2]
%1 = icmp eq i8* %0, null ; <i1> [#uses=1]
br i1 %1, label %bb1, label %bb.i
bb.i: ; preds = %bb
tail call void @_ZdaPv(i8* %0) nounwind
br label %bb1
bb1: ; preds = %bb.i, %bb, %entry
%2 = tail call i8* @_Z10executeretPKc(i8* %cond) ; <i8*> [#uses=3]
%3 = icmp eq i8* %2, null ; <i1> [#uses=1]
br i1 %3, label %return, label %_Z7executePKc.exit5
_Z7executePKc.exit5: ; preds = %bb1
%4 = tail call i64 @strtol(i8* noalias nocapture %2, i8** noalias null, i32 0) nounwind readonly ; <i64> [#uses=1]
%5 = trunc i64 %4 to i32 ; <i32> [#uses=1]
tail call void @_ZdaPv(i8* %2) nounwind
%phitmp = icmp eq i32 %5, 0 ; <i1> [#uses=1]
br i1 %phitmp, label %return, label %bb
return: ; preds = %_Z7executePKc.exit5, %bb1
ret void
}
define void @_ZN7_stdcmdILi1070EE3runEPcS1_S1_(i8* %var, i8* %list, i8* %body) align 2 {
entry:
tail call void @_Z8looplistPKcS0_S0_b(i8* %var, i8* %list, i8* %body, i8 zeroext 1)
ret void
}
define void @_ZN7_stdcmdILi1071EE3runEPcS1_S1_(i8* %var, i8* %list, i8* %body) align 2 {
entry:
tail call void @_Z8looplistPKcS0_S0_b(i8* %var, i8* %list, i8* %body, i8 zeroext 0)
ret void
}
define void @_ZN7_stdcmdILi1106EE3runEPPcPi(i8** nocapture %args, i32* nocapture %numargs) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
br label %bb2
bb: ; preds = %bb2
%scevgep = getelementptr i8** %args, i64 %indvar ; <i8**> [#uses=1]
%1 = load i8** %scevgep, align 8 ; <i8*> [#uses=1]
%2 = call i8* @_Z10executeretPKc(i8* %1) ; <i8*> [#uses=3]
%3 = icmp eq i8* %2, null ; <i1> [#uses=1]
br i1 %3, label %bb3, label %_Z7executePKc.exit
_Z7executePKc.exit: ; preds = %bb
%4 = call i64 @strtol(i8* noalias nocapture %2, i8** noalias null, i32 0) nounwind readonly ; <i64> [#uses=1]
%5 = trunc i64 %4 to i32 ; <i32> [#uses=3]
call void @_ZdaPv(i8* %2) nounwind
%6 = icmp eq i32 %5, 0 ; <i1> [#uses=1]
br i1 %6, label %bb3, label %bb1
bb1: ; preds = %_Z7executePKc.exit
%indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
br label %bb2
bb2: ; preds = %bb1, %entry
%indvar = phi i64 [ %indvar.next, %bb1 ], [ 0, %entry ] ; <i64> [#uses=3]
%val.0 = phi i32 [ %5, %bb1 ], [ 1, %entry ] ; <i32> [#uses=1]
%i.0 = trunc i64 %indvar to i32 ; <i32> [#uses=1]
%7 = load i32* %numargs, align 4 ; <i32> [#uses=1]
%8 = icmp sgt i32 %7, %i.0 ; <i1> [#uses=1]
br i1 %8, label %bb, label %bb3
bb3: ; preds = %bb2, %_Z7executePKc.exit, %bb
%val.1 = phi i32 [ %5, %_Z7executePKc.exit ], [ %val.0, %bb2 ], [ 0, %bb ] ; <i32> [#uses=1]
%9 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%10 = add nsw i32 %9, 1 ; <i32> [#uses=1]
%11 = srem i32 %10, 3 ; <i32> [#uses=2]
store i32 %11, i32* @_ZL6retidx, align 4
%12 = sext i32 %11 to i64 ; <i64> [#uses=1]
%13 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %12, i64 0 ; <i8*> [#uses=1]
%14 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %13, i8** %14, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %val.1) nounwind
%15 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%16 = sext i32 %15 to i64 ; <i64> [#uses=1]
%17 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %16, i64 0 ; <i8*> [#uses=2]
%18 = call i64 @strlen(i8* %17) nounwind readonly ; <i64> [#uses=2]
%19 = add i64 %18, 1 ; <i64> [#uses=2]
%20 = call i8* @_Znam(i64 %19) ; <i8*> [#uses=3]
%21 = call i8* @strncpy(i8* noalias %20, i8* noalias %17, i64 %19) nounwind ; <i8*> [#uses=0]
%22 = getelementptr inbounds i8* %20, i64 %18 ; <i8*> [#uses=1]
store i8 0, i8* %22, align 1
store i8* %20, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1112EE3runEPPcPi(i8** nocapture %args, i32* nocapture %numargs) align 2 {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
br label %bb2
bb: ; preds = %bb2
%scevgep = getelementptr i8** %args, i64 %indvar ; <i8**> [#uses=1]
%1 = load i8** %scevgep, align 8 ; <i8*> [#uses=1]
%2 = call i8* @_Z10executeretPKc(i8* %1) ; <i8*> [#uses=3]
%3 = icmp eq i8* %2, null ; <i1> [#uses=1]
br i1 %3, label %bb1, label %_Z7executePKc.exit
_Z7executePKc.exit: ; preds = %bb
%4 = call i64 @strtol(i8* noalias nocapture %2, i8** noalias null, i32 0) nounwind readonly ; <i64> [#uses=1]
%5 = trunc i64 %4 to i32 ; <i32> [#uses=3]
call void @_ZdaPv(i8* %2) nounwind
%6 = icmp eq i32 %5, 0 ; <i1> [#uses=1]
br i1 %6, label %bb1, label %bb3
bb1: ; preds = %_Z7executePKc.exit, %bb
%7 = phi i32 [ %5, %_Z7executePKc.exit ], [ 0, %bb ] ; <i32> [#uses=1]
%indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
br label %bb2
bb2: ; preds = %bb1, %entry
%indvar = phi i64 [ %indvar.next, %bb1 ], [ 0, %entry ] ; <i64> [#uses=3]
%val.0 = phi i32 [ %7, %bb1 ], [ 0, %entry ] ; <i32> [#uses=1]
%i.0 = trunc i64 %indvar to i32 ; <i32> [#uses=1]
%8 = load i32* %numargs, align 4 ; <i32> [#uses=1]
%9 = icmp sgt i32 %8, %i.0 ; <i1> [#uses=1]
br i1 %9, label %bb, label %bb3
bb3: ; preds = %bb2, %_Z7executePKc.exit
%val.1 = phi i32 [ %5, %_Z7executePKc.exit ], [ %val.0, %bb2 ] ; <i32> [#uses=1]
%10 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%11 = add nsw i32 %10, 1 ; <i32> [#uses=1]
%12 = srem i32 %11, 3 ; <i32> [#uses=2]
store i32 %12, i32* @_ZL6retidx, align 4
%13 = sext i32 %12 to i64 ; <i64> [#uses=1]
%14 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %13, i64 0 ; <i8*> [#uses=1]
%15 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %14, i8** %15, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %val.1) nounwind
%16 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%17 = sext i32 %16 to i64 ; <i64> [#uses=1]
%18 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %17, i64 0 ; <i8*> [#uses=2]
%19 = call i64 @strlen(i8* %18) nounwind readonly ; <i64> [#uses=2]
%20 = add i64 %19, 1 ; <i64> [#uses=2]
%21 = call i8* @_Znam(i64 %20) ; <i8*> [#uses=3]
%22 = call i8* @strncpy(i8* noalias %21, i8* noalias %18, i64 %20) nounwind ; <i8*> [#uses=0]
%23 = getelementptr inbounds i8* %21, i64 %19 ; <i8*> [#uses=1]
store i8 0, i8* %23, align 1
store i8* %21, i8** @commandret, align 8
ret void
}
define void @_ZN7_stdcmdILi1165EE3runEPPcPi(i8** nocapture %args, i32* nocapture %numargs) align 2 {
entry:
br label %bb4
bb: ; preds = %bb4
%scevgep = getelementptr i8** %args, i64 %tmp ; <i8**> [#uses=1]
%0 = load i8** %scevgep, align 8 ; <i8*> [#uses=1]
%1 = tail call i8* @_Z10executeretPKc(i8* %0) ; <i8*> [#uses=3]
%2 = icmp eq i8* %1, null ; <i1> [#uses=1]
br i1 %2, label %bb3, label %_Z7executePKc.exit
_Z7executePKc.exit: ; preds = %bb
%3 = tail call i64 @strtol(i8* noalias nocapture %1, i8** noalias null, i32 0) nounwind readonly ; <i64> [#uses=1]
%4 = trunc i64 %3 to i32 ; <i32> [#uses=1]
tail call void @_ZdaPv(i8* %1) nounwind
%phitmp = icmp eq i32 %4, 0 ; <i1> [#uses=1]
br i1 %phitmp, label %bb3, label %bb1
bb1: ; preds = %_Z7executePKc.exit
%5 = or i32 %i.0, 1 ; <i32> [#uses=2]
%6 = load i32* %numargs, align 4 ; <i32> [#uses=1]
%7 = icmp slt i32 %5, %6 ; <i1> [#uses=1]
br i1 %7, label %bb2, label %return
bb2: ; preds = %bb1
%8 = sext i32 %5 to i64 ; <i64> [#uses=1]
%9 = getelementptr inbounds i8** %args, i64 %8 ; <i8**> [#uses=1]
%10 = load i8** %9, align 8 ; <i8*> [#uses=1]
%11 = tail call i8* @_Z10executeretPKc(i8* %10) ; <i8*> [#uses=1]
store i8* %11, i8** @commandret, align 8
ret void
bb3: ; preds = %_Z7executePKc.exit, %bb
%indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
br label %bb4
bb4: ; preds = %bb3, %entry
%indvar = phi i64 [ %indvar.next, %bb3 ], [ 0, %entry ] ; <i64> [#uses=2]
%tmp = shl i64 %indvar, 1 ; <i64> [#uses=2]
%i.0 = trunc i64 %tmp to i32 ; <i32> [#uses=2]
%12 = load i32* %numargs, align 4 ; <i32> [#uses=1]
%13 = icmp sgt i32 %12, %i.0 ; <i1> [#uses=1]
br i1 %13, label %bb, label %return
return: ; preds = %bb4, %bb1
ret void
}
define void @_ZN7_stdcmdILi1180EE3runEPiPPcS1_(i32* nocapture %val, i8** nocapture %args, i32* nocapture %numargs) align 2 {
entry:
%0 = load i32* %numargs, align 4 ; <i32> [#uses=2]
br label %bb3
bb: ; preds = %bb3
%scevgep = getelementptr i8** %args, i64 %tmp913 ; <i8**> [#uses=1]
%1 = load i8** %scevgep, align 8 ; <i8*> [#uses=1]
%2 = tail call i64 @strtol(i8* noalias nocapture %1, i8** noalias null, i32 0) nounwind readonly ; <i64> [#uses=1]
%3 = trunc i64 %2 to i32 ; <i32> [#uses=1]
%4 = load i32* %val, align 4 ; <i32> [#uses=1]
%5 = icmp eq i32 %3, %4 ; <i1> [#uses=1]
br i1 %5, label %bb1, label %bb2
bb1: ; preds = %bb
%6 = add nsw i32 %i.0, 1 ; <i32> [#uses=1]
%7 = sext i32 %6 to i64 ; <i64> [#uses=1]
%8 = getelementptr inbounds i8** %args, i64 %7 ; <i8**> [#uses=1]
%9 = load i8** %8, align 8 ; <i8*> [#uses=1]
%10 = tail call i8* @_Z10executeretPKc(i8* %9) ; <i8*> [#uses=1]
store i8* %10, i8** @commandret, align 8
ret void
bb2: ; preds = %bb
%indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
br label %bb3
bb3: ; preds = %bb2, %entry
%indvar = phi i64 [ %indvar.next, %bb2 ], [ 0, %entry ] ; <i64> [#uses=2]
%tmp = shl i64 %indvar, 1 ; <i64> [#uses=2]
%tmp913 = or i64 %tmp, 1 ; <i64> [#uses=2]
%i.0 = trunc i64 %tmp913 to i32 ; <i32> [#uses=3]
%tmp11 = add i64 %tmp, 2 ; <i64> [#uses=1]
%tmp12 = trunc i64 %tmp11 to i32 ; <i32> [#uses=1]
%11 = icmp slt i32 %tmp12, %0 ; <i1> [#uses=1]
br i1 %11, label %bb, label %bb4
bb4: ; preds = %bb3
%12 = icmp sgt i32 %0, %i.0 ; <i1> [#uses=1]
br i1 %12, label %bb5, label %return
bb5: ; preds = %bb4
%13 = sext i32 %i.0 to i64 ; <i64> [#uses=1]
%14 = getelementptr inbounds i8** %args, i64 %13 ; <i8**> [#uses=1]
%15 = load i8** %14, align 8 ; <i8*> [#uses=1]
%16 = tail call i8* @_Z10executeretPKc(i8* %15) ; <i8*> [#uses=1]
store i8* %16, i8** @commandret, align 8
ret void
return: ; preds = %bb4
ret void
}
define void @_ZN7_stdcmdILi1181EE3runEPfPPcPi(float* nocapture %val, i8** nocapture %args, i32* nocapture %numargs) align 2 {
entry:
%end.i = alloca i8*, align 8 ; <i8**> [#uses=2]
br label %bb3
bb: ; preds = %bb3
%scevgep = getelementptr i8** %args, i64 %tmp913 ; <i8**> [#uses=1]
%0 = load i8** %scevgep, align 8 ; <i8*> [#uses=3]
%1 = call double @strtod(i8* noalias %0, i8** noalias %end.i) nounwind ; <double> [#uses=2]
%2 = fcmp une double %1, 0.000000e+00 ; <i1> [#uses=1]
br i1 %2, label %bb4.i, label %bb.i
bb.i: ; preds = %bb
%3 = load i8** %end.i, align 8 ; <i8*> [#uses=2]
%4 = icmp eq i8* %3, %0 ; <i1> [#uses=1]
br i1 %4, label %bb4.i, label %bb1.i
bb1.i: ; preds = %bb.i
%5 = load i8* %3, align 1 ; <i8> [#uses=1]
switch i8 %5, label %bb4.i [
i8 88, label %bb5.i
i8 120, label %bb5.i
]
bb4.i: ; preds = %bb1.i, %bb.i, %bb
%6 = fptrunc double %1 to float ; <float> [#uses=1]
br label %_ZL10parsefloatPKc.exit
bb5.i: ; preds = %bb1.i, %bb1.i
%7 = call i64 @strtol(i8* noalias nocapture %0, i8** noalias null, i32 0) nounwind readonly ; <i64> [#uses=1]
%8 = trunc i64 %7 to i32 ; <i32> [#uses=1]
%9 = sitofp i32 %8 to float ; <float> [#uses=1]
br label %_ZL10parsefloatPKc.exit
_ZL10parsefloatPKc.exit: ; preds = %bb5.i, %bb4.i
%10 = phi float [ %9, %bb5.i ], [ %6, %bb4.i ] ; <float> [#uses=1]
%11 = load float* %val, align 4 ; <float> [#uses=1]
%12 = fcmp oeq float %10, %11 ; <i1> [#uses=1]
br i1 %12, label %bb1, label %bb2
bb1: ; preds = %_ZL10parsefloatPKc.exit
%13 = add nsw i32 %i.0, 1 ; <i32> [#uses=1]
%14 = sext i32 %13 to i64 ; <i64> [#uses=1]
%15 = getelementptr inbounds i8** %args, i64 %14 ; <i8**> [#uses=1]
%16 = load i8** %15, align 8 ; <i8*> [#uses=1]
%17 = call i8* @_Z10executeretPKc(i8* %16) ; <i8*> [#uses=1]
store i8* %17, i8** @commandret, align 8
ret void
bb2: ; preds = %_ZL10parsefloatPKc.exit
%indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
br label %bb3
bb3: ; preds = %bb2, %entry
%indvar = phi i64 [ %indvar.next, %bb2 ], [ 0, %entry ] ; <i64> [#uses=2]
%tmp = shl i64 %indvar, 1 ; <i64> [#uses=2]
%tmp913 = or i64 %tmp, 1 ; <i64> [#uses=2]
%i.0 = trunc i64 %tmp913 to i32 ; <i32> [#uses=3]
%tmp11 = add i64 %tmp, 2 ; <i64> [#uses=1]
%tmp12 = trunc i64 %tmp11 to i32 ; <i32> [#uses=1]
%18 = load i32* %numargs, align 4 ; <i32> [#uses=2]
%19 = icmp slt i32 %tmp12, %18 ; <i1> [#uses=1]
br i1 %19, label %bb, label %bb4
bb4: ; preds = %bb3
%20 = icmp sgt i32 %18, %i.0 ; <i1> [#uses=1]
br i1 %20, label %bb5, label %return
bb5: ; preds = %bb4
%21 = sext i32 %i.0 to i64 ; <i64> [#uses=1]
%22 = getelementptr inbounds i8** %args, i64 %21 ; <i8**> [#uses=1]
%23 = load i8** %22, align 8 ; <i8*> [#uses=1]
%24 = call i8* @_Z10executeretPKc(i8* %23) ; <i8*> [#uses=1]
store i8* %24, i8** @commandret, align 8
ret void
return: ; preds = %bb4
ret void
}
define void @_ZN7_stdcmdILi1182EE3runEPcPS1_Pi(i8* nocapture %val, i8** nocapture %args, i32* nocapture %numargs) align 2 {
entry:
%0 = load i32* %numargs, align 4 ; <i32> [#uses=2]
br label %bb3
bb: ; preds = %bb3
%scevgep = getelementptr i8** %args, i64 %tmp913 ; <i8**> [#uses=1]
%1 = load i8** %scevgep, align 8 ; <i8*> [#uses=1]
%2 = tail call i32 @strcmp(i8* %1, i8* %val) nounwind readonly ; <i32> [#uses=1]
%3 = icmp eq i32 %2, 0 ; <i1> [#uses=1]
br i1 %3, label %bb1, label %bb2
bb1: ; preds = %bb
%4 = add nsw i32 %i.0, 1 ; <i32> [#uses=1]
%5 = sext i32 %4 to i64 ; <i64> [#uses=1]
%6 = getelementptr inbounds i8** %args, i64 %5 ; <i8**> [#uses=1]
%7 = load i8** %6, align 8 ; <i8*> [#uses=1]
%8 = tail call i8* @_Z10executeretPKc(i8* %7) ; <i8*> [#uses=1]
store i8* %8, i8** @commandret, align 8
ret void
bb2: ; preds = %bb
%indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
br label %bb3
bb3: ; preds = %bb2, %entry
%indvar = phi i64 [ %indvar.next, %bb2 ], [ 0, %entry ] ; <i64> [#uses=2]
%tmp = shl i64 %indvar, 1 ; <i64> [#uses=2]
%tmp913 = or i64 %tmp, 1 ; <i64> [#uses=2]
%i.0 = trunc i64 %tmp913 to i32 ; <i32> [#uses=3]
%tmp11 = add i64 %tmp, 2 ; <i64> [#uses=1]
%tmp12 = trunc i64 %tmp11 to i32 ; <i32> [#uses=1]
%9 = icmp slt i32 %tmp12, %0 ; <i1> [#uses=1]
br i1 %9, label %bb, label %bb4
bb4: ; preds = %bb3
%10 = icmp sgt i32 %0, %i.0 ; <i1> [#uses=1]
br i1 %10, label %bb5, label %return
bb5: ; preds = %bb4
%11 = sext i32 %i.0 to i64 ; <i64> [#uses=1]
%12 = getelementptr inbounds i8** %args, i64 %11 ; <i8**> [#uses=1]
%13 = load i8** %12, align 8 ; <i8*> [#uses=1]
%14 = tail call i8* @_Z10executeretPKc(i8* %13) ; <i8*> [#uses=1]
store i8* %14, i8** @commandret, align 8
ret void
return: ; preds = %bb4
ret void
}
define void @_Z8popidentR5ident(%struct.ident* nocapture %id) nounwind {
entry:
%0 = getelementptr inbounds %struct.ident* %id, i64 0, i32 1 ; <i32*> [#uses=1]
%1 = load i32* %0, align 8 ; <i32> [#uses=1]
%2 = icmp eq i32 %1, 5 ; <i1> [#uses=1]
br i1 %2, label %bb, label %return
bb: ; preds = %entry
%3 = getelementptr inbounds %struct.ident* %id, i64 0, i32 6, i32 0 ; <void ()**> [#uses=3]
%4 = load void ()** %3, align 8 ; <void ()*> [#uses=2]
%5 = icmp eq void ()* %4, null ; <i1> [#uses=1]
br i1 %5, label %return, label %bb1
bb1: ; preds = %bb
%6 = getelementptr inbounds %struct.ident* %id, i64 0, i32 7, i32 0 ; <i8**> [#uses=2]
%7 = load i8** %6, align 8 ; <i8*> [#uses=3]
%8 = getelementptr inbounds %struct.ident* %id, i64 0, i32 8, i32 0 ; <i8**> [#uses=1]
%9 = load i8** %8, align 8 ; <i8*> [#uses=1]
%10 = icmp eq i8* %7, %9 ; <i1> [#uses=1]
%11 = icmp eq i8* %7, null ; <i1> [#uses=1]
%or.cond = or i1 %10, %11 ; <i1> [#uses=1]
br i1 %or.cond, label %bb4, label %bb3
bb3: ; preds = %bb1
tail call void @_ZdaPv(i8* %7) nounwind
%.pre = load void ()** %3, align 8 ; <void ()*> [#uses=1]
br label %bb4
bb4: ; preds = %bb3, %bb1
%12 = phi void ()* [ %4, %bb1 ], [ %.pre, %bb3 ] ; <void ()*> [#uses=3]
%13 = bitcast void ()* %12 to %struct.identstack* ; <%struct.identstack*> [#uses=1]
%14 = bitcast void ()* %12 to i8** ; <i8**> [#uses=1]
%15 = load i8** %14, align 8 ; <i8*> [#uses=1]
store i8* %15, i8** %6, align 8
%16 = getelementptr inbounds %struct.identstack* %13, i64 0, i32 1 ; <%struct.identstack**> [#uses=1]
%17 = load %struct.identstack** %16, align 8 ; <%struct.identstack*> [#uses=1]
%.c = bitcast %struct.identstack* %17 to void ()* ; <void ()*> [#uses=1]
store void ()* %.c, void ()** %3
%18 = bitcast void ()* %12 to i8* ; <i8*> [#uses=1]
tail call void @_ZdlPv(i8* %18) nounwind
ret void
return: ; preds = %bb, %entry
ret void
}
define i8* @_Z10executeretPKc(i8* %p) {
entry:
%end.i141 = alloca i8*, align 8 ; <i8**> [#uses=2]
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%end.i = alloca i8*, align 8 ; <i8**> [#uses=2]
%p_addr = alloca i8*, align 8 ; <i8**> [#uses=5]
%1 = alloca %struct.ident*, align 8 ; <%struct.ident**> [#uses=2]
%2 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%w = alloca [25 x i8*], align 8 ; <[25 x i8*]*> [#uses=10]
%infix = alloca i32, align 4 ; <i32*> [#uses=3]
%v = alloca [25 x i8*], align 8 ; <[25 x i8*]*> [#uses=14]
%nstor = alloca [25 x %union..0._39], align 8 ; <[25 x %union..0._39]*> [#uses=3]
%argname = alloca [260 x i8], align 1 ; <[260 x i8]*> [#uses=1]
store i8* %p, i8** %p_addr
%3 = getelementptr inbounds [25 x i8*]* %w, i64 0, i64 0 ; <i8**> [#uses=2]
%4 = getelementptr inbounds [25 x i8*]* %w, i64 0, i64 1 ; <i8**> [#uses=5]
%5 = getelementptr inbounds [25 x i8*]* %w, i64 0, i64 2 ; <i8**> [#uses=3]
%6 = getelementptr inbounds [25 x i8*]* %w, i64 0, i64 3 ; <i8**> [#uses=1]
%7 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
%8 = getelementptr inbounds [25 x i8*]* %v, i64 0, i64 0 ; <i8**> [#uses=9]
%9 = bitcast i8** %4 to i8* ; <i8*> [#uses=1]
%10 = getelementptr inbounds [25 x i8*]* %v, i64 0, i64 1 ; <i8**> [#uses=7]
%11 = getelementptr inbounds [25 x i8*]* %v, i64 0, i64 2 ; <i8**> [#uses=6]
%12 = getelementptr inbounds [25 x i8*]* %v, i64 0, i64 3 ; <i8**> [#uses=5]
%13 = getelementptr inbounds [25 x i8*]* %v, i64 0, i64 4 ; <i8**> [#uses=4]
%14 = getelementptr inbounds [25 x i8*]* %v, i64 0, i64 5 ; <i8**> [#uses=3]
%15 = getelementptr inbounds [25 x i8*]* %v, i64 0, i64 6 ; <i8**> [#uses=2]
%16 = getelementptr inbounds [25 x i8*]* %v, i64 0, i64 7 ; <i8**> [#uses=1]
%17 = getelementptr inbounds [260 x i8]* %argname, i64 0, i64 0 ; <i8*> [#uses=2]
%18 = getelementptr inbounds %struct.stringformatter* %2, i64 0, i32 0 ; <i8**> [#uses=1]
br label %bb123.outer
bb: ; preds = %bb123
store i32 0, i32* %infix, align 4
br label %bb5
bb2: ; preds = %bb5
%scevgep206 = getelementptr [25 x i8*]* %w, i64 0, i64 %indvar203 ; <i8**> [#uses=1]
%19 = call i8* @_Z9parsewordRPKciRi(i8** %p_addr, i32 %i.0, i32* %infix) ; <i8*> [#uses=2]
store i8* %19, i8** %scevgep206, align 8
%20 = icmp eq i8* %19, null ; <i1> [#uses=1]
br i1 %20, label %bb6, label %bb4
bb4: ; preds = %bb2
%indvar.next204 = add i64 %indvar203, 1 ; <i64> [#uses=1]
br label %bb5
bb5: ; preds = %bb4, %bb
%indvar203 = phi i64 [ %indvar.next204, %bb4 ], [ 0, %bb ] ; <i64> [#uses=3]
%i.0 = trunc i64 %indvar203 to i32 ; <i32> [#uses=3]
%21 = icmp slt i32 %i.0, 25 ; <i1> [#uses=1]
br i1 %21, label %bb2, label %bb6
bb6: ; preds = %bb5, %bb2
%numargs.0 = phi i32 [ %i.0, %bb2 ], [ 25, %bb5 ] ; <i32> [#uses=16]
%22 = load i8** %p_addr, align 8 ; <i8*> [#uses=3]
%23 = call i64 @strcspn(i8* %22, i8* getelementptr inbounds ([4 x i8]* @.str124, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=2]
%24 = getelementptr inbounds i8* %22, i64 %23 ; <i8*> [#uses=2]
store i8* %24, i8** %p_addr, align 8
%25 = load i8* %24, align 1 ; <i8> [#uses=1]
%26 = icmp ne i8 %25, 0 ; <i1> [#uses=1]
%27 = zext i1 %26 to i8 ; <i8> [#uses=6]
%.sum = add i64 %23, 1 ; <i64> [#uses=1]
%28 = getelementptr inbounds i8* %22, i64 %.sum ; <i8*> [#uses=1]
store i8* %28, i8** %p_addr, align 8
%29 = load i8** %3, align 8 ; <i8*> [#uses=14]
%30 = icmp eq i8* %29, null ; <i1> [#uses=1]
br i1 %30, label %bb123, label %bb7
bb7: ; preds = %bb6
%31 = load i8* %29, align 1 ; <i8> [#uses=1]
%32 = icmp eq i8 %31, 0 ; <i1> [#uses=1]
br i1 %32, label %bb123, label %bb8
bb8: ; preds = %bb7
%33 = icmp eq i8* %retval1.1.ph, null ; <i1> [#uses=1]
br i1 %33, label %bb12, label %bb10
bb10: ; preds = %bb8
call void @_ZdaPv(i8* %retval1.1.ph) nounwind
br label %bb12
bb12: ; preds = %bb10, %bb8
%retval1.0 = phi i8* [ null, %bb10 ], [ %retval1.1.ph, %bb8 ] ; <i8*> [#uses=13]
%34 = load i32* %infix, align 4 ; <i32> [#uses=1]
switch i32 %34, label %bb117 [
i32 0, label %bb18
i32 61, label %bb14
]
bb14: ; preds = %bb12
%35 = icmp sgt i32 %numargs.0, 2 ; <i1> [#uses=1]
br i1 %35, label %bb15, label %bb16
bb15: ; preds = %bb14
%36 = load i8** %5, align 8 ; <i8*> [#uses=1]
br label %bb17
bb16: ; preds = %bb14
%37 = call i8* @_Znam(i64 1) ; <i8*> [#uses=2]
store i8 0, i8* %37, align 1
br label %bb17
bb17: ; preds = %bb16, %bb15
%iftmp.109.0 = phi i8* [ %36, %bb15 ], [ %37, %bb16 ] ; <i8*> [#uses=1]
call void @_Z6aliasaPKcPc(i8* %29, i8* %iftmp.109.0)
store i8* null, i8** %5, align 8
br label %bb117
bb18: ; preds = %bb12
%38 = load %"struct.hashtable<const char*,ident>"** @idents, align 8 ; <%"struct.hashtable<const char*,ident>"*> [#uses=2]
%39 = load i8* %29, align 1 ; <i8> [#uses=4]
%40 = icmp eq i8 %39, 0 ; <i1> [#uses=1]
br i1 %40, label %_ZL6hthashPKc.exit.i, label %bb.i.i
bb.i.i: ; preds = %bb.i.i, %bb18
%indvar.i.i = phi i64 [ %tmp179, %bb.i.i ], [ 0, %bb18 ] ; <i64> [#uses=1]
%41 = phi i8 [ %45, %bb.i.i ], [ %39, %bb18 ] ; <i8> [#uses=1]
%h.04.i.i = phi i32 [ %44, %bb.i.i ], [ 5381, %bb18 ] ; <i32> [#uses=1]
%tmp179 = add i64 %indvar.i.i, 1 ; <i64> [#uses=2]
%scevgep.i.i = getelementptr i8* %29, i64 %tmp179 ; <i8*> [#uses=1]
%42 = sext i8 %41 to i32 ; <i32> [#uses=1]
%43 = mul i32 %h.04.i.i, 33 ; <i32> [#uses=1]
%44 = xor i32 %43, %42 ; <i32> [#uses=2]
%45 = load i8* %scevgep.i.i, align 1 ; <i8> [#uses=2]
%46 = icmp eq i8 %45, 0 ; <i1> [#uses=1]
br i1 %46, label %_ZL6hthashPKc.exit.i, label %bb.i.i
_ZL6hthashPKc.exit.i: ; preds = %bb.i.i, %bb18
%h.0.lcssa.i.i = phi i32 [ 5381, %bb18 ], [ %44, %bb.i.i ] ; <i32> [#uses=1]
%47 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %38, i64 0, i32 0, i32 0 ; <i32*> [#uses=1]
%48 = load i32* %47, align 8 ; <i32> [#uses=1]
%49 = add nsw i32 %48, -1 ; <i32> [#uses=1]
%50 = and i32 %49, %h.0.lcssa.i.i ; <i32> [#uses=1]
%51 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %38, i64 0, i32 0, i32 2 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"***> [#uses=1]
%52 = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** %51, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%53 = zext i32 %50 to i64 ; <i64> [#uses=1]
%54 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %52, i64 %53 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i134
bb.i132: ; preds = %bb3.i134
%.idx.i = getelementptr %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 0 ; <i8**> [#uses=1]
%.idx.val.i = load i8** %.idx.i ; <i8*> [#uses=1]
%55 = call i32 @strcmp(i8* %29, i8* %.idx.val.i) nounwind readonly ; <i32> [#uses=1]
%56 = icmp eq i32 %55, 0 ; <i1> [#uses=1]
br i1 %56, label %_ZN9hashtableIPKc5identE6accessERKS1_.exit, label %bb2.i
bb2.i: ; preds = %bb.i132
%57 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 1 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i134
bb3.i134: ; preds = %bb2.i, %_ZL6hthashPKc.exit.i
%c.0.in.i = phi %"struct.hashset<hashtableentry<const char*, ident> >::chain"** [ %54, %_ZL6hthashPKc.exit.i ], [ %57, %bb2.i ] ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%c.0.i = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %c.0.in.i, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"*> [#uses=26]
%58 = icmp eq %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, null ; <i1> [#uses=1]
br i1 %58, label %bb19, label %bb.i132
_ZN9hashtableIPKc5identE6accessERKS1_.exit: ; preds = %bb.i132
%59 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1 ; <%struct.ident*> [#uses=4]
%60 = icmp eq %struct.ident* %59, null ; <i1> [#uses=1]
br i1 %60, label %bb19, label %bb25
bb19: ; preds = %_ZN9hashtableIPKc5identE6accessERKS1_.exit, %bb3.i134
%61 = sext i8 %39 to i32 ; <i32> [#uses=1]
%62 = add i32 %61, -48 ; <i32> [#uses=1]
%63 = icmp ult i32 %62, 10 ; <i1> [#uses=1]
br i1 %63, label %bb23, label %bb.i135
bb.i135: ; preds = %bb19
switch i8 %39, label %bb22 [
i8 43, label %_ZL9isintegerPc.exit
i8 45, label %_ZL9isintegerPc.exit
i8 46, label %_ZL9isintegerPc.exit
]
_ZL9isintegerPc.exit: ; preds = %bb.i135, %bb.i135, %bb.i135
%64 = getelementptr inbounds i8* %29, i64 1 ; <i8*> [#uses=1]
%65 = load i8* %64, align 1 ; <i8> [#uses=1]
%66 = sext i8 %65 to i32 ; <i32> [#uses=1]
%67 = add i32 %66, -48 ; <i32> [#uses=1]
%phitmp = icmp ugt i32 %67, 9 ; <i1> [#uses=1]
br i1 %phitmp, label %bb22, label %bb23
bb22: ; preds = %_ZL9isintegerPc.exit, %bb.i135
call void (i32, i8*, ...)* @_Z7conoutfiPKcz(i32 4, i8* getelementptr inbounds ([20 x i8]* @.str125, i64 0, i64 0), i8* %29)
br label %bb23
bb23: ; preds = %bb22, %_ZL9isintegerPc.exit, %bb19
%68 = call i64 @strlen(i8* %29) nounwind readonly ; <i64> [#uses=2]
%69 = add i64 %68, 1 ; <i64> [#uses=2]
%70 = call i8* @_Znam(i64 %69) ; <i8*> [#uses=4]
%71 = call i8* @strncpy(i8* noalias %70, i8* noalias %29, i64 %69) nounwind ; <i8*> [#uses=0]
%72 = getelementptr inbounds i8* %70, i64 %68 ; <i8*> [#uses=1]
store i8 0, i8* %72, align 1
%73 = icmp eq i8* %70, null ; <i1> [#uses=1]
br i1 %73, label %bb117, label %bb24
bb24: ; preds = %bb23
br label %bb117
bb25: ; preds = %_ZN9hashtableIPKc5identE6accessERKS1_.exit
%74 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 1 ; <i32*> [#uses=1]
%75 = load i32* %74, align 8 ; <i32> [#uses=1]
switch i32 %75, label %bb117 [
i32 0, label %bb67
i32 1, label %bb82
i32 2, label %bb85
i32 5, label %bb91
i32 4, label %bb27
i32 3, label %bb28
]
bb27: ; preds = %bb25
%76 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 8, i32 0 ; <i8**> [#uses=1]
%77 = load i8** %76, align 8 ; <i8*> [#uses=1]
store i8* %77, i8** %8, align 8
br label %bb28
bb28: ; preds = %bb27, %bb25
%n.0 = phi i32 [ 1, %bb27 ], [ 0, %bb25 ] ; <i32> [#uses=1]
%78 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 7, i32 0 ; <i8**> [#uses=1]
%79 = load i8** %78, align 8 ; <i8*> [#uses=1]
%80 = add nsw i32 %numargs.0, -1 ; <i32> [#uses=2]
br label %bb48
bb30: ; preds = %bb48
%81 = add nsw i32 %wn.1, 1 ; <i32> [#uses=3]
%82 = icmp slt i32 %81, %numargs.0 ; <i1> [#uses=1]
br i1 %82, label %bb31, label %bb33
bb31: ; preds = %bb30
%83 = sext i32 %81 to i64 ; <i64> [#uses=1]
%84 = getelementptr inbounds [25 x i8*]* %w, i64 0, i64 %83 ; <i8**> [#uses=1]
%85 = load i8** %84, align 8 ; <i8*> [#uses=1]
br label %bb33
bb33: ; preds = %bb31, %bb30
%iftmp.114.0 = phi i8* [ %85, %bb31 ], [ getelementptr inbounds ([1 x i8]* @.str3, i64 0, i64 0), %bb30 ] ; <i8*> [#uses=1]
%86 = sext i32 %n.2 to i64 ; <i64> [#uses=1]
%87 = getelementptr inbounds [25 x i8*]* %v, i64 0, i64 %86 ; <i8**> [#uses=1]
store i8* %iftmp.114.0, i8** %87, align 8
br label %bb47
bb34: ; preds = %bb48
%88 = add nsw i32 %wn.1, 1 ; <i32> [#uses=3]
%89 = icmp slt i32 %88, %numargs.0 ; <i1> [#uses=1]
br i1 %89, label %bb35, label %bb37
bb35: ; preds = %bb34
%90 = sext i32 %88 to i64 ; <i64> [#uses=1]
%91 = getelementptr inbounds [25 x i8*]* %w, i64 0, i64 %90 ; <i8**> [#uses=1]
%92 = load i8** %91, align 8 ; <i8*> [#uses=1]
%93 = call i64 @strtol(i8* noalias nocapture %92, i8** noalias null, i32 0) nounwind readonly ; <i64> [#uses=1]
%94 = trunc i64 %93 to i32 ; <i32> [#uses=1]
br label %bb37
bb37: ; preds = %bb35, %bb34
%iftmp.117.0 = phi i32 [ %94, %bb35 ], [ 0, %bb34 ] ; <i32> [#uses=1]
%95 = sext i32 %n.2 to i64 ; <i64> [#uses=2]
%96 = getelementptr inbounds [25 x %union..0._39]* %nstor, i64 0, i64 %95, i32 0 ; <i32*> [#uses=2]
store i32 %iftmp.117.0, i32* %96, align 4
%97 = getelementptr inbounds [25 x i8*]* %v, i64 0, i64 %95 ; <i8**> [#uses=1]
%98 = bitcast i32* %96 to i8* ; <i8*> [#uses=1]
store i8* %98, i8** %97, align 8
br label %bb47
bb38: ; preds = %bb48
%99 = add nsw i32 %wn.1, 1 ; <i32> [#uses=3]
%100 = icmp slt i32 %99, %numargs.0 ; <i1> [#uses=1]
br i1 %100, label %bb39, label %bb41
bb39: ; preds = %bb38
%101 = sext i32 %99 to i64 ; <i64> [#uses=1]
%102 = getelementptr inbounds [25 x i8*]* %w, i64 0, i64 %101 ; <i8**> [#uses=1]
%103 = load i8** %102, align 8 ; <i8*> [#uses=3]
%104 = call double @strtod(i8* noalias %103, i8** noalias %end.i) nounwind ; <double> [#uses=2]
%105 = fcmp une double %104, 0.000000e+00 ; <i1> [#uses=1]
br i1 %105, label %bb4.i139, label %bb.i137
bb.i137: ; preds = %bb39
%106 = load i8** %end.i, align 8 ; <i8*> [#uses=2]
%107 = icmp eq i8* %106, %103 ; <i1> [#uses=1]
br i1 %107, label %bb4.i139, label %bb1.i138
bb1.i138: ; preds = %bb.i137
%108 = load i8* %106, align 1 ; <i8> [#uses=1]
switch i8 %108, label %bb4.i139 [
i8 88, label %bb5.i140
i8 120, label %bb5.i140
]
bb4.i139: ; preds = %bb1.i138, %bb.i137, %bb39
%109 = fptrunc double %104 to float ; <float> [#uses=1]
br label %bb41
bb5.i140: ; preds = %bb1.i138, %bb1.i138
%110 = call i64 @strtol(i8* noalias nocapture %103, i8** noalias null, i32 0) nounwind readonly ; <i64> [#uses=1]
%111 = trunc i64 %110 to i32 ; <i32> [#uses=1]
%112 = sitofp i32 %111 to float ; <float> [#uses=1]
br label %bb41
bb41: ; preds = %bb5.i140, %bb4.i139, %bb38
%iftmp.122.0 = phi float [ 0.000000e+00, %bb38 ], [ %112, %bb5.i140 ], [ %109, %bb4.i139 ] ; <float> [#uses=1]
%113 = sext i32 %n.2 to i64 ; <i64> [#uses=2]
%114 = getelementptr inbounds [25 x %union..0._39]* %nstor, i64 0, i64 %113, i32 0 ; <i32*> [#uses=2]
%115 = bitcast i32* %114 to float* ; <float*> [#uses=1]
store float %iftmp.122.0, float* %115, align 4
%116 = getelementptr inbounds [25 x i8*]* %v, i64 0, i64 %113 ; <i8**> [#uses=1]
%117 = bitcast i32* %114 to i8* ; <i8*> [#uses=1]
store i8* %117, i8** %116, align 8
br label %bb47
bb42: ; preds = %bb48
%118 = sext i32 %n.2 to i64 ; <i64> [#uses=1]
%119 = getelementptr inbounds [25 x i8*]* %v, i64 0, i64 %118 ; <i8**> [#uses=1]
store i8* %9, i8** %119, align 8
%120 = add nsw i32 %n.2, 1 ; <i32> [#uses=2]
%121 = sext i32 %120 to i64 ; <i64> [#uses=2]
%122 = getelementptr inbounds [25 x %union..0._39]* %nstor, i64 0, i64 %121, i32 0 ; <i32*> [#uses=2]
store i32 %80, i32* %122, align 4
%123 = getelementptr inbounds [25 x i8*]* %v, i64 0, i64 %121 ; <i8**> [#uses=1]
%124 = bitcast i32* %122 to i8* ; <i8*> [#uses=1]
store i8* %124, i8** %123, align 8
br label %bb47
bb43: ; preds = %bb48
%125 = icmp eq i8* %cargs.2, null ; <i1> [#uses=1]
br i1 %125, label %bb44, label %bb45
bb44: ; preds = %bb43
%126 = call i8* @_Z4concPPcib(i8** %4, i32 %80, i8 zeroext 1) ; <i8*> [#uses=1]
br label %bb45
bb45: ; preds = %bb44, %bb43
%cargs.0 = phi i8* [ %126, %bb44 ], [ %cargs.2, %bb43 ] ; <i8*> [#uses=2]
%127 = sext i32 %n.2 to i64 ; <i64> [#uses=1]
%128 = getelementptr inbounds [25 x i8*]* %v, i64 0, i64 %127 ; <i8**> [#uses=1]
store i8* %cargs.0, i8** %128, align 8
br label %bb47
bb46: ; preds = %bb48
call void (i8*, ...)* @_Z5fatalPKcz(i8* getelementptr inbounds ([35 x i8]* @.str126, i64 0, i64 0))
unreachable
bb47: ; preds = %bb45, %bb42, %bb41, %bb37, %bb33
%n.1 = phi i32 [ %n.2, %bb33 ], [ %n.2, %bb37 ], [ %n.2, %bb41 ], [ %120, %bb42 ], [ %n.2, %bb45 ] ; <i32> [#uses=1]
%wn.0 = phi i32 [ %81, %bb33 ], [ %88, %bb37 ], [ %99, %bb41 ], [ %wn.1, %bb42 ], [ %wn.1, %bb45 ] ; <i32> [#uses=1]
%cargs.1 = phi i8* [ %cargs.2, %bb33 ], [ %cargs.2, %bb37 ], [ %cargs.2, %bb41 ], [ %cargs.2, %bb42 ], [ %cargs.0, %bb45 ] ; <i8*> [#uses=1]
%129 = add nsw i32 %n.1, 1 ; <i32> [#uses=1]
%indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
br label %bb48
bb48: ; preds = %bb47, %bb28
%indvar = phi i64 [ %indvar.next, %bb47 ], [ 0, %bb28 ] ; <i64> [#uses=2]
%n.2 = phi i32 [ %129, %bb47 ], [ %n.0, %bb28 ] ; <i32> [#uses=11]
%wn.1 = phi i32 [ %wn.0, %bb47 ], [ 0, %bb28 ] ; <i32> [#uses=5]
%cargs.2 = phi i8* [ %cargs.1, %bb47 ], [ null, %bb28 ] ; <i8*> [#uses=8]
%a.0 = getelementptr i8* %79, i64 %indvar ; <i8*> [#uses=1]
%130 = load i8* %a.0, align 1 ; <i8> [#uses=1]
switch i8 %130, label %bb46 [
i8 0, label %bb49
i8 67, label %bb43
i8 86, label %bb42
i8 102, label %bb38
i8 105, label %bb34
i8 115, label %bb30
]
bb49: ; preds = %bb48
switch i32 %n.2, label %bb59 [
i32 0, label %bb50
i32 1, label %bb51
i32 2, label %bb52
i32 3, label %bb53
i32 4, label %bb54
i32 5, label %bb55
i32 6, label %bb56
i32 7, label %bb57
i32 8, label %bb58
]
bb50: ; preds = %bb49
%131 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 6, i32 0 ; <void ()**> [#uses=1]
%132 = load void ()** %131, align 8 ; <void ()*> [#uses=1]
call void %132()
br label %bb60
bb51: ; preds = %bb49
%133 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 6, i32 0 ; <void ()**> [#uses=1]
%134 = load void ()** %133, align 8 ; <void ()*> [#uses=1]
%135 = bitcast void ()* %134 to void (i8*)* ; <void (i8*)*> [#uses=1]
%136 = load i8** %8, align 8 ; <i8*> [#uses=1]
call void %135(i8* %136)
br label %bb60
bb52: ; preds = %bb49
%137 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 6, i32 0 ; <void ()**> [#uses=1]
%138 = load void ()** %137, align 8 ; <void ()*> [#uses=1]
%139 = bitcast void ()* %138 to void (i8*, i8*)* ; <void (i8*, i8*)*> [#uses=1]
%140 = load i8** %10, align 8 ; <i8*> [#uses=1]
%141 = load i8** %8, align 8 ; <i8*> [#uses=1]
call void %139(i8* %141, i8* %140)
br label %bb60
bb53: ; preds = %bb49
%142 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 6, i32 0 ; <void ()**> [#uses=1]
%143 = load void ()** %142, align 8 ; <void ()*> [#uses=1]
%144 = bitcast void ()* %143 to void (i8*, i8*, i8*)* ; <void (i8*, i8*, i8*)*> [#uses=1]
%145 = load i8** %11, align 8 ; <i8*> [#uses=1]
%146 = load i8** %10, align 8 ; <i8*> [#uses=1]
%147 = load i8** %8, align 8 ; <i8*> [#uses=1]
call void %144(i8* %147, i8* %146, i8* %145)
br label %bb60
bb54: ; preds = %bb49
%148 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 6, i32 0 ; <void ()**> [#uses=1]
%149 = load void ()** %148, align 8 ; <void ()*> [#uses=1]
%150 = bitcast void ()* %149 to void (i8*, i8*, i8*, i8*)* ; <void (i8*, i8*, i8*, i8*)*> [#uses=1]
%151 = load i8** %12, align 8 ; <i8*> [#uses=1]
%152 = load i8** %11, align 8 ; <i8*> [#uses=1]
%153 = load i8** %10, align 8 ; <i8*> [#uses=1]
%154 = load i8** %8, align 8 ; <i8*> [#uses=1]
call void %150(i8* %154, i8* %153, i8* %152, i8* %151)
br label %bb60
bb55: ; preds = %bb49
%155 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 6, i32 0 ; <void ()**> [#uses=1]
%156 = load void ()** %155, align 8 ; <void ()*> [#uses=1]
%157 = bitcast void ()* %156 to void (i8*, i8*, i8*, i8*, i8*)* ; <void (i8*, i8*, i8*, i8*, i8*)*> [#uses=1]
%158 = load i8** %13, align 8 ; <i8*> [#uses=1]
%159 = load i8** %12, align 8 ; <i8*> [#uses=1]
%160 = load i8** %11, align 8 ; <i8*> [#uses=1]
%161 = load i8** %10, align 8 ; <i8*> [#uses=1]
%162 = load i8** %8, align 8 ; <i8*> [#uses=1]
call void %157(i8* %162, i8* %161, i8* %160, i8* %159, i8* %158)
br label %bb60
bb56: ; preds = %bb49
%163 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 6, i32 0 ; <void ()**> [#uses=1]
%164 = load void ()** %163, align 8 ; <void ()*> [#uses=1]
%165 = bitcast void ()* %164 to void (i8*, i8*, i8*, i8*, i8*, i8*)* ; <void (i8*, i8*, i8*, i8*, i8*, i8*)*> [#uses=1]
%166 = load i8** %14, align 8 ; <i8*> [#uses=1]
%167 = load i8** %13, align 8 ; <i8*> [#uses=1]
%168 = load i8** %12, align 8 ; <i8*> [#uses=1]
%169 = load i8** %11, align 8 ; <i8*> [#uses=1]
%170 = load i8** %10, align 8 ; <i8*> [#uses=1]
%171 = load i8** %8, align 8 ; <i8*> [#uses=1]
call void %165(i8* %171, i8* %170, i8* %169, i8* %168, i8* %167, i8* %166)
br label %bb60
bb57: ; preds = %bb49
%172 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 6, i32 0 ; <void ()**> [#uses=1]
%173 = load void ()** %172, align 8 ; <void ()*> [#uses=1]
%174 = bitcast void ()* %173 to void (i8*, i8*, i8*, i8*, i8*, i8*, i8*)* ; <void (i8*, i8*, i8*, i8*, i8*, i8*, i8*)*> [#uses=1]
%175 = load i8** %15, align 8 ; <i8*> [#uses=1]
%176 = load i8** %14, align 8 ; <i8*> [#uses=1]
%177 = load i8** %13, align 8 ; <i8*> [#uses=1]
%178 = load i8** %12, align 8 ; <i8*> [#uses=1]
%179 = load i8** %11, align 8 ; <i8*> [#uses=1]
%180 = load i8** %10, align 8 ; <i8*> [#uses=1]
%181 = load i8** %8, align 8 ; <i8*> [#uses=1]
call void %174(i8* %181, i8* %180, i8* %179, i8* %178, i8* %177, i8* %176, i8* %175)
br label %bb60
bb58: ; preds = %bb49
%182 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 6, i32 0 ; <void ()**> [#uses=1]
%183 = load void ()** %182, align 8 ; <void ()*> [#uses=1]
%184 = bitcast void ()* %183 to void (i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*)* ; <void (i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*)*> [#uses=1]
%185 = load i8** %16, align 8 ; <i8*> [#uses=1]
%186 = load i8** %15, align 8 ; <i8*> [#uses=1]
%187 = load i8** %14, align 8 ; <i8*> [#uses=1]
%188 = load i8** %13, align 8 ; <i8*> [#uses=1]
%189 = load i8** %12, align 8 ; <i8*> [#uses=1]
%190 = load i8** %11, align 8 ; <i8*> [#uses=1]
%191 = load i8** %10, align 8 ; <i8*> [#uses=1]
%192 = load i8** %8, align 8 ; <i8*> [#uses=1]
call void %184(i8* %192, i8* %191, i8* %190, i8* %189, i8* %188, i8* %187, i8* %186, i8* %185)
br label %bb60
bb59: ; preds = %bb49
call void (i8*, ...)* @_Z5fatalPKcz(i8* getelementptr inbounds ([45 x i8]* @.str127, i64 0, i64 0))
unreachable
bb60: ; preds = %bb58, %bb57, %bb56, %bb55, %bb54, %bb53, %bb52, %bb51, %bb50
%193 = icmp eq i8* %cargs.2, null ; <i1> [#uses=1]
br i1 %193, label %bb63, label %bb62
bb62: ; preds = %bb60
call void @_ZdaPv(i8* %cargs.2) nounwind
br label %bb63
bb63: ; preds = %bb62, %bb60
%194 = load i8** @commandret, align 8 ; <i8*> [#uses=2]
%195 = icmp eq i8* %194, null ; <i1> [#uses=1]
%retval1.3 = select i1 %195, i8* %retval1.0, i8* %194 ; <i8*> [#uses=1]
store i8* null, i8** @commandret, align 8
br label %bb117
bb67: ; preds = %bb25
%196 = icmp slt i32 %numargs.0, 2 ; <i1> [#uses=1]
br i1 %196, label %bb68, label %bb75
bb68: ; preds = %bb67
%197 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 10 ; <i32*> [#uses=1]
%198 = load i32* %197, align 8 ; <i32> [#uses=1]
%199 = and i32 %198, 4 ; <i32> [#uses=1]
%200 = icmp eq i32 %199, 0 ; <i1> [#uses=2]
br i1 %200, label %bb71, label %bb69
bb69: ; preds = %bb68
%201 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 4, i32 0 ; <i32*> [#uses=1]
%202 = load i32* %201, align 4 ; <i32> [#uses=1]
%203 = icmp eq i32 %202, 16777215 ; <i1> [#uses=1]
br i1 %203, label %bb70, label %bb71
bb70: ; preds = %bb69
%204 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 9, i32 0 ; <i32**> [#uses=1]
%205 = load i32** %204, align 8 ; <i32*> [#uses=1]
%206 = load i32* %205, align 4 ; <i32> [#uses=4]
%207 = and i32 %206, 255 ; <i32> [#uses=1]
%208 = lshr i32 %206, 8 ; <i32> [#uses=1]
%209 = and i32 %208, 255 ; <i32> [#uses=1]
%210 = lshr i32 %206, 16 ; <i32> [#uses=1]
%211 = and i32 %210, 255 ; <i32> [#uses=1]
call void (i8*, ...)* @_Z7conoutfPKcz(i8* getelementptr inbounds ([25 x i8]* @.str128, i64 0, i64 0), i8* %29, i32 %206, i32 %211, i32 %209, i32 %207)
br label %bb117
bb71: ; preds = %bb69, %bb68
%212 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 9, i32 0 ; <i32**> [#uses=1]
%213 = load i32** %212, align 8 ; <i32*> [#uses=1]
%214 = load i32* %213, align 4 ; <i32> [#uses=1]
%iftmp.131.0 = select i1 %200, i8* getelementptr inbounds ([8 x i8]* @.str130, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8]* @.str129, i64 0, i64 0) ; <i8*> [#uses=1]
call void (i8*, ...)* @_Z7conoutfPKcz(i8* %iftmp.131.0, i8* %29, i32 %214)
br label %bb117
bb75: ; preds = %bb67
%215 = load i8** %4, align 8 ; <i8*> [#uses=1]
%216 = call i64 @strtol(i8* noalias nocapture %215, i8** noalias null, i32 0) nounwind readonly ; <i64> [#uses=1]
%217 = trunc i64 %216 to i32 ; <i32> [#uses=2]
%218 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 10 ; <i32*> [#uses=1]
%219 = load i32* %218, align 8 ; <i32> [#uses=1]
%.lobit = and i32 %219, 4 ; <i32> [#uses=1]
%220 = icmp sgt i32 %numargs.0, 2 ; <i1> [#uses=1]
%toBool76 = icmp ne i32 %.lobit, 0 ; <i1> [#uses=1]
%221 = and i1 %toBool76, %220 ; <i1> [#uses=1]
br i1 %221, label %bb79, label %bb81
bb79: ; preds = %bb75
%222 = shl i32 %217, 16 ; <i32> [#uses=1]
%223 = load i8** %5, align 8 ; <i8*> [#uses=1]
%224 = call i64 @strtol(i8* noalias nocapture %223, i8** noalias null, i32 0) nounwind readonly ; <i64> [#uses=1]
%225 = trunc i64 %224 to i32 ; <i32> [#uses=1]
%226 = shl i32 %225, 8 ; <i32> [#uses=1]
%227 = or i32 %226, %222 ; <i32> [#uses=2]
%228 = icmp sgt i32 %numargs.0, 3 ; <i1> [#uses=1]
br i1 %228, label %bb80, label %bb81
bb80: ; preds = %bb79
%229 = load i8** %6, align 8 ; <i8*> [#uses=1]
%230 = call i64 @strtol(i8* noalias nocapture %229, i8** noalias null, i32 0) nounwind readonly ; <i64> [#uses=1]
%231 = trunc i64 %230 to i32 ; <i32> [#uses=1]
%232 = or i32 %231, %227 ; <i32> [#uses=1]
br label %bb81
bb81: ; preds = %bb80, %bb79, %bb75
%val.0 = phi i32 [ %232, %bb80 ], [ %227, %bb79 ], [ %217, %bb75 ] ; <i32> [#uses=1]
call void @_Z13setvarcheckedP5identi(%struct.ident* %59, i32 %val.0)
br label %bb117
bb82: ; preds = %bb25
%233 = icmp slt i32 %numargs.0, 2 ; <i1> [#uses=1]
br i1 %233, label %bb83, label %bb84
bb83: ; preds = %bb82
%234 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 9, i32 0 ; <i32**> [#uses=1]
%235 = load i32** %234, align 8 ; <i32*> [#uses=1]
%236 = bitcast i32* %235 to float* ; <float*> [#uses=1]
%237 = load float* %236, align 4 ; <float> [#uses=3]
%238 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%239 = add nsw i32 %238, 1 ; <i32> [#uses=1]
%240 = srem i32 %239, 3 ; <i32> [#uses=2]
store i32 %240, i32* @_ZL6retidx, align 4
%241 = fpext float %237 to double ; <double> [#uses=1]
%242 = fptosi float %237 to i32 ; <i32> [#uses=1]
%243 = sitofp i32 %242 to float ; <float> [#uses=1]
%244 = fcmp oeq float %243, %237 ; <i1> [#uses=1]
%iftmp.145.0.i = select i1 %244, [5 x i8]* @.str, [5 x i8]* @.str1 ; <[5 x i8]*> [#uses=1]
%245 = getelementptr inbounds [5 x i8]* %iftmp.145.0.i, i64 0, i64 0 ; <i8*> [#uses=1]
%246 = sext i32 %240 to i64 ; <i64> [#uses=1]
%247 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %246, i64 0 ; <i8*> [#uses=1]
store i8* %247, i8** %7, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* %245, double %241) nounwind
%248 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%249 = sext i32 %248 to i64 ; <i64> [#uses=1]
%250 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %249, i64 0 ; <i8*> [#uses=1]
call void (i8*, ...)* @_Z7conoutfPKcz(i8* getelementptr inbounds ([8 x i8]* @.str131, i64 0, i64 0), i8* %29, i8* %250)
br label %bb117
bb84: ; preds = %bb82
%251 = load i8** %4, align 8 ; <i8*> [#uses=3]
%252 = call double @strtod(i8* noalias %251, i8** noalias %end.i141) nounwind ; <double> [#uses=2]
%253 = fcmp une double %252, 0.000000e+00 ; <i1> [#uses=1]
br i1 %253, label %bb4.i144, label %bb.i142
bb.i142: ; preds = %bb84
%254 = load i8** %end.i141, align 8 ; <i8*> [#uses=2]
%255 = icmp eq i8* %254, %251 ; <i1> [#uses=1]
br i1 %255, label %bb4.i144, label %bb1.i143
bb1.i143: ; preds = %bb.i142
%256 = load i8* %254, align 1 ; <i8> [#uses=1]
switch i8 %256, label %bb4.i144 [
i8 88, label %bb5.i145
i8 120, label %bb5.i145
]
bb4.i144: ; preds = %bb1.i143, %bb.i142, %bb84
%257 = fptrunc double %252 to float ; <float> [#uses=1]
br label %_ZL10parsefloatPKc.exit146
bb5.i145: ; preds = %bb1.i143, %bb1.i143
%258 = call i64 @strtol(i8* noalias nocapture %251, i8** noalias null, i32 0) nounwind readonly ; <i64> [#uses=1]
%259 = trunc i64 %258 to i32 ; <i32> [#uses=1]
%260 = sitofp i32 %259 to float ; <float> [#uses=1]
br label %_ZL10parsefloatPKc.exit146
_ZL10parsefloatPKc.exit146: ; preds = %bb5.i145, %bb4.i144
%261 = phi float [ %260, %bb5.i145 ], [ %257, %bb4.i144 ] ; <float> [#uses=1]
call void @_Z14setfvarcheckedP5identf(%struct.ident* %59, float %261)
br label %bb117
bb85: ; preds = %bb25
%262 = icmp slt i32 %numargs.0, 2 ; <i1> [#uses=1]
br i1 %262, label %bb86, label %bb90
bb86: ; preds = %bb85
%263 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 9, i32 0 ; <i32**> [#uses=1]
%264 = load i32** %263, align 8 ; <i32*> [#uses=1]
%265 = bitcast i32* %264 to i8** ; <i8**> [#uses=1]
%266 = load i8** %265, align 8 ; <i8*> [#uses=2]
%267 = call i8* @strchr(i8* %266, i32 34) nounwind readonly ; <i8*> [#uses=1]
%268 = icmp eq i8* %267, null ; <i1> [#uses=1]
%iftmp.132.0 = select i1 %268, [10 x i8]* @.str133, [10 x i8]* @.str132 ; <[10 x i8]*> [#uses=1]
%269 = getelementptr inbounds [10 x i8]* %iftmp.132.0, i64 0, i64 0 ; <i8*> [#uses=1]
call void (i8*, ...)* @_Z7conoutfPKcz(i8* %269, i8* %29, i8* %266)
br label %bb117
bb90: ; preds = %bb85
%270 = load i8** %4, align 8 ; <i8*> [#uses=1]
call void @_Z14setsvarcheckedP5identPKc(%struct.ident* %59, i8* %270)
br label %bb117
bb91: ; preds = %bb25
%271 = load i8** %3, align 8 ; <i8*> [#uses=2]
%272 = icmp eq i8* %271, null ; <i1> [#uses=1]
br i1 %272, label %bb93, label %bb92
bb92: ; preds = %bb91
call void @_ZdaPv(i8* %271) nounwind
br label %bb93
bb93: ; preds = %bb92, %bb91
%273 = load i8* bitcast (i64* @_ZGVZ10executeretPKcE6argids to i8*), align 8 ; <i8> [#uses=1]
%274 = icmp eq i8 %273, 0 ; <i1> [#uses=1]
br i1 %274, label %bb94, label %bb103.preheader
bb94: ; preds = %bb93
%275 = call i32 @__cxa_guard_acquire(i64* @_ZGVZ10executeretPKcE6argids) nounwind ; <i32> [#uses=1]
%276 = icmp eq i32 %275, 0 ; <i1> [#uses=1]
br i1 %276, label %bb103.preheader, label %bb96
bb96: ; preds = %bb94
store %struct.ident** null, %struct.ident*** getelementptr inbounds (%"struct.vector<ident*>"* @_ZZ10executeretPKcE6argids, i64 0, i32 0), align 16
store i32 0, i32* getelementptr inbounds (%"struct.vector<ident*>"* @_ZZ10executeretPKcE6argids, i64 0, i32 1), align 8
store i32 0, i32* getelementptr inbounds (%"struct.vector<ident*>"* @_ZZ10executeretPKcE6argids, i64 0, i32 2), align 4
call void @__cxa_guard_release(i64* @_ZGVZ10executeretPKcE6argids) nounwind
%277 = call i32 @__cxa_atexit(void (i8*)* @__tcf_1, i8* null, i8* bitcast (i8** @__dso_handle to i8*)) nounwind ; <i32> [#uses=0]
br label %bb103.preheader
bb103.preheader: ; preds = %bb96, %bb94, %bb93
%278 = icmp sgt i32 %numargs.0, 1 ; <i1> [#uses=2]
br i1 %278, label %bb.nph156, label %bb104
bb.nph156: ; preds = %bb103.preheader
%tmp188 = add i32 %numargs.0, -2 ; <i32> [#uses=1]
%tmp189 = zext i32 %tmp188 to i64 ; <i64> [#uses=1]
%tmp190 = add i64 %tmp189, 1 ; <i64> [#uses=1]
br label %bb99
bb99: ; preds = %_Z9pushidentR5identPc.exit, %bb.nph156
%indvar186 = phi i64 [ 0, %bb.nph156 ], [ %tmp192, %_Z9pushidentR5identPc.exit ] ; <i64> [#uses=2]
%tmp192 = add i64 %indvar186, 1 ; <i64> [#uses=4]
%i98.0155 = trunc i64 %tmp192 to i32 ; <i32> [#uses=2]
%scevgep194 = getelementptr [25 x i8*]* %w, i64 0, i64 %tmp192 ; <i8**> [#uses=1]
%279 = load i32* getelementptr inbounds (%"struct.vector<ident*>"* @_ZZ10executeretPKcE6argids, i64 0, i32 2), align 4 ; <i32> [#uses=1]
%280 = icmp slt i32 %279, %i98.0155 ; <i1> [#uses=1]
br i1 %280, label %bb101, label %bb102
bb101: ; preds = %bb99
store i8* %17, i8** %18, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %2, i8* getelementptr inbounds ([6 x i8]* @.str134, i64 0, i64 0), i32 %i98.0155)
%281 = call %struct.ident* @_Z8newidentPKc(i8* %17) ; <%struct.ident*> [#uses=1]
store %struct.ident* %281, %struct.ident** %1, align 8
%282 = call %struct.ident** @_ZN6vectorIP5identE3addERKS1_(%"struct.vector<ident*>"* @_ZZ10executeretPKcE6argids, %struct.ident** %1) ; <%struct.ident**> [#uses=0]
br label %bb102
bb102: ; preds = %bb101, %bb99
%283 = load i8** %scevgep194, align 8 ; <i8*> [#uses=1]
%284 = load %struct.ident*** getelementptr inbounds (%"struct.vector<ident*>"* @_ZZ10executeretPKcE6argids, i64 0, i32 0), align 16 ; <%struct.ident**> [#uses=1]
%scevgep195 = getelementptr %struct.ident** %284, i64 %indvar186 ; <%struct.ident**> [#uses=1]
%285 = load %struct.ident** %scevgep195, align 8 ; <%struct.ident*> [#uses=4]
%286 = getelementptr inbounds %struct.ident* %285, i64 0, i32 1 ; <i32*> [#uses=1]
%287 = load i32* %286, align 8 ; <i32> [#uses=1]
%288 = icmp eq i32 %287, 5 ; <i1> [#uses=1]
br i1 %288, label %bb.i127, label %_Z9pushidentR5identPc.exit
bb.i127: ; preds = %bb102
%289 = call i8* @_Znwm(i64 16) ; <i8*> [#uses=3]
%290 = getelementptr inbounds %struct.ident* %285, i64 0, i32 8, i32 0 ; <i8**> [#uses=1]
%291 = load i8** %290, align 8 ; <i8*> [#uses=1]
%292 = getelementptr inbounds %struct.ident* %285, i64 0, i32 7, i32 0 ; <i8**> [#uses=2]
%293 = load i8** %292, align 8 ; <i8*> [#uses=4]
%294 = icmp eq i8* %291, %293 ; <i1> [#uses=1]
br i1 %294, label %bb1.i128, label %bb3.i130
bb1.i128: ; preds = %bb.i127
%295 = call i64 @strlen(i8* %293) nounwind readonly ; <i64> [#uses=2]
%296 = add i64 %295, 1 ; <i64> [#uses=2]
%297 = call i8* @_Znam(i64 %296) ; <i8*> [#uses=3]
%298 = call i8* @strncpy(i8* noalias %297, i8* noalias %293, i64 %296) nounwind ; <i8*> [#uses=0]
%299 = getelementptr inbounds i8* %297, i64 %295 ; <i8*> [#uses=1]
store i8 0, i8* %299, align 1
br label %bb3.i130
bb3.i130: ; preds = %bb1.i128, %bb.i127
%iftmp.29.0.i = phi i8* [ %297, %bb1.i128 ], [ %293, %bb.i127 ] ; <i8*> [#uses=1]
%300 = bitcast i8* %289 to i8** ; <i8**> [#uses=1]
store i8* %iftmp.29.0.i, i8** %300, align 8
%301 = getelementptr inbounds %struct.ident* %285, i64 0, i32 6, i32 0 ; <void ()**> [#uses=2]
%302 = load void ()** %301, align 8 ; <void ()*> [#uses=1]
%303 = bitcast void ()* %302 to %struct.identstack* ; <%struct.identstack*> [#uses=1]
%304 = getelementptr inbounds i8* %289, i64 8 ; <i8*> [#uses=1]
%305 = bitcast i8* %304 to %struct.identstack** ; <%struct.identstack**> [#uses=1]
store %struct.identstack* %303, %struct.identstack** %305, align 8
%.c.i129 = bitcast i8* %289 to void ()* ; <void ()*> [#uses=1]
store void ()* %.c.i129, void ()** %301
store i8* %283, i8** %292, align 8
br label %_Z9pushidentR5identPc.exit
_Z9pushidentR5identPc.exit: ; preds = %bb3.i130, %bb102
%exitcond191 = icmp eq i64 %tmp192, %tmp190 ; <i1> [#uses=1]
br i1 %exitcond191, label %bb104, label %bb99
bb104: ; preds = %_Z9pushidentR5identPc.exit, %bb103.preheader
%306 = add nsw i32 %numargs.0, -1 ; <i32> [#uses=1]
store i32 %306, i32* @_numargs, align 4
%307 = load i8* @overrideidents, align 1 ; <i8> [#uses=1]
%308 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 5 ; <i32*> [#uses=1]
%309 = load i32* %308, align 8 ; <i32> [#uses=1]
%310 = icmp eq i32 %309, 2147483647 ; <i1> [#uses=1]
br i1 %310, label %bb106, label %bb105
bb105: ; preds = %bb104
store i8 1, i8* @overrideidents, align 1
br label %bb106
bb106: ; preds = %bb105, %bb104
%311 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 8, i32 0 ; <i8**> [#uses=4]
%312 = load i8** %311, align 8 ; <i8*> [#uses=2]
%313 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i, i64 0, i32 0, i32 1, i32 7, i32 0 ; <i8**> [#uses=2]
%314 = load i8** %313, align 8 ; <i8*> [#uses=2]
store i8* %314, i8** %311, align 8
%315 = call i8* @_Z10executeretPKc(i8* %314) ; <i8*> [#uses=2]
%316 = icmp eq i8* %315, null ; <i1> [#uses=1]
%retval1.4 = select i1 %316, i8* %retval1.0, i8* %315 ; <i8*> [#uses=2]
%317 = load i8** %311, align 8 ; <i8*> [#uses=4]
%318 = load i8** %313, align 8 ; <i8*> [#uses=1]
%319 = icmp eq i8* %317, %318 ; <i1> [#uses=1]
%320 = icmp eq i8* %317, %312 ; <i1> [#uses=1]
%or.cond = or i1 %319, %320 ; <i1> [#uses=1]
%321 = icmp eq i8* %317, null ; <i1> [#uses=1]
%or.cond219 = or i1 %or.cond, %321 ; <i1> [#uses=1]
br i1 %or.cond219, label %bb113, label %bb112
bb112: ; preds = %bb106
call void @_ZdaPv(i8* %317) nounwind
br label %bb113
bb113: ; preds = %bb112, %bb106
store i8* %312, i8** %311, align 8
store i8 %307, i8* @overrideidents, align 1
br i1 %278, label %bb.nph158, label %bb123.outer
bb.nph158: ; preds = %bb113
%tmp198 = add i32 %numargs.0, -2 ; <i32> [#uses=1]
%tmp199 = zext i32 %tmp198 to i64 ; <i64> [#uses=1]
%tmp200 = add i64 %tmp199, 1 ; <i64> [#uses=1]
br label %bb115
bb115: ; preds = %_Z8popidentR5ident.exit, %bb.nph158
%indvar196 = phi i64 [ 0, %bb.nph158 ], [ %indvar.next197, %_Z8popidentR5ident.exit ] ; <i64> [#uses=2]
%322 = load %struct.ident*** getelementptr inbounds (%"struct.vector<ident*>"* @_ZZ10executeretPKcE6argids, i64 0, i32 0), align 16 ; <%struct.ident**> [#uses=1]
%scevgep202 = getelementptr %struct.ident** %322, i64 %indvar196 ; <%struct.ident**> [#uses=1]
%323 = load %struct.ident** %scevgep202, align 8 ; <%struct.ident*> [#uses=4]
%324 = getelementptr inbounds %struct.ident* %323, i64 0, i32 1 ; <i32*> [#uses=1]
%325 = load i32* %324, align 8 ; <i32> [#uses=1]
%326 = icmp eq i32 %325, 5 ; <i1> [#uses=1]
br i1 %326, label %bb.i, label %_Z8popidentR5ident.exit
bb.i: ; preds = %bb115
%327 = getelementptr inbounds %struct.ident* %323, i64 0, i32 6, i32 0 ; <void ()**> [#uses=3]
%328 = load void ()** %327, align 8 ; <void ()*> [#uses=2]
%329 = icmp eq void ()* %328, null ; <i1> [#uses=1]
br i1 %329, label %_Z8popidentR5ident.exit, label %bb1.i
bb1.i: ; preds = %bb.i
%330 = getelementptr inbounds %struct.ident* %323, i64 0, i32 7, i32 0 ; <i8**> [#uses=2]
%331 = load i8** %330, align 8 ; <i8*> [#uses=3]
%332 = getelementptr inbounds %struct.ident* %323, i64 0, i32 8, i32 0 ; <i8**> [#uses=1]
%333 = load i8** %332, align 8 ; <i8*> [#uses=1]
%334 = icmp eq i8* %331, %333 ; <i1> [#uses=1]
%335 = icmp eq i8* %331, null ; <i1> [#uses=1]
%or.cond.i = or i1 %334, %335 ; <i1> [#uses=1]
br i1 %or.cond.i, label %bb4.i, label %bb3.i
bb3.i: ; preds = %bb1.i
call void @_ZdaPv(i8* %331) nounwind
%.pre.i = load void ()** %327, align 8 ; <void ()*> [#uses=1]
br label %bb4.i
bb4.i: ; preds = %bb3.i, %bb1.i
%336 = phi void ()* [ %328, %bb1.i ], [ %.pre.i, %bb3.i ] ; <void ()*> [#uses=3]
%337 = bitcast void ()* %336 to %struct.identstack* ; <%struct.identstack*> [#uses=1]
%338 = bitcast void ()* %336 to i8** ; <i8**> [#uses=1]
%339 = load i8** %338, align 8 ; <i8*> [#uses=1]
store i8* %339, i8** %330, align 8
%340 = getelementptr inbounds %struct.identstack* %337, i64 0, i32 1 ; <%struct.identstack**> [#uses=1]
%341 = load %struct.identstack** %340, align 8 ; <%struct.identstack*> [#uses=1]
%.c.i = bitcast %struct.identstack* %341 to void ()* ; <void ()*> [#uses=1]
store void ()* %.c.i, void ()** %327
%342 = bitcast void ()* %336 to i8* ; <i8*> [#uses=1]
call void @_ZdlPv(i8* %342) nounwind
br label %_Z8popidentR5ident.exit
_Z8popidentR5ident.exit: ; preds = %bb4.i, %bb.i, %bb115
%indvar.next197 = add i64 %indvar196, 1 ; <i64> [#uses=2]
%exitcond201 = icmp eq i64 %indvar.next197, %tmp200 ; <i1> [#uses=1]
br i1 %exitcond201, label %bb123.outer, label %bb115
bb117: ; preds = %bb90, %bb86, %_ZL10parsefloatPKc.exit146, %bb83, %bb81, %bb71, %bb70, %bb63, %bb25, %bb24, %bb23, %bb17, %bb12
%retval1.2 = phi i8* [ %retval1.0, %bb17 ], [ %70, %bb24 ], [ %retval1.0, %bb23 ], [ %retval1.0, %bb25 ], [ %retval1.3, %bb63 ], [ %retval1.0, %bb86 ], [ %retval1.0, %bb90 ], [ %retval1.0, %bb83 ], [ %retval1.0, %_ZL10parsefloatPKc.exit146 ], [ %retval1.0, %bb71 ], [ %retval1.0, %bb70 ], [ %retval1.0, %bb81 ], [ %retval1.0, %bb12 ] ; <i8*> [#uses=2]
%343 = icmp sgt i32 %numargs.0, 0 ; <i1> [#uses=1]
br i1 %343, label %bb.nph, label %bb123.outer
bb.nph: ; preds = %bb117
%tmp = zext i32 %numargs.0 to i64 ; <i64> [#uses=1]
br label %bb118
bb118: ; preds = %bb121, %bb.nph
%indvar177 = phi i64 [ 0, %bb.nph ], [ %indvar.next178, %bb121 ] ; <i64> [#uses=2]
%scevgep = getelementptr [25 x i8*]* %w, i64 0, i64 %indvar177 ; <i8**> [#uses=1]
%344 = load i8** %scevgep, align 8 ; <i8*> [#uses=2]
%345 = icmp eq i8* %344, null ; <i1> [#uses=1]
br i1 %345, label %bb121, label %bb120
bb120: ; preds = %bb118
call void @_ZdaPv(i8* %344) nounwind
br label %bb121
bb121: ; preds = %bb120, %bb118
%indvar.next178 = add i64 %indvar177, 1 ; <i64> [#uses=2]
%exitcond = icmp eq i64 %indvar.next178, %tmp ; <i1> [#uses=1]
br i1 %exitcond, label %bb123.outer, label %bb118
bb123.outer: ; preds = %bb121, %bb117, %_Z8popidentR5ident.exit, %bb113, %entry
%cont.0.ph = phi i8 [ 1, %entry ], [ %27, %bb117 ], [ %27, %bb121 ], [ %27, %_Z8popidentR5ident.exit ], [ %27, %bb113 ] ; <i8> [#uses=1]
%retval1.1.ph = phi i8* [ null, %entry ], [ %retval1.2, %bb121 ], [ %retval1.2, %bb117 ], [ %retval1.4, %_Z8popidentR5ident.exit ], [ %retval1.4, %bb113 ] ; <i8*> [#uses=4]
br label %bb123
bb123: ; preds = %bb123.outer, %bb7, %bb6
%cont.0 = phi i8 [ %cont.0.ph, %bb123.outer ], [ %27, %bb6 ], [ %27, %bb7 ] ; <i8> [#uses=1]
%toBool124 = icmp eq i8 %cont.0, 0 ; <i1> [#uses=1]
br i1 %toBool124, label %bb125, label %bb
bb125: ; preds = %bb123
ret i8* %retval1.1.ph
}
define i8* @_Z9parsewordRPKciRi(i8** %p, i32 %arg, i32* nocapture %infix) {
entry:
%.pre = load i8** %p, align 8 ; <i8*> [#uses=1]
br label %bb
bb: ; preds = %bb2, %entry
%0 = phi i8* [ %8, %bb2 ], [ %.pre, %entry ] ; <i8*> [#uses=5]
%1 = tail call i64 @strspn(i8* %0, i8* getelementptr inbounds ([4 x i8]* @.str152, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=4]
%2 = getelementptr inbounds i8* %0, i64 %1 ; <i8*> [#uses=10]
store i8* %2, i8** %p, align 8
%3 = load i8* %2, align 1 ; <i8> [#uses=2]
switch i8 %3, label %bb13 [
i8 47, label %bb1
i8 34, label %bb4
i8 40, label %bb9
i8 91, label %bb11
]
bb1: ; preds = %bb
%.sum35 = add i64 %1, 1 ; <i64> [#uses=1]
%4 = getelementptr inbounds i8* %0, i64 %.sum35 ; <i8*> [#uses=1]
%5 = load i8* %4, align 1 ; <i8> [#uses=1]
%6 = icmp eq i8 %5, 47 ; <i1> [#uses=1]
br i1 %6, label %bb2, label %bb3
bb2: ; preds = %bb1
%7 = tail call i64 @strcspn(i8* %2, i8* getelementptr inbounds ([3 x i8]* @.str150, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=1]
%.sum36 = add i64 %1, %7 ; <i64> [#uses=1]
%8 = getelementptr inbounds i8* %0, i64 %.sum36 ; <i8*> [#uses=2]
store i8* %8, i8** %p, align 8
br label %bb
bb3: ; preds = %bb1
switch i8 %3, label %bb13 [
i8 34, label %bb4
i8 40, label %bb9
i8 91, label %bb11
]
bb4: ; preds = %bb3, %bb
%.sum34 = add i64 %1, 1 ; <i64> [#uses=1]
%9 = getelementptr inbounds i8* %0, i64 %.sum34 ; <i8*> [#uses=3]
store i8* %9, i8** %p, align 8
br label %bb5.i
bb2.i: ; preds = %bb5.i
%10 = getelementptr inbounds i8* %p_addr.1.i, i64 1 ; <i8*> [#uses=3]
%11 = load i8* %10, align 1 ; <i8> [#uses=1]
%12 = icmp eq i8 %11, 0 ; <i1> [#uses=1]
br i1 %12, label %_Z11parsestringPKc.exit, label %bb4.i
bb4.i: ; preds = %bb5.i, %bb2.i
%p_addr.0.i = phi i8* [ %10, %bb2.i ], [ %p_addr.1.i, %bb5.i ] ; <i8*> [#uses=1]
%13 = getelementptr inbounds i8* %p_addr.0.i, i64 1 ; <i8*> [#uses=1]
br label %bb5.i
bb5.i: ; preds = %bb4.i, %bb4
%p_addr.1.i = phi i8* [ %9, %bb4 ], [ %13, %bb4.i ] ; <i8*> [#uses=7]
%14 = load i8* %p_addr.1.i, align 1 ; <i8> [#uses=1]
switch i8 %14, label %bb4.i [
i8 0, label %_Z11parsestringPKc.exit
i8 10, label %_Z11parsestringPKc.exit
i8 13, label %_Z11parsestringPKc.exit
i8 34, label %_Z11parsestringPKc.exit
i8 94, label %bb2.i
]
_Z11parsestringPKc.exit: ; preds = %bb5.i, %bb5.i, %bb5.i, %bb5.i, %bb2.i
%15 = phi i8* [ %10, %bb2.i ], [ %p_addr.1.i, %bb5.i ], [ %p_addr.1.i, %bb5.i ], [ %p_addr.1.i, %bb5.i ], [ %p_addr.1.i, %bb5.i ] ; <i8*> [#uses=6]
%16 = ptrtoint i8* %15 to i64 ; <i64> [#uses=1]
%17 = ptrtoint i8* %9 to i64 ; <i64> [#uses=1]
%18 = add i64 %16, 1 ; <i64> [#uses=1]
%19 = sub i64 %18, %17 ; <i64> [#uses=1]
%20 = tail call i8* @_Znam(i64 %19) ; <i8*> [#uses=4]
%21 = load i8** %p, align 8 ; <i8*> [#uses=1]
br label %bb8.i
bb.i: ; preds = %bb8.i
%22 = load i8* %src_addr.0.i, align 1 ; <i8> [#uses=2]
%23 = getelementptr inbounds i8* %src_addr.0.i, i64 1 ; <i8*> [#uses=3]
%24 = icmp eq i8 %22, 94 ; <i1> [#uses=1]
br i1 %24, label %bb1.i, label %bb7.i
bb1.i: ; preds = %bb.i
%25 = icmp ult i8* %23, %15 ; <i1> [#uses=1]
br i1 %25, label %bb2.i29, label %_Z12escapestringPcPKcS1_.exit
bb2.i29: ; preds = %bb1.i
%26 = load i8* %23, align 1 ; <i8> [#uses=2]
%27 = sext i8 %26 to i32 ; <i32> [#uses=1]
%28 = getelementptr inbounds i8* %src_addr.0.i, i64 2 ; <i8*> [#uses=4]
switch i32 %27, label %bb6.i [
i32 102, label %bb5.i31
i32 110, label %bb3.i
i32 116, label %bb4.i30
]
bb3.i: ; preds = %bb2.i29
store i8 10, i8* %dst_addr.0.i, align 1
br label %bb8.backedge.i
bb8.backedge.i: ; preds = %bb7.i, %bb6.i, %bb5.i31, %bb4.i30, %bb3.i
%src_addr.0.be.i = phi i8* [ %28, %bb6.i ], [ %28, %bb4.i30 ], [ %28, %bb3.i ], [ %28, %bb5.i31 ], [ %23, %bb7.i ] ; <i8*> [#uses=1]
%indvar.next.i = add i64 %29, 1 ; <i64> [#uses=1]
br label %bb8.i
bb4.i30: ; preds = %bb2.i29
store i8 9, i8* %dst_addr.0.i, align 1
br label %bb8.backedge.i
bb5.i31: ; preds = %bb2.i29
store i8 12, i8* %dst_addr.0.i, align 1
br label %bb8.backedge.i
bb6.i: ; preds = %bb2.i29
store i8 %26, i8* %dst_addr.0.i, align 1
br label %bb8.backedge.i
bb7.i: ; preds = %bb.i
store i8 %22, i8* %dst_addr.0.i, align 1
br label %bb8.backedge.i
bb8.i: ; preds = %bb8.backedge.i, %_Z11parsestringPKc.exit
%29 = phi i64 [ %indvar.next.i, %bb8.backedge.i ], [ 0, %_Z11parsestringPKc.exit ] ; <i64> [#uses=3]
%src_addr.0.i = phi i8* [ %src_addr.0.be.i, %bb8.backedge.i ], [ %21, %_Z11parsestringPKc.exit ] ; <i8*> [#uses=4]
%dst_addr.0.i = getelementptr i8* %20, i64 %29 ; <i8*> [#uses=5]
%30 = icmp ult i8* %src_addr.0.i, %15 ; <i1> [#uses=1]
br i1 %30, label %bb.i, label %_Z12escapestringPcPKcS1_.exit
_Z12escapestringPcPKcS1_.exit: ; preds = %bb8.i, %bb1.i
%sext = shl i64 %29, 32 ; <i64> [#uses=1]
%31 = ashr i64 %sext, 32 ; <i64> [#uses=1]
%32 = getelementptr inbounds i8* %20, i64 %31 ; <i8*> [#uses=1]
store i8 0, i8* %32, align 1
store i8* %15, i8** %p, align 8
%33 = load i8* %15, align 1 ; <i8> [#uses=1]
%34 = icmp eq i8 %33, 34 ; <i1> [#uses=1]
br i1 %34, label %bb6, label %bb27
bb6: ; preds = %_Z12escapestringPcPKcS1_.exit
%35 = getelementptr inbounds i8* %15, i64 1 ; <i8*> [#uses=1]
store i8* %35, i8** %p, align 8
ret i8* %20
bb9: ; preds = %bb3, %bb
%36 = tail call i8* @_Z8parseexpRPKci(i8** %p, i32 41) ; <i8*> [#uses=1]
ret i8* %36
bb11: ; preds = %bb3, %bb
%37 = tail call i8* @_Z8parseexpRPKci(i8** %p, i32 93) ; <i8*> [#uses=1]
ret i8* %37
bb13: ; preds = %bb17, %bb3, %bb
%38 = phi i8* [ %45, %bb17 ], [ %2, %bb3 ], [ %2, %bb ] ; <i8*> [#uses=4]
%39 = tail call i64 @strcspn(i8* %38, i8* getelementptr inbounds ([8 x i8]* @.str153, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=3]
%40 = getelementptr inbounds i8* %38, i64 %39 ; <i8*> [#uses=4]
store i8* %40, i8** %p, align 8
%41 = load i8* %40, align 1 ; <i8> [#uses=1]
%42 = icmp eq i8 %41, 47 ; <i1> [#uses=1]
br i1 %42, label %bb14, label %bb18
bb14: ; preds = %bb13
%.sum = add i64 %39, 1 ; <i64> [#uses=1]
%43 = getelementptr inbounds i8* %38, i64 %.sum ; <i8*> [#uses=3]
%44 = load i8* %43, align 1 ; <i8> [#uses=1]
switch i8 %44, label %bb17 [
i8 47, label %bb18
i8 0, label %bb16
]
bb16: ; preds = %bb14
store i8* %43, i8** %p, align 8
br label %bb18
bb17: ; preds = %bb14
%.sum33 = add i64 %39, 2 ; <i64> [#uses=1]
%45 = getelementptr inbounds i8* %38, i64 %.sum33 ; <i8*> [#uses=2]
store i8* %45, i8** %p, align 8
br label %bb13
bb18: ; preds = %bb16, %bb14, %bb13
%46 = phi i8* [ %43, %bb16 ], [ %40, %bb14 ], [ %40, %bb13 ] ; <i8*> [#uses=5]
%47 = icmp eq i8* %46, %2 ; <i1> [#uses=1]
br i1 %47, label %bb27, label %bb20
bb20: ; preds = %bb18
%48 = icmp eq i32 %arg, 1 ; <i1> [#uses=1]
br i1 %48, label %bb21, label %bb24
bb21: ; preds = %bb20
%49 = ptrtoint i8* %46 to i64 ; <i64> [#uses=1]
%50 = ptrtoint i8* %2 to i64 ; <i64> [#uses=1]
%51 = sub nsw i64 %49, %50 ; <i64> [#uses=1]
%52 = icmp eq i64 %51, 1 ; <i1> [#uses=1]
br i1 %52, label %bb22, label %bb24
bb22: ; preds = %bb21
%53 = load i8* %2, align 1 ; <i8> [#uses=2]
%cond = icmp eq i8 %53, 61 ; <i1> [#uses=1]
br i1 %cond, label %bb23, label %bb24
bb23: ; preds = %bb22
%54 = sext i8 %53 to i32 ; <i32> [#uses=1]
store i32 %54, i32* %infix, align 4
%.pre32 = load i8** %p, align 8 ; <i8*> [#uses=1]
br label %bb24
bb24: ; preds = %bb23, %bb22, %bb21, %bb20
%55 = phi i8* [ %46, %bb22 ], [ %.pre32, %bb23 ], [ %46, %bb21 ], [ %46, %bb20 ] ; <i8*> [#uses=1]
%56 = ptrtoint i8* %55 to i64 ; <i64> [#uses=1]
%57 = ptrtoint i8* %2 to i64 ; <i64> [#uses=1]
%58 = sub nsw i64 %56, %57 ; <i64> [#uses=2]
%59 = add i64 %58, 1 ; <i64> [#uses=2]
%60 = tail call i8* @_Znam(i64 %59) ; <i8*> [#uses=5]
%61 = tail call i8* @strncpy(i8* noalias %60, i8* noalias %2, i64 %59) nounwind ; <i8*> [#uses=0]
%62 = getelementptr inbounds i8* %60, i64 %58 ; <i8*> [#uses=1]
store i8 0, i8* %62, align 1
%63 = load i8* %60, align 1 ; <i8> [#uses=1]
%64 = icmp eq i8 %63, 36 ; <i1> [#uses=1]
br i1 %64, label %bb25, label %bb27
bb25: ; preds = %bb24
%65 = tail call i8* @_Z6lookupPc(i8* %60) ; <i8*> [#uses=1]
ret i8* %65
bb27: ; preds = %bb24, %bb18, %_Z12escapestringPcPKcS1_.exit
%.0 = phi i8* [ %20, %_Z12escapestringPcPKcS1_.exit ], [ null, %bb18 ], [ %60, %bb24 ] ; <i8*> [#uses=1]
ret i8* %.0
}
declare i8* @strchr(i8*, i32) nounwind readonly
declare i32 @__cxa_guard_acquire(i64*) nounwind
declare void @__cxa_guard_release(i64*) nounwind
define i32 @_Z7executePKc(i8* %p) {
entry:
%0 = tail call i8* @_Z10executeretPKc(i8* %p) ; <i8*> [#uses=3]
%1 = icmp eq i8* %0, null ; <i1> [#uses=1]
br i1 %1, label %bb2, label %bb
bb: ; preds = %entry
%2 = tail call i64 @strtol(i8* noalias nocapture %0, i8** noalias null, i32 0) nounwind readonly ; <i64> [#uses=1]
%3 = trunc i64 %2 to i32 ; <i32> [#uses=1]
tail call void @_ZdaPv(i8* %0) nounwind
ret i32 %3
bb2: ; preds = %entry
ret i32 0
}
define i32 @main() {
entry:
%0 = tail call i32 @puts(i8* getelementptr inbounds ([2 x i8]* @.str50, i64 0, i64 0)) ; <i32> [#uses=0]
%1 = tail call i8* @_Z10executeretPKc(i8* getelementptr inbounds ([10 x i8]* @.str135, i64 0, i64 0)) ; <i8*> [#uses=2]
%2 = icmp eq i8* %1, null ; <i1> [#uses=1]
br i1 %2, label %_Z7executePKc.exit, label %bb.i
bb.i: ; preds = %entry
tail call void @_ZdaPv(i8* %1) nounwind
br label %_Z7executePKc.exit
_Z7executePKc.exit: ; preds = %bb.i, %entry
%3 = tail call i8* @_Z10executeretPKc(i8* getelementptr inbounds ([23 x i8]* @.str136, i64 0, i64 0)) ; <i8*> [#uses=2]
%4 = icmp eq i8* %3, null ; <i1> [#uses=1]
br i1 %4, label %_Z7executePKc.exit36, label %bb.i34
bb.i34: ; preds = %_Z7executePKc.exit
tail call void @_ZdaPv(i8* %3) nounwind
br label %_Z7executePKc.exit36
_Z7executePKc.exit36: ; preds = %bb.i34, %_Z7executePKc.exit
%5 = tail call i8* @_Z10executeretPKc(i8* getelementptr inbounds ([62 x i8]* @.str137, i64 0, i64 0)) ; <i8*> [#uses=2]
%6 = icmp eq i8* %5, null ; <i1> [#uses=1]
br i1 %6, label %_Z7executePKc.exit33, label %bb.i31
bb.i31: ; preds = %_Z7executePKc.exit36
tail call void @_ZdaPv(i8* %5) nounwind
br label %_Z7executePKc.exit33
_Z7executePKc.exit33: ; preds = %bb.i31, %_Z7executePKc.exit36
%7 = tail call i8* @_Z10executeretPKc(i8* getelementptr inbounds ([52 x i8]* @.str138, i64 0, i64 0)) ; <i8*> [#uses=2]
%8 = icmp eq i8* %7, null ; <i1> [#uses=1]
br i1 %8, label %_Z7executePKc.exit30, label %bb.i28
bb.i28: ; preds = %_Z7executePKc.exit33
tail call void @_ZdaPv(i8* %7) nounwind
br label %_Z7executePKc.exit30
_Z7executePKc.exit30: ; preds = %bb.i28, %_Z7executePKc.exit33
%9 = tail call i8* @_Z10executeretPKc(i8* getelementptr inbounds ([21 x i8]* @.str139, i64 0, i64 0)) ; <i8*> [#uses=2]
%10 = icmp eq i8* %9, null ; <i1> [#uses=1]
br i1 %10, label %_Z7executePKc.exit27, label %bb.i25
bb.i25: ; preds = %_Z7executePKc.exit30
tail call void @_ZdaPv(i8* %9) nounwind
br label %_Z7executePKc.exit27
_Z7executePKc.exit27: ; preds = %bb.i25, %_Z7executePKc.exit30
%11 = load %"struct.hashtable<const char*,ident>"** @idents, align 8 ; <%"struct.hashtable<const char*,ident>"*> [#uses=2]
%12 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %11, i64 0, i32 0, i32 0 ; <i32*> [#uses=1]
%13 = load i32* %12, align 8 ; <i32> [#uses=1]
%14 = add nsw i32 %13, -1 ; <i32> [#uses=1]
%15 = and i32 %14, -1395866892 ; <i32> [#uses=1]
%16 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %11, i64 0, i32 0, i32 2 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"***> [#uses=1]
%17 = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** %16, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%18 = zext i32 %15 to i64 ; <i64> [#uses=1]
%19 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %17, i64 %18 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i.i
bb.i.i: ; preds = %bb3.i.i
%.idx.i.i = getelementptr %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i.i, i64 0, i32 0, i32 0 ; <i8**> [#uses=1]
%.idx.val.i.i = load i8** %.idx.i.i ; <i8*> [#uses=1]
%20 = tail call i32 @strcmp(i8* getelementptr inbounds ([8 x i8]* @.str123, i64 0, i64 0), i8* %.idx.val.i.i) nounwind readonly ; <i32> [#uses=1]
%21 = icmp eq i32 %20, 0 ; <i1> [#uses=1]
br i1 %21, label %_ZN9hashtableIPKc5identE6accessERKS1_.exit.i, label %bb2.i.i
bb2.i.i: ; preds = %bb.i.i
%22 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i.i, i64 0, i32 1 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i.i
bb3.i.i: ; preds = %bb2.i.i, %_Z7executePKc.exit27
%c.0.in.i.i = phi %"struct.hashset<hashtableentry<const char*, ident> >::chain"** [ %19, %_Z7executePKc.exit27 ], [ %22, %bb2.i.i ] ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%c.0.i.i = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %c.0.in.i.i, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"*> [#uses=6]
%23 = icmp eq %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i.i, null ; <i1> [#uses=1]
br i1 %23, label %_Z6getvarPKc.exit, label %bb.i.i
_ZN9hashtableIPKc5identE6accessERKS1_.exit.i: ; preds = %bb.i.i
%24 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i.i, i64 0, i32 0, i32 1 ; <%struct.ident*> [#uses=1]
%25 = icmp eq %struct.ident* %24, null ; <i1> [#uses=1]
br i1 %25, label %_Z6getvarPKc.exit, label %bb.i23
bb.i23: ; preds = %_ZN9hashtableIPKc5identE6accessERKS1_.exit.i
%26 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i.i, i64 0, i32 0, i32 1, i32 1 ; <i32*> [#uses=1]
%27 = load i32* %26, align 8 ; <i32> [#uses=1]
%28 = icmp eq i32 %27, 0 ; <i1> [#uses=1]
br i1 %28, label %bb2.i24, label %_Z6getvarPKc.exit
bb2.i24: ; preds = %bb.i23
%29 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i.i, i64 0, i32 0, i32 1, i32 9, i32 0 ; <i32**> [#uses=1]
%30 = load i32** %29, align 8 ; <i32*> [#uses=1]
%31 = load i32* %30, align 4 ; <i32> [#uses=1]
br label %_Z6getvarPKc.exit
_Z6getvarPKc.exit: ; preds = %bb2.i24, %bb.i23, %_ZN9hashtableIPKc5identE6accessERKS1_.exit.i, %bb3.i.i
%32 = phi i32 [ %31, %bb2.i24 ], [ 0, %bb.i23 ], [ 0, %_ZN9hashtableIPKc5identE6accessERKS1_.exit.i ], [ 0, %bb3.i.i ] ; <i32> [#uses=1]
%33 = tail call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([4 x i8]* @.str140, i64 0, i64 0), i32 %32) ; <i32> [#uses=0]
%34 = tail call i8* @_Z10executeretPKc(i8* getelementptr inbounds ([6 x i8]* @.str141, i64 0, i64 0)) ; <i8*> [#uses=2]
%35 = icmp eq i8* %34, null ; <i1> [#uses=1]
br i1 %35, label %_Z7executePKc.exit22, label %bb.i20
bb.i20: ; preds = %_Z6getvarPKc.exit
tail call void @_ZdaPv(i8* %34) nounwind
br label %_Z7executePKc.exit22
_Z7executePKc.exit22: ; preds = %bb.i20, %_Z6getvarPKc.exit
%36 = tail call i8* @_Z10executeretPKc(i8* getelementptr inbounds ([9 x i8]* @.str142, i64 0, i64 0)) ; <i8*> [#uses=2]
%37 = icmp eq i8* %36, null ; <i1> [#uses=1]
br i1 %37, label %_Z7executePKc.exit19, label %bb.i17
bb.i17: ; preds = %_Z7executePKc.exit22
tail call void @_ZdaPv(i8* %36) nounwind
br label %_Z7executePKc.exit19
_Z7executePKc.exit19: ; preds = %bb.i17, %_Z7executePKc.exit22
%38 = tail call i8* @_Z10executeretPKc(i8* getelementptr inbounds ([10 x i8]* @.str143, i64 0, i64 0)) ; <i8*> [#uses=2]
%39 = icmp eq i8* %38, null ; <i1> [#uses=1]
br i1 %39, label %_Z7executePKc.exit16, label %bb.i14
bb.i14: ; preds = %_Z7executePKc.exit19
tail call void @_ZdaPv(i8* %38) nounwind
br label %_Z7executePKc.exit16
_Z7executePKc.exit16: ; preds = %bb.i14, %_Z7executePKc.exit19
%40 = tail call i8* @_Z10executeretPKc(i8* getelementptr inbounds ([6 x i8]* @.str144, i64 0, i64 0)) ; <i8*> [#uses=2]
%41 = icmp eq i8* %40, null ; <i1> [#uses=1]
br i1 %41, label %_Z7executePKc.exit13, label %bb.i11
bb.i11: ; preds = %_Z7executePKc.exit16
tail call void @_ZdaPv(i8* %40) nounwind
br label %_Z7executePKc.exit13
_Z7executePKc.exit13: ; preds = %bb.i11, %_Z7executePKc.exit16
%42 = tail call i8* @_Z10executeretPKc(i8* getelementptr inbounds ([8 x i8]* @.str145, i64 0, i64 0)) ; <i8*> [#uses=2]
%43 = icmp eq i8* %42, null ; <i1> [#uses=1]
br i1 %43, label %_Z7executePKc.exit10, label %bb.i8
bb.i8: ; preds = %_Z7executePKc.exit13
tail call void @_ZdaPv(i8* %42) nounwind
br label %_Z7executePKc.exit10
_Z7executePKc.exit10: ; preds = %bb.i8, %_Z7executePKc.exit13
%44 = tail call i8* @_Z10executeretPKc(i8* getelementptr inbounds ([30 x i8]* @.str146, i64 0, i64 0)) ; <i8*> [#uses=2]
%45 = icmp eq i8* %44, null ; <i1> [#uses=1]
br i1 %45, label %_Z7executePKc.exit7, label %bb.i5
bb.i5: ; preds = %_Z7executePKc.exit10
tail call void @_ZdaPv(i8* %44) nounwind
br label %_Z7executePKc.exit7
_Z7executePKc.exit7: ; preds = %bb.i5, %_Z7executePKc.exit10
%46 = tail call i8* @_Z10executeretPKc(i8* getelementptr inbounds ([15 x i8]* @.str147, i64 0, i64 0)) ; <i8*> [#uses=2]
%47 = icmp eq i8* %46, null ; <i1> [#uses=1]
br i1 %47, label %_Z7executePKc.exit4, label %bb.i2
bb.i2: ; preds = %_Z7executePKc.exit7
tail call void @_ZdaPv(i8* %46) nounwind
br label %_Z7executePKc.exit4
_Z7executePKc.exit4: ; preds = %bb.i2, %_Z7executePKc.exit7
%48 = tail call i32 @puts(i8* getelementptr inbounds ([2 x i8]* @.str50, i64 0, i64 0)) ; <i32> [#uses=0]
ret i32 0
}
declare i32 @printf(i8* noalias nocapture, ...) nounwind
define void @_Z8looplistPKcS0_S0_b(i8* %var, i8* %list, i8* %body, i8 zeroext %search) {
entry:
%0 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%1 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%2 = alloca %struct.stringformatter, align 8 ; <%struct.stringformatter*> [#uses=2]
%3 = call %struct.ident* @_Z8newidentPKc(i8* %var) ; <%struct.ident*> [#uses=5]
%4 = getelementptr inbounds %struct.ident* %3, i64 0, i32 1 ; <i32*> [#uses=3]
%5 = load i32* %4, align 8 ; <i32> [#uses=1]
%6 = icmp eq i32 %5, 5 ; <i1> [#uses=1]
br i1 %6, label %bb3.preheader, label %bb
bb3.preheader: ; preds = %entry
%7 = getelementptr inbounds %struct.ident* %3, i64 0, i32 8, i32 0 ; <i8**> [#uses=2]
%8 = getelementptr inbounds %struct.ident* %3, i64 0, i32 7, i32 0 ; <i8**> [#uses=4]
%9 = getelementptr inbounds %struct.ident* %3, i64 0, i32 6, i32 0 ; <void ()**> [#uses=5]
%toBool19not = icmp eq i8 %search, 0 ; <i1> [#uses=2]
%10 = getelementptr inbounds %struct.ident* %3, i64 0, i32 2 ; <i8**> [#uses=1]
br label %bb3
bb: ; preds = %entry
%toBool = icmp eq i8 %search, 0 ; <i1> [#uses=1]
br i1 %toBool, label %_Z8popidentR5ident.exit, label %bb1
bb1: ; preds = %bb
%11 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%12 = add nsw i32 %11, 1 ; <i32> [#uses=1]
%13 = srem i32 %12, 3 ; <i32> [#uses=2]
store i32 %13, i32* @_ZL6retidx, align 4
%14 = sext i32 %13 to i64 ; <i64> [#uses=1]
%15 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %14, i64 0 ; <i8*> [#uses=1]
%16 = getelementptr inbounds %struct.stringformatter* %2, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %15, i8** %16, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %2, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 -1) nounwind
%17 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%18 = sext i32 %17 to i64 ; <i64> [#uses=1]
%19 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %18, i64 0 ; <i8*> [#uses=2]
%20 = call i64 @strlen(i8* %19) nounwind readonly ; <i64> [#uses=2]
%21 = add i64 %20, 1 ; <i64> [#uses=2]
%22 = call i8* @_Znam(i64 %21) ; <i8*> [#uses=3]
%23 = call i8* @strncpy(i8* noalias %22, i8* noalias %19, i64 %21) nounwind ; <i8*> [#uses=0]
%24 = getelementptr inbounds i8* %22, i64 %20 ; <i8*> [#uses=1]
store i8 0, i8* %24, align 1
store i8* %22, i8** @commandret, align 8
ret void
bb3: ; preds = %_Z7executePKc.exit, %bb17, %bb3.preheader
%25 = phi i32 [ 0, %bb3.preheader ], [ %tmp, %_Z7executePKc.exit ], [ %tmp, %bb17 ] ; <i32> [#uses=4]
%s.0 = phi i8* [ %list, %bb3.preheader ], [ %s.1, %_Z7executePKc.exit ], [ %s.1, %bb17 ] ; <i8*> [#uses=7]
%tmp = add i32 %25, 1 ; <i32> [#uses=4]
%26 = call i64 @strspn(i8* %s.0, i8* getelementptr inbounds ([4 x i8]* @.str12, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=4]
%27 = getelementptr inbounds i8* %s.0, i64 %26 ; <i8*> [#uses=3]
%28 = load i8* %27, align 1 ; <i8> [#uses=2]
%29 = icmp eq i8 %28, 0 ; <i1> [#uses=1]
br i1 %29, label %bb4, label %bb7
bb4: ; preds = %bb3
br i1 %toBool19not, label %bb28, label %bb6
bb6: ; preds = %bb4
%30 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%31 = add nsw i32 %30, 1 ; <i32> [#uses=1]
%32 = srem i32 %31, 3 ; <i32> [#uses=2]
store i32 %32, i32* @_ZL6retidx, align 4
%33 = sext i32 %32 to i64 ; <i64> [#uses=1]
%34 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %33, i64 0 ; <i8*> [#uses=1]
%35 = getelementptr inbounds %struct.stringformatter* %0, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %34, i8** %35, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %0, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 -1) nounwind
%36 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%37 = sext i32 %36 to i64 ; <i64> [#uses=1]
%38 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %37, i64 0 ; <i8*> [#uses=2]
%39 = call i64 @strlen(i8* %38) nounwind readonly ; <i64> [#uses=2]
%40 = add i64 %39, 1 ; <i64> [#uses=2]
%41 = call i8* @_Znam(i64 %40) ; <i8*> [#uses=3]
%42 = call i8* @strncpy(i8* noalias %41, i8* noalias %38, i64 %40) nounwind ; <i8*> [#uses=0]
%43 = getelementptr inbounds i8* %41, i64 %39 ; <i8*> [#uses=1]
store i8 0, i8* %43, align 1
store i8* %41, i8** @commandret, align 8
br label %bb28
bb7: ; preds = %bb3
%44 = icmp eq i8 %28, 34 ; <i1> [#uses=2]
br i1 %44, label %bb8, label %bb9
bb8: ; preds = %bb7
%.sum32 = add i64 %26, 1 ; <i64> [#uses=2]
%45 = getelementptr inbounds i8* %s.0, i64 %.sum32 ; <i8*> [#uses=1]
%46 = call i64 @strcspn(i8* %45, i8* getelementptr inbounds ([4 x i8]* @.str13, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=1]
%.sum33 = add i64 %46, %.sum32 ; <i64> [#uses=2]
%47 = getelementptr inbounds i8* %s.0, i64 %.sum33 ; <i8*> [#uses=1]
%48 = load i8* %47, align 1 ; <i8> [#uses=1]
%49 = icmp eq i8 %48, 34 ; <i1> [#uses=1]
%50 = zext i1 %49 to i64 ; <i64> [#uses=1]
%.sum34 = add i64 %50, %.sum33 ; <i64> [#uses=1]
br label %bb10
bb9: ; preds = %bb7
%51 = call i64 @strcspn(i8* %27, i8* getelementptr inbounds ([5 x i8]* @.str14, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=1]
%.sum = add i64 %51, %26 ; <i64> [#uses=1]
br label %bb10
bb10: ; preds = %bb9, %bb8
%.sum34.pn = phi i64 [ %.sum34, %bb8 ], [ %.sum, %bb9 ] ; <i64> [#uses=2]
%s.1 = getelementptr inbounds i8* %s.0, i64 %.sum34.pn ; <i8*> [#uses=4]
br i1 %44, label %bb11, label %bb13
bb11: ; preds = %bb10
%.sum31 = add i64 %26, 1 ; <i64> [#uses=1]
%52 = getelementptr inbounds i8* %s.0, i64 %.sum31 ; <i8*> [#uses=2]
%s.1.sum35 = add i64 %.sum34.pn, -1 ; <i64> [#uses=1]
%53 = getelementptr inbounds i8* %s.0, i64 %s.1.sum35 ; <i8*> [#uses=2]
%54 = load i8* %53, align 1 ; <i8> [#uses=1]
%55 = icmp eq i8 %54, 34 ; <i1> [#uses=1]
br i1 %55, label %bb12, label %bb13
bb12: ; preds = %bb11
br label %bb13
bb13: ; preds = %bb12, %bb11, %bb10
%start.0 = phi i8* [ %52, %bb12 ], [ %52, %bb11 ], [ %27, %bb10 ] ; <i8*> [#uses=2]
%end.0 = phi i8* [ %53, %bb12 ], [ %s.1, %bb11 ], [ %s.1, %bb10 ] ; <i8*> [#uses=1]
%56 = ptrtoint i8* %end.0 to i64 ; <i64> [#uses=1]
%57 = ptrtoint i8* %start.0 to i64 ; <i64> [#uses=1]
%58 = sub nsw i64 %56, %57 ; <i64> [#uses=2]
%59 = add i64 %58, 1 ; <i64> [#uses=2]
%60 = call i8* @_Znam(i64 %59) ; <i8*> [#uses=4]
%61 = call i8* @strncpy(i8* noalias %60, i8* noalias %start.0, i64 %59) nounwind ; <i8*> [#uses=0]
%62 = getelementptr inbounds i8* %60, i64 %58 ; <i8*> [#uses=1]
store i8 0, i8* %62, align 1
%63 = icmp eq i32 %tmp, 1 ; <i1> [#uses=1]
br i1 %63, label %bb16, label %bb15
bb15: ; preds = %bb13
%64 = load i8** %10, align 8 ; <i8*> [#uses=1]
call void @_Z6aliasaPKcPc(i8* %64, i8* %60)
br label %bb17
bb16: ; preds = %bb13
%65 = load i32* %4, align 8 ; <i32> [#uses=1]
%66 = icmp eq i32 %65, 5 ; <i1> [#uses=1]
br i1 %66, label %bb.i37, label %bb17
bb.i37: ; preds = %bb16
%67 = call i8* @_Znwm(i64 16) ; <i8*> [#uses=3]
%68 = load i8** %7, align 8 ; <i8*> [#uses=1]
%69 = load i8** %8, align 8 ; <i8*> [#uses=4]
%70 = icmp eq i8* %68, %69 ; <i1> [#uses=1]
br i1 %70, label %bb1.i38, label %bb3.i40
bb1.i38: ; preds = %bb.i37
%71 = call i64 @strlen(i8* %69) nounwind readonly ; <i64> [#uses=2]
%72 = add i64 %71, 1 ; <i64> [#uses=2]
%73 = call i8* @_Znam(i64 %72) ; <i8*> [#uses=3]
%74 = call i8* @strncpy(i8* noalias %73, i8* noalias %69, i64 %72) nounwind ; <i8*> [#uses=0]
%75 = getelementptr inbounds i8* %73, i64 %71 ; <i8*> [#uses=1]
store i8 0, i8* %75, align 1
br label %bb3.i40
bb3.i40: ; preds = %bb1.i38, %bb.i37
%iftmp.29.0.i = phi i8* [ %73, %bb1.i38 ], [ %69, %bb.i37 ] ; <i8*> [#uses=1]
%76 = bitcast i8* %67 to i8** ; <i8**> [#uses=1]
store i8* %iftmp.29.0.i, i8** %76, align 8
%77 = load void ()** %9, align 8 ; <void ()*> [#uses=1]
%78 = bitcast void ()* %77 to %struct.identstack* ; <%struct.identstack*> [#uses=1]
%79 = getelementptr inbounds i8* %67, i64 8 ; <i8*> [#uses=1]
%80 = bitcast i8* %79 to %struct.identstack** ; <%struct.identstack**> [#uses=1]
store %struct.identstack* %78, %struct.identstack** %80, align 8
%.c.i39 = bitcast i8* %67 to void ()* ; <void ()*> [#uses=1]
store void ()* %.c.i39, void ()** %9
store i8* %60, i8** %8, align 8
br label %bb17
bb17: ; preds = %bb3.i40, %bb16, %bb15
%81 = call i8* @_Z10executeretPKc(i8* %body) ; <i8*> [#uses=3]
%82 = icmp eq i8* %81, null ; <i1> [#uses=1]
br i1 %82, label %bb3, label %_Z7executePKc.exit
_Z7executePKc.exit: ; preds = %bb17
%83 = call i64 @strtol(i8* noalias nocapture %81, i8** noalias null, i32 0) nounwind readonly ; <i64> [#uses=1]
%84 = trunc i64 %83 to i32 ; <i32> [#uses=1]
call void @_ZdaPv(i8* %81) nounwind
%phitmp = icmp eq i32 %84, 0 ; <i1> [#uses=1]
%or.cond = or i1 %phitmp, %toBool19not ; <i1> [#uses=1]
br i1 %or.cond, label %bb3, label %bb27
bb27: ; preds = %_Z7executePKc.exit
%85 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%86 = add nsw i32 %85, 1 ; <i32> [#uses=1]
%87 = srem i32 %86, 3 ; <i32> [#uses=2]
store i32 %87, i32* @_ZL6retidx, align 4
%88 = sext i32 %87 to i64 ; <i64> [#uses=1]
%89 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %88, i64 0 ; <i8*> [#uses=1]
%90 = getelementptr inbounds %struct.stringformatter* %1, i64 0, i32 0 ; <i8**> [#uses=1]
store i8* %89, i8** %90, align 8
call void (%struct.stringformatter*, i8*, ...)* @_ZN15stringformatterclEPKcz(%struct.stringformatter* %1, i8* getelementptr inbounds ([3 x i8]* @.str2, i64 0, i64 0), i32 %25) nounwind
%91 = load i32* @_ZL6retidx, align 4 ; <i32> [#uses=1]
%92 = sext i32 %91 to i64 ; <i64> [#uses=1]
%93 = getelementptr inbounds [3 x [260 x i8]]* @_ZL6retbuf, i64 0, i64 %92, i64 0 ; <i8*> [#uses=2]
%94 = call i64 @strlen(i8* %93) nounwind readonly ; <i64> [#uses=2]
%95 = add i64 %94, 1 ; <i64> [#uses=2]
%96 = call i8* @_Znam(i64 %95) ; <i8*> [#uses=3]
%97 = call i8* @strncpy(i8* noalias %96, i8* noalias %93, i64 %95) nounwind ; <i8*> [#uses=0]
%98 = getelementptr inbounds i8* %96, i64 %94 ; <i8*> [#uses=1]
store i8 0, i8* %98, align 1
store i8* %96, i8** @commandret, align 8
br label %bb28
bb28: ; preds = %bb27, %bb6, %bb4
%n.1 = phi i32 [ %25, %bb6 ], [ %25, %bb4 ], [ %tmp, %bb27 ] ; <i32> [#uses=1]
%99 = icmp eq i32 %n.1, 0 ; <i1> [#uses=1]
br i1 %99, label %_Z8popidentR5ident.exit, label %bb29
bb29: ; preds = %bb28
%100 = load i32* %4, align 8 ; <i32> [#uses=1]
%101 = icmp eq i32 %100, 5 ; <i1> [#uses=1]
br i1 %101, label %bb.i, label %_Z8popidentR5ident.exit
bb.i: ; preds = %bb29
%102 = load void ()** %9, align 8 ; <void ()*> [#uses=2]
%103 = icmp eq void ()* %102, null ; <i1> [#uses=1]
br i1 %103, label %_Z8popidentR5ident.exit, label %bb1.i
bb1.i: ; preds = %bb.i
%104 = load i8** %8, align 8 ; <i8*> [#uses=3]
%105 = load i8** %7, align 8 ; <i8*> [#uses=1]
%106 = icmp eq i8* %104, %105 ; <i1> [#uses=1]
%107 = icmp eq i8* %104, null ; <i1> [#uses=1]
%or.cond.i = or i1 %106, %107 ; <i1> [#uses=1]
br i1 %or.cond.i, label %bb4.i, label %bb3.i
bb3.i: ; preds = %bb1.i
call void @_ZdaPv(i8* %104) nounwind
%.pre.i = load void ()** %9, align 8 ; <void ()*> [#uses=1]
br label %bb4.i
bb4.i: ; preds = %bb3.i, %bb1.i
%108 = phi void ()* [ %102, %bb1.i ], [ %.pre.i, %bb3.i ] ; <void ()*> [#uses=3]
%109 = bitcast void ()* %108 to %struct.identstack* ; <%struct.identstack*> [#uses=1]
%110 = bitcast void ()* %108 to i8** ; <i8**> [#uses=1]
%111 = load i8** %110, align 8 ; <i8*> [#uses=1]
store i8* %111, i8** %8, align 8
%112 = getelementptr inbounds %struct.identstack* %109, i64 0, i32 1 ; <%struct.identstack**> [#uses=1]
%113 = load %struct.identstack** %112, align 8 ; <%struct.identstack*> [#uses=1]
%.c.i = bitcast %struct.identstack* %113 to void ()* ; <void ()*> [#uses=1]
store void ()* %.c.i, void ()** %9
%114 = bitcast void ()* %108 to i8* ; <i8*> [#uses=1]
call void @_ZdlPv(i8* %114) nounwind
ret void
_Z8popidentR5ident.exit: ; preds = %bb.i, %bb29, %bb28, %bb
ret void
}
declare i32 @sprintf(i8* noalias nocapture, i8* noalias nocapture, ...) nounwind
define i8* @_Z8parseexpRPKci(i8** %p, i32 %right) {
entry:
%0 = alloca i8, align 1 ; <i8*> [#uses=2]
%1 = alloca i8, align 1 ; <i8*> [#uses=2]
%2 = alloca i8, align 1 ; <i8*> [#uses=2]
%3 = alloca %struct.cline*, align 8 ; <%struct.cline**> [#uses=2]
%4 = load i32* @_ZL7bufnest, align 4 ; <i32> [#uses=2]
%5 = load i32* getelementptr inbounds (%"struct.vector<vector<char>*>"* @_ZL8wordbufs, i64 0, i32 2), align 4 ; <i32> [#uses=1]
%6 = icmp slt i32 %4, %5 ; <i1> [#uses=1]
%7 = add nsw i32 %4, 1 ; <i32> [#uses=2]
store i32 %7, i32* @_ZL7bufnest, align 4
br i1 %6, label %bb1, label %bb
bb: ; preds = %entry
%8 = call i8* @_Znwm(i64 16) ; <i8*> [#uses=4]
%9 = bitcast i8* %8 to %struct.cline* ; <%struct.cline*> [#uses=1]
%10 = bitcast i8* %8 to i8** ; <i8**> [#uses=1]
store i8* null, i8** %10, align 8
%11 = getelementptr inbounds i8* %8, i64 8 ; <i8*> [#uses=1]
%12 = bitcast i8* %11 to i32* ; <i32*> [#uses=1]
store i32 0, i32* %12, align 8
%13 = getelementptr inbounds i8* %8, i64 12 ; <i8*> [#uses=1]
%14 = bitcast i8* %13 to i32* ; <i32*> [#uses=1]
store i32 0, i32* %14, align 4
store %struct.cline* %9, %struct.cline** %3, align 8
%15 = call %struct.cline** @_ZN6vectorIPS_IcEE3addERKS1_(%"struct.vector<vector<char>*>"* @_ZL8wordbufs, %struct.cline** %3) ; <%struct.cline**> [#uses=0]
%.pre = load i32* @_ZL7bufnest, align 4 ; <i32> [#uses=1]
br label %bb1
bb1: ; preds = %bb, %entry
%16 = phi i32 [ %7, %entry ], [ %.pre, %bb ] ; <i32> [#uses=1]
%17 = add nsw i32 %16, -1 ; <i32> [#uses=1]
%18 = load %struct.cline*** getelementptr inbounds (%"struct.vector<vector<char>*>"* @_ZL8wordbufs, i64 0, i32 0), align 16 ; <%struct.cline**> [#uses=1]
%19 = sext i32 %17 to i64 ; <i64> [#uses=1]
%20 = getelementptr inbounds %struct.cline** %18, i64 %19 ; <%struct.cline**> [#uses=1]
%21 = load %struct.cline** %20, align 8 ; <%struct.cline*> [#uses=8]
%22 = load i8** %p, align 8 ; <i8*> [#uses=2]
%23 = load i8* %22, align 1 ; <i8> [#uses=3]
%24 = getelementptr inbounds i8* %22, i64 1 ; <i8*> [#uses=1]
store i8* %24, i8** %p, align 8
%25 = getelementptr inbounds %struct.cline* %21, i64 0, i32 2 ; <i32*> [#uses=13]
%26 = getelementptr inbounds %struct.cline* %21, i64 0, i32 1 ; <i32*> [#uses=6]
%27 = getelementptr inbounds %struct.cline* %21, i64 0, i32 0 ; <i8**> [#uses=10]
%28 = icmp eq i8 %23, 91 ; <i1> [#uses=1]
br label %bb15.outer
bb2: ; preds = %bb15.outer, %bb8, %bb6, %_ZN6vectorIcE3putEPKci.exit39, %bb4, %_ZN6vectorIcE3putEPKci.exit
%29 = load i8** %p, align 8 ; <i8*> [#uses=2]
%30 = call i64 @strcspn(i8* %29, i8* getelementptr inbounds ([9 x i8]* @.str149, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=4]
%31 = trunc i64 %30 to i32 ; <i32> [#uses=3]
%32 = load i32* %25, align 4 ; <i32> [#uses=4]
%33 = add nsw i32 %32, %31 ; <i32> [#uses=5]
%34 = load i32* %26, align 8 ; <i32> [#uses=7]
%35 = icmp sgt i32 %33, %34 ; <i1> [#uses=1]
br i1 %35, label %bb.i.i, label %_ZN6vectorIcE3putEPKci.exit
bb.i.i: ; preds = %bb2
%36 = icmp eq i32 %34, 0 ; <i1> [#uses=1]
br i1 %36, label %bb.i.i.i, label %bb2.preheader.i.i.i
bb2.preheader.i.i.i: ; preds = %bb.i.i
%37 = icmp slt i32 %34, %33 ; <i1> [#uses=1]
br i1 %37, label %bb1.i.i.i, label %_ZN6vectorIcE3putEPKci.exit
bb.i.i.i: ; preds = %bb.i.i
%38 = icmp slt i32 %33, 8 ; <i1> [#uses=1]
%iftmp.215.0.i.i.i.i = select i1 %38, i32 8, i32 %33 ; <i32> [#uses=2]
store i32 %iftmp.215.0.i.i.i.i, i32* %26, align 8
br label %bb3.i.i.i
bb1.i.i.i: ; preds = %bb1.i.i.i, %bb2.preheader.i.i.i
%.tmp.0.i.i.i = phi i32 [ %39, %bb1.i.i.i ], [ %34, %bb2.preheader.i.i.i ] ; <i32> [#uses=1]
%39 = shl i32 %.tmp.0.i.i.i, 1 ; <i32> [#uses=4]
%40 = icmp slt i32 %39, %33 ; <i1> [#uses=1]
br i1 %40, label %bb1.i.i.i, label %bb2.bb3.loopexit_crit_edge.i.i.i
bb2.bb3.loopexit_crit_edge.i.i.i: ; preds = %bb1.i.i.i
store i32 %39, i32* %26
br label %bb3.i.i.i
bb3.i.i.i: ; preds = %bb2.bb3.loopexit_crit_edge.i.i.i, %bb.i.i.i
%41 = phi i32 [ %iftmp.215.0.i.i.i.i, %bb.i.i.i ], [ %39, %bb2.bb3.loopexit_crit_edge.i.i.i ] ; <i32> [#uses=2]
%42 = icmp sgt i32 %41, %34 ; <i1> [#uses=1]
br i1 %42, label %bb4.i.i.i, label %_ZN6vectorIcE3putEPKci.exit
bb4.i.i.i: ; preds = %bb3.i.i.i
%43 = sext i32 %41 to i64 ; <i64> [#uses=1]
%44 = call i8* @_Znam(i64 %43) ; <i8*> [#uses=2]
%45 = icmp sgt i32 %34, 0 ; <i1> [#uses=1]
br i1 %45, label %bb5.i.i.i, label %bb7.i.i.i
bb5.i.i.i: ; preds = %bb4.i.i.i
%46 = sext i32 %34 to i64 ; <i64> [#uses=1]
%47 = load i8** %27, align 8 ; <i8*> [#uses=1]
call void @llvm.memcpy.i64(i8* %44, i8* %47, i64 %46, i32 1)
%48 = load i8** %27, align 8 ; <i8*> [#uses=2]
%49 = icmp eq i8* %48, null ; <i1> [#uses=1]
br i1 %49, label %bb7.i.i.i, label %bb6.i.i.i
bb6.i.i.i: ; preds = %bb5.i.i.i
call void @_ZdaPv(i8* %48) nounwind
br label %bb7.i.i.i
bb7.i.i.i: ; preds = %bb6.i.i.i, %bb5.i.i.i, %bb4.i.i.i
store i8* %44, i8** %27, align 8
%.pre.i.i = load i32* %25, align 4 ; <i32> [#uses=1]
br label %_ZN6vectorIcE3putEPKci.exit
_ZN6vectorIcE3putEPKci.exit: ; preds = %bb7.i.i.i, %bb3.i.i.i, %bb2.preheader.i.i.i, %bb2
%50 = phi i32 [ %.pre.i.i, %bb7.i.i.i ], [ %32, %bb2 ], [ %32, %bb2.preheader.i.i.i ], [ %32, %bb3.i.i.i ] ; <i32> [#uses=1]
%51 = load i8** %27, align 8 ; <i8*> [#uses=1]
%52 = sext i32 %50 to i64 ; <i64> [#uses=1]
%53 = getelementptr inbounds i8* %51, i64 %52 ; <i8*> [#uses=1]
%54 = sext i32 %31 to i64 ; <i64> [#uses=1]
call void @llvm.memcpy.i64(i8* %53, i8* %29, i64 %54, i32 1) nounwind
%55 = load i32* %25, align 4 ; <i32> [#uses=1]
%56 = add nsw i32 %55, %31 ; <i32> [#uses=1]
store i32 %56, i32* %25, align 4
%57 = load i8** %p, align 8 ; <i8*> [#uses=4]
%58 = getelementptr inbounds i8* %57, i64 %30 ; <i8*> [#uses=2]
store i8* %58, i8** %p, align 8
%59 = load i8* %58, align 1 ; <i8> [#uses=4]
%60 = sext i8 %59 to i32 ; <i32> [#uses=2]
%.sum = add i64 %30, 1 ; <i64> [#uses=2]
%61 = getelementptr inbounds i8* %57, i64 %.sum ; <i8*> [#uses=3]
store i8* %61, i8** %p, align 8
switch i32 %60, label %bb14 [
i32 0, label %bb9
i32 13, label %bb2
i32 34, label %bb5
i32 40, label %bb10
i32 41, label %bb12
i32 47, label %bb7
i32 64, label %bb3
i32 91, label %bb10
i32 93, label %bb12
]
bb3: ; preds = %_ZN6vectorIcE3putEPKci.exit
br i1 %28, label %bb4, label %bb14
bb4: ; preds = %bb3
call void @_Z10parsemacroRPKciR6vectorIcE(i8** %p, i32 %brak.1.ph, %struct.cline* %21)
br label %bb2
bb5: ; preds = %_ZN6vectorIcE3putEPKci.exit
store i8 %59, i8* %2, align 1
%62 = call i8* @_ZN6vectorIcE3addERKc(%struct.cline* %21, i8* %2) ; <i8*> [#uses=0]
%63 = load i8** %p, align 8 ; <i8*> [#uses=3]
br label %bb5.i
bb2.i: ; preds = %bb5.i
%64 = getelementptr inbounds i8* %p_addr.1.i, i64 1 ; <i8*> [#uses=3]
%65 = load i8* %64, align 1 ; <i8> [#uses=1]
%66 = icmp eq i8 %65, 0 ; <i1> [#uses=1]
br i1 %66, label %_Z11parsestringPKc.exit, label %bb4.i
bb4.i: ; preds = %bb5.i, %bb2.i
%p_addr.0.i = phi i8* [ %64, %bb2.i ], [ %p_addr.1.i, %bb5.i ] ; <i8*> [#uses=1]
%67 = getelementptr inbounds i8* %p_addr.0.i, i64 1 ; <i8*> [#uses=1]
br label %bb5.i
bb5.i: ; preds = %bb4.i, %bb5
%p_addr.1.i = phi i8* [ %63, %bb5 ], [ %67, %bb4.i ] ; <i8*> [#uses=7]
%68 = load i8* %p_addr.1.i, align 1 ; <i8> [#uses=1]
switch i8 %68, label %bb4.i [
i8 0, label %_Z11parsestringPKc.exit
i8 10, label %_Z11parsestringPKc.exit
i8 13, label %_Z11parsestringPKc.exit
i8 34, label %_Z11parsestringPKc.exit
i8 94, label %bb2.i
]
_Z11parsestringPKc.exit: ; preds = %bb5.i, %bb5.i, %bb5.i, %bb5.i, %bb2.i
%69 = phi i8* [ %64, %bb2.i ], [ %p_addr.1.i, %bb5.i ], [ %p_addr.1.i, %bb5.i ], [ %p_addr.1.i, %bb5.i ], [ %p_addr.1.i, %bb5.i ] ; <i8*> [#uses=5]
%70 = ptrtoint i8* %69 to i64 ; <i64> [#uses=1]
%71 = trunc i64 %70 to i32 ; <i32> [#uses=1]
%72 = ptrtoint i8* %63 to i64 ; <i64> [#uses=1]
%73 = trunc i64 %72 to i32 ; <i32> [#uses=1]
%74 = sub i32 %71, %73 ; <i32> [#uses=3]
%75 = load i32* %25, align 4 ; <i32> [#uses=4]
%76 = add nsw i32 %74, %75 ; <i32> [#uses=5]
%77 = load i32* %26, align 8 ; <i32> [#uses=7]
%78 = icmp sgt i32 %76, %77 ; <i1> [#uses=1]
br i1 %78, label %bb.i.i26, label %_ZN6vectorIcE3putEPKci.exit39
bb.i.i26: ; preds = %_Z11parsestringPKc.exit
%79 = icmp eq i32 %77, 0 ; <i1> [#uses=1]
br i1 %79, label %bb.i.i.i29, label %bb2.preheader.i.i.i27
bb2.preheader.i.i.i27: ; preds = %bb.i.i26
%80 = icmp slt i32 %77, %76 ; <i1> [#uses=1]
br i1 %80, label %bb1.i.i.i31, label %_ZN6vectorIcE3putEPKci.exit39
bb.i.i.i29: ; preds = %bb.i.i26
%81 = icmp slt i32 %76, 8 ; <i1> [#uses=1]
%iftmp.215.0.i.i.i.i28 = select i1 %81, i32 8, i32 %76 ; <i32> [#uses=2]
store i32 %iftmp.215.0.i.i.i.i28, i32* %26, align 8
br label %bb3.i.i.i33
bb1.i.i.i31: ; preds = %bb1.i.i.i31, %bb2.preheader.i.i.i27
%.tmp.0.i.i.i30 = phi i32 [ %82, %bb1.i.i.i31 ], [ %77, %bb2.preheader.i.i.i27 ] ; <i32> [#uses=1]
%82 = shl i32 %.tmp.0.i.i.i30, 1 ; <i32> [#uses=4]
%83 = icmp slt i32 %82, %76 ; <i1> [#uses=1]
br i1 %83, label %bb1.i.i.i31, label %bb2.bb3.loopexit_crit_edge.i.i.i32
bb2.bb3.loopexit_crit_edge.i.i.i32: ; preds = %bb1.i.i.i31
store i32 %82, i32* %26
br label %bb3.i.i.i33
bb3.i.i.i33: ; preds = %bb2.bb3.loopexit_crit_edge.i.i.i32, %bb.i.i.i29
%84 = phi i32 [ %iftmp.215.0.i.i.i.i28, %bb.i.i.i29 ], [ %82, %bb2.bb3.loopexit_crit_edge.i.i.i32 ] ; <i32> [#uses=2]
%85 = icmp sgt i32 %84, %77 ; <i1> [#uses=1]
br i1 %85, label %bb4.i.i.i34, label %_ZN6vectorIcE3putEPKci.exit39
bb4.i.i.i34: ; preds = %bb3.i.i.i33
%86 = sext i32 %84 to i64 ; <i64> [#uses=1]
%87 = call i8* @_Znam(i64 %86) ; <i8*> [#uses=2]
%88 = icmp sgt i32 %77, 0 ; <i1> [#uses=1]
br i1 %88, label %bb5.i.i.i35, label %bb7.i.i.i38
bb5.i.i.i35: ; preds = %bb4.i.i.i34
%89 = sext i32 %77 to i64 ; <i64> [#uses=1]
%90 = load i8** %27, align 8 ; <i8*> [#uses=1]
call void @llvm.memcpy.i64(i8* %87, i8* %90, i64 %89, i32 1)
%91 = load i8** %27, align 8 ; <i8*> [#uses=2]
%92 = icmp eq i8* %91, null ; <i1> [#uses=1]
br i1 %92, label %bb7.i.i.i38, label %bb6.i.i.i36
bb6.i.i.i36: ; preds = %bb5.i.i.i35
call void @_ZdaPv(i8* %91) nounwind
br label %bb7.i.i.i38
bb7.i.i.i38: ; preds = %bb6.i.i.i36, %bb5.i.i.i35, %bb4.i.i.i34
store i8* %87, i8** %27, align 8
%.pre.i.i37 = load i32* %25, align 4 ; <i32> [#uses=1]
br label %_ZN6vectorIcE3putEPKci.exit39
_ZN6vectorIcE3putEPKci.exit39: ; preds = %bb7.i.i.i38, %bb3.i.i.i33, %bb2.preheader.i.i.i27, %_Z11parsestringPKc.exit
%93 = phi i32 [ %.pre.i.i37, %bb7.i.i.i38 ], [ %75, %_Z11parsestringPKc.exit ], [ %75, %bb2.preheader.i.i.i27 ], [ %75, %bb3.i.i.i33 ] ; <i32> [#uses=1]
%94 = load i8** %27, align 8 ; <i8*> [#uses=1]
%95 = sext i32 %93 to i64 ; <i64> [#uses=1]
%96 = getelementptr inbounds i8* %94, i64 %95 ; <i8*> [#uses=1]
%97 = sext i32 %74 to i64 ; <i64> [#uses=1]
call void @llvm.memcpy.i64(i8* %96, i8* %63, i64 %97, i32 1) nounwind
%98 = load i32* %25, align 4 ; <i32> [#uses=1]
%99 = add nsw i32 %98, %74 ; <i32> [#uses=1]
store i32 %99, i32* %25, align 4
store i8* %69, i8** %p, align 8
%100 = load i8* %69, align 1 ; <i8> [#uses=1]
%101 = icmp eq i8 %100, 34 ; <i1> [#uses=1]
br i1 %101, label %bb6, label %bb2
bb6: ; preds = %_ZN6vectorIcE3putEPKci.exit39
%102 = getelementptr inbounds i8* %69, i64 1 ; <i8*> [#uses=1]
store i8* %102, i8** %p, align 8
%103 = call i8* @_ZN6vectorIcE3addERKc(%struct.cline* %21, i8* %69) ; <i8*> [#uses=0]
br label %bb2
bb7: ; preds = %_ZN6vectorIcE3putEPKci.exit
%104 = load i8* %61, align 1 ; <i8> [#uses=1]
%105 = icmp eq i8 %104, 47 ; <i1> [#uses=1]
br i1 %105, label %bb8, label %bb14
bb8: ; preds = %bb7
%106 = call i64 @strcspn(i8* %61, i8* getelementptr inbounds ([3 x i8]* @.str150, i64 0, i64 0)) nounwind readonly ; <i64> [#uses=1]
%.sum58 = add i64 %.sum, %106 ; <i64> [#uses=1]
%107 = getelementptr inbounds i8* %57, i64 %.sum58 ; <i8*> [#uses=1]
store i8* %107, i8** %p, align 8
br label %bb2
bb9: ; preds = %_ZN6vectorIcE3putEPKci.exit
%108 = getelementptr inbounds i8* %57, i64 %30 ; <i8*> [#uses=1]
store i8* %108, i8** %p, align 8
call void (i32, i8*, ...)* @_Z7conoutfiPKcz(i32 4, i8* getelementptr inbounds ([13 x i8]* @.str151, i64 0, i64 0), i32 %right)
br label %bb23
bb10: ; preds = %_ZN6vectorIcE3putEPKci.exit, %_ZN6vectorIcE3putEPKci.exit
%109 = icmp eq i8 %59, %23 ; <i1> [#uses=1]
%110 = zext i1 %109 to i32 ; <i32> [#uses=1]
%.brak.1 = add i32 %110, %brak.1.ph ; <i32> [#uses=1]
br label %bb14
bb12: ; preds = %_ZN6vectorIcE3putEPKci.exit, %_ZN6vectorIcE3putEPKci.exit
%111 = add nsw i32 %brak.1.ph, -1 ; <i32> [#uses=1]
%112 = icmp eq i32 %60, %right ; <i1> [#uses=1]
%.brak.125 = select i1 %112, i32 %111, i32 %brak.1.ph ; <i32> [#uses=1]
br label %bb14
bb14: ; preds = %bb12, %bb10, %bb7, %bb3, %_ZN6vectorIcE3putEPKci.exit
%brak.0 = phi i32 [ %.brak.1, %bb10 ], [ %.brak.125, %bb12 ], [ %brak.1.ph, %_ZN6vectorIcE3putEPKci.exit ], [ %brak.1.ph, %bb3 ], [ %brak.1.ph, %bb7 ] ; <i32> [#uses=1]
store i8 %59, i8* %1, align 1
%113 = call i8* @_ZN6vectorIcE3addERKc(%struct.cline* %21, i8* %1) ; <i8*> [#uses=0]
br label %bb15.outer
bb15.outer: ; preds = %bb14, %bb1
%brak.1.ph = phi i32 [ 1, %bb1 ], [ %brak.0, %bb14 ] ; <i32> [#uses=8]
%114 = icmp eq i32 %brak.1.ph, 0 ; <i1> [#uses=1]
br i1 %114, label %bb16.split, label %bb2
bb16.split: ; preds = %bb15.outer
%115 = load i32* %25, align 4 ; <i32> [#uses=1]
%116 = add nsw i32 %115, -1 ; <i32> [#uses=2]
store i32 %116, i32* %25, align 4
%117 = icmp eq i8 %23, 40 ; <i1> [#uses=1]
br i1 %117, label %bb17, label %bb21
bb17: ; preds = %bb16.split
store i8 0, i8* %0, align 1
%118 = call i8* @_ZN6vectorIcE3addERKc(%struct.cline* %21, i8* %0) ; <i8*> [#uses=0]
%119 = load i8** %27, align 8 ; <i8*> [#uses=1]
%120 = call i8* @_Z10executeretPKc(i8* %119) ; <i8*> [#uses=2]
%121 = load i32* %25, align 4 ; <i32> [#uses=1]
%122 = add nsw i32 %121, -1 ; <i32> [#uses=1]
store i32 %122, i32* %25, align 4
%123 = icmp eq i8* %120, null ; <i1> [#uses=1]
br i1 %123, label %bb18, label %bb23
bb18: ; preds = %bb17
%124 = call i8* @_Znam(i64 1) ; <i8*> [#uses=2]
store i8 0, i8* %124, align 1
br label %bb23
bb21: ; preds = %bb16.split
%125 = sext i32 %116 to i64 ; <i64> [#uses=2]
%126 = load i8** %27, align 8 ; <i8*> [#uses=1]
%127 = add i64 %125, 1 ; <i64> [#uses=2]
%128 = call i8* @_Znam(i64 %127) ; <i8*> [#uses=3]
%129 = call i8* @strncpy(i8* noalias %128, i8* noalias %126, i64 %127) nounwind ; <i8*> [#uses=0]
%130 = getelementptr inbounds i8* %128, i64 %125 ; <i8*> [#uses=1]
store i8 0, i8* %130, align 1
br label %bb23
bb23: ; preds = %bb21, %bb18, %bb17, %bb9
%.0 = phi i8* [ null, %bb9 ], [ %128, %bb21 ], [ %124, %bb18 ], [ %120, %bb17 ] ; <i8*> [#uses=1]
store i32 0, i32* %25, align 4
%storemerge.in = load i32* @_ZL7bufnest, align 4 ; <i32> [#uses=1]
%storemerge = add i32 %storemerge.in, -1 ; <i32> [#uses=1]
store i32 %storemerge, i32* @_ZL7bufnest, align 4
ret i8* %.0
}
define void @_Z10parsemacroRPKciR6vectorIcE(i8** %p, i32 %level, %struct.cline* nocapture %wordbuf) {
entry:
%0 = alloca i8, align 1 ; <i8*> [#uses=2]
%1 = load i8** %p, align 8 ; <i8*> [#uses=2]
%2 = load i8* %1, align 1 ; <i8> [#uses=2]
%3 = icmp eq i8 %2, 64 ; <i1> [#uses=1]
br i1 %3, label %bb, label %bb2
bb: ; preds = %bb, %entry
%4 = phi i8* [ %5, %bb ], [ %1, %entry ] ; <i8*> [#uses=1]
%indvar70 = phi i32 [ %indvar.next71, %bb ], [ 0, %entry ] ; <i32> [#uses=2]
%5 = getelementptr inbounds i8* %4, i64 1 ; <i8*> [#uses=3]
store i8* %5, i8** %p, align 8
%6 = load i8* %5, align 1 ; <i8> [#uses=2]
%7 = icmp eq i8 %6, 64 ; <i1> [#uses=1]
%indvar.next71 = add i32 %indvar70, 1 ; <i32> [#uses=1]
br i1 %7, label %bb, label %bb1.bb2_crit_edge
bb1.bb2_crit_edge: ; preds = %bb
%tmp72 = add i32 %indvar70, 2 ; <i32> [#uses=1]
br label %bb2
bb2: ; preds = %bb1.bb2_crit_edge, %entry
%8 = phi i8 [ %6, %bb1.bb2_crit_edge ], [ %2, %entry ] ; <i8> [#uses=1]
%escape.0.lcssa = phi i32 [ %tmp72, %bb1.bb2_crit_edge ], [ 1, %entry ] ; <i32> [#uses=3]
%9 = icmp slt i32 %escape.0.lcssa, %level ; <i1> [#uses=1]
br i1 %9, label %bb4.preheader, label %bb5
bb4.preheader: ; preds = %bb2
%10 = icmp eq i32 %escape.0.lcssa, 0 ; <i1> [#uses=1]
br i1 %10, label %return, label %bb3
bb3: ; preds = %bb3, %bb4.preheader
%indvar67 = phi i32 [ %indvar.next68, %bb3 ], [ 0, %bb4.preheader ] ; <i32> [#uses=1]
store i8 64, i8* %0, align 1
%11 = call i8* @_ZN6vectorIcE3addERKc(%struct.cline* %wordbuf, i8* %0) ; <i8*> [#uses=0]
%indvar.next68 = add i32 %indvar67, 1 ; <i32> [#uses=2]
%exitcond = icmp eq i32 %indvar.next68, %escape.0.lcssa ; <i1> [#uses=1]
br i1 %exitcond, label %return, label %bb3
bb5: ; preds = %bb2
%12 = icmp eq i8 %8, 40 ; <i1> [#uses=1]
br i1 %12, label %bb6, label %bb12
bb6: ; preds = %bb5
%13 = call i8* @_Z8parseexpRPKci(i8** %p, i32 41) ; <i8*> [#uses=5]
%14 = icmp eq i8* %13, null ; <i1> [#uses=1]
br i1 %14, label %return, label %bb9.preheader
bb9.preheader: ; preds = %bb6
%15 = load i8* %13, align 1 ; <i8> [#uses=1]
%16 = icmp eq i8 %15, 0 ; <i1> [#uses=1]
br i1 %16, label %bb11, label %bb8
bb8: ; preds = %bb8, %bb9.preheader
%indvar62 = phi i64 [ %tmp65, %bb8 ], [ 0, %bb9.preheader ] ; <i64> [#uses=2]
%sub.053 = getelementptr i8* %13, i64 %indvar62 ; <i8*> [#uses=1]
%17 = call i8* @_ZN6vectorIcE3addERKc(%struct.cline* %wordbuf, i8* %sub.053) ; <i8*> [#uses=0]
%tmp65 = add i64 %indvar62, 1 ; <i64> [#uses=2]
%scevgep66 = getelementptr i8* %13, i64 %tmp65 ; <i8*> [#uses=1]
%18 = load i8* %scevgep66, align 1 ; <i8> [#uses=1]
%19 = icmp eq i8 %18, 0 ; <i1> [#uses=1]
br i1 %19, label %bb11, label %bb8
bb11: ; preds = %bb8, %bb9.preheader
call void @_ZdaPv(i8* %13) nounwind
ret void
bb12: ; preds = %bb5
%20 = load i8* bitcast (i64* @_ZGVZ10parsemacroRPKciR6vectorIcEE5ident to i8*), align 8 ; <i8> [#uses=1]
%21 = icmp eq i8 %20, 0 ; <i1> [#uses=1]
br i1 %21, label %bb13, label %bb18
bb13: ; preds = %bb12
%22 = call i32 @__cxa_guard_acquire(i64* @_ZGVZ10parsemacroRPKciR6vectorIcEE5ident) nounwind ; <i32> [#uses=1]
%23 = icmp eq i32 %22, 0 ; <i1> [#uses=1]
br i1 %23, label %bb18, label %bb15
bb15: ; preds = %bb13
store i8* null, i8** getelementptr inbounds (%struct.cline* @_ZZ10parsemacroRPKciR6vectorIcEE5ident, i64 0, i32 0), align 16
store i32 0, i32* getelementptr inbounds (%struct.cline* @_ZZ10parsemacroRPKciR6vectorIcEE5ident, i64 0, i32 1), align 8
store i32 0, i32* getelementptr inbounds (%struct.cline* @_ZZ10parsemacroRPKciR6vectorIcEE5ident, i64 0, i32 2), align 4
call void @__cxa_guard_release(i64* @_ZGVZ10parsemacroRPKciR6vectorIcEE5ident) nounwind
%24 = call i32 @__cxa_atexit(void (i8*)* @__tcf_0, i8* null, i8* bitcast (i8** @__dso_handle to i8*)) nounwind ; <i32> [#uses=0]
br label %bb18
bb17: ; preds = %bb18
%25 = getelementptr inbounds i8* %52, i64 1 ; <i8*> [#uses=1]
store i8* %25, i8** %p, align 8
%26 = load i32* getelementptr inbounds (%struct.cline* @_ZZ10parsemacroRPKciR6vectorIcEE5ident, i64 0, i32 2), align 4 ; <i32> [#uses=5]
%27 = load i32* getelementptr inbounds (%struct.cline* @_ZZ10parsemacroRPKciR6vectorIcEE5ident, i64 0, i32 1), align 8 ; <i32> [#uses=7]
%28 = icmp eq i32 %26, %27 ; <i1> [#uses=1]
br i1 %28, label %bb.i, label %bb1.i
bb.i: ; preds = %bb17
%29 = add nsw i32 %26, 1 ; <i32> [#uses=4]
%30 = icmp eq i32 %27, 0 ; <i1> [#uses=1]
br i1 %30, label %bb.i.i, label %bb2.preheader.i.i
bb2.preheader.i.i: ; preds = %bb.i
%31 = icmp slt i32 %27, %29 ; <i1> [#uses=1]
br i1 %31, label %bb1.i.i, label %bb1.i
bb.i.i: ; preds = %bb.i
%32 = icmp slt i32 %29, 8 ; <i1> [#uses=1]
%iftmp.215.0.i.i.i = select i1 %32, i32 8, i32 %29 ; <i32> [#uses=1]
br label %bb3.i.i
bb1.i.i: ; preds = %bb1.i.i, %bb2.preheader.i.i
%.tmp.0.i.i = phi i32 [ %33, %bb1.i.i ], [ %27, %bb2.preheader.i.i ] ; <i32> [#uses=1]
%33 = shl i32 %.tmp.0.i.i, 1 ; <i32> [#uses=3]
%34 = icmp slt i32 %33, %29 ; <i1> [#uses=1]
br i1 %34, label %bb1.i.i, label %bb3.i.i
bb3.i.i: ; preds = %bb1.i.i, %bb.i.i
%storemerge46 = phi i32 [ %iftmp.215.0.i.i.i, %bb.i.i ], [ %33, %bb1.i.i ] ; <i32> [#uses=3]
store i32 %storemerge46, i32* getelementptr inbounds (%struct.cline* @_ZZ10parsemacroRPKciR6vectorIcEE5ident, i64 0, i32 1), align 8
%35 = icmp sgt i32 %storemerge46, %27 ; <i1> [#uses=1]
br i1 %35, label %bb4.i.i, label %bb1.i
bb4.i.i: ; preds = %bb3.i.i
%36 = sext i32 %storemerge46 to i64 ; <i64> [#uses=1]
%37 = call i8* @_Znam(i64 %36) ; <i8*> [#uses=2]
%38 = icmp sgt i32 %27, 0 ; <i1> [#uses=1]
br i1 %38, label %bb5.i.i, label %bb7.i.i
bb5.i.i: ; preds = %bb4.i.i
%39 = sext i32 %27 to i64 ; <i64> [#uses=1]
%40 = load i8** getelementptr inbounds (%struct.cline* @_ZZ10parsemacroRPKciR6vectorIcEE5ident, i64 0, i32 0), align 16 ; <i8*> [#uses=1]
call void @llvm.memcpy.i64(i8* %37, i8* %40, i64 %39, i32 1)
%41 = load i8** getelementptr inbounds (%struct.cline* @_ZZ10parsemacroRPKciR6vectorIcEE5ident, i64 0, i32 0), align 16 ; <i8*> [#uses=2]
%42 = icmp eq i8* %41, null ; <i1> [#uses=1]
br i1 %42, label %bb7.i.i, label %bb6.i.i
bb6.i.i: ; preds = %bb5.i.i
call void @_ZdaPv(i8* %41) nounwind
br label %bb7.i.i
bb7.i.i: ; preds = %bb6.i.i, %bb5.i.i, %bb4.i.i
store i8* %37, i8** getelementptr inbounds (%struct.cline* @_ZZ10parsemacroRPKciR6vectorIcEE5ident, i64 0, i32 0), align 16
%.pre.i = load i32* getelementptr inbounds (%struct.cline* @_ZZ10parsemacroRPKciR6vectorIcEE5ident, i64 0, i32 2), align 4 ; <i32> [#uses=1]
br label %bb1.i
bb1.i: ; preds = %bb7.i.i, %bb3.i.i, %bb2.preheader.i.i, %bb17
%43 = phi i32 [ %.pre.i, %bb7.i.i ], [ %26, %bb17 ], [ %26, %bb2.preheader.i.i ], [ %26, %bb3.i.i ] ; <i32> [#uses=2]
%44 = load i8** getelementptr inbounds (%struct.cline* @_ZZ10parsemacroRPKciR6vectorIcEE5ident, i64 0, i32 0), align 16 ; <i8*> [#uses=1]
%45 = sext i32 %43 to i64 ; <i64> [#uses=1]
%46 = getelementptr inbounds i8* %44, i64 %45 ; <i8*> [#uses=2]
%47 = icmp eq i8* %46, null ; <i1> [#uses=1]
br i1 %47, label %_ZN6vectorIcE3addERKc.exit, label %bb2.i
bb2.i: ; preds = %bb1.i
%48 = load i8* %52, align 1 ; <i8> [#uses=1]
store i8 %48, i8* %46, align 1
%.pre7.i = load i32* getelementptr inbounds (%struct.cline* @_ZZ10parsemacroRPKciR6vectorIcEE5ident, i64 0, i32 2), align 4 ; <i32> [#uses=1]
br label %_ZN6vectorIcE3addERKc.exit
_ZN6vectorIcE3addERKc.exit: ; preds = %bb2.i, %bb1.i
%49 = phi i32 [ %43, %bb1.i ], [ %.pre7.i, %bb2.i ] ; <i32> [#uses=1]
%50 = add nsw i32 %49, 1 ; <i32> [#uses=1]
br label %bb18
bb18: ; preds = %_ZN6vectorIcE3addERKc.exit, %bb15, %bb13, %bb12
%51 = phi i32 [ %50, %_ZN6vectorIcE3addERKc.exit ], [ 0, %bb13 ], [ 0, %bb15 ], [ 0, %bb12 ] ; <i32> [#uses=6]
store i32 %51, i32* getelementptr inbounds (%struct.cline* @_ZZ10parsemacroRPKciR6vectorIcEE5ident, i64 0, i32 2), align 4
%52 = load i8** %p, align 8 ; <i8*> [#uses=3]
%53 = load i8* %52, align 1 ; <i8> [#uses=2]
%54 = sext i8 %53 to i32 ; <i32> [#uses=1]
%55 = call i32 @isalnum(i32 %54) nounwind readonly ; <i32> [#uses=1]
%56 = icmp eq i32 %55, 0 ; <i1> [#uses=1]
%.not = xor i1 %56, true ; <i1> [#uses=1]
%57 = icmp eq i8 %53, 95 ; <i1> [#uses=1]
%or.cond = or i1 %.not, %57 ; <i1> [#uses=1]
br i1 %or.cond, label %bb17, label %bb20
bb20: ; preds = %bb18
%58 = load i32* getelementptr inbounds (%struct.cline* @_ZZ10parsemacroRPKciR6vectorIcEE5ident, i64 0, i32 1), align 8 ; <i32> [#uses=7]
%59 = icmp eq i32 %51, %58 ; <i1> [#uses=1]
br i1 %59, label %bb.i24, label %bb1.i37
bb.i24: ; preds = %bb20
%60 = add nsw i32 %51, 1 ; <i32> [#uses=4]
%61 = icmp eq i32 %58, 0 ; <i1> [#uses=1]
br i1 %61, label %bb.i.i27, label %bb2.preheader.i.i25
bb2.preheader.i.i25: ; preds = %bb.i24
%62 = icmp slt i32 %58, %60 ; <i1> [#uses=1]
br i1 %62, label %bb1.i.i29, label %bb1.i37
bb.i.i27: ; preds = %bb.i24
%63 = icmp slt i32 %60, 8 ; <i1> [#uses=1]
%iftmp.215.0.i.i.i26 = select i1 %63, i32 8, i32 %60 ; <i32> [#uses=1]
br label %bb3.i.i31
bb1.i.i29: ; preds = %bb1.i.i29, %bb2.preheader.i.i25
%.tmp.0.i.i28 = phi i32 [ %64, %bb1.i.i29 ], [ %58, %bb2.preheader.i.i25 ] ; <i32> [#uses=1]
%64 = shl i32 %.tmp.0.i.i28, 1 ; <i32> [#uses=3]
%65 = icmp slt i32 %64, %60 ; <i1> [#uses=1]
br i1 %65, label %bb1.i.i29, label %bb3.i.i31
bb3.i.i31: ; preds = %bb1.i.i29, %bb.i.i27
%storemerge47 = phi i32 [ %iftmp.215.0.i.i.i26, %bb.i.i27 ], [ %64, %bb1.i.i29 ] ; <i32> [#uses=3]
store i32 %storemerge47, i32* getelementptr inbounds (%struct.cline* @_ZZ10parsemacroRPKciR6vectorIcEE5ident, i64 0, i32 1), align 8
%66 = icmp sgt i32 %storemerge47, %58 ; <i1> [#uses=1]
br i1 %66, label %bb4.i.i32, label %bb1.i37
bb4.i.i32: ; preds = %bb3.i.i31
%67 = sext i32 %storemerge47 to i64 ; <i64> [#uses=1]
%68 = call i8* @_Znam(i64 %67) ; <i8*> [#uses=2]
%69 = icmp sgt i32 %58, 0 ; <i1> [#uses=1]
br i1 %69, label %bb5.i.i33, label %bb7.i.i36
bb5.i.i33: ; preds = %bb4.i.i32
%70 = sext i32 %58 to i64 ; <i64> [#uses=1]
%71 = load i8** getelementptr inbounds (%struct.cline* @_ZZ10parsemacroRPKciR6vectorIcEE5ident, i64 0, i32 0), align 16 ; <i8*> [#uses=1]
call void @llvm.memcpy.i64(i8* %68, i8* %71, i64 %70, i32 1)
%72 = load i8** getelementptr inbounds (%struct.cline* @_ZZ10parsemacroRPKciR6vectorIcEE5ident, i64 0, i32 0), align 16 ; <i8*> [#uses=2]
%73 = icmp eq i8* %72, null ; <i1> [#uses=1]
br i1 %73, label %bb7.i.i36, label %bb6.i.i34
bb6.i.i34: ; preds = %bb5.i.i33
call void @_ZdaPv(i8* %72) nounwind
br label %bb7.i.i36
bb7.i.i36: ; preds = %bb6.i.i34, %bb5.i.i33, %bb4.i.i32
store i8* %68, i8** getelementptr inbounds (%struct.cline* @_ZZ10parsemacroRPKciR6vectorIcEE5ident, i64 0, i32 0), align 16
%.pre.i35 = load i32* getelementptr inbounds (%struct.cline* @_ZZ10parsemacroRPKciR6vectorIcEE5ident, i64 0, i32 2), align 4 ; <i32> [#uses=1]
br label %bb1.i37
bb1.i37: ; preds = %bb7.i.i36, %bb3.i.i31, %bb2.preheader.i.i25, %bb20
%74 = phi i32 [ %.pre.i35, %bb7.i.i36 ], [ %51, %bb20 ], [ %51, %bb2.preheader.i.i25 ], [ %51, %bb3.i.i31 ] ; <i32> [#uses=2]
%75 = load i8** getelementptr inbounds (%struct.cline* @_ZZ10parsemacroRPKciR6vectorIcEE5ident, i64 0, i32 0), align 16 ; <i8*> [#uses=2]
%76 = sext i32 %74 to i64 ; <i64> [#uses=1]
%77 = getelementptr inbounds i8* %75, i64 %76 ; <i8*> [#uses=2]
%78 = icmp eq i8* %77, null ; <i1> [#uses=1]
br i1 %78, label %_ZN6vectorIcE3addERKc.exit41, label %bb2.i40
bb2.i40: ; preds = %bb1.i37
store i8 0, i8* %77, align 1
%.pre7.i39 = load i32* getelementptr inbounds (%struct.cline* @_ZZ10parsemacroRPKciR6vectorIcEE5ident, i64 0, i32 2), align 4 ; <i32> [#uses=1]
%.pre = load i8** getelementptr inbounds (%struct.cline* @_ZZ10parsemacroRPKciR6vectorIcEE5ident, i64 0, i32 0), align 16 ; <i8*> [#uses=1]
br label %_ZN6vectorIcE3addERKc.exit41
_ZN6vectorIcE3addERKc.exit41: ; preds = %bb2.i40, %bb1.i37
%79 = phi i8* [ %75, %bb1.i37 ], [ %.pre, %bb2.i40 ] ; <i8*> [#uses=3]
%80 = phi i32 [ %74, %bb1.i37 ], [ %.pre7.i39, %bb2.i40 ] ; <i32> [#uses=1]
%81 = add nsw i32 %80, 1 ; <i32> [#uses=1]
store i32 %81, i32* getelementptr inbounds (%struct.cline* @_ZZ10parsemacroRPKciR6vectorIcEE5ident, i64 0, i32 2), align 4
%82 = load %"struct.hashtable<const char*,ident>"** @idents, align 8 ; <%"struct.hashtable<const char*,ident>"*> [#uses=2]
%83 = load i8* %79, align 1 ; <i8> [#uses=2]
%84 = icmp eq i8 %83, 0 ; <i1> [#uses=1]
br i1 %84, label %_ZL6hthashPKc.exit.i.i, label %bb.i.i.i
bb.i.i.i: ; preds = %bb.i.i.i, %_ZN6vectorIcE3addERKc.exit41
%indvar.i.i.i = phi i64 [ %tmp, %bb.i.i.i ], [ 0, %_ZN6vectorIcE3addERKc.exit41 ] ; <i64> [#uses=1]
%85 = phi i8 [ %89, %bb.i.i.i ], [ %83, %_ZN6vectorIcE3addERKc.exit41 ] ; <i8> [#uses=1]
%h.04.i.i.i = phi i32 [ %88, %bb.i.i.i ], [ 5381, %_ZN6vectorIcE3addERKc.exit41 ] ; <i32> [#uses=1]
%tmp = add i64 %indvar.i.i.i, 1 ; <i64> [#uses=2]
%scevgep.i.i.i = getelementptr i8* %79, i64 %tmp ; <i8*> [#uses=1]
%86 = sext i8 %85 to i32 ; <i32> [#uses=1]
%87 = mul i32 %h.04.i.i.i, 33 ; <i32> [#uses=1]
%88 = xor i32 %87, %86 ; <i32> [#uses=2]
%89 = load i8* %scevgep.i.i.i, align 1 ; <i8> [#uses=2]
%90 = icmp eq i8 %89, 0 ; <i1> [#uses=1]
br i1 %90, label %_ZL6hthashPKc.exit.i.i, label %bb.i.i.i
_ZL6hthashPKc.exit.i.i: ; preds = %bb.i.i.i, %_ZN6vectorIcE3addERKc.exit41
%h.0.lcssa.i.i.i = phi i32 [ 5381, %_ZN6vectorIcE3addERKc.exit41 ], [ %88, %bb.i.i.i ] ; <i32> [#uses=1]
%91 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %82, i64 0, i32 0, i32 0 ; <i32*> [#uses=1]
%92 = load i32* %91, align 8 ; <i32> [#uses=1]
%93 = add nsw i32 %92, -1 ; <i32> [#uses=1]
%94 = and i32 %93, %h.0.lcssa.i.i.i ; <i32> [#uses=1]
%95 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %82, i64 0, i32 0, i32 2 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"***> [#uses=1]
%96 = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** %95, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%97 = zext i32 %94 to i64 ; <i64> [#uses=1]
%98 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %96, i64 %97 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i.i43
bb.i.i42: ; preds = %bb3.i.i43
%.idx.i.i = getelementptr %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i.i, i64 0, i32 0, i32 0 ; <i8**> [#uses=1]
%.idx.val.i.i = load i8** %.idx.i.i ; <i8*> [#uses=1]
%99 = call i32 @strcmp(i8* %79, i8* %.idx.val.i.i) nounwind readonly ; <i32> [#uses=1]
%100 = icmp eq i32 %99, 0 ; <i1> [#uses=1]
br i1 %100, label %_ZN9hashtableIPKc5identE6accessERKS1_.exit.i, label %bb2.i.i
bb2.i.i: ; preds = %bb.i.i42
%101 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i.i, i64 0, i32 1 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
br label %bb3.i.i43
bb3.i.i43: ; preds = %bb2.i.i, %_ZL6hthashPKc.exit.i.i
%c.0.in.i.i = phi %"struct.hashset<hashtableentry<const char*, ident> >::chain"** [ %98, %_ZL6hthashPKc.exit.i.i ], [ %101, %bb2.i.i ] ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%c.0.i.i = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %c.0.in.i.i, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"*> [#uses=6]
%102 = icmp eq %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i.i, null ; <i1> [#uses=1]
br i1 %102, label %bb22.preheader, label %bb.i.i42
_ZN9hashtableIPKc5identE6accessERKS1_.exit.i: ; preds = %bb.i.i42
%103 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i.i, i64 0, i32 0, i32 1 ; <%struct.ident*> [#uses=1]
%104 = icmp eq %struct.ident* %103, null ; <i1> [#uses=1]
br i1 %104, label %bb22.preheader, label %bb.i44
bb.i44: ; preds = %_ZN9hashtableIPKc5identE6accessERKS1_.exit.i
%105 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i.i, i64 0, i32 0, i32 1, i32 1 ; <i32*> [#uses=1]
%106 = load i32* %105, align 8 ; <i32> [#uses=1]
%107 = icmp eq i32 %106, 5 ; <i1> [#uses=1]
br i1 %107, label %bb1.i45, label %bb22.preheader
bb1.i45: ; preds = %bb.i44
%108 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %c.0.i.i, i64 0, i32 0, i32 1, i32 7, i32 0 ; <i8**> [#uses=1]
%109 = load i8** %108, align 8 ; <i8*> [#uses=1]
br label %bb22.preheader
bb22.preheader: ; preds = %bb1.i45, %bb.i44, %_ZN9hashtableIPKc5identE6accessERKS1_.exit.i, %bb3.i.i43
%alias.0.ph = phi i8* [ %109, %bb1.i45 ], [ getelementptr inbounds ([1 x i8]* @.str3, i64 0, i64 0), %bb.i44 ], [ getelementptr inbounds ([1 x i8]* @.str3, i64 0, i64 0), %_ZN9hashtableIPKc5identE6accessERKS1_.exit.i ], [ getelementptr inbounds ([1 x i8]* @.str3, i64 0, i64 0), %bb3.i.i43 ] ; <i8*> [#uses=3]
%110 = load i8* %alias.0.ph, align 1 ; <i8> [#uses=1]
%111 = icmp eq i8 %110, 0 ; <i1> [#uses=1]
br i1 %111, label %return, label %bb21
bb21: ; preds = %bb21, %bb22.preheader
%indvar = phi i64 [ %tmp59, %bb21 ], [ 0, %bb22.preheader ] ; <i64> [#uses=2]
%alias.050 = getelementptr i8* %alias.0.ph, i64 %indvar ; <i8*> [#uses=1]
%112 = call i8* @_ZN6vectorIcE3addERKc(%struct.cline* %wordbuf, i8* %alias.050) ; <i8*> [#uses=0]
%tmp59 = add i64 %indvar, 1 ; <i64> [#uses=2]
%scevgep = getelementptr i8* %alias.0.ph, i64 %tmp59 ; <i8*> [#uses=1]
%113 = load i8* %scevgep, align 1 ; <i8> [#uses=1]
%114 = icmp eq i8 %113, 0 ; <i1> [#uses=1]
br i1 %114, label %return, label %bb21
return: ; preds = %bb21, %bb22.preheader, %bb6, %bb3, %bb4.preheader
ret void
}
declare i32 @isalnum(i32) nounwind readonly
define void @_Z10clearstackR5ident(%struct.ident* nocapture %id) nounwind {
entry:
%0 = getelementptr inbounds %struct.ident* %id, i64 0, i32 6, i32 0 ; <void ()**> [#uses=2]
%1 = load void ()** %0, align 8 ; <void ()*> [#uses=2]
%2 = icmp eq void ()* %1, null ; <i1> [#uses=1]
br i1 %2, label %bb4, label %bb.nph
bb.nph: ; preds = %entry
%3 = bitcast void ()* %1 to %struct.identstack* ; <%struct.identstack*> [#uses=1]
br label %bb
bb: ; preds = %bb2, %bb.nph
%stack.05 = phi %struct.identstack* [ %3, %bb.nph ], [ %8, %bb2 ] ; <%struct.identstack*> [#uses=3]
%4 = getelementptr inbounds %struct.identstack* %stack.05, i64 0, i32 0 ; <i8**> [#uses=1]
%5 = load i8** %4, align 8 ; <i8*> [#uses=2]
%6 = icmp eq i8* %5, null ; <i1> [#uses=1]
br i1 %6, label %bb2, label %bb1
bb1: ; preds = %bb
tail call void @_ZdaPv(i8* %5) nounwind
br label %bb2
bb2: ; preds = %bb1, %bb
%7 = getelementptr inbounds %struct.identstack* %stack.05, i64 0, i32 1 ; <%struct.identstack**> [#uses=1]
%8 = load %struct.identstack** %7, align 8 ; <%struct.identstack*> [#uses=2]
%9 = bitcast %struct.identstack* %stack.05 to i8* ; <i8*> [#uses=1]
tail call void @_ZdlPv(i8* %9) nounwind
%10 = icmp eq %struct.identstack* %8, null ; <i1> [#uses=1]
br i1 %10, label %bb4, label %bb
bb4: ; preds = %bb2, %entry
store void ()* null, void ()** %0
ret void
}
define void @_Z13clear_commandv() nounwind {
entry:
%0 = load %"struct.hashtable<const char*,ident>"** @idents, align 8 ; <%"struct.hashtable<const char*,ident>"*> [#uses=3]
%1 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %0, i64 0, i32 0, i32 0 ; <i32*> [#uses=1]
%2 = load i32* %1, align 8 ; <i32> [#uses=2]
%3 = icmp sgt i32 %2, 0 ; <i1> [#uses=1]
br i1 %3, label %bb, label %bb16
bb: ; preds = %bb14, %entry
%indvar = phi i64 [ %tmp35, %bb14 ], [ 0, %entry ] ; <i64> [#uses=2]
%4 = phi %"struct.hashtable<const char*,ident>"* [ %32, %bb14 ], [ %0, %entry ] ; <%"struct.hashtable<const char*,ident>"*> [#uses=1]
%tmp35 = add i64 %indvar, 1 ; <i64> [#uses=2]
%tmp36 = trunc i64 %tmp35 to i32 ; <i32> [#uses=1]
%5 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %4, i64 0, i32 0, i32 2 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"***> [#uses=1]
%6 = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** %5, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%scevgep = getelementptr %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %6, i64 %indvar ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%7 = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %scevgep, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"*> [#uses=2]
%8 = icmp eq %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %7, null ; <i1> [#uses=1]
br i1 %8, label %bb14, label %bb1
bb1: ; preds = %bb13.backedge, %bb
%enumc.021.in = phi %"struct.hashset<hashtableentry<const char*, ident> >::chain"* [ %10, %bb13.backedge ], [ %7, %bb ] ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"*> [#uses=5]
%9 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %enumc.021.in, i64 0, i32 1 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%10 = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %9, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"*> [#uses=2]
%11 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %enumc.021.in, i64 0, i32 0, i32 1, i32 1 ; <i32*> [#uses=1]
%12 = load i32* %11, align 8 ; <i32> [#uses=1]
%13 = icmp eq i32 %12, 5 ; <i1> [#uses=1]
br i1 %13, label %bb3, label %bb13.backedge
bb13.backedge: ; preds = %_Z10clearstackR5ident.exit, %bb11, %bb1
%14 = icmp eq %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %10, null ; <i1> [#uses=1]
br i1 %14, label %bb14, label %bb1
bb3: ; preds = %bb1
%15 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %enumc.021.in, i64 0, i32 0, i32 1, i32 2 ; <i8**> [#uses=2]
%16 = load i8** %15, align 8 ; <i8*> [#uses=2]
%17 = icmp eq i8* %16, null ; <i1> [#uses=1]
br i1 %17, label %bb7, label %bb6
bb6: ; preds = %bb3
tail call void @_ZdaPv(i8* %16) nounwind
store i8* null, i8** %15, align 8
br label %bb7
bb7: ; preds = %bb6, %bb3
%18 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %enumc.021.in, i64 0, i32 0, i32 1, i32 7, i32 0 ; <i8**> [#uses=2]
%19 = load i8** %18, align 8 ; <i8*> [#uses=2]
%20 = icmp eq i8* %19, null ; <i1> [#uses=1]
br i1 %20, label %bb11, label %bb10
bb10: ; preds = %bb7
tail call void @_ZdaPv(i8* %19) nounwind
store i8* null, i8** %18, align 8
br label %bb11
bb11: ; preds = %bb10, %bb7
%21 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %enumc.021.in, i64 0, i32 0, i32 1, i32 6, i32 0 ; <void ()**> [#uses=2]
%22 = load void ()** %21, align 8 ; <void ()*> [#uses=2]
%23 = icmp eq void ()* %22, null ; <i1> [#uses=1]
br i1 %23, label %bb13.backedge, label %bb.nph.i19
bb.nph.i19: ; preds = %bb11
%24 = bitcast void ()* %22 to %struct.identstack* ; <%struct.identstack*> [#uses=1]
br label %bb.i
bb.i: ; preds = %bb2.i, %bb.nph.i19
%stack.05.i = phi %struct.identstack* [ %24, %bb.nph.i19 ], [ %29, %bb2.i ] ; <%struct.identstack*> [#uses=3]
%25 = getelementptr inbounds %struct.identstack* %stack.05.i, i64 0, i32 0 ; <i8**> [#uses=1]
%26 = load i8** %25, align 8 ; <i8*> [#uses=2]
%27 = icmp eq i8* %26, null ; <i1> [#uses=1]
br i1 %27, label %bb2.i, label %bb1.i20
bb1.i20: ; preds = %bb.i
tail call void @_ZdaPv(i8* %26) nounwind
br label %bb2.i
bb2.i: ; preds = %bb1.i20, %bb.i
%28 = getelementptr inbounds %struct.identstack* %stack.05.i, i64 0, i32 1 ; <%struct.identstack**> [#uses=1]
%29 = load %struct.identstack** %28, align 8 ; <%struct.identstack*> [#uses=2]
%30 = bitcast %struct.identstack* %stack.05.i to i8* ; <i8*> [#uses=1]
tail call void @_ZdlPv(i8* %30) nounwind
%31 = icmp eq %struct.identstack* %29, null ; <i1> [#uses=1]
br i1 %31, label %_Z10clearstackR5ident.exit, label %bb.i
_Z10clearstackR5ident.exit: ; preds = %bb2.i
store void ()* null, void ()** %21
br label %bb13.backedge
bb14: ; preds = %bb13.backedge, %bb
%32 = load %"struct.hashtable<const char*,ident>"** @idents, align 8 ; <%"struct.hashtable<const char*,ident>"*> [#uses=3]
%33 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %32, i64 0, i32 0, i32 0 ; <i32*> [#uses=1]
%34 = load i32* %33, align 8 ; <i32> [#uses=2]
%35 = icmp sgt i32 %34, %tmp36 ; <i1> [#uses=1]
br i1 %35, label %bb, label %bb16
bb16: ; preds = %bb14, %entry
%36 = phi i32 [ %2, %entry ], [ %34, %bb14 ] ; <i32> [#uses=1]
%37 = phi %"struct.hashtable<const char*,ident>"* [ %0, %entry ], [ %32, %bb14 ] ; <%"struct.hashtable<const char*,ident>"*> [#uses=6]
%38 = icmp eq %"struct.hashtable<const char*,ident>"* %37, null ; <i1> [#uses=1]
br i1 %38, label %_ZN7hashsetI14hashtableentryIPKc5identEE5clearEv.exit, label %bb17
bb17: ; preds = %bb16
%39 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %37, i64 0, i32 0, i32 1 ; <i32*> [#uses=2]
%40 = load i32* %39, align 4 ; <i32> [#uses=1]
%41 = icmp eq i32 %40, 0 ; <i1> [#uses=1]
br i1 %41, label %_ZN7hashsetI14hashtableentryIPKc5identEE5clearEv.exit, label %bb2.preheader.i
bb2.preheader.i: ; preds = %bb17
%42 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %37, i64 0, i32 0, i32 0 ; <i32*> [#uses=1]
%43 = icmp sgt i32 %36, 0 ; <i1> [#uses=1]
br i1 %43, label %bb.nph.i, label %bb3.i
bb.nph.i: ; preds = %bb2.preheader.i
%44 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %37, i64 0, i32 0, i32 2 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"***> [#uses=1]
br label %bb1.i
bb1.i: ; preds = %bb1.i, %bb.nph.i
%indvar.i = phi i64 [ 0, %bb.nph.i ], [ %tmp32, %bb1.i ] ; <i64> [#uses=2]
%tmp32 = add i64 %indvar.i, 1 ; <i64> [#uses=2]
%tmp8.i = trunc i64 %tmp32 to i32 ; <i32> [#uses=1]
%45 = load %"struct.hashset<hashtableentry<const char*, ident> >::chain"*** %44, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
%scevgep.i = getelementptr %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %45, i64 %indvar.i ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
store %"struct.hashset<hashtableentry<const char*, ident> >::chain"* null, %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %scevgep.i, align 8
%46 = load i32* %42, align 8 ; <i32> [#uses=1]
%47 = icmp sgt i32 %46, %tmp8.i ; <i1> [#uses=1]
br i1 %47, label %bb1.i, label %bb3.i
bb3.i: ; preds = %bb1.i, %bb2.preheader.i
store i32 0, i32* %39, align 4
%48 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %37, i64 0, i32 0, i32 4 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"**> [#uses=1]
store %"struct.hashset<hashtableentry<const char*, ident> >::chain"* null, %"struct.hashset<hashtableentry<const char*, ident> >::chain"** %48, align 8
%49 = getelementptr inbounds %"struct.hashtable<const char*,ident>"* %37, i64 0, i32 0, i32 3 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"**> [#uses=2]
%50 = load %"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"** %49, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"*> [#uses=2]
%51 = icmp eq %"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"* %50, null ; <i1> [#uses=1]
br i1 %51, label %_ZN7hashsetI14hashtableentryIPKc5identEE5clearEv.exit, label %bb.i.i
bb.i.i: ; preds = %bb2.i.i, %bb3.i
%52 = phi %"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"* [ %54, %bb2.i.i ], [ %50, %bb3.i ] ; <%"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"*> [#uses=6]
%53 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"* %52, i64 0, i32 1 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"**> [#uses=1]
%54 = load %"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"** %53, align 8 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"*> [#uses=3]
%55 = icmp eq %"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"* %52, null ; <i1> [#uses=1]
br i1 %55, label %bb2.i.i, label %bb.i.i.i
bb.i.i.i: ; preds = %bb.i.i
%56 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"* %52, i64 0, i32 0 ; <[64 x %"struct.hashset<hashtableentry<const char*, ident> >::chain"]*> [#uses=1]
%57 = getelementptr inbounds [64 x %"struct.hashset<hashtableentry<const char*, ident> >::chain"]* %56, i64 1, i64 0 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"*> [#uses=1]
%58 = getelementptr inbounds %"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"* %52, i64 0, i32 0, i64 0 ; <%"struct.hashset<hashtableentry<const char*, ident> >::chain"*> [#uses=1]
%59 = icmp eq %"struct.hashset<hashtableentry<const char*, ident> >::chain"* %57, %58 ; <i1> [#uses=1]
br i1 %59, label %_ZN7hashsetI14hashtableentryIPKc5identEE10chainchunkD1Ev.exit.i.i, label %bb2.i.i.i
bb2.i.i.i: ; preds = %bb2.i.i.i, %bb.i.i.i
%indvar.i.i.i = phi i64 [ %indvar.next.i.i.i, %bb2.i.i.i ], [ 0, %bb.i.i.i ] ; <i64> [#uses=2]
%tmp31 = sub i64 63, %indvar.i.i.i ; <i64> [#uses=1]
%scevgep.i.i.i = getelementptr %"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"* %52, i64 0, i32 0, i64 %tmp31, i32 0, i32 1, i32 0 ; <i32 (...)***> [#uses=1]
store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV5ident, i64 0, i64 2), i32 (...)*** %scevgep.i.i.i, align 8
%indvar.next.i.i.i = add i64 %indvar.i.i.i, 1 ; <i64> [#uses=2]
%exitcond = icmp eq i64 %indvar.next.i.i.i, 64 ; <i1> [#uses=1]
br i1 %exitcond, label %_ZN7hashsetI14hashtableentryIPKc5identEE10chainchunkD1Ev.exit.i.i, label %bb2.i.i.i
_ZN7hashsetI14hashtableentryIPKc5identEE10chainchunkD1Ev.exit.i.i: ; preds = %bb2.i.i.i, %bb.i.i.i
%60 = bitcast %"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"* %52 to i8* ; <i8*> [#uses=1]
tail call void @_ZdlPv(i8* %60) nounwind
br label %bb2.i.i
bb2.i.i: ; preds = %_ZN7hashsetI14hashtableentryIPKc5identEE10chainchunkD1Ev.exit.i.i, %bb.i.i
store %"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"* %54, %"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"** %49, align 8
%61 = icmp eq %"struct.hashset<hashtableentry<const char*, ident> >::chainchunk"* %54, null ; <i1> [#uses=1]
br i1 %61, label %_ZN7hashsetI14hashtableentryIPKc5identEE5clearEv.exit, label %bb.i.i
_ZN7hashsetI14hashtableentryIPKc5identEE5clearEv.exit: ; preds = %bb2.i.i, %bb3.i, %bb17, %bb16
ret void
}
declare void @llvm.memset.i64(i8* nocapture, i8, i64, i32) nounwind
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment